0% found this document useful (0 votes)
7 views3 pages

Software Engineering Evolution and Frameworks

The document outlines key concepts in software engineering, including the Laws of Software Evolution, which emphasize the necessity of continuous adaptation and maintenance of software systems. It introduces the W2H5 framework for understanding project requirements and the FURPS model for classifying software quality attributes. Additionally, it discusses the phases of Requirements Engineering and the methodology of White Box Testing, highlighting its advantages and challenges.

Uploaded by

zaidzaman52
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views3 pages

Software Engineering Evolution and Frameworks

The document outlines key concepts in software engineering, including the Laws of Software Evolution, which emphasize the necessity of continuous adaptation and maintenance of software systems. It introduces the W2H5 framework for understanding project requirements and the FURPS model for classifying software quality attributes. Additionally, it discusses the phases of Requirements Engineering and the methodology of White Box Testing, highlighting its advantages and challenges.

Uploaded by

zaidzaman52
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Software Engineering Concepts

Laws of Software Evolution

The Laws of Software Evolution were proposed by Lehman and Belady. These laws describe how software

systems evolve over time and emphasize that software must adapt or risk becoming obsolete.

1. **Continuing Change** - Software must continuously evolve to remain useful.

2. **Increasing Complexity** - Software becomes more complex unless work is done to reduce it.

3. **Self-Regulation** - Evolution processes are self-regulating with predictable trends.

4. **Conservation of Stability** - Over time, the global activity rate in evolving software remains constant.

5. **Conservation of Familiarity** - Developers must limit the rate of system growth to maintain user

familiarity.

6. **Continuing Growth** - To remain useful, software must be enhanced with new functionality.

7. **Declining Quality** - Without maintenance, software quality degrades over time.

8. **Feedback System** - Software evolution is multi-level, multi-loop, and feedback-driven.

These laws help guide long-term software maintenance and planning.

W2H5 Framework

W2H5 is a structured framework for understanding all aspects of a situation or system in software

engineering.

- **What?** - What is the problem, task, or requirement?

- **Why?** - Why is it needed or important?

- **Who?** - Who are the stakeholders or users?

- **When?** - When should it be implemented?

- **Where?** - Where will it be used or deployed?

- **Which?** - Which components or tools are involved?

- **How?** - How will it be carried out?


Software Engineering Concepts

This framework is especially helpful in requirements gathering and project planning.

FURPS Model

FURPS is a model used to classify software quality attributes into functional and non-functional requirements.

- **F - Functionality**: Features, capabilities, and security.

- **U - Usability**: User interface, ease of use, and user support.

- **R - Reliability**: Uptime, recoverability, and accuracy.

- **P - Performance**: Speed, efficiency, and resource usage.

- **S - Supportability**: Maintenance, extensibility, and compatibility.

It ensures all quality aspects of a software system are covered.

Requirements Engineering

Requirements Engineering (RE) is the process of discovering, analyzing, specifying, validating, and

managing software requirements.

**Phases:**

1. **Elicitation**: Collecting needs via interviews, workshops, etc.

2. **Analysis**: Resolving conflicts and checking feasibility.

3. **Specification**: Documenting in an SRS (Software Requirements Specification).

4. **Validation**: Ensuring requirements match user needs.

5. **Management**: Tracking changes and maintaining traceability.

**Types of Requirements:**

- Functional: Specific behaviors or functions.


Software Engineering Concepts

- Non-functional: Performance, usability, etc.

- Domain: Constraints specific to the application area.

A well-executed RE process improves software quality and user satisfaction.

White Box Testing

White Box Testing involves testing internal structures or workings of an application, rather than its

functionality.

**Key Techniques:**

- Statement Coverage

- Branch Coverage

- Path Coverage

- Condition Coverage

- Loop Testing

**Pros:**

- Thorough testing of internal logic

- Detects hidden code-level bugs

**Cons:**

- Requires code knowledge

- Time-consuming

