TOPCIT Examination Reviewer

0.0(0)
studied byStudied by 0 people
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
Card Sorting

1/78

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

79 Terms

1
New cards

1.1 Software Engineering

It is defined as the process that involves designing, developing, testing, and maintaining software. It is an engineering discipline that applies engineering principles to software development, aiming to produce software that is reliable, efficient, and meets the requirements of users or businesses.

2
New cards

Software Reuse

Is a strategy in software engineering where existing software is used in the development of new software. This includes the direct incorporation of an entire application system, component-based development, or developing application families. The goal is to improve the quality, efficiency, and maintainability of software projects by leveraging existing assets, thus reducing development costs and time.

3
New cards

Key points to note:

•Software reuse is not just about reusing code; it can also mean reusing software design, patterns, user manuals, and more.
•Reuse can be as simple as copying and pasting code or as complex as integrating large systems.
•Component-based development is an aspect of software reuse that involves using self-contained components to build applications.

4
New cards

1.2 Data Structure and Algorithm
Data Structures

are ways to store and organize data on a computer so that it can be accessed and updated efficiently. They are not only used for organizing the data but also for processing, retrieving, and storing it.

5
New cards

Definition of data structure

A data structure is a storage format chosen for efficient access to data, which includes a collection of data values, the relationships among them, and the functions or operations that can be applied to the data.

6
New cards

Types of Data Structure - Linear & Non-Linear

•Linear structures include elements arranged in a sequential order; while
•Non-Linear structures have elements that are not arranged sequentially and can be connected to multiple elements.

7
New cards

Linear data structures: List, Stack and Queue

Linear data structures like arrays, stacks, and queues store elements in a specific order that allows efficient access and modification. Arrays store elements in contiguous memory locations, stacks follow (LIFO) order, and queues follow (FIFO) order.

8
New cards

Non-Linear data structures: Tree & Graph

Non-linear data structures such as trees and graphs allow elements to have multiple relationships with each other. Trees consist of nodes connected in a hierarchical manner, while graphs consist of nodes connected by edges without any hierarchy.

9
New cards

Algorithms

Algorithms are crucial for performing calculations, processing data, and solving specific problems in computing. They put the 'science' in computer science by enabling problem-solving through precise steps.

10
New cards

Classification of algorithms: Sorting, Searching, Dynamic Programming, & Greedy algorithm

Algorithms are classified by the problems they solve, such as searching and sorting data, or by the strategies they use like dynamic programming and greedy methods.

11
New cards

Sorting algorithm

Sorting algorithms rearrange data into a specific order, such as numerical or lexicographical order, which is crucial for the efficiency of other algorithms.

12
New cards

Search algorithm

Search algorithm locate or retrieve an element from a data structure and are classified into sequential or interval searches based on the search operation.

13
New cards

Problem-solving methods and algorithms

Problem-solving in computing often involves finding efficient algorithms tailored for specific areas within computer science, such as machine learning or cryptography.

14
New cards

Greedy algorithm

Greedy algorithm make the optimal choice at each step, aiming to find the overall optimal way to solve the entire problem,. They are used in optimization problems where the best possible solution is desired.

15
New cards

1.3 Software analysis and design
Software requirement analysis

•Definition and classes of software requirements(ISO 29148) - Software requirements are a detailed description of what a software system should do. ISO 29148 is the international standard for the processes and products of requirements engineering, including the definition and management of requirements.
•Software requirements elicitation methods - These are the techniques used to gather requirements from stakeholders and users, like interviews, questionnaires, user observation, workshops, brain storming, role-playing, and prototyping.
•Analysis of software requirements - Involves structured analysis and object-oriented analysis to ensure that the requirements are actionable, measurable, testable, related to identified business needs or opportunities, and defined to a level of detail sufficient for system design.
•Specifications of software requirements - The process of documenting the requirements and involves the description of the system's services, constraints, and how it will react to specific inputs of conditions.

16
New cards

Structured analysis

Structured analysis tools - Context diagrams, Data Flow Diagrams(DFDs), Data Dictionary(DD), and mini-specifications are used to represents the processes, data stores, and data flows in a system.

17
New cards

Object-oriented analysis

Object-oriented analysis tools - Scenarios, Domain models, and Use-case models are developed, often utilizing UML diagrams like Use case diagrams, Class diagrams, Sequence diagrams, Activity diagrams to model the system from an object-oriented perspective.

18
New cards

Requirements verification

