Softw ARE
Softw ARE
Software crisis refers to the difficulties encountered in software development, including cost overruns, schedule delays, and low-quality products. It arose due to the rapid
advancement of hardware without corresponding improvements in software development techniques.
Software Myths:
Some common software myths include:
• More programmers mean faster project completion.
• Once software is written, it works forever.
• Adding more people to a late project helps.
• Software maintenance is easy.
Principles of Software Engineering:
1. Abstraction – Focusing on essential details while ignoring the rest.
2. Modularity – Dividing software into smaller, manageable modules.
3. Encapsulation – Hiding implementation details from the user.
• Scalability – Ensuring the software can handle increasing demands.
1. Maintainability – Making software easy to modify and update.
2. Testing – Verifying that the software meets requirements.
Goals of Studying Software Engineering
1. Develop high-quality, reliable, and maintainable software.
2. Improve efficiency in software development.
3. Reduce development costs and time.
4. Ensure software meets user requirements.
5. Provide systematic approaches to software development.
Software Crisis & Its Impact
• Definition: The software crisis refers to challenges in software development, such as delays, cost overruns, and poor quality.
• Causes:
1. Rapid increase in hardware capabilities without matching software advancements.
2. Lack of structured methodologies.
3. Increasing complexity of software.
4. High failure rates of large software projects.
• Impact:
o Led to the evolution of software engineering as a discipline.
o Encouraged process models like Waterfall and Agile.
o Promoted structured programming and object-oriented design.
Definition A single quantitative value obtained by direct measurement. A derived or calculated value based on multiple measures.
Purpose Captures basic properties of a software component. Provides insights for decision-making and improvement.
Usage Used as input for calculating metrics. Used for evaluating software quality and performance.
• Risk Identification
1. Technical Risks: Lack of stakeholder support, funding issues.
2. External Risks: Market changes, regulatory requirements.
• Risk Projection
1. Likelihood Analysis: Determine the probability of risks occurring
2. Impact Assessment: Evaluate the severity of risks on the project.
• Risk Mitigation Strategies (handling)
1. Avoidance: change the project plan to estimate risks.
2. Transfer: Outsource or insure to shift the risk.
3. Reduction: Take preventive measures to minimize risks.
4. Acceptance: Acknowledge and monitor the risk if unavoidable.
SQA (Software Quality Assurance) Plan: It is a document that outlines the approach, activities, resources, and schedules for ensuring the quality of a software product
throughout its development lifecycle. It serves as a roadmap for the SQA process, guiding the team on how to achieve quality objectives and meet customer expectations.A
structured plan to ensure software quality, covering processes like defect prevention, testing, and auditing.
Importance:
• Software Review: Software reviews are evaluations or assessments of software applications conducted by users, experts, or organizations to provide insights into the
quality, features, usability, performance, and overall value of the software. These reviews can help potential users make informed decisions when choosing software
for their needs. A formal evaluation process to check software correctness, involving walkthroughs, inspections, and peer reviews.
• ISO 9000 Software Quality Standards:
ISO 9000 is a set of international standards for quality management systems (QMS), ensuring that organizations consistently meet customer and regulatory requirements.
Key Features of ISO 9000 in Software Quality:
• International Quality Standard – Provides a globally recognized framework for quality management.
• Customer Satisfaction & Continuous Improvement – Emphasizes meeting customer expectations and improving processes over time.
• Process-Oriented Approach – Focuses on defining, managing, and optimizing software development processes.
• Documentation & Compliance – Requires proper documentation of development, testing, and maintenance processes to ensure traceability.
• Risk-Based Thinking – Encourages identifying and mitigating risks in software development.
• Audits & Certification – Organizations can undergo audits to receive ISO 9001 certification, demonstrating compliance.
•
o Defines international quality management standards.
o Focuses on customer satisfaction and continuous improvement.
o Ensures documentation of development processes.
• SCM (Software Configuration Management): The process of tracking and controlling software changes to maintain integrity and traceability.
• SQA Plan is a document defining quality objectives, testing strategies, and defect management.
• SQA (Software Quality Assurance): A systematic approach to ensuring software quality through standards, reviews, and testing.
• Software Configuration Management Process:
1. Identification – Defining configuration items.
2. Version Control – Managing changes to software versions.
3. Change Control – Approving or rejecting software modifications.
4. Configuration Auditing – Ensuring compliance with standards.
5. Status Reporting – Documenting changes.
Requirement Analysis: The process of gathering, analyzing, and documenting software requirements.
Steps in Requirement Analysis:
1. Feasibility Study
2. Requirement Gathering
3. Requirement Specification
4. Requirement Validation
5. Requirement Management
Data Modeling
Definition:
Data Modeling defines and analyzes the data requirements needed to support the system. It focuses on the structure, relationships, and constraints of data.
Key Components:
• Use Case Diagrams: Describe interactions between users and the system.
Software Analysis & Its Importance
The process of gathering, refining, and documenting software requirements.
Importance:
1. Ensures software meets user needs.
2. Identifies potential issues early.
3. Reduces development costs and risks.
• Functional vs. Non-Functional Requirements
Definition Defines what the software should do Defines how the software should behave
Data Modeling
• Represents data relationships and flow within a system using ER Diagrams, DFDs, etc.
Importance of Design Concepts & Principles in Software Quality
1. Modularity – Improves maintainability.
2. Encapsulation – Enhances security.
3. Abstraction – Reduces complexity.
Architectural & Component-Level Design
• Architectural Design: Defines the system structure and communication flow.
• Component-Level Design: Focuses on module-level development, ensuring reusability.
Object-Oriented Paradigm: A programming approach that organizes software into objects containing data and behaviors. Object-Oriented Programming (OOP) is a programming
paradigm that organizes software design around objects rather than functions and logic. An object is an instance of a class, and a class is a blueprint that defines the properties (data)
and behaviors (methods) that the objects created from it will have.
Object-Oriented Concepts:
Approach Uses objects and classes Uses functions and data flow