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.