Nature of Software-2
Nature of Software-2
Software
What is software?
Computer software is the product that software professionals build and then support over the
long term.
It encompasses programs that execute within a computer of any size and architecture.
Content is presented as the computer programs execute, and descriptive information is in hard
copy and virtual forms that encompass virtually any electronic media.
Why is it important?
It affects nearly every aspect of our lives and has become
pervasive in our commerce, our culture, and our everyday
activities.
Nature of software
Software functions both as a product and a delivery vehicle,
transforming and managing information across various platforms.
The
software
doesn’t
“wear out.”
Failure curves for software
Software Application Domains
TasK:
Find at least 10 software application domain.
What is the difference between a WebApp and a mobile
app?
Software engineering
Software engineering encompasses a process, a collection of methods (practice),
and an array of tools that allow professionals to build high-quality computer
software.
It imposes discipline to work that can become quite chaotic, but it
also allows the people who build computer software to adapt their
approach in a manner that best suits their needs.
Software engineering layers
Quality is the foundation of any engineering approach, including software
engineering, supported by philosophies like Total Quality Management and Six Sigma.
The process layer forms the foundation for software engineering, providing a
framework for managing projects, applying methods, and ensuring quality.
Software engineering methods guide the technical aspects of building software,
including tasks like communication, requirements analysis, design, testing, and
support.
Tools in software engineering, when integrated, provide automated support for
processes and methods, forming systems like computer-aided software engineering
(CASE)
What are the five generic
process framework activities?
1. Communication
2. Planning
3. Modelling
4. Construction
5. Deployment
Umbrella Activities
a. Software project tracking and control
b. Risk management
c. Software quality assurance
d. Technical reviews
e. Measurement
f. Software configuration management
g. Reusability management
h. Work product preparation and production
SOFTWARE DEVELOPMENT
MYTHS 2.4
Exercise to do
Process Models
The purpose of process models is to try to reduce the chaos
present in developing new software products.
It is often difficult for the customer to state all requirements explicitly. The
waterfall model requires this and has difficulty accommodating the natural
uncertainty that exists at the beginning of many projects.
The customer must have patience. A working version of the program(s) will not be
available until late in the project time span. A major blunder, if undetected until the
working program is reviewed, can be disastrous.
Incremental Process Models
In cases where initial software requirements are well-defined but the
development scope is broad, an incremental process model can be used instead of
a purely linear approach.
The incremental model combines linear and parallel process flows, producing
software in staggered increments over time.
Each increment delivers a portion of the software, gradually adding more
advanced features in subsequent releases.
The first increment often provides a core product with basic functionality, which is
then evaluated and refined based on user feedback.
The process is repeated for each increment, continually improving the core
product and adding new features until the complete software is developed.
Evolutionary Process Models
Software, like all complex systems, evolves over a period of time
Business and product requirements often change as development
proceeds, making a straight line path to an end product unrealistic;
tight market deadlines make completion of a comprehensive software
product impossible, but a limited version must be introduced to meet
competitive or business pressure.
Evolutionary models are iterative.
Evolutionary process models produce an increasingly more
complete version of the software with each iteration.
Prototyping
Often, a customer defines a set of general objectives
for software but does not identify detailed
requirements for functions and features.
In other cases, the developer may be unsure of the
efficiency of an algorithm, the adaptability of an
operating system, or the form that human-machine
interaction should take.
In these, and many other situations, a prototyping
paradigm may offer the best approach.
Ideally, the prototype
serves as a mechanism
for identifying software
requirements or to
develop new
technologies.
Problems with Prototype
modeling
Stakeholders may mistake a hastily built prototype for a nearly
complete product, not realizing that it lacks proper software quality
and maintainability. When told that the prototype needs to be
rebuilt for long-term success, stakeholders often resist, leading
management to apply quick fixes, compromising the final product's
quality.
As a software engineer, you might make quick, suboptimal choices
—like using an inappropriate operating system or inefficient
algorithm—to expedite prototype development. Over time, these
compromises can become ingrained in the system, leading to long-
term issues as the temporary solutions are forgotten
The Spiral Model --Barry Boehm
[Boe88]
spiral model is an evolutionary software process model that couples the
iterative nature of prototyping with the controlled and systematic aspects of the
waterfall model.
It provides the potential for rapid development of increasingly more complete
versions of the software.
A Quick Comparison of models
Microsoft Word
Document
RAD Model
RAD is a type of agile software development methodology that emphasizes quick development
and iteration of prototypes. The focus is on speed and flexibility.
Phases:
a. Requirements Planning: Initial phase where broad requirements are gathered.
b. User Design: Prototypes are created with continuous feedback from users.
c. Construction: Rapid development of the system based on the prototypes.
d. Cutover: Finalizing the product, including testing and deployment.
Key Features:
•Heavy use of prototypes.
•User involvement throughout the development process.
•Focus on reducing development time.
•Works well for projects with well-understood requirements that
can change over time.
Advantages:
a. Speed: RAD allows for rapid iterations and quick delivery.
b. Flexibility: Easy to incorporate changes based on user feedback.
c. User Involvement: High user engagement ensures the final
product meets user needs.
Disadvantages
Not suitable for large, complex projects.
Requires highly skilled developers.
Dependency on strong user involvement, which may not always be
available.
RAD vs Incremental Model
Focus
Approach
User Involvement
Complexity and Size
Focus
The Incremental model is better for projects where the system can
be built and delivered in parts, with each part functioning
independently.
User Involvement
RAD requires continuous user involvement throughout the
development process.
The Incremental model typically involves users more at
the beginning and end of each increment.
Complexity and Size
RAD is less suitable for large, complex systems,
Microsoft Word
Document
AGILE DEVELOPMENT
MODELS
Problems with earlier model (Waterfall):
Handling the customer change request is not easy.
High Cost
Unreasonable time to develop as per the change
Capers Jones carried out research involving 800
reallife software development projects, and
concluded that on the average 40 per cent of the
requirements is arrived after the development has
already begun.
The agile model was primarily designed to help a project to adapt to change requests quickly
The major aim of the agile models is to facilitate quick project completion.
But how to achieve the agility?
Agility is achieved by fitting the process to the project, i.e. removing activities that may not be necessary for a specific
project. Also, anything that wastes time and effort is avoided
Few Agile based SDLC:
Atern (formerly DSDM)
Feature-driven development
Scrum
Extreme programming (XP)
Lean development
Unified process
In the agile model, the requirements are decomposed into many small parts
that can be incrementally developed.
The agile model adopts an iterative approach.
Each incremental part is developed over an iteration.
Each iteration is intended to be small and easily manageable and lasting for a
couple of weeks only.
At a time, only one increment is planned, developed, and then deployed at the
customer site.
No long-term plans are made. The time to complete an iteration is called a
time box. BUT WHY NAME “TIME BOX”?
Essential Idea behind Agile
Models
Must include a customer representative in the team
At the end of each iteration, stakeholders and the customer representative review the progress
made and re-evaluate the requirements.
Agile model emphasise face-to-face communication over written documents.
It is recommended that the development team size be deliberately kept small (5–9 people) to
help the team members meaningfully engage in face-to-face communication and have a
collaborative work environment.
Advantages and disadvantages
of agile methods
Agile Modle derives most of its agility by relying on knowledge of the team members and informal
communications to clarify the issues, which eliminate the need of extensive documentation.
Though this eliminates some overhead, but lack of adequate documentation may lead to several
types of problems, which are as follows:
1. Lack of formal documents leaves scope for confusion and important decisions taken during
different phases can be misinterpreted at later points of time by different team members.
2. In the absence of any formal documents, it becomes difficult to get important project decisions
such as design decisions to be reviewed by external experts
3. When the project completes and the developers disperse, maintenance can become a problem
Time to check the outcome of
unit
The implementation phase in the waterfall model is a synonym for
which one of the following phases:
(i) Coding and unit testing phase
(ii) Integration and system testing phase
(iii) Maintenance phase
(iv) Design phase
Change requests from customers later in the development cycle are easiest to handle in which
of the following life cycle models?
(i) Iterative waterfall model
(ii) Prototyping model
(iii) V-model
(iv) Evolutionary model
Which of the following activity spans all stages of a softwaredevelopment life cycle (SDLC)?
(i) Coding
(ii) Testing
(iii) Project management
(iv) Design
The operation phase in the waterfall model is a synonym for which one of the following phases:
(i) Coding and unit testing phase
(ii) Integration and system testing phase
(iii) Maintenance phase
(iv) Design phase
Which one of the following phases accounts for the maximum effort during development of a
typical software?
(i) Coding
(ii) Testing
(iii) Designing
(iv) Specification
Which one of the following life cycle models does not involve constructing a prototype any time
during software development?
(i) Spiral model
(ii) Prototyping model
(iii) RAD model
(iv) Evolutionary model
Selection of a life cycle model
Based on –
1. Requirements
2. Development team
3. Users
4. Project type and associated risk
Characteristics of Requirements
Requirements Waterfall Prototype Iterative Evolutionary Spiral RAD
enhancement development
Less experience
on similar
projects
Less domain
knowledge
Less experience
on tools to be
used
Availability of
training, if
required
Selection based on the user’s
participation
Requirements Waterfall Prototype Iterative Evolutionary Spiral RAD
enhancement development
User
involvement in
all phase
Limited user
participation
User have no
previous
experience of
participation in
similar projects
Users are
experts of
problem domain
Based on Risk
Requirements Waterfall Prototy Iterative Evolutionary Spiral RAD
pe enhanceme development
nt