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

Budget AppAndroid App

Pocketly on Android

Log daily food, travel, and hostel expenses instantly. Set monthly spending limits and see where your money goes without complex spreadsheets.