Unit 1-2
Unit 1-2
Even 2024-25
• 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
5
Changing Nature of Software
6
Changing Nature of Software
7
Changing Nature of Software
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
• Have you seen similar problems before? Are there patterns that
are familiar in a potential solution? Is there existing software
that implements the data, functions, and features that are
required?
• Has a similar problem been solved? If so, are elements of the
solution reusable?
• Can subproblems be defined? If so, are solutions readily
apparent for the subproblems?
• Can you represent a solution in a manner that leads to effective
implementation? Can a design model be created?
14
CARRY OUT THE PLAN
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
• Modeling : create a “sketch” of the thing so that you’ll understand the big
picture. If required, you refine the sketch into greater and greater detail in an
effort to better understand the problem and how you’re going to solve it.
• Construction. This activity combines code generation and the testing that is
required to uncover errors in the code.
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…
31
IDENTIFYING A TASK SET
32
IDENTIFYING A TASK SET
• For example, a small software project requested by one person with simple
requirements, the communication activity might encompass little more than
a phone call with the stakeholder. Therefore, the only necessary action is
phone conversation, the work tasks of this action are:
1. Make contact with stakeholder via telephone.
2. Discuss requirements and take notes.
3. Organize notes into a brief written statement of requirements.
4. E-mail to stakeholder for review and approval.
33
EXAMPLE OF A TASK SET FOR
ELICITATION(IS A TECHNIQUE USED TO GATHER INFORMATION)
• The task sets for Requirements gathering action for a simple project may
include:
1. Make a list of stakeholders for the project.
2. Invite all stakeholders to an informal meeting.
3. Ask each stakeholder to make a list of features and functions required.
4. Discuss requirements and build a final list.
5. Prioritize requirements.
6. Note areas of uncertainty.
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
• First increment is a core product
• Core product used/reviewed by the customer
• A plan for the next increment is laid. Modification of the core product for
additional functionality
• Process is repeated following the delivery of each increment, until the complete
product is produced. 43
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.
Modeling • Quick design focuses on a
Quick design
representation of those aspects
the software that will be visible to
end users. ( interface and output).
• Design leads to the construction
Deployment ofConstruction
a prototype which will be
delivery &
feedback Construction deployed
of prototype and evaluated.
of prototype
• Stakeholder’s comments will be
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 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.
• Project initiation is the first phase of the project management life cycle and in
this stage, companies decide if the project is needed and how beneficial it
will be for them. The two metrics that are used to judge a proposed project
and determine the expectations from it are the business case and feasibility
study.
83 Importance of Project Initiation
• Take major decisions that establish the direction and resource requirements, like
the project charter and selecting the project stakeholders, are made during this
phase. The stakeholders arrive at a clear objective to ensure everyone stays on the
same page in terms of how the project should proceed.
• There will be multiple checks during and after project execution to prevent
miscommunication and to ensure the project stays on track throughout its course.
However, precious time and resources might get wasted which is undesirable.
• Effective project management requires you to maximize benefits and minimize
costs while delivering ‘value’ to the customer. Having a clear project objective
helps you achieve all this.
84 Project initiation process-6 steps
A project charter demonstrates why your project is important, what it will entail, and who
will work on it—all through the following elements:
Project objectives are what you plan to achieve by the end of your
project.
This might include deliverables and assets, or more intangible
objectives like increasing productivity or motivation.
Your project objectives should be attainable, time-bound, specific
goals you can measure at the end of your project.
91 Steps to follow in writing Project
Objectives
1. Set your project objectives at the beginning of your project
2. Involve your project team in the goal-setting process
3. Create brief, but clear, project objective statements
4. Make sure your objectives are things you can control (SMART-
Specific,Measurable,Achievable,Realistic,Time-bound)
5. Check in on your project objectives during the project’s lifecycle
92 Example 1- Business project
objective
Bad: Launch new home page.
This project objective is missing many important characteristics. Though this objective is
measurable, achievable, and realistic, it’s not specific or time-bound. When should the home page
be live? What should the redesign focus on?
Good: Create net-new home page assets and copy, focusing on four customer stories and use
cases. Launch refreshed, customer-centric home page by the end of Q2.
This project objective is solid. It’s specific (create net-new home page assets and copy),
measurable (launch refreshed, customer-centric home page), achievable and realistic (focusing on
four customer stories and use cases), and time bound (by the end of Q2).
93 Example 2- Non profit Project
Objective
Bad: Increase sustainability in our production process by 5%
Though this project objective is more specific than the previous bad example, it’s still lacking
several important characteristics. This objective is measurable (by 5%), but it’s not specific or
time-bound, since we don’t specify what “sustainability” means or by when the production process should
improve. As a result, we don’t really know if it’s achievable or realistic.
Good: Reduce operational waste by 5% and increase use of recycled products by 20% in the next 12
weeks.
This project objective builds upon the previous one, because we now have a specific objective. This
project objective also includes a way to measure the goal (by
5%... by 20%). The objective is a little ambitious, but the fact that it’s time-bound (in the next 12 weeks)
makes it both achievable and realistic.
94