Unit 1 SEPM
Unit 1 SEPM
• Some realities:
• to understand the problem before a software solution is developed
• design becomes a essential activity
• software should exhibit high quality
• software should be maintainable
2
SOFTWARE ENGINEERING
3
THE EVOLVING ROLE OF
SOFTWARE
● Software takes on a dual role. It is a product and, at the
same time, the vehicle for delivering a product
● As a product, it delivers the computing potential
embodied by computer hardware or, more broadly, a
network of computers that are accessible by local
hardware
● As the vehicle used to deliver the product, software acts
as the basis for the control of the computer (operating
systems), the communication of information (networks),
and the creation and control of other programs (software
tools and environments)
4
Changing Nature of
Software
[Link] software: Infrastructure software come under this
category like compilers, operating systems, editors,
drivers, etc. Basically system software is a collection of
programs to provide service to other programs.
2. Real time software: These software are used to
monitor, control and analyze real world events as they
occur. An example may be software required for weather
forecasting. Such software will gather and process the
status of temperature, humidity and other environmental
parameters to forcast the weather.
5
Changing Nature of
Software
3. Embedded software: This type of software is placed in
“Read-Only- Memory (ROM)”of the product and control the various
functions of the product. The product could be an aircraft,
automobile, security system, signalling system, control unit of power
plants, etc. The embedded software handles hardware
components and is also termed as intelligent software .
4. Business software : This is the largest application area. The
software designed to process business applications is called
business software. Business software could be payroll, file monitoring
system, employee management, account management. It may
also be a data warehousing tool which helps us to take decisions
based on available data. Management information system,
enterprise resource planning (ERP) and such other software are
popular examples of business software 6
Changing Nature of
Software
5. Personal computer software :The software used in personal
computers are covered in this category. Examples are word
processors, computer graphics, multimedia and animating tools,
database management, computer games etc. This is a very
upcoming area and many big organisations are concentrating
their effort here due to large customer base.
6. Artificial intelligence software: Artificial Intelligence software
makes use of non numerical algorithms to solve complex
problems that are not amenable to computation or straight
forward analysis. Examples are expert systems, artificial neural
network,signal processing software etc.
7
Changing Nature of
Software
8. Web based software: The software related to web
applications come under this category. Examples are
CGI, HTML, Java, Perl, DHTML etc.
8
A LAYERED TECHNOLOGY
tools
methods
process model
a “quality” focus
Software Engineering
9
• Software engineering is a layered technology.
• The foundation for software engineering is the process
layer
• Process defines a framework that must be established for
effective delivery of software
• Software engineering methods provide the technical
how-to’s for building software.
10
• Methods encompass a broad array of tasks that include
communication, requirements analysis, design modeling,
program construction, testing, and support.
• Software engineering tools provide automated or semi
automated support for the process and the methods.
11
THE ESSENCE OF PRACTICE
• Polya suggests:
1. Understand the problem (communication and
analysis).
2. Plan a solution (modeling and software design).
3. Carry out the plan (code generation).
4. Examine the result for accuracy (testing and quality
assurance).
12
UNDERSTAND THE PROBLEM
13
PLAN THE SOLUTION
15
EXAMINE THE RESULT
16
HOW IT ALL STARTS
• SafeHome:
• Every software project is precipitated by some business need—
• the need to correct a defect in an existing
application;
• the need to the need to adapt a ‘legacy system’ to a
changing business environment;
• the need to extend the functions and features of an
existing application, or
• the need to create a new product, service, or system.
17
Process
Models
18
WHAT / WHO / WHY IS PROCESS
MODELS?
• What: a series of predictable steps--- a road map that helps you create a timely, high-quality
results.
• Who: Software engineers and their managers, clients also
• Why: Provides stability, control, and organization to an activity that can if left uncontrolled,
become quite chaotic.
• What Work products: Programs, documents, and data
19
WHAT / WHO / WHY IS PROCESS
MODELS?
• What are the steps: The process you adopt depends on the
software that you are building. One process might be good
for aircraft avionic system, while an entirely different process
would be used for website creation.
20
DEFINITION OF SOFTWARE PROCESS
21
PROCESS FRAMEWORK(Phases)
• Communication
• Planning
• Modeling
• Construction
• Deployment
Umbrella activities
e.g. Risk management, Measurement, Reviews, SCM
22
A GENERIC PROCESS MODEL
23
A GENERIC PROCESS MODEL
24
A GENERIC PROCESS MODEL
25
A GENERIC PROCESS MODEL
26
A GENERIC PROCESS MODEL
27
A GENERIC PROCESS MODEL
28
A GENERIC PROCESS MODEL
29
TYPES OF
PROCESS FLOW
30
30
PROCESS FLOW CONTD…
32
IDENTIFYING A TASK SET
33
EXAMPLE OF A TASK SET FOR
ELICITATION(IS A TECHNIQUE USED TO GATHER INFORMATION)
34
The task sets for Requirements gathering action for a big project may include:
36
PRESCRIPTIVE MODELS
• Waterfall/V model
• Incremental
• Evolutionary
• Prototyping
• Spiral
37
THE WATERFALL MODEL
The waterfall model, sometimes called the classic life cycle, suggests a
systematic, sequential approach to software development that begins
with customer specification of requirements and progresses through
planning, modeling, construction, and deployment, culminating in
ongoing support of the completed software 38
THE WATERFALL MODEL
• When to select?
• There are times when the requirements for a problem are well
understood—when work flows from communication through
deployment in a reasonably linear fashion.
• (problems: 1. rarely linear, iteration needed. 2. hard to state
all requirements explicitly. Blocking state. 3. code will not be
released until very late.)
39
WATERFALL MODEL (CONTD)
42
INCREMENTAL MODEL (CONTD)
When do we use this model?
• Requirements are reasonably well defined
• But overall scope precludes linear flow
• Difficult deadlines
• Constraints in staffing
• Manage technical risks.
• Compelling need to provide limited set of functionality to users quickly.
Steps
• When initial requirements are reasonably well defined, but the overall
scope of the development effort prevent a purely linear process.
• A compelling need to expand a limited set of new functions to a later
system release.
• It combines elements of linear and parallel process flows. Each linear
sequence produces deliverable increments of the software.
• The first increment is often a core product with many supplementary
features. Users use it and evaluate it with more modifications to
better meet the needs.
44
THE INCREMENTAL MODEL
45
THE INCREMENTAL MODEL
46
INCREMENTAL MODEL (CONTD)
Advantages Disadvantages
1. Early feedback is there on the 1. Requires expertise
core product.
planning both at
2. Reduced risk management and technical
3. Effective solution since user level
evaluates core product at
each increment level
2. Client dependent,
customer should accept
4. Complexity is reduced
phased deliverables
47
EVOLUTIONARY MODELS
• Software system evolves over time as requirements often change as
development proceeds. Thus, a straight line to a complete end product is not
possible. However, a limited version must be delivered to meet competitive
pressure.
• Usually a set of core product or system requirements is well understood, but
the details and extension have yet to be defined.
• You need a process model that has been explicitly designed to accommodate
a product that evolved over time.
• It is iterative that enables you to develop increasingly more complete version
of the software.
48
• Two types are introduced, namely Prototyping and Spiral models.
EVOLUTIONARY MODELS:
PROTOTYPING
Steps
• Begins with communication
Quick
plan
• A quick plan for prototyping and
communication modeling occur.
• Quick design focuses on a
Modeling
Quick design representation of those aspects
the software that will be visible to
end users. ( interface and output).
• Design leads to the construction
ofConstructio
a prototype which will be
Deployment deployed
n and evaluated.
delivery & of prototype
feedback Construction
• Stakeholder’s comments will be
of prototype used to refine requirements.
49 49
EVOLUTIONARY MODELS:
PROTOTYPING
• When to use: Customer defines a set of general objectives but does not identify detailed
requirements for functions and features. Or Developer may be unsure of the efficiency of an
algorithm, the form that human computer interaction should take.
• What step: Begins with communication by meeting with stakeholders to define the objective,
identify whatever requirements are known, outline areas where further definition is
mandatory. A quick plan for prototyping and modeling (quick design) occur. Quick design
focuses on a representation of those aspects the software that will be visible to end users. (
interface and output). Design leads to the construction of a prototype which will be
deployed and evaluated. Stakeholder’s comments will be used to refine requirements.
• Both stakeholders and software engineers like the prototyping paradigm. Users get a feel for
the actual system, and developers get to build something immediately. However, engineers
may make compromises in order to get a prototype working quickly. The less-than-ideal
choice may be adopted forever after you get used to it. 50
EVOLUTIONARY MODELS:
PROTOTYPING
Advantages Disadvantages
• Provides working model. • Customer - not aware that only interface
• Customer is highly satisfied with such a
or appearance is concentrated much and
modeling at initial stages long term quality is at stake
• Developer gains business insight, reducing • False expectations from customer that end
ambiguity
s/m is finished or will have the same
• Great involvement of users behavior/pace of the prototype
51
EVOLUTIONARY MODELS:
THE SPIRAL
How it works?
52
EVOLUTIONARY MODELS:
THE SPIRAL
• It couples the iterative nature of prototyping with the controlled and systematic aspects of the waterfall model
and is a risk-driven process model generator that is used to guide multi-stakeholder concurrent engineering of
software intensive systems.
• Two main distinguishing features: one is cyclic approach for incrementally growing a system’s degree of definition
and implementation while decreasing its degree of risk. The other is a set of anchor point milestones for ensuring
stakeholder commitment to feasible and mutually satisfactory system solutions.
• A series of evolutionary releases are delivered. During the early iterations, the release might be a model or
prototype. During later iterations, increasingly more complete version of the engineered system are produced.
• The first circuit in the clockwise direction might result in the product specification; subsequent passes around the
spiral might be used to develop a prototype and then progressively more sophisticated versions of the software.
Each pass results in adjustments to the project plan. Cost and schedule are adjusted based on feedback. Also, the
number of iterations will be adjusted by project manager.
• Good to develop large-scale system as software evolves as the process progresses and risk should be
understood and properly reacted to. Prototyping is used to reduce risk.
53
• However, it may be difficult to convince customers that it is controllable as it demands considerable risk
assessment expertise.
EVOLUTIONARY MODELS:
THE SPIRAL
Advantages Disadvantages
54
THREE CONCERNS ON
EVOLUTIONARY PROCESSES
• First concern is that prototyping poses a problem to project planning because of
the uncertain number of cycles required to construct the product.
• Second, it does not establish the maximum speed of the evolution. If the
evolution occur too fast, without a period of relaxation, it is certain that the
process will fall into chaos. On the other hand if the speed is too slow then
productivity could be affected.
• Third, software processes should be focused on flexibility and extensibility rather
than on high quality. We should prioritize the speed of the development over
zero defects. Extending the development in order to reach high quality could
result in a late delivery of the product when the opportunity niche has
55
disappeared.
THE RATIONAL UNIFIED PROCESS
57
THE PHASES
58
AN ITERATIVE DEVELOPMENT
PROCESS...
• Recognizes the reality of changing requirements
• Caspers Jones’s research on 8000 projects
• Inception Phase
• Elaboration Phase
• Construction Phase
• Transition Phase
62
THE UNIFIED PROCESS (UP)
elaboration
inception
63
INCEPTION PHASE
66
TRANSITION PHASE
• The transition phase consists of the transfer of the system to the user
community
• It includes manufacturing, shipping, installation, training, technical
support and maintenance
• Development team begins to shrink
• Control is moved to maintenance team
• Alpha, Beta, and final releases
• Software updates
• Integration with existing systems (legacy, existing versions, etc.)
67
AGILE PROCESS MODEL
68
THE MANIFESTO FOR
AGILE SOFTWARE DEVELOPMENT
“We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
•Individuals and interactions over processes and
tools
•Working software over comprehensive
documentation
•Customer collaboration over contract
negotiation
•Responding to change over following a plan
That is, while there is value in the items on the
right, we value the items on the left more.”
Kent Beck et al 69
70
WHAT IS “AGILITY”?
• Effective (rapid and adaptive) response to change
• Effective communication among all stakeholders
• Drawing the customer onto the team
• Organizing a team so that it is in control of the work performed
Yielding …
• Rapid, incremental delivery of software
70
.
71
71
.
72
AN AGILE PROCESS
• Is driven by customer descriptions of what is required (scenarios)
• Recognizes that plans are short-lived
• Develops software iteratively with a heavy emphasis on
construction activities
• Delivers multiple ‘software increments’
• Adapts as changes occur
72
AGILITY PRINCIPLES - I
1. Our highest priority is to satisfy the customer through early and
continuous delivery of valuable software.
2. Welcome changing requirements, even late in development.
Agile processes harness change for the customer's competitive
advantage.
3. Deliver working software frequently, from a couple of weeks to
a couple of months, with a preference to the shorter timescale.
4. Business people and developers must work together daily
throughout the project.
5. Build projects around motivated individuals. Give them the
environment and support they need, and trust them to get the
job done.
6. The most efficient and effective method of conveying
information to and within a development team is face–to–face
conversation.
73
AGILITY PRINCIPLES - II
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The
sponsors, developers, and users should be able to
maintain a constant pace indefinitely.
9. Continuous attention to technical excellence and good
design enhances agility.
10. Simplicity – the art of maximizing the amount of work
not done – is essential.
11. The best architectures, requirements, and designs
emerge from self–organizing teams.
12. At regular intervals, the team reflects on how to become
more effective, then tunes and adjusts its behavior
accordingly.
74
HUMAN FACTORS
• the process molds to the needs of the people and team, not the
other way around
• key traits must exist among the people on an agile team
and the team itself:
• Competence.
• Common focus.
• Collaboration.
• Decision-making ability.
• Fuzzy problem-solving ability.
• Mutual trust and respect.
• Self-organization.
75
EXTREME PROGRAMMING (XP)
78
SCRUM
79
SCRUM
80
81
Project Initiation
Management
82 Project Initiation
• Project initiation is the first step in starting a new project. During the
project initiation phase, you establish why you’re doing the project
and what business value it will deliver.