Exam Flashcards
Revisions vs. Variations
Revisions
are updates to a piece of software that happen to fix problems, add new features, or improve performance. Each update gets a new version number, replacing the old one.
Variations
are different versions of the same software made for specific uses, such as different hardware.
Design Patterns
Design patterns
are reusable solutions for common software problems, guiding how to organize code.
Example,
The “adapter pattern” helps different classes work together by using an adapter class.
Benefits
Include reusing proven solutions, improving communication between developers, and making software easier to maintain.
Triple Constraints of Project Management
Scope defines what work will be done and the deliverables.
Time sets the project schedule and tracks its duration.
Cost determines the budget and monitors spending.
Role of the SQA Group
Verification and Validation (V&V): Ensures software meets specifications and user needs through systematic reviews and testing.
Testing: Plans and executes various types of tests to identify defects and ensure proper software operation.
Operationalization: Develops and enforces quality processes and standards, ensuring consistent and reliable development practices.
Preparation: Creates quality plans that outline goals, standards, and procedures, helping set clear expectations and manage risks.
Analytics: Collects, analyzes, and reports on quality metrics to track progress and identify improvement areas.
OOP vs. Classic
Object-Oriented Paradigm:
Uses objects and classes, emphasizing encapsulation, inheritance, and polymorphism, which promote modularity and reusability.
Classic Paradigm (Procedural Programming):
It focuses on functions and procedures, emphasizing the sequence of actions, but lacks modularity and reusability.
Need for Object-Oriented Paradigm:
Essential for breaking down complex systems, reusing code, simplifying maintenance, and scaling large projects effectively.
testing is integrated throughout development to ensure continuous feedback and improvement rather than isolated into a dedicated phase.
Processes of Project Management
- Initiating: Define the project and get approval to start.
- Planning: Set goals, define tasks, create schedules, and allocate resources.
- Executing: Perform the tasks and activities as planned.
- Monitoring and Controlling: Track progress, review performance, and make adjustments to stay on schedule and budget.
- Closing: Complete all project activities, deliver results, and finalize documentation.
- Scheduling: Create a detailed timeline, set start and end dates for tasks, and ensure resources are properly allocated.
Two Types of Testing: V&V and the Absence of a Dedicated Phase
V&V (Verification and Validation):
Verification: ensuring the software artifacts (requirements, design, and code) are correctly implemented according to the specifications.
Validation: making sure the final software product meets the user’s needs and requirements.
Why No Dedicated Testing Phase?
Testing should be an ongoing activity throughout the software development lifecycle, not just a separate phase at the end.
Early Detection:Faults are much easier and cheaper to fix early on.
Continuous Improvement: Testing helps the team learn and improve as the project progresses.
Waterfall Life Cycle Model
Sequential Steps:
A linear model where each phase must be completed before moving on to the next (requirements, design, implementation, testing, and deployment).
Strengths: Good for projects with clear, well-defined requirements and minimal change.
Weaknesses: less flexible to adapt to changing requirements.
Life Cycle Model Selection (Case Study-based)
The best model depends on the specifics of the project.
Well-defined requirements, minimal change: Waterfall model
Complex requirements, frequent change, high risk: Agile, Spiral
Requirements unclear; need for user feedback: Prototyping
Levels of Software Capability Model (CMM)
Level 1: Initial: Unpredictable and uncontrolled processes.
Level 2: Repeatable: Basic project management processes are established.
Level 3: Defined: Processes are documented and standardized.
Level 4: Managed: Quantitative measures are used to monitor and control processes.
Level 5: Optimizing: Continuous process improvement is emphasized.
7 Categories of Cohesion
Coincidental: The module performs unrelated operations (bad).
Logical:The module performs related operations based on a selection (better, but still not great).
Temporal: The module performs operations related to time (not ideal).
Procedural: Operations are related by a sequence of steps (better than temporal).
Communicational: Operations work on the same data (better than procedural).
Functional: The module performs a single, well-defined function (ideal).
Informational: The module performs multiple operations on the same data structure, each with independent code (very good, often reflecting object-oriented design).
5 Levels of Coupling
Content Coupling: One module directly modifies the code of another (very bad).
Common Coupling: Modules share the same global data (bad).
Control Coupling: One module controls the logic of another (not ideal).
Stamp Coupling: Modules share data structures but only use part of the data (better but not ideal).
Data Coupling: Modules communicate by passing data (ideal).