Techniques like inspection, walk-throughs, and technical reviews are used to verify that the requirements are complete, consistent, unambiguous, verifiable, and compliant with standards.

19
New cards

Types of requirements specification documents

Software Requirements Specification(SRS), Software System Requirements(SyRS), User Requirements Specification(URS) documents are prepared to capture all the details.

20
New cards

Software design principles

Include decomposition, abstraction, information hiding, stepwise refinement, modularity, and structuralization which guide the organization and modularization of software systems.

21
New cards

Cohesion and Coupling as module design criteria

•Cohesion - Measures the degree to which the elements inside a module belong together. Higher cohesion is better.
•Coupling - Refers to the degree of interdependence between modules. Lower coupling is better.

22
New cards

Basic concepts of software architecture

Refers to the fundamental organization of a system embodied in its components, their relationships to each other, and to the environment, and the principles guiding its design and evolution.

23
New cards

Software architecture components frameworks

IEEE-1471 provides guidelines for the description of software architectures, and Architecture Tradeoff Analysis Method(ATAM), Cost-Benefit Analysis Method(CBAM) are methods for evaluation the qualities of software architecture.

24
New cards

Object-oriented design principles

Emphasize aspects like abstraction, encapsulation, inheritance, and polymorphism and apply design principles such as Single Responsibility Principle(SRP), Open/Closed Principle(OCP), Liskov Substitution Principle(LSP), Interface Segregation Principle(ISP), Dependency Inversion Principle(DIP), and Don't Repeat Yourself(DRY).

25
New cards

Static and dynamic modeling

Utilizes UML to represent static aspects like classes and attributes, and dynamic behaviors like interactions and state change of the system.

26
New cards

Principles of UI/UX design

Focus on creating designs that are consistent, provide appropriate user support, offer adequate feedback, require minimum user input, and have simple error handling.

27
New cards

Design tools for UI/UX

Tools like Personas, Wireframes, Mockups, Prototypes, and Storyboards are used to visualize and test the design before full-scale development.

28
New cards

1.4 Software Implementation and Testing
Concepts and characteristics of programming languages

Programming languages are classified based on their level of abstraction from machine learning language(low-level, close to hardware) to high-level languages (more abstract, close to human language). Each has its characteristics, such as syntax, semantics, and paradigms like structured, procedural, imperative, functional, or object-oriented.

29
New cards

Coding rules

Standards such as C/C++ coding standards from Capability Maturity Model(CMU), Java standards from Oracle, and MISRA C/C++ ensure consistency, maintainability, and reliability in programming.

30
New cards

Major programming languages

Proficiency in languages such as C, C++, Java, and Python is crucial for various software development tasks.

31
New cards

Front-end web developement

Involves HTML5, CSS3, JavaScript, AJAX, REST, JSON for creating the user interface and user experience.

32
New cards

Back-end web development

Involves server-side scripting and database management using technologies such as Java Server Page(JSP), Application Service Provider(ASP), and Python.

33
New cards

Software development frameworks

Frameworks like the Spring framework for Java development, Android framework for mobile applications, eGovernment Standard Framework(Korea) provide structured ways to build software applications.

34
New cards

Integrated Development Environment (IDE)

•Components of IDE - Includes source code editor, build automation tools, and debugger.
•Continuous Integration(CI) - A practice that encourages developers to integrate their code into a shared repository frequently.
•Software build and deployment - Processes involved in compiling code into executable programs, packaging these programs, and deploying them to the production environment.

35
New cards

Testing concepts and processes

Software testing is a process to evaluate the functionality of a software application to ensure it meets the specified requirements.

36
New cards

Test case design methods

Includes specification-based(e.g., Equivalence partitioning, Boundary value analysis) and structure-based methods(e.g., Control flow testing).

37
New cards

White-box and black-box testing

White-box testing involves looking inside the structure of the application, while black-box testing is based on testing software from the user's perspective without looking at the internal structure.

38
New cards

Concepts of refactoring

Refactoring is the process of restructuring existing computer code without changing its external behavior to improve its non-functional attributes.

39
New cards

Code smell

An indicator of potential refactoring, pointing towards areas in the code that could be problematic and may need improvement.

40
New cards

Conducting refactoring

Includes activities such as defining magic numbers, removing comments and duplicated code, and extracting methods to improve code readability and maintainability.

41
New cards

1.5 Software Requirements Management

Requirements management involves gathering, analyzing, documenting, and maintaining software requirements. It's a process to ensure that deliverables meet stakeholder expectations and it's often divided into collection, analysis, and documentation phases.

