What is Software?
Software is a collection of executable programming code, associated libraries, and
documentation.
A program is an executable code that serves some computational purpose.
Types of Software:
1. System Software (Operating systems, compilers, etc.)
2. Application Software (Word processors, web browsers, etc.)
3. Embedded Software (Software in washing machines, ATMs, etc.)
Software Evolution Laws
Types of Software:
1. Static-type (S-type) - This is a software, which works strictly according to
defined specifications and solutions. The solution and the method to achieve it,
both are immediately understood before coding. The s-type software is least
subjected to changes hence this is the simplest of all. For example, calculator
program for mathematical computation.
2. Practical-type(P-type) - This is a software with a collection of procedures. This
is defined by exactly what procedures can do. In this software, the specifications
can be described but the solution is not obviously instant. For example, gaming
software.
3. Embedded-type (E-type) - This software works closely as the requirement of
real-world environment. This software has a high degree of evolution as there are
various changes in laws, taxes etc. in the real world situations. For example, Online
trading software.
Characteristics of Software
Operational
This tells us how well the software works in operations. It can be measured on:
Budget,Usability,Efficiency,Correctness,Functionality,Dependability,Security,Safe
ty,
Characteristics of Software
Transitional
This aspect is important when the software is moved from one platform to another:
Portability,Interoperability,Reusability,Adaptability.
Characteristics of Software
Maintenance
This aspect briefs about how well the software has the capabilities to maintain
itself in the ever-changing
environment:Modularity,Maintainability,Flexibility,Scalability.
Software engineering
Software engineering is an engineering branch associated with the development of
software products using well-defined scientific principles, methods, and
procedures. The outcome of software engineering is an efficient and reliable
software product.
Definitions
IEEE defines software engineering as:
(1) The application of a systematic, disciplined, quantifiable approach to the
development, operation, and maintenance of software; that is, the application of
engineering to software.
(2) The study of approaches as in the above statement.
What is Software Engineering?
Fritz Bauer, a German computer scientist, defines software engineering as:
> “Software engineering is the establishment and use of sound engineering
principles in order to obtain economically software that is reliable and works
efficiently on real machines.”
Why Software Engineering?
Structured approach.
Reduces cost and development. timeEnsures software quality.
Software Crisis & Need for Software Engineering
What is Software Crisis?
Rapidly increasing complexity of software.
High failure rates of software projects.
High cost and maintenance issues.
Need for Software Engineering?
To handle large, complex software
To ensure scalability and reliability
To maintain quality and reduce cost.
Principles of Software Engineering
1. Abstraction: Breaking a complex problem into smaller, manageable
components.
2. Modularity: Designing software as independent modules
3. Reusability: Using pre-existing components to save development time.
4. Maintainability: Writing code that is easy to modify.
Definition of SDLC
The Software Development Life Cycle (SDLC) is a framework that defines the
steps involved in software development.
It ensures systematic development, testing, deployment, and maintenance of
software applications.
Importance of SDLC
1)Helps manage and streamline the software development process.
2)Reduces project risks and ensures quality, efficiency, and timely delivery.
What is the Waterfall Model?
Sequential Approach : Each phase must be completed before the next one
begins, with minimal feedback loops.
Predictable Process: Emphasizes early documentation and clear deliverables.
Historical Context:
Introduced in the 1970s as one of the first formalized software development
methodologies.
Known for its rigidity but clarity, making it easy for teams to understand and
execute.
Evolution in Software Developments
Waterfall laid the foundation for other methodologies like Agile, which were
designed to address Waterfall’s limitations.
Phases of the Waterfall Model:
Phase 1 – Requirements Analysis
Objective : Understand what the stakeholders need from the software.
Activities :
Conducting interviews, surveys, and workshops with stakeholders.
Documenting functional and non-functional requirements.
Deliverable : Requirements Specification Document
Phase 2 – System Design
Objective : Design the architecture and system components based on
requirements.
Activities :
High-level system design, including data flow, architecture, and user interface
design.
Database design, security protocols, and API design.
Deliverable : System Design Documents (including architecture blueprints,
interface designs)
Phase 3 – Implementation (Coding)
Objective : Develop the software solution.
Activities :
Writing code for individual components based on design.
Performing unit testing of components.
Deliverable : Codebase (the software itself)
Phase 4 – Integration and Testing
Objective : Ensure the system works as intended and meets quality standards.
Activities :
Integrating components into a functioning system.
Performing system testing (e.g., functional, security, performance testing).
Deliverable : Test Reports and Defect Reports
Phase 5 – Deployment (Installation)
Objective: Deploy the system in a production environment.
Activities :
Installing the software on production servers or user machines.
Training users and ensuring smooth adoption.
Deliverable : Deployed Software, User Manuals
Phase 6 – Maintenance
Objective: Ensure the system continues to function effectively after deployment.
Activities :
Fixing defects, addressing feedback, and implementing minor updates.
Periodic updates and support for the software.
Deliverable : Patches and Updates
Advantages of the Waterfall Model
Simplicity and Clarity:
Easy to understand and follow, with clear documentation at each phase.
Well-Defined Phases:
Each phase has clear goals, making it easier to track progress.
Discipline :
Helps maintain a structured approach, ensuring systematic project management.
Limitations of the Waterfall Model
Inflexibility :
Difficult to revisit or make changes once a phase is completed.
Assumes Stable Requirements :
Waterfall is not ideal for projects where requirements are likely to change over
time.
Late Testing :
Since testing occurs at the end, defects may not be detected until later stages.
Not Ideal for Complex Projects:
Complex or high-risk projects with evolving needs may not suit Waterfall.
When to Use the Waterfall Model
Clear, Well-Defined Requirements:
Suitable for projects with fixed requirements, such as government projects or
enterprise systems.
Smaller Projects or Prototypes:
Waterfall can work for small-scale projects where scope changes are unlikely.
Regulated Industries:
Industries with stringent documentation and compliance requirements, such as
aerospace or healthcare.
What is the Iterative Model?
A step-by-step approach to building software in cycles.
Each cycle improves and adds new features to the software.
How It Works:
1. Start Small – Develop a basic version of the software.
2. Repeat the Cycle – Improve step by step:
Design → Code → Test → Verify
3. Add Features – More functions are added in each cycle.
4. Check & Improve – Fix issues and plan the next steps.
Why Use It?
Fix problems early.
Flexible – easy to make changes.
Delivers a working version after every cycle.
Where Is It Used?
� Games, apps, and big software projects.
� Projects needing constant updates and improvements.
Advantages of Iterative Waterfall Model:
The advantage of this model is that there is a working model of the system at a
very early stage of development, making it easier to find functional or design
flaws.
Finding issues early in development enables corrective measures within a limited
budget.
Disadvantages of the Iterative Waterfall Model:
Higher Resource Usage: Requires more time, effort, and resources due to repeated
iterations.
Complexity in Management:– Managing multiple iterations and keeping track of
changes can be challenging.
3. Risk of Scope Creep – Continuous improvements can lead to uncontrolled
expansion of project requirements.
4. Testing Challenges – Since new features are added in each cycle, regression
testing is required frequently, making it resource-intensive