Software Engineering ch1 and 2
Software Engineering ch1 and 2
Third Stage-2023
• Software is the collection of computer programs, procedure rules and associated documentation and data.
Software includes:
(i) Instructions (computer programs).
(ii) Data structures.
(iii) Documents.
Types of software
Computer software is often divided into two categories:
1. System software. This software includes the operating
system and all utilities that enable the computer to function.
2. Application software. These consist of programs that do real
work for users
CLASSES OF SOFTWARE
Software is classified into the following two classes:
1. Generic Software. Generic software is designed for a broad customer market whose requirements are very common,
fairly stable, and well-understood by the software engineer.
2. Customized Software. Customized products are those that are developed for a customer where domain,
environment, and requirements are unique to that customer and cannot be satisfied by generic products.
Examples
1- Y2K problem:
It was simply the ignorance about the adequacy or otherwise of using only last two digits of the year.
The 4-digit date format, like 1964, was shortened to 2-digit format, like 64.
2- Ariane 5
It took the European Space Agency 10 years and $7 billion to produce Ariane 5, a giant rocket capable of hurling a pair
of three-ton satellites into orbit with each launch and intended to give Europe overwhelming supremacy in the
commercial space business.
The rocket was destroyed after 39 seconds of its launch, at an altitude of two and a half miles along with its payload of
four expensive and uninsured scientific satellites.
Why study software engineering
1- To acquire skills to develop large programs
- Handling exponential growth in complexity with size
- Systematic techniques based on abstraction (modelling) and decomposition.
2- Learn systematic techniques of:
- specification, design, user interface development, testing, project management, maintenance, etc.
- appreciate issues that arise in team development
3- To acquire skills to be a better programmer
- Higher productivity
- Better quality programs
Some Terminologies
● Deliverables and Milestones
Different deliverables are generated during software development. The examples are source code, user manuals,
operating procedure manuals etc.
The milestones are the events that are used to ascertain the status of the project. Finalization of specification is a
milestone. Completion of design documentation is another milestone. The milestones are essential for project
planning and management.
● Product and Process
Product: What is delivered to the customer, is called a product. It may include source code, specification document,
manuals, documentation etc. Basically, it is nothing but a set of deliverables only.
Process: Process is the way in which we produce software. It is the collection of activities that leads to (a part of) a
product. An efficient process is required to produce good quality products.
● Productivity
Productivity is defined as the rate of output, or production per unit of effort, i.e. the output achieved with regard to
the time taken but irrespective of the cost incurred.
Hence most appropriate unit of effort is Person Months (PMs), meaning thereby number of persons involved for
specified months. So, productivity may be measured as LOC/PM (lines of code produced/person month).
NEXT…..
The software-development life-cycle is used to facilitate the development of a large software product in a
systematic, well-defined, and cost-effective way
SOFTWARE-DEVELOPMENT LIFE-CYCLE MODELS
The software-development life-cycle is used to facilitate the development of a large software product in a
systematic, well-defined, and cost-effective way.
2. Requirement Analysis and Specification. This phase exactly tells the requirements and needs of
the project.
o The requirements describe the “what” of a system, not the “how.”
o The resultant document is known as the software requirement specification (SRS)
document.
An SRS document must contain the following:
● Detailed statement of problem.
● Functional requirements of the software system.
● Constraints on the software system.
3. Design and Specification. The goal of the design phase is to transform the requirements specified in the SRS document
into a structure that is suitable for implementation in some programming language.
4. Coding and Module Testing. Coding and module testing is the phase in which we actually write programs using a
programming language.
5. Integration and System Testing. During the integration and system testing phase, the modules are integrated in a planned
manner. During each integration step, the partially integrated system is tested and a set of previously planned modules are
added to it. Finally, when all the modules have been successfully integrated and tested, system testing is carried out.
6. Delivery and Maintenance.
• We define maintenance as the set of activities that are performed after the system is delivered to the customer.
Disadvantages of V-model
Validation is the process of checking whether the specification captures the customer's needs,
while verification is the process of checking that the software meets the specification
4. PROTOTYPING MODEL
• This model suggests building a working prototype of the system, before
development of the actual software. A prototype is a toy and crude
implementation of a system.
• It is advantageous to use the prototyping model for development
of the graphical user interface (GUI) part of an application.
Advantages
Error reduction: The core modules are used by the customer from the beginning and therefore these get tested
thoroughly. This reduces chances of errors in the core modules of the final product, leading to greater reliability of
the software.
Incremental resource deployment: This model obviates the need for the customer to commit large resources at one
go for development of the system. It also saves the developing organisation from deploying large resources and
manpower for a project in one go.
6 Evolutionary Model
>In the incremental development model, complete
requirements are first developed and the SRS document
prepared.
>In contrast, in the evolutionary model, the requirements, plan
, estimates, and solution evolve over the iterations, rather than
fully defined and frozen in a major up-front specification
effort before the development iterations begin.
Advantages
• Effective elicitation of actual customer requirements
• Easy handling changes requests
Disadvantages
• Feature division into incremental parts can be non-trivial: For many development projects, especially for small-
sized projects, it is difficult to divide the required features into several parts that can be incrementally implemented and
delivered.
• Ad hoc design: Since at a time design for only the current increment is done, the design can become ad hoc without
specific attention being paid to maintainability and optimality
7 RAPID APPLICATION DEVELOPMENT (RAD)
• This model has the features of both prototyping and evolutionary models.
• In this model prototypes are constructed, and incrementally the features are developed and delivered to the customer. But
unlike the prototyping model, the prototypes are not thrown away but are enhanced and used in the software construction
• Customized software: is developed for one or two customers only by adapting an existing software.
• Non-critical software: the developed product is usually far from being optimal in performance and reliability. In this
regard, for well understood development projects and where the scope of reuse is rather restricted, the iterative waterfall
model may provide a better solution.
• Large software: Only for software supporting many features (large software) can incremental development and delivery
be meaningfully carried out.
Application characteristics that render RAD unsuitable
• Generic products (wide distribution): software products are generic in nature and usually have wide distribution. For
such systems, optimal performance and reliability are imperative in a competitive market.
• Lack of similar products: If a company has not developed similar software, then it would hardly be able to reuse much
of the existing artifacts.
• Monolithic entity: For certain software, especially small-sized software, it may be hard to divide the required features
into parts that can be incrementally developed and delivered.
• Generic products (wide distribution): software products are generic in nature and usually have wide distribution. For
such systems, optimal performance and reliability are imperative in a competitive market.
====================================================
RAD versus iterative waterfall model
• In the iterative waterfall model, all the functionalities of a software are developed together. On the other hand, in
the RAD model the product functionalities are developed incrementally through heavy code and design reuse.
RAD versus evolutionary model
• In RAD each increment results in essentially a quick and dirty prototype, whereas in the evolutionary model each
increment is systematically developed using the iterative waterfall model. Also in the RAD model, software is
developed in much shorter increments compared the evolutionary model.
6 Evolutionary Model
>In the incremental development model, complete
requirements are first developed and the SRS document
prepared.
>In contrast, in the evolutionary model, the requirements, plan
, estimates, and solution evolve over the iterations, rather than
fully defined and frozen in a major up-front specification
effort before the development iterations begin.
Advantages
• Effective elicitation of actual customer requirements
• Easy handling changes requests
Disadvantages
• Feature division into incremental parts can be non-trivial: For many development projects, especially for small-
sized projects, it is difficult to divide the required features into several parts that can be incrementally implemented and
delivered.
• Ad hoc design: Since at a time design for only the current increment is done, the design can become ad hoc without
specific attention being paid to maintainability and optimality
7 RAPID APPLICATION DEVELOPMENT (RAD)
• This model has the features of both prototyping and evolutionary models.
• In this model prototypes are constructed, and incrementally the features are developed and delivered to the customer. But
unlike the prototyping model, the prototypes are not thrown away but are enhanced and used in the software construction
• Customized software: is developed for one or two customers only by adapting an existing software.
• Non-critical software: the developed product is usually far from being optimal in performance and reliability. In this
regard, for well understood development projects and where the scope of reuse is rather restricted, the iterative waterfall
model may provide a better solution.
• Large software: Only for software supporting many features (large software) can incremental development and delivery
be meaningfully carried out.
Application characteristics that render RAD unsuitable
• Generic products (wide distribution): software products are generic in nature and usually have wide distribution. For
such systems, optimal performance and reliability are imperative in a competitive market.
• Lack of similar products: If a company has not developed similar software, then it would hardly be able to reuse much
of the existing artifacts.
• Monolithic entity: For certain software, especially small-sized software, it may be hard to divide the required features
into parts that can be incrementally developed and delivered.
====================================================
RAD versus iterative waterfall model
• In the iterative waterfall model, all the functionalities of a software are developed together. On the other hand, in
the RAD model the product functionalities are developed incrementally through heavy code and design reuse.
RAD versus evolutionary model
• In RAD each increment results in essentially a quick and dirty prototype, whereas in the evolutionary model each
increment is systematically developed using the iterative waterfall model. Also in the RAD model, software is
developed in much shorter increments compared the evolutionary model.
8 SPIRAL MODEL
❑ The spiral model focuses on identifying and eliminating high-risk problems by careful process design, rather than
treating both trivial and severe problems uniformly.
❑ It is used when experimenting on technology, trying out new skills, and when the user is not able to offer requirements
in clear terms.
❑ It is also useful when the requirements are not clear and when the solution intended has multi-users, multi-functions,
multi-features, multi-location applications to be used on multiple platforms, where seamless integration, interfacing,
data migration, and replication are the issues.
9 Agile Model
The Manifesto for Agile Software Development is based on twelve principles:
1. Customer satisfaction by early and continuous delivery of valuable software.
2. Welcome changing requirements, even in late development.
3. Deliver working software frequently (weeks rather than months)
4. Close, daily cooperation between business people and developers
5. Projects are built around motivated individuals, who should be trusted
6. Face-to-face conversation is the best form of communication (co-location)
7. Working software is the primary measure of progress
8. Sustainable development, able to maintain a constant pace
9. Continuous attention to technical excellence and good design
10. Simplicity—the art of maximizing the amount of work not done—is essential
9.1 Scrum
• Scrum is based on the idea of adding value to a software product in an iterative manner.
• These iterations are called sprints, and they culminate in software that is potentially releasable.
• All work is prioritized on the product backlog and, at the start of each sprint, the development team commits to the work
that they will complete during the new iteration by placing it on the sprint backlog.
• The unit of work within Scrum is the story (A user story is an informal, general explanation of a software feature written
from the perspective of the end user
Scrum Framework
1.Roles : Product Owner, ScrumMaster, Team
•Product Owner
–Acts on behalf of customer to represent their interests.
❖ Defines the features of the product
❖ Decide on release date and content
❖ Prioritize features according to market value
❖ Adjust features and priority every iteration, as needed
❖ Accept or reject work results.
• Scrum Master (aka Project Manager)
❖ Represents management to the project
❖ Removes impediments
❖ Ensure that the team is fully functional and productive
❖ Enable close cooperation across all roles and functions
❖ Shield the team from external interferences
•Development Team
Typically 5-10 people .
2- Scrum Events
• The Sprint: The heart of Scrum is Sprint, a time-box of one month or less during which a "Done", usable and potentially
releasable product increment is developed.
❑Sprints consist of the Sprint Planning Meeting, Daily Scrum, the development work, the Sprint Review
and the Sprint Retrospective.
• Canceling The Sprint:
❑ A Sprint can be canceled before the Sprint time-box is over. Only the product owner has the authority to cancel the
Sprint.
• Sprint Planning Meeting:
❑ The work to be done in Sprint is planned during the Sprint Planning Meeting
❑ Sprint Planning meeting consist of two parts.
✓ Part 1: What will be done this Sprint?
✓ Part 2 : How will the chosen work get done?
• Daily Scrum:
❑The daily scrum is a 15-minute time-boxed event for the team to synchronize activities for the next 24 hours
❑During the meeting, each Development Team member explains:
❑ The Sprint Retrospective is an opportunity for the Scrum Team to inspect itself and create a plan for improvements
to be enacted during the next Sprint.