42
New cards

Concepts and Processes of Software Requirements Management

Requirements management and requirement engineering ensure that the organization understands and documents what the software should do, aligns the software functionalities with business goals, and maintains this understanding throughout the project lifecycle.

43
New cards

Management and Tracking of Requirement Changes

Changes in requirements are inevitable and must be systematically managed to minimize project disruption and maintain quality. This involves identifying, analyzing, tracking, and approving changes to requirements.

44
New cards

Requirements Change Management

Change management includes analyzing the effects of proposed changes(side and ripple effects), and making decisions via a change control board to manage these changes effectively.

45
New cards

Requirements Traceability Management

Traceability refers to the ability to trace requirements through the forward(from requirements to deliverables) and backward(from deliverables to requirements) directions, often using a traceability matrix to record and track the requirements.

46
New cards

Software Configuration Management

Configuration management is about organizing and controlling the development process, ensuring that changes are made systematically and that the integrity of the current software state is maintained.

47
New cards

Concepts and Activities of Software Configuration Management

This includes managing changes to software artifacts, establishing baselines, and revision control. The activities ensure that the software development is organized and systematic, preventing chaos in the development process.

48
New cards

Concepts and Needs of Software Configuration Management(SCM)

SCM is needed to manage, organize, and control changes during the Software Development Life Cycle, which increases productivity and minimizes errors.

49
New cards

Activities for SCM

Activities include configuration identification, control, status reporting, auditing, and handling the evolution of software configurations.

50
New cards

Baseline

Baselines are reference points in the software development life cycle such as Functional, Allocated, Design, Test, Product, and Operation baselines, marking the transition from one phase of development to the next.

51
New cards

Use of SCM Tools

Tools like Source Code Control System(SCCS), Version Control System(CVS), Subversion(SVN), GIT, TFS, ClearCase, and RTC are used to manage configurations efficiently.

52
New cards

Software Maintenance

Software maintenance is the process of updating, refining and patching software to fix bugs, improve performance, or adapt to new environments.

53
New cards

Concepts and Types of Software Maintenance

Maintenance is not just about fixing bugs; it includes enhancements and adaptations to meet evolving user needs or operating environments.

54
New cards

Concepts and Needs for Maintenance

The need for maintenance arise from the requirement to correct faults, improve performance, and other attributes after delivery.

55
New cards

4 Types of Maintenance

The four types are corrective, adaptive, perfective, and preventive maintenance, each addressing different needs of the software life cycle.

56
New cards

Software Maintenance Activities

These activities involve the actual tasks required to fix, update, and improve the software post-deployment to ensure its relevance and efficiency over time.

57
New cards

1.6 Trends in Software Development
•Concept

Open source software(OSS) is characterized by its license, which allows users to freely access, modify, and distribute the source code. OSS fosters collaborative software development and is often developed in a public, collaborative manner.

58
New cards

Licences

•General Public License(GPL) - Requires derivatives of the code to be open source as well.
•Lesser General Public License(LGPL) - Allows linking to proprietary modules, offering more flexibility than GPL.
•Mozilla Public License(MPL) - Permits the combination of MPL-licensed code with proprietary code in larger works.
•Berkely Software Distribution(BSD) - Offers minimal restrictions on future behavior, allowing for proprietary use of the code.
•Apache - Include explicit patent grants and a patent retaliation clause, protecting against patent trolling.

59
New cards

Later Trends in Software Development

•Blockchain - Beyond cryptocurrency, used in supply chain, accounting systems, intellectual property protection, and secure e-voting.
•Cloud Computing - Facilitates collaboration, with increased use of cloud-native solutions for app development and remote work infrastructure.
•Python - Has become a leading programming language especially for AI and machine learning-based software solutions.
•TensorFlow & AI - TensorFlow, an open-source AI framework, is significant for developing intelligent models and algorithms.
•Infrastructure as Code(IaC) - Automates the management of computing resources, ensuring apps are deployed according to security standards.
•DevSecOps - Integrates security practices into the development cycle from the start, evolving from the traditional DevOps practices.
•Outsourcing - There's a significant growth in demand for outsourcing IT services, driven by cost efficiency and access to talent.
•Low-Code/No Code(LCNC) - Enables rapid development through graphical interfaces, allowing those with minimal coding skills to develop apps.
•Progressive Web Applications(PWAs) - Cost-efficient and improve user engagement without the need for app store downloads.
React Native - Continues to be popular for hybrid app development, offering high performance and a near-native user experience.
•Internet of Things(IoT) - Expanding in digital twin technology and edge computing, affecting various business sectors.
•Internet of Behavior(IoB) - Collects "digital dust" to understand and predict human behavior, though it faces privacy legislation challenges.
•Web #.) - Involves AI, machine learning, cryptocurrencies, and aims to create a more autonomous and user empowered internet.

