TOPCIT Examination Reviewer

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

1/135

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.

136 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.

4
New cards

•Reuse can be as simple as copying and pasting code or as complex as integrating large systems.

5
New cards

•Component-based development is an aspect of software reuse that involves using self-contained components to build applications.

6
New cards

1.2 Data Structure and Algorithm

7
New cards

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.

8
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.

9
New cards

Types of Data Structure - Linear & Non-Linear

•Linear structures include elements arranged in a sequential order; while

10
New cards

•Non-Linear structures have elements that are not arranged sequentially and can be connected to multiple elements.

11
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.

12
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.

13
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.

14
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.

15
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.

16
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.

17
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.

18
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.

19
New cards

1.3 Software analysis and design

20
New cards

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.

21
New cards

•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.

22
New cards

•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.

23
New cards

•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.

24
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.

25
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.

26
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.

27
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.

28
New cards

Software design principles

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

29
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.

30
New cards

•Coupling - Refers to the degree of interdependence between modules. Lower coupling is better.

31
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.

32
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.

33
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).

34
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.

35
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.

36
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.

37
New cards

1.4 Software Implementation and Testing

38
New cards

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.

39
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.

40
New cards

Major programming languages

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

41
New cards

Front-end web developement

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

42
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.

43
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.

44
New cards

Integrated Development Environment (IDE)

•Components of IDE - Includes source code editor, build automation tools, and debugger.

45
New cards

•Continuous Integration(CI) - A practice that encourages developers to integrate their code into a shared repository frequently.

46
New cards

•Software build and deployment - Processes involved in compiling code into executable programs, packaging these programs, and deploying them to the production environment.

47
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.

48
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).

49
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.

50
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.

51
New cards

Code smell

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

52
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.

53
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.

54
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.

55
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.

56
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.

57
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.

58
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.

59
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.

60
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.

61
New cards

Activities for SCM

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

62
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.

63
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.

64
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.

65
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.

66
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.

67
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.

68
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.

69
New cards

1.6 Trends in Software Development

70
New cards

•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.

71
New cards

Licences

•General Public License(GPL) - Requires derivatives of the code to be open source as well.

72
New cards

•Lesser General Public License(LGPL) - Allows linking to proprietary modules, offering more flexibility than GPL.

73
New cards

•Mozilla Public License(MPL) - Permits the combination of MPL-licensed code with proprietary code in larger works.

74
New cards

•Berkely Software Distribution(BSD) - Offers minimal restrictions on future behavior, allowing for proprietary use of the code.

75
New cards

•Apache - Include explicit patent grants and a patent retaliation clause, protecting against patent trolling.

76
New cards

Later Trends in Software Development

•Blockchain - Beyond cryptocurrency, used in supply chain, accounting systems, intellectual property protection, and secure e-voting.

77
New cards

•Cloud Computing - Facilitates collaboration, with increased use of cloud-native solutions for app development and remote work infrastructure.

78
New cards

•Python - Has become a leading programming language especially for AI and machine learning-based software solutions.

79
New cards

•TensorFlow & AI - TensorFlow, an open-source AI framework, is significant for developing intelligent models and algorithms.

80
New cards

•Infrastructure as Code(IaC) - Automates the management of computing resources, ensuring apps are deployed according to security standards.

81
New cards

•DevSecOps - Integrates security practices into the development cycle from the start, evolving from the traditional DevOps practices.

82
New cards

•Outsourcing - There's a significant growth in demand for outsourcing IT services, driven by cost efficiency and access to talent.

83
New cards

•Low-Code/No Code(LCNC) - Enables rapid development through graphical interfaces, allowing those with minimal coding skills to develop apps.

84
New cards

•Progressive Web Applications(PWAs) - Cost-efficient and improve user engagement without the need for app store downloads.

85
New cards

React Native - Continues to be popular for hybrid app development, offering high performance and a near-native user experience.

86
New cards

•Internet of Things(IoT) - Expanding in digital twin technology and edge computing, affecting various business sectors.

87
New cards

•Internet of Behavior(IoB) - Collects "digital dust" to understand and predict human behavior, though it faces privacy legislation challenges.

88
New cards

•Web #.) - Involves AI, machine learning, cryptocurrencies, and aims to create a more autonomous and user empowered internet.

89
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.

90
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.

91
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.

92
New cards

2.1 Understanding the Data and Database

93
New cards

Understanding Data

•Data - Raw, unprocessed facts.

94
New cards

•Information - Processed data that's been organized or structured.

95
New cards

•Knowledge - Applied information, used for decision-making and generalizations.

96
New cards

Data Processing Types

•Batch Processing - Collecting data and processing it in large batches at a later point.

97
New cards

•Online Processing - Immediate processing of data as it is entered or received.

98
New cards

•Distributed Processing - Processing data across multiple computers or locations.

99
New cards

File Processing Systems

•Concepts - Organizing and storing data in files.

100
New cards

•Features and Problems - Data dependency, duplication issues, and integrity constraints.