Back to the 2019 paper

Module 5: Software Maintenance

2019?m

Write short notes on the following:
(a) Software reuse
(b) Capability maturity model
(c) Functional and non-functional requirements
(d) Software re-engineering

Worked SolutionAI Assisted

Short Notes

(a) Software Reuse

Software reuse means using existing software assets—such as components, libraries, frameworks, designs or services—in a new system instead of developing everything from scratch.

Benefits

  • Reduces development time and cost.
  • Improves reliability when proven components are reused.
  • Promotes standardization.
  • Reduces duplicated effort.

Example

A developer may reuse an existing authentication library rather than implementing password hashing and session management from the beginning.


(b) Capability Maturity Model (CMM)

The Capability Maturity Model is a framework for assessing and improving the maturity of an organization's software development process.

Five maturity levels

  1. Initial — process is ad hoc and unpredictable.
  2. Repeatable — basic project-management practices are established.
  3. Defined — processes are documented and standardized across the organization.
  4. Managed — processes are measured and controlled quantitatively.
  5. Optimizing — continuous process improvement is emphasized.

CMM helps organizations make their software processes more disciplined, measurable and predictable.


(c) Functional and Non-functional Requirements

Functional requirements

Describe what the system must do—its services, behaviors and responses.

Example: "The ATM shall allow a customer to withdraw cash after successful authentication."

Non-functional requirements

Describe how well the system must operate or constraints under which it must operate.

Examples: performance, security, reliability, usability and availability.

Functional Non-functional
Specifies system behavior/services Specifies qualities and constraints
Example: process a withdrawal Example: respond within 2 seconds

(d) Software Re-engineering

Software re-engineering is the systematic examination and transformation of an existing software system to improve its maintainability, structure, performance or technology while preserving useful functionality.

Typical activities

  • Inventory analysis: identify systems/components that need attention.
  • Document restructuring: improve missing or outdated documentation.
  • Reverse engineering: recover higher-level design/knowledge from existing code.
  • Code restructuring: improve source code structure without changing intended behavior.
  • Data restructuring: reorganize or migrate data.
  • Forward engineering: rebuild or modernize the system using recovered knowledge.

Benefits

  • Extends software life.
  • Reduces maintenance difficulty.
  • Preserves valuable business functionality.
  • Can be cheaper and less risky than replacing a mature system completely.

Similar questions