Analysis
The process of examining and evaluating a system or software requirements to ensure they meet the needs of stakeholders and form a basis for design. Includes considering the data, procedures, future and existing problems.
Design
The phase in software development where specifications are translated into a blueprint for building the system, detailing architecture, components, interfaces, and data to meet requirements.
Development
The stage in software development where the actual coding and implementation of the design occur, transforming the blueprint into a functional application or system.
Testing
The phase in software development where the system is executed to identify defects and ensure that it meets specified requirements. Testing includes various methods such as unit testing, integration testing, and system testing.
Black Box Testing
A testing method that evaluates the functionality of an application without peering into its internal structures or workings. The tester focuses on inputs and outputs, ensuring the system behaves as expected.
White Box Testing
A testing method that involves examining the internal structures and workings of an application. Testers have access to the code and can design test cases based on the program's logic.
Alpha Testing
The initial phase of testing conducted by internal teams before the software is released to external testers. It aims to identify bugs and ensure the software's functionality and performance meet the required standards.
Beta Testing
The second phase of testing that occurs after alpha testing, where the software is released to a limited number of external users for real-world exposure. This phase helps identify any remaining issues and gather feedback before the final release.
Implementation
The process of executing a plan or design, putting the software into operation and integrating it into the existing system. It involves coding, testing, and deploying the application for use.
Evaluation
The systematic assessment of a software product's performance, usability, and effectiveness after implementation. It helps determine if the software meets the intended requirements and user needs.
Waterfall Model
A linear and sequential approach to software development where each phase must be completed before the next begins. It emphasizes thorough documentation and planning, making it easier to manage and control.
Spiral Model
A software development process that combines iterative development with the systematic risk assessment of each iteration. It emphasizes continuous refinement and user feedback throughout the lifecycle.
Agile Approach
A flexible and iterative software development methodology that promotes adaptive planning, evolutionary development, early delivery, and continuous improvement, encouraging rapid and flexible responses to change.
Extreme Programming
A software development methodology that emphasizes customer satisfaction, frequent releases, and collaborative, cross-functional teams. It incorporates practices like pair programming, test-driven development, and continuous integration.
Rapid Application Development
A software development methodology that focuses on quickly building prototypes and iterative development to accelerate the delivery of high-quality software. It emphasizes user involvement and feedback throughout the development process.
Algorithm
A step-by-step procedure or formula for solving a problem or completing a task, often implemented in programming to perform calculations or data processing.
Properties of a good algorithm
Include clarity, efficiency, and correctness, ensuring it effectively solves the problem while being easily understandable and optimized for performance.
Uses of Algorithms
Search engines, route-finding, compression, encryption
Divide and Conquer Algorithm
A problem-solving strategy that divides a larger problem into smaller, more manageable subproblems, solves each subproblem independently, and combines their solutions to solve the original problem. This approach is often used in algorithms like binary search, merge sort and quicksort, making it efficient for sorting and searching tasks.
Trace Table
A tool used to trace the execution of an algorithm by recording the values of variables at each step, helping to understand and debug the algorithm's flow.
Programming Paradigm
A fundamental style or approach to programming that dictates how developers structure and organize their code, including paradigms such as procedural, object-oriented, functional, and declarative programming.
Procedural Programming
A programming paradigm based on the concept of procedure calls, where programs are structured as a sequence of instructions or statements that operate on data. It emphasizes a linear top-down approach and the use of functions to encapsulate code.
Structured Programming
A programming paradigm that emphasizes breaking down a program into smaller, manageable sub-programs or modules, promoting clear structure and flow control through constructs like loops and conditionals.
Object Oriented Programming
A programming paradigm based on the concept of "objects," which can contain data and methods. It promotes code reusability and organization through principles like encapsulation, inheritance, and polymorphism.
Declarative Programming
A programming paradigm that expresses the logic of a computation without describing its control flow. It focuses on what the program should accomplish rather than how to achieve it, often seen in languages like SQL and Prolog.
Functional Programming
A programming paradigm that treats computation as the evaluation of mathematical functions and avoids changing state or mutable data. It emphasizes the use of pure functions and higher-order functions.
Data Structure
A systematic way to organize and store data in a computer, enabling efficient access and modification. Common types include arrays, linked lists, stacks, and queues.
Class
A blueprint for creating objects in object-oriented programming, defining properties and methods that the created objects will have.
Object
An instance of a class that encapsulates data and behavior in object-oriented programming. Objects can interact with one another and have properties and methods.
Inheritance
A fundamental concept in object-oriented programming that allows a class to inherit properties and methods from another class, promoting code reuse and establishing a hierarchical relationship.
Polymorphism
The ability of different classes to be treated as instances of the same class through a common interface, allowing methods to be used interchangeably based on the object's actual class.
Methods
Functions defined within a class that operate on objects, allowing for the execution of specific behaviors or actions.
Encapsulation
The bundling of data and methods that operate on that data within a single unit, or class, restricting access to some of the object's components to protect the integrity of the data.
Constructor
A special method used to initialize objects of a class, setting initial values for attributes and preparing the object for use.
OOP Advantages
Benefits of Object-Oriented Programming such as reusability, scalability, and improved maintainability.
Assembly Language
A low-level programming language that is closely related to machine code, used for writing programs that are specific to a computer architecture.
Assembler
A tool that translates assembly language code into machine code, enabling the execution of programs on a computer.
INP
A command used in assembly language to read input from a device, typically from the keyboard.
STA
A command in assembly language used to store the value from a register into a specified memory location.
ADD
A command in assembly language that performs addition on values in registers or memory locations and stores the result in a register.
SUB
A command in assembly language that subtracts the value of one register or memory location from another and stores the result in a register.
OUT
A command in assembly language that sends the contents of a specified register to an output device or port.
HLT
A command in assembly language that halts the execution of a program.
DAT
A command in assembly language that reserves memory space for variables and data.
BRA
A command in assembly language that causes a branch to a specified address in the program.
BRP
A command in assembly language that branches to a specified address if the previous result is positive.
BRZ
A command in assembly language that branches to a specified address if the previous result is zero.
LDA
A command in assembly language that loads a value from memory into the accumulator.
LMC
A programming model used to understand basic computer architecture and assembly language, often represented as a simplified machine with a limited instruction set.
Opcode
A numeric value that represents a specific instruction in machine language, used by the CPU to execute commands.
Operand
A value or address used by an opcode in machine language to specify the data to be manipulated or the location of that data.
Addressing Mode
A method used in assembly language to specify the location of an operand in memory or the way an operand is accessed by the instruction.
Immediate Addressing
A mode where the operand is a constant value directly specified within the instruction, rather than a memory address.
Direct Addressing
A mode where the operand's memory address is explicitly given in the instruction, allowing direct access to the data.
Indirect Addressing
A mode where the address of the operand is specified indirectly through a register or memory location, allowing for more flexible data access.
Indexed Addressing
A mode where the effective address of the operand is generated by adding a constant value to the contents of a register, typically used for accessing arrays or tables.