UNIT 2: SOFTWARE ENGINEERING - EXAM-FOCUSED SHORT NOTES
1. SOFTWARE PROCESS AND PROCESS MODELS
Capability Maturity Model (CMM)
A framework for improving software process maturity, developed by SEI/Carnegie Mellon.
-
5 Maturity Levels:
-
Initial: Ad-hoc, chaotic.
-
Repeatable: Project management processes established.
-
Defined: Process is documented and standardized.
-
Managed: Process is measured and controlled.
-
Optimizing: Continuous process improvement.
-
-
Key Process Areas (KPAs): Specific goals/practices for each level (e.g., Requirements Management at Level 2, Defect Prevention at Level 5).
-
Significance: Provides a roadmap for process improvement, predicts software quality, and is often required for contracts.
[!TIP] CMM is prescriptive (what to do), while CMMI (its successor) is more capability-focused.
Linear Sequential Model (Waterfall)
Classical, phase-by-phase approach.
-
Phases: Requirements → Design → Implementation → Testing → Deployment → Maintenance.
-
Characteristics: Simple, document-driven, milestones at phase ends.
-
Advantages: Easy to understand, manage, suitable for stable requirements.
-
Disadvantages: Inflexible, late testing, high risk if requirements error, no working software until late.
Prototyping Model
Build a quick, incomplete version to clarify requirements.
-
Types:
-
Throwaway/Rapid Prototyping: Built for understanding, then discarded.
-
Evolutionary Prototyping: Built incrementally, evolves into final system.
-
-
Process: Identify known requirements → Build prototype → User feedback → Refine/negotiate → Develop final system.
-
Applications: User interface-heavy systems, unclear requirements.
-
Advantages: Reduces risk/misunderstanding, user involvement.
-
Disadvantages: Can lead to "prototype becomes final" (poor structure), management complexity.
RAD (Rapid Application Development) Model
Emphasizes rapid development using reusable components and iterative construction.
-
Phases: Requirements Planning → User Design → Construction → Cutover.
-
Key Activities: Joint Application Development (JAD) workshops, reusable components, automated tools (4GL, CASE).
-
When to Use: Well-understood requirements, time-critical, modular systems, user involvement possible.
-
Advantages: Very fast development, high user involvement, reduced manual coding.
-
Disadvantages: Requires experienced team, scalable only for moderate size, management commitment critical.
Spiral Model
Risk-driven, iterative model combining Waterfall and prototyping.
-
Diagram & Explanation:
-
Each loop represents a phase/iteration.
-
Four Quadrants per Loop:
-
Objectives, Alternatives, Constraints: Identify goals, alternatives, risks.
-
Risk Analysis: Evaluate alternatives, resolve risks (e.g., prototype, simulate).
-
Development: Develop next version.
-
Planning: Plan next iteration.
-
-
-
Advantages: Explicit risk management, high accuracy, suitable for large/mission-critical systems.
-
Disadvantages: Complex, costly, requires significant risk-assessment expertise.
[!TIP] Spiral is risk-driven; each loop starts with risk analysis.
Agile Process Model
Values individuals, working software, collaboration, and responsiveness over processes, documentation, contracts, and plans.
-
Agile Manifesto Principles: Early delivery, welcome changing requirements, daily collaboration, sustainable development, technical excellence.
-
Comparison with Traditional:
| Traditional (Plan-Driven) | Agile (Value-Driven) | |---|---| | Fixed scope/requirements | Embrace changing requirements | | Big design up-front | Emergent design | | Documentation heavy | Working software over documentation | | Sequential phases | Iterative/incremental | | Contract negotiation | Customer collaboration |
-
Common Frameworks:
-
Scrum: Roles (Product Owner, Scrum Master, Team), Sprints (2-4 weeks), Artifacts (Product Backlog, Sprint Backlog), Ceremonies (Sprint Planning, Daily Stand-up, Review, Retrospective).
-
XP (Extreme Programming): Practices like Pair Programming, Test-Driven Development (TDD), Continuous Integration, Small Releases.
-
Evolutionary Process Models
-
Incremental Model: Deliver system in increments (functional slices). Each increment adds functionality. Reduces early risk, but requires good planning for integration.
-
Component-Based Development (CBD): Build from reusable components (libraries, services). Emphasizes component identification, procurement/integration. Advantages: Reduced cost/time, higher quality. Challenges: Component availability, compatibility.
Rational Unified Process (RUP)
A customizable, iterative framework from IBM Rational.
-
Phases:
-
Inception: Define scope, business case.
-
Elaboration: Plan project, specify architecture, mitigate top risks.
-
Construction: Build components, iterative development.
-
Transition: Deploy to users, support.
-
-
Disciplines (formerly workflows): Business Modeling, Requirements, Analysis & Design, Implementation, Test, Deployment, Configuration & Change Management, Project Management, Environment.
-
Iterations: Each phase has multiple iterations; focus shifts from architecture (Elaboration) to features (Construction).
Software Process Customization and Improvement
-
Customization (Tailoring): Adapting a standard process (like RUP, CMMI) to project/organization needs. Remove non-essential activities, adjust workflows.
-
Improvement Strategies: Process assessment (e.g., CMM), goal setting, pilot implementation, institutionalization.
-
Role of Metrics: Provide objective data to identify bottlenecks, measure improvement (e.g., defect density, cycle time). Process metrics (time, cost) vs Product metrics (size, complexity).
Comparison of Process Models
| Model | Best For | Key Strength | Key Weakness |
|---|---|---|---|
| Waterfall | Stable, well-understood requirements | Simplicity, documentation | Inflexible, late testing |
| Prototyping | Unclear UI/requirements | User feedback, risk reduction | Can produce throwaway code |
| RAD | Time-critical, modular | Speed, user involvement | Scalability, management |
| Spiral | Large, high-risk, long-term | Risk management | Complexity, cost |
| Agile | Volatile requirements, small teams | Adaptability, customer focus | Documentation, scaling |
| Incremental | Need early partial functionality | Early value, risk spread | Integration complexity |
| CBD | Systems with available components | Reuse, cost reduction | Component availability |
[!TIP] Requirements stability is the primary factor: Stable → Waterfall/Incremental; Unstable → Prototyping/Agile; High Risk → Spiral.
2. REQUIREMENTS ENGINEERING
Types of Requirements
-
Functional Requirements (FR): What the system should do (services, functions).
- Examples: "User shall be able to reset password via email link," "System shall calculate total order cost."
-
Non-Functional Requirements (NFR): Constraints on how system performs (qualities).
-
Performance: "95% of transactions shall complete in <2 sec."
-
Security: "All passwords must be stored encrypted."
-
Usability: "New user shall complete checkout in <5 minutes."
-
Reliability: "System uptime ≥ 99.9%."
-
-
Importance: FRs define scope; NFRs define quality attributes, often critical for user acceptance and system success.
Requirements Elicitation Techniques
-
Interviews: Structured/unstructured with stakeholders.
-
Surveys/Questionnaires: For large user groups.
-
Workshops/JAD: Facilitated group sessions for consensus.
-
Observation: Study users in their environment.
-
Document Analysis: Study existing systems, procedures.
-
Use Case Modeling: Identify actors, goals, scenarios (primary elicitation tool).
Use Case Modeling
-
Components:
-
Actor: External entity interacting with system (user, other system).
-
Use Case: Discrete functional unit delivering value to actor (verb-noun, e.g., "Withdraw Cash").
-
Relationships: Association (actor-use case), <<include>> (mandatory sub-function), <<extend>> (optional/conditional).
-
-
Four Basic Parts:
-
Use Case Diagram: Visual overview (actors, use cases, relationships).
-
Brief Use Case Description: One-paragraph summary.
-
Use Case Narrative/Scenario: Step-by-step main flow, alternate flows, exceptions.
-
Use Case Specification: Detailed template (preconditions, postconditions, triggers, main/alternative flows).
-
-
Application in Requirement Analysis: Bridges user needs (stories) to system functions; basis for test case design.
System Requirements Specification (SRS)
-
Components:
-
Introduction (Purpose, Scope, Definitions, References).
-
Overall Description (Product perspective, user characteristics, constraints, assumptions).
-
Specific Requirements (Functional, Non-Functional, Interface).
-
Appendices (Use cases, data models, UI mockups).
-
-
Characteristics of a Good SRS:
-
Complete: All requirements specified.
-
Consistent: No contradictions.
-
Verifiable/Testable: Can be checked (avoid "user-friendly").
-
Unambiguous: Single interpretation.
-
Modifiable: Easy to change.
-
Traceable: Each requirement uniquely identifiable.
-
-
Documenting FRs vs NFRs: FRs in numbered list with ID, description, priority. NFRs often in separate section, linked to affected FRs.
Requirements Validation and Verification
-
Validation: "Are we building the right system?" (Conformance to user needs).
-
Process: Requirements reviews (inspections), prototyping, test case derivation from SRS.
-
SRS Validation Techniques: Consistency checks, feasibility review, stakeholder walkthrough.
-
-
Verification: "Are we building the system right?" (Conformance to specifications).
- Done during/after implementation (testing, inspections).
-
Key Difference: Validation checks requirements; Verification checks product against requirements.
Requirements Traceability
-
Challenges: Volume of requirements, frequent changes, lack of tool support, manual effort.
-
Mitigation Strategies:
-
Traceability Matrix: Table linking requirements to design, code, tests (forward/backward traceability).
-
Tools: Requirements management tools (Jama, DOORS, modern ALM tools).
-
Unique IDs: Assign each requirement a stable identifier.
-
-
Importance: Ensures all requirements are implemented, impact analysis for changes, test coverage, compliance (e.g., safety standards).
[!TIP] Forward Traceability: Req → Design/Code/Test. Backward Traceability: Test/Code/Design → Req (ensures no extra features).
3. SOFTWARE DESIGN
Design Principles and Concepts
-
Fundamental Principles:
-
Abstraction: Hide complexity (different levels: architectural, component, procedural).
-
Modularity: Divide system into manageable, cohesive modules.
-
Information Hiding: Modules hide internal details, expose only interfaces.
-
Separation of Concerns: Different aspects (UI, business logic, data) handled separately.
-
Least Knowledge: Modules should know as little as possible about others.
-
-
Golden Rules of User Interface Design (from Shneiderman):
-
Strive for consistency.
-
Enable frequent users to use shortcuts.
-
Offer informative feedback.
-
Design dialogue to yield closure.
-
Offer simple error handling.
-
Permit easy reversal of actions.
-
Support internal locus of control.
-
Reduce short-term memory load.
-
UML (Unified Modeling Language)
-
Purpose: Standardized visual modeling language for software blueprints (structure, behavior, architecture).
-
Common Diagrams:
-
Structural: Class, Object, Component, Deployment.
-
Behavioral: Use Case, Sequence, Activity, State Machine.
-
-
Representing Architecture: Package diagrams for high-level grouping, component diagrams for physical structure, deployment diagrams for infrastructure.
-
Example: Library Management System:
-
Use Case Diagram: Actors: Member, Librarian. Use Cases: Borrow Book, Return Book, Add Member, Search Catalog.
-
Class Diagram: Classes:
Book,Member,Loan,Librarian. Associations:MemberborrowsBook(many-to-many viaLoan). -
Sequence Diagram: "Borrow Book" scenario:
Member→Librarian→System→Database.
-
[!TIP] UML is notation, not methodology. It supports both OO and structured approaches.
Design Approaches: Comparison
| Aspect | Function-Oriented Design (FOD) | Object-Oriented Design (OOD) |
|---|---|---|
| Decomposition | Top-down, by functions/processes | Bottom-up/top-down, by objects/classes |
| Primary Focus | Functions (what system does) | Data + Behavior (objects) |
| Key Models | DFDs, Structure Charts, Module Specs | Class Diagrams, Sequence Diagrams |
| Data Flow | Central memory (global data) | Encapsulated within objects |
| Change Impact | High (data changes ripple) | Lower (encapsulation) |
| Example | calculateTotal() operates on Order data |
Order object has calculateTotal() method |
Component-Based Design
-
Concepts: System built from pre-built, replaceable, reusable components (binary units with interfaces).
-
Components: Provide services via well-defined interfaces (e.g., JavaBeans, .NET assemblies, web services).
-
Advantages over Traditional:
-
Reuse: Reduces development time/cost.
-
Maintainability: Replace components without system-wide change.
-
Quality: Tested, proven components.
-
Parallel Development: Teams work on different components.
-
-
Challenges: Component selection, integration, versioning, interface compatibility.
Architectural Design
-
Architectural Styles (Patterns):
-
Layered: Presentation → Business Logic → Data Access. Promotes separation, but can be slow.
-
Client-Server: Clients request services from servers (2-tier, 3-tier).
-
Pipe-and-Filter: Sequential processing stages (e.g., compilers).
-
Model-View-Controller (MVC): Separates data (Model), UI (View), control logic (Controller).
-
Microservices: Independently deployable services (fine-grained).
-
-
Architectural Views (Krutchen's 4+1):
-
Logical View: Object model (class diagrams).
-
Process View: Runtime components/threads (activity/sequence).
-
Physical View: Deployment on hardware (deployment diagram).
-
Development View: Organization of modules/artifacts (package diagram).
-
Scenarios (Use Cases): Tie views together.
-
User Interface (UI) Design
-
Importance: Directly affects user satisfaction, productivity, error rates, and adoption.
-
Key Principles:
-
Consistency: Same action → same result.
-
Error Prevention: Validate inputs, confirm destructive actions.
-
User Control: Undo/redo, clear exits.
-
Visibility of System Status: Feedback (loading, success).
-
Match between System & Real World: User's language, familiar metaphors.
-
Flexibility & Efficiency: Shortcuts for experts.
-
Aesthetic & Minimalist: No irrelevant info.
-
Design Metrics
Quantitative measures to assess design quality.
-
Complexity: Measured via Cyclomatic Complexity (for code) or Structural Complexity (for design: number of modules, connections).
-
Coupling: Degree of interdependence between modules.
$$C = \text{number of connections to other modules}$$
- Lower coupling (data coupling) is better than higher (content coupling).
-
Cohesion: Degree to which elements inside a module belong together.
- Types: Functional (best), Sequential, Communicational, Procedural, Temporal, Logical, Coincidental (worst).
-
How They Help: Identify "problem" modules (high coupling, low cohesion) → refactor → predict maintainability, testability, defect density.
[!TIP] Good design: High cohesion, low coupling.
4. SOFTWARE TESTING
Test Levels and Strategies
| Level | What is Tested | Typical Criteria | Example |
|---|---|---|---|
| Unit Testing | Individual modules/functions | Path coverage, branch coverage | Test calculateTax() function in isolation |
| Integration Testing | Interactions between integrated modules | Interface correctness, data flow | Test Order module with Payment module |
| System Testing | Complete, integrated system | Functional, non-functional specs | End-to-end "Place Order" process |
| Acceptance Testing | System for user/customer acceptance | Business requirements, user needs | UAT by client, beta testing |
-
Integration Strategies:
-
Big Bang: Integrate all at once (risky).
-
Top-Down: Start from top (main control), use stubs for lower modules.
-
Bottom-Up: Start from bottom (utility modules), use drivers.
-
Sandwich/Hybrid: Combine top-down and bottom-up.
-
-
System Testing Types: Functional, Performance (load, stress), Security, Usability, Compatibility, Recovery.
-
Acceptance Testing Steps: Plan → Prepare environment → Execute with real data → Evaluate → Sign-off.
-
Alpha: In-house (developer site).
-
Beta: At user sites (field testing).
-
Test Techniques
-
Black-Box Testing: Based on specifications, ignores internal code.
-
Equivalence Partitioning (EP): Divide input domain into equivalence classes (valid/invalid). Test one representative per class.
- Example: Input age (1-120). Classes: valid (1-120), invalid (<1, >120). Test with 25, -5, 130.
-
Boundary Value Analysis (BVA): Test edges of EP classes (min, min-1, max, max+1, typical).
- Example: Age: 0, 1, 120, 121.
-
-
White-Box Testing: Based on internal structure/code.
-
Statement Coverage: Execute every statement at least once.
-
Branch/Decision Coverage: Execute every true/false branch.
-
Path Coverage: Execute every possible path (often infeasible).
-
-
Static vs Dynamic Analysis:
-
Static: Analyze code without execution (reviews, inspections, static analysis tools for style, security vulnerabilities).
-
Dynamic: Execute program with test inputs (unit, integration tests).
-
Test Case Design and Test Oracles
-
Effective Test Case: Unique ID, Test Objective, Preconditions, Input Data, Expected Output/Result, Postconditions, Pass/Fail Criteria.
-
Test Oracle: Source of expected outcome (truth). Can be:
-
Specification document.
-
Existing system (for regression).
-
Human expert/designated person.
-
Derived from model/formal specification.
-
Test Metrics
-
Types:
-
Process Metrics: Monitor testing process (test cases written/executed/day, defect arrival rate).
-
Product Metrics: Measure product under test (defect density = defects/KSLOC, test coverage = % requirements tested).
-
Project Metrics: Track project health (test effort vs plan, defect removal efficiency).
-
-
Purpose: Monitor progress, control quality, predict release readiness, improve process.
-
Product vs Process Metrics:
-
Product: What is the quality of the software? (e.g., defects found).
-
Process: How effective is our testing? (e.g., % requirements covered by tests).
-
Testing Tools
-
Categories:
-
Automation Tools: Selenium (web), JUnit (Java unit), TestNG, Cypress.
-
Performance Tools: JMeter, LoadRunner.
-
Defect Tracking: Jira, Bugzilla.
-
Static Analysis: SonarQube, Checkstyle, FindBugs.
-
-
Role: Automate repetitive tasks, increase coverage, simulate load, manage defects, ensure consistency.
Test Plan
-
Importance in SQA: Roadmap for testing, ensures systematic coverage, manages resources/schedule, baseline for evaluation.
-
Components (IEEE 829 standard):
-
Test Plan Identifier
-
Introduction (purpose, scope)
-
Test Items (software versions)
-
Features to be Tested / Not Tested
-
Approach (techniques, tools, pass/fail criteria)
-
Item Pass/Fail Criteria
-
Suspension/Resumption Criteria
-
Test Deliverables (reports, logs)
-
Testing Tasks (schedule, resources)
-
Environmental Needs
-
Responsibilities
-
Staffing & Training
-
Schedule
-
Risks & Contingencies
-
5. SOFTWARE PROJECT MANAGEMENT
Project Scheduling and Tracking
-
Key Steps:
-
Task Identification: Work Breakdown Structure (WBS).
-
Sequencing: Define dependencies (FS, SS, FF, SF).
-
Estimation: Duration/resource effort per task.
-
Scheduling: Assign dates, create Gantt chart, identify critical path (CPM).
-
-
Tracking Mechanisms:
-
Milestones: Key dates/deliverables.
-
Earned Value Management (EVM):
-
PV (Planned Value): Budgeted cost for planned work.
-
EV (Earned Value): Budgeted cost for actual work done.
-
AC (Actual Cost): Actual cost incurred.
-
Key Indices:
-
CPI (Cost Performance Index) = EV/AC (>1 under budget).
-
SPI (Schedule Performance Index) = EV/PV (>1 ahead).
-
-
-
-
Importance: Predict completion, identify deviations early, manage stakeholder expectations, control costs.
Cost Estimation
-
Techniques:
-
Expert Judgment: Consult experienced individuals.
-
Analogous Estimating: Use similar past project data.
-
Parametric Models:
- COCOMO (Constructive Cost Model):
-
$$E = a \times (KSLOC)^b \times \text{EM}$$
Where:
- $E$ = Effort in person-months (PM).
- $KSLOC$ = Thousands of Source Lines of Code.
- $a, b$ = Constants (depend on project type: Organic, Semi-detached, Embedded).
- $EM$ = Effort Multiplier (product of 15 cost drivers like RELY, DATA, CPLX, etc.).
- **Function Points (FP)**: Measure functionality from user view (inputs, outputs, inquiries, files, interfaces). Convert to LOC via language-dependent factor.
- **Bottom-Up**: Estimate components, roll up.
- Factors Affecting Cost: Size, complexity, team experience, technology, tools, requirements stability, schedule pressure.
Risk Assessment and Mitigation
-
Risk Identification: Categorize risks:
-
Technical: Performance, technology, quality.
-
Management: Planning, coordination, staffing.
-
External: Legal, market, environmental.
-
Organizational: Budget, priorities.
-
-
Risk Projection (Estimation):
-
Establish scale (probability: 0-1; impact: negligible to catastrophic).
-
Identify risks.
-
Estimate probability & impact.
-
Risk Information Sheet (RIS) for each risk: Description, Category, Probability, Impact, Mitigation Plan, Owner.
-
-
Mitigation Strategies:
-
Avoid: Change plan to eliminate risk.
-
Transfer: Shift to third party (insurance, outsourcing).
-
Mitigate: Reduce probability/impact (prototyping, training).
-
Accept: Acknowledge, have contingency plan.
-
-
Principles: Proactive, continuous, prioritized, integrated into project plan.
Software Configuration Management (SCM)
-
Role: Manage changes to software artifacts (code, docs, models) throughout lifecycle. Ensures integrity, traceability, reproducibility.
-
Key Activities:
-
Version Control: Track changes (e.g., Git:
commit,branch,merge). -
Change Control: Process to evaluate, approve, implement changes (Change Request → Review → Approve/Reject → Implement → Verify).
-
Configuration Auditing: Formal review to ensure compliance with baselines.
-
Status Reporting: Track configuration items.
-
-
Example (Git):
-
git commit -m "fix login bug": Record change. -
git branch feature-x: Create branch for new feature. -
git merge feature-x: Integrate feature into main.
-
Feasibility Analysis
-
Types:
-
Technical: Can we build it with available technology/expertise?
-
Economic: Cost-benefit analysis (ROI, NPV, payback period).
-
Operational: Will it be used? Fit with existing processes?
-
Legal/Contractual: Compliance with laws, regulations, contracts.
-
Schedule: Can we meet deadline?
-
-
Process: Initial investigation → Detailed analysis of each type → Go/No-Go recommendation.
-
Importance: Avoid costly mistakes, align with business goals, secure funding.
Project Plan
-
Components: Scope statement, Schedule (WBS, Gantt, milestones), Cost estimate/budget, Resource plan (people, equipment), Risk management plan, Quality plan, Communication plan.
-
Relationship with Project Metrics: Plan defines what to measure (e.g., "track CPI monthly"). Metrics provide data to compare actual vs plan, enabling control.
6. SOFTWARE QUALITY AND MAINTENANCE
Software Quality Assurance (SQA)
-
Definition: A planned, systematic pattern of activities to ensure quality in software processes and products.
-
Goals: Ensure processes are followed, products meet specifications, prevent defects.
-
Activities:
-
Audits: Independent examination of processes/products.
-
Reviews: Formal/informal (inspections, walkthroughs, peer reviews).
-
Process Standards: Define/ensure adherence to standards (e.g., coding, documentation).
-
Measurement & Analysis: Collect metrics, analyze trends.
-
Training: Ensure team competence.
-
Quality Metrics
-
For Maintenance:
-
Mean Time to Repair (MTTR): Average time to fix a failure.
-
Fault Density: Defects per KLOC or per function point.
-
Mean Time Between Failures (MTBF): Average time between system failures.
-
Backlog of Open Defects: Number of unresolved defects.
-
-
Overall Software Quality Metrics:
-
Customer Satisfaction: Surveys.
-
Defect Removal Efficiency (DRE): (Defects found before release) / (Total defects found) × 100%.
-
Reliability: Probability of failure-free operation over time.
-
Software Maintenance
-
Why Needed: Software is never "finished"; must adapt to changing environment, fix errors, enhance features.
-
Types:
-
Corrective: Fix defects (bugs).
-
Adaptive: Adapt to environment changes (OS, hardware, regulations).
-
Perfective: Enhance performance, maintainability, features.
-
Preventive: Prevent future problems (code refactoring, documentation updates).
-
-
Statistics: Typically 60-80% of total cost is maintenance.
Re-engineering and Reverse Engineering
-
Reverse Engineering: Analyze existing system to identify components and interrelationships → create representations (higher-level models). Focus: Understanding.
-
Re-engineering: Restructuring or rewriting system to improve quality, often using reverse engineering output. May involve: code refactoring, data migration, architecture update.
-
Key Differences:
| Reverse Engineering | Re-engineering | |---|---| | Analysis only | Analysis + modification | | Output: models, docs | Output: new/improved system | | No change to code | Code is changed |
Program Comprehension Techniques
-
Approaches for Understanding Existing Code:
-
Documentation: Read design docs, comments, manuals.
-
Debugging/Tracing: Run with debugger, trace execution.
-
Static Analysis: Use tools to generate call graphs, metrics.
-
Visualization: IDE tools, dependency graphs.
-
Knowledge Acquisition: Talk to original developers/users.
-
Formal Methods: Abstract interpretation, slicing.
-
-
Tools: IDE (VSCode, IntelliJ), Doxygen (documentation), Understand (static analysis), GDB (debugging).
7. SPECIAL TOPICS & COMPARISONS
Structured Analysis and Structured Design (SA/SD)
-
SA (Analysis Model): Understand what system must do.
- Tools: Data Flow Diagrams (DFDs - context, level 0, level 1), Entity-Relationship (ER) Diagrams, Data Dictionaries.
-
SD (Design Model): Define how system will be built.
- Tools: Structure Charts (module decomposition, data passing), Module Specifications (pseudocode).
-
Process: DFDs → Transform/Centralized analysis → Structure Chart → Detailed Design.
Object Models
-
Concepts: Model system as interacting objects (instances of classes).
-
Key Diagrams:
-
Class Diagram: Static structure (classes, attributes, operations, relationships: association, inheritance, dependency).
-
Object Diagram: Snapshot of objects at a point in time.
-
Sequence Diagram: Dynamic interactions over time (messages between objects).
-
-
Comparison with Structured Models:
| Structured (SA/SD) | Object-Oriented | |---|---| | Data & processes separate | Data + behavior encapsulated | | DFDs, Structure Charts | Class, Sequence Diagrams | | Top-down decomposition | Object identification, collaboration | | Global data stores | Object state |
Validation vs Verification (Broader Context)
-
Verification: "Are we building the product right?" (Conformance to specs). Activities: Reviews, inspections, static analysis, testing against requirements.
-
Validation: "Are we building the right product?" (Conformance to user needs). Activities: Prototyping, user acceptance testing, beta testing.
-
Analogy: Verification = building to code; Validation = building the correct house.
Component Model in Software Engineering
-
Definition: A component is a replaceable, reusable unit that encapsulates implementation and exposes a set of interfaces.
-
Diagram: Shows component (rectangle with "lollipop" for provided interface, "socket" for required interface), dependencies.
-
Key Concepts: Interface contract, component repository, middleware (for communication).
-
Example: A
PaymentProcessorcomponent withIPaymentinterface, used byOrdercomponent.
Feasibility Analysis (Reiterated from Project Management)
-
Types: Technical, Economic, Operational, Legal, Schedule.
-
Process: Define scope → Analyze each type → Assess risks → Recommend.
-
Importance: Early go/no-go decision, resource justification, risk identification.
Test Oracles (Reiterated from Testing)
-
Definition: Mechanism to determine if test output is correct.
-
Sources: Specification, existing system, user expectation, derived from model.
-
Challenge: Often the oracle itself is unreliable or unavailable ("oracle problem").
-
Types: Specified (from doc), Derived (from model), Implicit (human expectation).
END OF UNIT 2 NOTES
Focus on understanding definitions, comparisons, and being able to explain with examples/diagrams as per past papers.