Software Notes All
Software Notes All
- *Software Crisis* – Challenges in software development, such as high cost, low reliability,
and delayed delivery.
- The *software crisis* refers to challenges faced in software development due to rapidly
increasing complexity, demand, and technology changes.
- Major symptoms include *high development costs, frequent delays, and unreliable software
products*.
### *Causes of the Software Crisis:*
1. *Poor project planning* – Inefficient resource allocation leads to wasted effort and time.
2. *Changing requirements* – Frequent modifications cause instability in software design.
3. *Lack of standardized development methodologies* – Inconsistent approaches result in
low-quality software.
4. *Complexity in large-scale software systems* – Difficult to maintain and debug.
5. *Limited understanding of user needs* – Mismatch between actual requirements and
implementation.
### *Impact of Software Crisis:*
- Cost overruns, Missed deadlines, Software failures leading to business losses, Difficulty in
maintaining older systems.
----
- *Software Life Cycle Models*
## *1. Waterfall Model*
- *Sequential approach* where each phase must be completed before moving to the next.
Sequential development with distinct phases: Requirement, Design, Implementation, Testing,
Deployment.
- *Phases:*
1. *Requirement Analysis 2. *System Design 3. *Implementation (Coding)* 4. *Testing*
5. *Deployment* 6. *Maintenance*
- *Advantages:* - Simple, easy to manage. And Works well for well-defined projects with
stable requirements.
- *Disadvantages:*
- Cannot handle changing requirements. and Late testing phase may expose major errors.
## *2. Prototype Model*- An initial prototype is built, tested, and refined.
- *Build an initial prototype* to gather user feedback before full-scale development.
- *Steps:*
1. *Initial Requirement Gathering* – Basic specifications are collected.
2. *Prototype Development* – A simplified model is created.
3. *User Feedback & Refinement* – Users suggest improvements.
4. *Final System Development* – The refined system is implemented.
- *Advantages:*
- Useful for unclear or evolving requirements.
- Helps refine software based on user expectations.
- *Disadvantages:*
- Requires extensive user interaction.
- Prototype development adds extra cost.
---
### *UNIT - III: Software Design & Implementation*
#### *Cohesion & Coupling*
- *Definition:* Cohesion refers to the degree to which elements of a module are functionally
related. – Degree to which elements within a module are related.
- *Types of Cohesion (from weakest to strongest):*
1. *Coincidental Cohesion:* Elements grouped arbitrarily.
2. *Logical Cohesion:* Grouped based on similar tasks.
3. *Temporal Cohesion:* Executed at the same time.
4. *Procedural Cohesion:* Elements operate in sequence.
5. *Communicational Cohesion:* Share input/output data.
6. *Sequential Cohesion:* Output from one element is used by another.
7. *Functional Cohesion:* Strongest type—elements are directly related to a single function.
### *Coupling*
- *Definition:* Coupling refers to the degree of dependency between modules.
Interdependence between modules (low coupling is preferred).
- *Types of Coupling (from strongest to weakest):
1. *Content Coupling:* One module modifies another.
2. *Common Coupling:* Shared global data.
3. *Control Coupling:* Passing control info (flags, switches).
4. *Stamp Coupling:* Passing complex data structures.
5. *Data Coupling:* Modules communicate by passing simple data (best practice).
- *Best Practice:* *High cohesion, low coupling* results in modular, maintainable software.
-----
# *Quality Management*
## *2. Software Quality Concept*
### *Definition of Software Quality*
- A measure of *how well software meets specified requirements* and *functions reliably*
under expected conditions. And - Measures for reliability, efficiency, and maintainability.
- Key attributes: *Correctness, reliability, efficiency, maintainability, usability*.
- *Principles:*
1. *Customer Focus* 2. *Process Improvement* 3. *Employee Involvement* 4. *Fact-
Based Decision Making*
📌 1. Testing Process
It’s the process of checking software for defects and ensuring it meets the
requirements.
Steps:
1. Requirement Analysis
2. Test Planning
3. Test Case Design
4. Test Execution
5. Defect Reporting
6. Retesting & Regression Testing
7. Test Closure
📌 2. Levels of Testing
📌 3. Types of Testing
Manual Testing: Test cases executed by hand, no tools.
Automation Testing: Uses tools/scripts (e.g. Selenium, QTP) to automate tests.
📌 4. Methods of Testing
Method Description
Grey Box Tester has partial knowledge of code. Mix of both above.
📌 5. Validation vs Verification
Verification Validation
📌 7. Acceptance Testing
Done by client to check if the software meets business requirements.
Final stage before product delivery.
📌 8. Functional Testing
Focuses on what the system does (functionality).
Types:
o Smoke Testing: Basic checks (build is testable?)
o Sanity Testing: Small change has not broken the system.
o Regression Testing: Ensures new changes didn’t break existing features.
o UAT (User Acceptance Testing): Performed by client/end-user.
📌 9. Structural Testing
Based on code structure and logic.
Used in White-box testing.
Example: Line coverage, branch coverage testing.
Testing Debugging
📌 1. Maintenance Management
Planning and controlling software updates.
Goals: Keep system efficient, updated, and error-free.
📌 2. Maintenance Process
1. Problem Identification
2. Analysis
3. Solution Design
4. Implementation
5. Testing
6. Documentation
📌 3. Types of Maintenance
Type Purpose