Typically performed by developers to verify correctness of logic and paths in the code.

Common questions

Powered by AI

The self-regulation process in software evolution as described by Lehman's Laws implies a predictable system of evolution, yet it can be challenging to maintain due to external factors like technological advances, market changes, and evolving user expectations. Furthermore, managing and modeling the feedback loops accurately to predict the evolution trends can be complex, requiring sophisticated processes and tools to handle uncertainties in software life cycles .

Requirements Engineering improves software quality by systematically eliciting, analyzing, specifying, validating, and managing software requirements. Each phase ensures requirements accurately reflect user needs and constraints. Elicitation gathers comprehensive needs, Analysis resolves conflicts and ensures feasibility, Specification documents these in detail, Validation confirms alignment with user expectations, and Management maintains traceability and adaptability over time. This structured approach ensures thorough understanding and alignment of user requirements, directly impacting software quality and user satisfaction .

The FURPS model structures both functional and non-functional requirements, grouping them into categories such as functionality, usability, reliability, performance, and supportability. By ensuring all these aspects are considered, it helps in systematically addressing and meeting user expectations and needs, thus improving overall software quality. It covers a comprehensive range of quality dimensions, ensuring balanced attention across different factors that influence user satisfaction .

Feedback is essential in software evolution as it enables adaptive responses to changes and helps guide the evolution process according to user needs and technological developments. Lehman's Laws highlight that evolution is multi-level and multi-loop, relying heavily on feedback to regulate growth, stability, and complexity. This process allows developers to monitor the effects of changes, judge the direction of future development, and refine or pivot strategies to enhance software relevance and effectiveness over time .

The W2H5 framework helps systematically address different facets of software development projects. By asking What, Why, Who, When, Where, Which, and How, it comprehensively covers problem understanding, stakeholder analysis, priority setting, deployment context, tool selection, and implementation planning. This structured approach ensures all project components and requirements are considered, leading to thorough and detailed requirements gathering and more effective project planning .

The Conservation of Stability law suggests that over time, the rate of global activity in a software system remains relatively constant, meaning that developers should expect and plan for a stable amount of change over time rather than unpredictable bursts. This can help in resource planning and workload management. The Conservation of Familiarity law, on the other hand, emphasizes the need to limit the rate of system growth to ensure users do not become overwhelmed by changes, maintaining a level of user familiarity. Together, these laws guide developers to balance between introducing necessary changes and maintaining stability and consistency, which aids in long-term software sustainability .

White Box Testing focuses on exhaustive testing of the internal logic and structure of the code through techniques such as statement, branch, path, and condition coverage. By verifying correctness at the code level and detecting hidden bugs, it ensures that the underlying logic operates as intended, which contributes to higher code quality. This thoroughness in testing makes it possible to refine code performance and optimize logic, which is essential for robust software development .

Ignoring the Declining Quality and Increasing Complexity laws can lead to significant software maintenance challenges. Over time, untreated complexity can make a system brittle and difficult to modify or integrate with new technologies, potentially slowing down innovation and adaptation. Additionally, neglecting maintenance can result in degraded software quality, leading to a poor user experience, increased bugs, security vulnerabilities, and higher costs for eventual remediation — all of which can threaten the software's viability and user trust .

The FURPS model categorizes software quality attributes into functionality, usability, reliability, performance, and supportability. This categorization helps teams focus on specific quality measures within these key areas, allowing for more targeted analysis, testing, and improvement efforts. By clearly segmenting these attributes, the model helps ensure that all critical quality aspects are addressed, which is essential for achieving balanced and comprehensive software performance and user satisfaction .

According to the Continuing Growth law in the Laws of Software Evolution, software systems must be continually enhanced with new functionalities to remain useful. This is because user needs and technological environments are constantly evolving, and failure to adapt means the software could become obsolete. Regular updates and growth help to meet changing demands and leverage new technologies, ensuring the software stays relevant and continues to satisfy user requirements .

You might also like