Chapter 1 Introduction To Software Engineering and Process Models
Chapter 1 Introduction To Software Engineering and Process Models
Introduction to Software
Engineering and Process
Models
Software Engineering
Software is more than just a Engineering, on the other hand, is all
program code. A program is an about developing products, using
executable code, which serves well-defined, scientific principles and
some computational purpose. methods.
Software is considered to be a
collection of executable
programming code, associated
libraries, and documentation.
Software, when made for a
specific requirement is called a
software product
2
Software is:
Software is:
(1) instructions (computer programs) that when executed provide desired features,
function, and performance
(2) data structures that enable the programs to adequately manipulate information
and
(3) documentation that describes the operation and use of the programs
3
Software Engineering - Defined
Fritz Bauer, a German computer scientist, defines software
engineering as:
(1969) 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
Quality
Large software Cost Management
1 3 5
2 4 6
The need for software engineering arises because of a higher rate of change in user
requirements and environment in which the software is working.
❖Large software - It is easier to build a wall than a house or building, likewise, as the
size of software becomes large, engineering has to step to give it a scientific process.
❖ Scalability- If the software process were not based on scientific and engineering
concepts, it would be easier to re-create new software than to scale an existing one.
❖Cost- As the hardware industry has shown its skills and huge manufacturing has
lowered the price of computer and electronic hardware. But the cost of the software
remains high if the proper process is not adapted.
6
NEED OF SOFTWAREENGINEERING
❖Dynamic Nature- The always growing and adapting nature of software
hugely depends upon the environment in which the user works. If the nature of
software is always changing, new enhancements need to be done to the
existing one. This is where software engineering plays a good role.
Operational
Transitional Maintenance
8
Operational
In operational categories, the factors that decide the software performance in
operations. It can be measured on:
9
Transitional
When the software is moved from one platform to another, the factors deciding
the software quality:
Interoperability Adaptability
Portability Reusability
10
Maintenance
In this category all factors are included that describe how well a software has the
capabilities to maintain itself in the ever-changing environment:
Maintainability Scalability
Modularity Flexibility
11
Software Engineering: A Layered Technology
Process:
• It is the foundation or base layer of software engineering.
• It is the key that binds all the layers together which enables
the development of software before the deadline or on
time.
• Process defines a framework that must be established for
the effective delivery of software engineering technology.
The software process covers all the activities, actions, and
tasks required to be carried out for software development.
Software Engineering: A Layered Technology
Method:
• During the process of software development the answers to all
“how-to-do” questions are given by method.
• It has the information on all the tasks which include
communication, requirement analysis, design modeling, program
construction, testing, and support.
Tools:
• Software engineering tools provide a self-operating system for
processes and methods.
• Tools are integrated which means information created by one tool
can be used by another.
• Provide automated or semi-automated support for the process
and methods (i.e., Computer-aided software engineering CASE
tools)
What is a Process?
(Webster) A system of operations in producing something; a
series of actions, changes, or functions that achieve an end or a
result
•A process is a collection of activities, actions, and tasks that are performed when some
work product is to be created
• A process is not a rigid prescription for how to build thesoftware rather it is an adaptable
approach that enables the people doing the work to pick and choose the appropriate
set of work actions and tasks
Software Process/ Software Process
Framework
• A Software Engineering process is the model selected for managing the creation of software from
customer initiation to the release of the finished product.
• The framework activities are applicable to all projects and all applications domains, and they are a
template for every process model
16
Process framework
• Each framework activity is populated by a set of
software engineering actions
18
A generic process framework encompasses five
activities which are given below one by one:
1
2 3
19
A generic process framework encompasses five
activities which are given below one by one:
4
5
20
Umbrella Activities
• The framework described in the generic view of Software Engineering
is complemented by a number of umbrella activities
8. Risk Management
Umbrella Activities
Immature Software Organizations
• Software processes are generally improvised
• If a process is specified, it is not rigorously followed or
enforced
• The software organization is reactionary
• Managers only focus on solving immediate (crisis) problems
• Schedules and budgets are routinely exceeded because they
are not based on realistic estimates
• When hard deadlines are imposed, product functionality and
quality are often compromised
• There is no basis for judging process quality or for solving
product or process problems
• Activities such as reviews and testing are curtailed or
eliminated when projects fall behind schedule
What is CMM?
• CMM: Capability Maturity Model
• Developed in 1987 by the Software Engineering Institute (SEI) at Carnegie-
Mellon University under the sponsorship of DARPA
• A methodology used to develop and refine an organization’s software
development process.
• Describes a 5-level evolutionary improvement path for software
organizations from an Adhoc, immature process to a mature, disciplined one.
• The Capability Maturity Model (CMM) was first defined in 1989 in the book
“Managing Software Processes” by Watts Humphrey.
• It was originally developed by the US Department of Defence to gauge
whether government contractors were able to successfully complete
software projects.
Capability Maturity Model (CMM) Overview
❑Its core theory is based on the premise that high-quality software can only be produced by
high-quality processes. In theory, this allows developers to repeat their successes and avoid
repeating their failures.
❑Provides guidance on how to gain control of processes for developing and maintaining
software and how to evolve toward a culture of software engineering and management
excellence.
❑As an organization matures, the software process becomes better defined and more
consistently implemented throughout the organization
❑Software process maturity is the extent to which a specific process is explicitly defined,
managed, measured, controlled, and effective
29
5 Levels of CMM
Stage 1:
During the Initial stage, processes are ad-hoc,
inconsistent, and even chaotic. There are very
few formal processes and success is based upon
individual effort. This is the starting point of
defining processes.
Stage 2:
During the Repeatable stage, basic and
consistent processes are established. The
processes are repeated for similar projects.
Stage 3:
During the Defined stage, all processes are well
defined, documented, standardized, and
integrated usually into software for the entire
organization. Consistent practices are in place. 27
5 Levels of CMM
Stage 4: During the Managed
stage, strategic analysis is
performed through data collected
on the quality of processes.
Software and processes are clearly
quantified.
32
Software Process Models
• To solve actual problems in an industry setting, a software engineer or a
team of engineers must incorporate a development strategy that
encompasses the process, methods, and tools layers and the generic
phases.
This strategy is often referred to as a process model or a software
engineering paradigm.
• These process models are called “prescriptive” because they prescribe a set of process
elements—framework activities, software engineering actions, tasks, work products, quality
assurance, and change control mechanisms for each project.
• Each process model also prescribes a process flow (also called a workflow)—that is, the
manner in which the process elements are interrelated to one another.
35
Waterfall Model
(Diagram)
Communication
Project initiation
Requirements
gathering
Planning
Estimating
Scheduling
Tracking Modeling
Analysis
Design Construction
Code
Test Deployment
Delivery
Support
Feedback
36
Waterfall Model
(Description)
• Oldest software lifecycle model and best understood by upper
management
Planning
Estimating
Scheduling
Tracking Modeling
Analysis
Design Construction
Code
Test Deployment
Delivery
Support
Feedback
39
Incremental Process
Models
• Tend to be among the most widely used (and effective) in the industry.
• It combines elements of the waterfall model applied in an iterative fashion. The model
applies linear sequences in a staggered fashion as calendar time progresses.
• Each linear sequence produces deliverable “increments” of the software. (Ex: a Word
Processor delivers basic file mgmt., and editing, in the first increment; more
sophisticated editing, and document production capabilities in the 2nd increment;
spelling and grammar checking in the 3rd increment.
• When an increment model is used, the 1st increment is often a core product. The core
product is used by the customer.
• As a result of use and/or evaluation, a plan is developed for the next increment.
• The plan addresses the modification of the core product to better meet the needs of
the customer and the delivery of additional features and functionality.
40
Incremental Model
(Diagram)
Increment #1
Communication
Planning
Modeling
Construction
Deployment
Increment #2
Communication
Planning
Modeling
Construction
Deployment
Increment #3
Communication
Planning
Modeling
Construction
Deployment
41
Incremental Model
(Description)
• Used when requirements are well understood
• Multiple independent deliveries are identified
• Work flow is in a linear (i.e., sequential) fashion within an increment
and is staggered between increments
• Iterative in nature; focuses on an operational product with each
increment
• Provides a needed set of functionality sooner while delivering optional
components later
• Useful also when staffing is too short for a full-scale development
42
Incremental Process Model
• The process is repeated following the delivery of each increment until the
complete product is produced.
• If the customer demands delivery by a date that is impossible to meet, suggest
delivering one or more increments by that date and the rest of the Software
later.
43
Incremental Process Model
❖Once the customer assesses the core product, there is a plan developed for the next increment. Thus,
in every increment, the needs of the client are kept in mind, more features and functions are added, and
the core product is updated.
❖The increments earlier to the main increment are called “stripped down” versions of the final product.
These increases form a base for customer evaluation. On this basis, the client can suggest new
requirements if required.
❖If there are a smaller number of employees to work on the project, the Incremental development model
is extremely useful to complete the project before the deadline. In a project, early increments can be
done with a smaller number of people.
❖In case the core product is well-defined and understood, more employees could be added if needed in
future increments.
❖ One of the benefits of the Incremental process model is that it can be planned to manage
technical risks.
44
Advantages of Incremental Model Disadvantages of Incremen ta l Model
❖ Initial product delivery is faster.
❖ Requires good analysis.
❖ Lower initial delivery cost.
❖ Resulting cost may exceed
❖ The core product is developed first i.e. main functionality is added in
the first increment. the cost of the organization.
❖After each iteration, regression testing should be conducted. During ❖ Each phase of an iteration is
this testing, faulty elements of the software can be quickly identified
because few changes are made within any single iteration.
rigid and does not overlap
each other
❖It is easier to test and debug than other methods of software
development because smaller changes are made during each iteration. ❖As additional functionality is
This allows for more targeted and rigorous testing of each element
within the overall product. added to the product, problems
may arise related to system
❖ With each release, a new feature is added to theproduct. architecture which was not
evident in earlier prototypes.
❖ Customers can respond to features and review the product.
46
Difference Between Waterfall and Incremental Model
47
RAD Model
• Rapid Application Development (RAD) is an incremental
software process model that emphasizes a short
development cycle.
C o n s t r u c t io n
c om ponent reus e
Team # 2 aut om at ic c ode
Com m unicat ion generat ion
t es t ing
Mo d el i ng
b u si n e ss m o d e l i n g
dat a m odeling
p ro ce ss m o d e l i n g
Planning
Co nst r uct i o n De ploym e nt
Team # 1 co m p o n e n t re u se int egrat ion
a u t o m a t i c co d e
g e n e ra t i o n deliv ery
Mode ling t e st i n g f eedback
business modeling
dat a modeling
process modeling
6 0 - 9 0 days
What are the drawbacks of the
RAD model?
• For large, but scalable projects, RAD requires sufficient
human resources to create the right number of RAD teams.
a) Waterfall
b) Spiral
c) RAD
d) Incremental
Quiz
Which of the following activities of a Generic Process
framework provides a feedback report?
a) Communication
b) Planning
c) Modeling & Construction
d) Deployment
Quiz
Which one of the following is not an Umbrella Activity
a) Reusability management
b) Risk management
c) Measurement
d) User Reviews
Prototyping Model
(Diagram)
Quick
Planning
Communication
Start
Modeling
Quick Design
Deployment,
Delivery,
and Feedback
Construction
Of Prototype
56
Prototyping Model
• Customers often define a set of general objectives for software but don’t identify detailed input, processing, or input
requirements.
• Prototyping paradigm assists the Software engineering and the customer to better understand what is to be built
when requirements are fuzzy.
• The prototyping paradigm begins with communication where the requirements and goals of Software are defined.
• Prototyping iteration is planned quickly and modeling in the form of quick design occurs.
• Focuses on those aspects of the software that are visible to the customer/user
Deployment
• Feedback is used to refine requirements for the De live r y
Software. & Fe e dback Const r uct ion
of
pr ot ot ype
60
Spiral Model (Description)
• Invented by Dr. Barry Boehm in 1988
• Used when requirements are not well understood and risks are high
• Inner spirals focus on identifying software requirements and project risks; may also
incorporate prototyping. Outer spirals take on a classical waterfall approach after
requirements have been defined, but permit iterative growth of the software
61
• Serves as a realistic model for large-scale software development
Quiz
● Respond to the Immediate Changes: If there are any changes made during any of
the development stages. Immediate changes can be implemented in agile. 75
Extreme Programming
• A very influential agile method, developed in the late 1990s, that
introduced a range of agile development techniques.
All tests must be run for every build and the build is only accepted if tests run
successfully.
15
Extreme Programming
❖ XP is a lightweight, Efficient, Low risk, Flexible, predictable,
scientific, and fun way to develop a software
2.Simplicity. Developers strive to write simple code bringing more value to a product, as
it saves time and effort. Simplicity also means address only the requirements that you
know about; don’t try to predict the future.
3.Feedback. Team members deliver software frequently, get feedback about it, and
improve a product according to the new requirements.
4.Courage. Programmers objectively evaluate their own results without making excuses
and are always ready to respond to changes. You need the courage to raise
organizational issues that reduce your team’s effectiveness. You need the courage to
stop doing something that doesn’t work and try something else. You need the courage
to accept and act on feedback, even when it’s difficult to accept.
Respect. The members of your team need to respect each other in order to
communicate with each other, provide and accept feedback that honors your
relationship, and work together to identify simple designs and solutions.
XP Fundamentals by Kent Beck
• Write unit tests before programming; keeping all tests running at all times.
• Key practices
• User stories for specification
• Refactoring
• Test-first development
• Pair programming
1.User stories for requirements
• In XP, a customer or user is part of the XP team and is responsible
for making decisions on requirements.
• These are written on cards and the development team breaks them
down into implementation tasks. These tasks are the basis of
schedule and cost estimates.
• The customer chooses the stories for inclusion in the next release
based on their priorities and the schedule estimates.
2. Refactoring
XP proposes constant code improvement (refactoring) to make changes
easier when they have to be implemented.
This improves the understandability of the software and so reduces the need
for documentation.
Changes are easier to make because the code is well-structured and clear.
The replacement of inline code with calls to methods that have been
included in a program library.
3. Test-first development
Instead of following the normal path of:
develop code -> write tests -> run tests
Pairs are created dynamically so that all team members work with
each other during the development process.
Incremental planning Requirements are recorded on story cards and the stories to be
included in a release are determined by the time available and their
relative priority. The developers break these stories into development
‘Tasks’.
Small releases The minimal useful set of functionality that provides business value is
developed first. Releases of the system are frequent and incrementally
add functionality to the first release.
Simple design Enough design is carried out to meet the current requirements and no
more.
Test-first development An automated unit test framework is used to write tests for a new piece
of functionality before that functionality itself is implemented.
Refactoring All developers are expected to refactor the code continuously as soon
as possible code improvements are found. This keeps the code simple
and maintainable.
Extreme programming practices (b)
Pair programming Developers work in pairs, checking each other’s work and providing the
support to always do a good job.
Collective ownership The pairs of developers work on all areas of the system, so that no islands
of expertise develop and all the developers take responsibility for all of the
code. Anyone can change anything.
Continuous integration As soon as the work on a task is complete, it is integrated into the whole
system. After any such integration, all the unit tests in the system must
pass.
Sustainable pace Large amounts of overtime are not considered acceptable as the net effect
is often to reduce code quality and medium term productivity
On-site customer A representative of the end-user of the system (the customer) should be
available full time for the use of the XP team. In an extreme programming
process, the customer is a member of the development team and is
responsible for bringing system requirements to the team for
implementation.
Scrum
The term scrum is borrowed from rugby, where it is a formation of players. The
term scrum was chosen by the paper's authors because it emphasizes
teamwork. The software development term scrum was first used in a 1986
paper titled "The New New Product Development Game" by Hirotaka
Takeuchi and Ikujiro Nonaka. The paper was published in the Jan 1986 issue
of Harvard Business Review.
• Scrum is an agile method that focuses on managing iterative development rather than specific agile
practices.
• Three phases in Scrum.
• The initial phase is an outline planning phase where you establish the general objectives for the
project and design the software architecture.
• This is followed by a series of sprint cycles, where each cycle develops an increment of the system.
• The project closure phase wraps up the project, completes required documentation such as system
help frames and user manuals, and assesses the lessons learned from the project.
•
Scrum
• Scrum is a highly iterative agile framework that operates in
sprints of 2-4 weeks.
2.Sprint planning – creating a sprint backlog – a subset of the product backlog planned for
a specific sprint, and estimated to fit into the fixed time scope of the sprint.
3.Sprint work – developing working software within the sprint. The team carries out a daily
stand-up meeting to share progress and resolve problems experienced by the team.
4.Testing and product demonstration – towards the end of a sprint, the focus shifts to
stabilizing and finalizing features, and conducting acceptance testing with product owners
and customers.
5.Retrospective – at the end of the sprint, sharing lessons learned from the previous sprint
and using it to plan or adjust the backlog for the next sprint.
The Scrum sprint cycle
• The starting point for planning is the product backlog,
which is the list of work to be done on the project.
• During this stage the team is isolated from the customer and the
organization, with all communications channeled through the ‘Scrum
master’.
• At the end of the sprint, the work done is reviewed and presented to
stakeholders. The next sprint cycle then begins.
Teamwork in Scrum
• The ‘Scrum master’ is a facilitator who arranges daily meetings, tracks the
backlog of work to be done, records decisions measures progress against
the backlog, and communicates with customers and management outside of
the team.
• The whole team attends short daily meetings (Scrums) where all team
members share information, describe their progress since the last meeting,
problems that have arisen, and what is planned for the following day.
Product backlog This is a list of ‘to-do’ items that the Scrum team must tackle. They may be
feature definitions for the software, software requirements, user stories, or
descriptions of supplementary tasks that are needed, such as architecture
definition or user documentation.
Product owner An individual (or possibly a small group) whose job is to identify product features
or requirements, prioritize these for development and continuously review the
product backlog to ensure that the project continues to meet critical business
needs. The Product Owner can be a customer but might also be a product
manager in a software company or other stakeholder representative.
Scrum terminology (b)
Scrum term Definition
Scrum A daily meeting of the Scrum team that reviews progress and prioritizes work to be
done that day. Ideally, this should be a short face-to-face meeting that includes the
whole team.
ScrumMaster The ScrumMaster is responsible for ensuring that the Scrum process is followed
and guides the team in the effective use of Scrum. He or she is responsible for
interfacing with the rest of the company and for ensuring that the Scrum Team is not
diverted by outside interference. The Scrum developers are adamant that the
ScrumMaster should not be thought of as a project manager. Others, however, may
not always find it easy to see the difference.
A. Scrum
B. PMBOK® 3
C. Crystal Clear
D. Extreme programming (XP)
Quiz
There are ........... phases in Scrum
A. 2
B. 3
C. 4
D. 5
Quiz
Which of the following is responsible for sprint meeting?
A. Scrum team
B. Scrum master
C. Product Owner
D. None of the above
Kanban
• The Japanese word “kanban”, meaning “visual board” or a “sign”, has been
used in the sense of a process definition since the 1950s. It was first
developed and applied by Toyota as a scheduling system for just-in-time
manufacturing. The approach represents a pull system. This means that
production is based on customer demand rather than the standard push
practice to produce goods and push them to the market.
• One of the ways Kanban reduces waste is through the “pull production” model
that regulates item production based on consumer supply and demand.
Kanban
• A central principle of Kanban is that the tasks and their status are
visualized as cards on a board, visible to all project staff.