60
New cards

Microservice Architecture

An approach where a single application is built as a suite of small services, each running in its own process and communicating with lightweight mechanisms.

61
New cards

Single Page Application(SPA)

Web applications that load a single HTML page and dynamically update that page as the user interacts with the app.

62
New cards

Platform as a Service-based Software Development

provides a platform allowing customers to develop, run, and manage applications without the complexity of building and maintaining the infrastructure typically associated with developing and launching an app.

63
New cards

2.1 Understanding the Data and Database
Understanding Data

•Data - Raw, unprocessed facts.
•Information - Processed data that's been organized or structured.
•Knowledge - Applied information, used for decision-making and generalizations.

64
New cards

Data Processing Types

•Batch Processing - Collecting data and processing it in large batches at a later point.
•Online Processing - Immediate processing of data as it is entered or received.
•Distributed Processing - Processing data across multiple computers or locations.

65
New cards

File Processing Systems

•Concepts - Organizing and storing data in files.
•Features and Problems - Data dependency, duplication issues, and integrity constraints.

66
New cards

Database Concept and Features

•Concept - A collection of integrated, stored, operational, and shared data.
•Features - Real-time accessibility, continuous evolution, concurrent sharing, content reference.

67
New cards

Database System Concept and Components

•Definition - A system to manage databases including DBMS, data, hardware, and users.
•Components - Database, Database Management System(DBMS), Data processing language, Users.

68
New cards

3-Level Database Architecture(ANSI-SPARC)

•Definition - A framework for database abstraction layers such as External, Conceptual, and Internal.
•Background Idea - To separate user applications from the physical database.

69
New cards

Data Independence

•Background - The need to modify the schema at one level without altering the other levels.
•Logical Independence - Changing the conceptual schema without affecting external views.
•Physical Independence - Changing the internal schema without affecting the conceptual schema.

70
New cards

Roles of DBA & DA

•Databased Administrator - Manages database construction, operation, design, and tuning.
•Database Architect - Establishes data standards, modeling and security systems.

71
New cards

DBMS Concepts and Functions

•Definition - Software for creating and managing databases.
•Functions - Data storage, retrieval, update, and administration of databases.
•Components - Query language processor, transaction manager. stored data manager, data catalog.

72
New cards

Data Model and Database Structure

•Models - Hierarchical, Network, Relational, Object-oriented, Object-relational.
•History and Application Areas - Evolution of database models and their use cases.

73
New cards

Object-Relational Database

Concepts and Features - A DB that integrates features of both object-oriented and relational DBs.

74
New cards

XML Documents

•XML-based Data Definition - Structures for defining data like XML Schema and DTD.
•XML Data Processing - Technologies for working with XML, such as XPath, XQuery, and XLink.

75
New cards

Various Database Systems

•Unstructured Database - Databases for documents, multimedia, GIS, etc..
•Main Memory Database Management System(MMDBMS) - Databases primarily stored in main memory.
•Row-oriented/Column-oriented DBMS - Databases optimized for row or column storage.
•Embedded DBMS - DBMS embedded within an application.
•Mobile DBMS - DBMS for mobile environments.

76
New cards

2.2 Database Design
Databased Design and Building Procedure

•Database Construction Procedure - Steps to create a database, from initial analysis to final implementation.
•Design Considerations
> Analysis Work Products - Documentation of requirements and specifications.
> Principal Personnel - Roles and responsibilities in design team.
> Impact of Design - How design choices affect functionality and performance.

77
New cards

Data Modeling

•Concepts of Data Modeling - Understanding the abstraction of real-world entities into a database structure.
> Conceptual - High-level, technology-agnostic organization of data.
> Logical - Specific to the data model(e.g., relational), often includes normalization.
> Physical - How the model will be implemented in a specific DBMS.

78
New cards

Design of Entities, Attributes and Identifiers

Tailoring the structure of the data to fulfill the requirements.

79
New cards

Design of Relationships

Establishing connections between entities, considering various types of relationships like recursive and parallel.