Design, implementation, testing and maintenance are the engineering core after requirements. PSC questions often ask cohesion/coupling, architectural design, coding standards, black-box/white-box testing, test levels, debugging and maintenance types.
Engineering Definitions
Software design
Standard definition: The process of defining architecture, components, interfaces and data for a software system.
Exam meaning: Requirement लाई architecture, modules, interface र data design मा बदल्ने प्रक्रिया।
Testing
Standard definition: Executing or evaluating software to find defects and gain confidence in quality.
Exam meaning: Software मा defects पत्ता लगाउन र quality जाँच्न गरिने activity।
Debugging
Standard definition: The process of locating, analyzing and fixing the cause of a defect.
Exam meaning: Test मा भेटिएको failure को root cause खोजेर fix गर्ने प्रक्रिया।
Maintenance
Standard definition: Modification of software after delivery to correct faults, improve qualities or adapt to changes.
Exam meaning: Delivery पछि software correction, adaptation वा improvement गर्ने काम।
Concept Teaching
Design decides structure before code. Implementation should preserve design intent. Testing reveals failures but does not prove absence of bugs. Maintenance dominates lifecycle cost, so maintainability must be designed in from the beginning.
Design Concepts
Good design manages complexity.
- Abstraction hides detail.
- Modularity divides responsibility.
- Information hiding protects internal decisions.
- High cohesion keeps module focused.
- Low coupling reduces change impact.
- Separation of concerns isolates different responsibilities.
Testing Levels
Each level targets different integration scope.
| Level | Focus | Typical owner |
|---|---|---|
| Unit | Single function/class/module | Developer |
| Integration | Interfaces between modules | Developer/test team |
| System | Complete system behavior | QA/test team |
| Acceptance | User/business need | Customer/user |
Testing Techniques
Black-box and white-box differ by visibility of code.
- Black-box testing derives cases from requirements.
- Equivalence partitioning reduces redundant inputs.
- Boundary value analysis tests edges.
- White-box testing uses code structure.
- Path/branch/statement coverage measure exercised code.
- Regression testing checks existing behavior after change.
Maintenance Types
Maintenance is not only bug fixing.
| Type | Purpose | Example |
|---|---|---|
| Corrective | Fix faults | Bug fix |
| Adaptive | Adapt to environment | New OS/API |
| Perfective | Improve features/performance | Enhancement |
| Preventive | Improve future maintainability | Refactoring |
Engineering Mechanism
- Convert requirements to architecture.
- Decompose system into modules/components.
- Define interfaces and data design.
- Implement with coding standards and reviews.
- Test at unit, integration, system and acceptance levels.
- Debug defects and maintain after release.
Diagrams / Models To Draw
- Draw layered architecture.
- Draw module dependency graph.
- Draw testing V-model levels.
- Draw defect lifecycle.
Formulas, Algorithms and Rules
- Cyclomatic complexity V(G)=E-N+2P.
- Defect density = defects / size.
- Reliability grows when defects are removed and operational failures decrease.
- Regression test suite protects old behavior after change.
| Concept | Role | Exam trap |
|---|---|---|
| Cohesion | Module focus | High is good |
| Coupling | Interdependency | Low is good |
| Black-box | Requirement-based testing | No code view needed |
| White-box | Structure-based testing | Uses code paths |
| Debugging | Find/fix cause | Different from testing |
| Maintenance | Post-delivery change | Four types |
Exam Point
- Testing finds defects; debugging fixes causes.
- Mention all four maintenance types.
- Boundary value analysis is black-box.
- Cyclomatic complexity relates to independent paths.
- High cohesion and low coupling are core design goals.
Worked Example
For an age input valid from 18 to 60, boundary value tests include 17, 18, 19, 59, 60 and 61. These catch edge-condition defects better than random middle values only.
Subjective Answer Pattern
- Define design and implementation.
- Explain modular design principles.
- Discuss testing levels and techniques.
- Differentiate testing/debugging.
- Explain maintenance types.
- Conclude with quality/maintainability.
Common Engineering Mistakes
- Saying testing proves program is bug-free.
- Confusing debugging with testing.
- Ignoring integration testing.
- Thinking maintenance means only corrective fixes.
- Preferring high coupling.
MCQ Revision
- Boundary value analysis is which testing type?
- Which maintenance adapts to new environment?
- What does cyclomatic complexity measure?
- High cohesion is good or bad?
- Testing vs debugging?
- Which testing level checks full system?
Final Summary
- Design manages structure and complexity.
- Implementation should follow standards and reviews.
- Testing has levels and techniques.
- Debugging fixes root causes.
- Maintenance includes corrective, adaptive, perfective and preventive changes.