Software Engineering and Process Models
Software Engineering and Process Models
Computer Engineering
Chapter 1
Introduction and
Software Process
Models
Engineering
high-quality software products. As a maturing discipline,
software is becoming more and more important in our
everyday lives.
? ●According to the Bureau of Labor Statistics’ Occupational
Outlook Handbook, 2014-15 Edition, “software engineers are
among the occupations projected to grow the fastest and add
the most new jobs over the 2012-2022 decade, resulting in
excellent job prospects.”
● Enable to understand different phases of software development.
● Enables to appreciate their role and contribution in different phases
of software development.
● Introduce well known methods to analyze requirement of a client and
to design a system that meet these requirements.
● Help to realize the need for good practices in developing software.
● Introduce effective methods of testing software.
● Help to understand the importance of adhering to the quality
standards.
• Software encompasses:
1. Instructions (computer programs) that when
executed provide desired features, function, and
What is performance
Software? 2. Data structures that enable the programs to store
and manipulate information
3. Documentation that describes the operation and
use of the programs.
• Software products may be of two types
Web-based System
software software
Software
Application
Artificial Software
Real-time
intelligence Application software
software. Domains
Domains
Embedded Business
software software
Engineering/
scientific
software
The application of a
What is systematic, disciplined, quantifiable
approach to the
Software
Engineering? development, operation, and
maintenance of software
• Software Engineering is the science and art of
building (designing and writing programs) a software
What is systems that are:
Software 1. on time
2. on budget
Engineering? 3. with acceptable performance
4. with correct operation
Product Development from an IT failures perspective
1 2 3 4 5
© http://www.projectcartoon.com/
1
10
6 7 8 9
Product Development from an IT failures perspective
© http://www.projectcartoon.com/
Dual role of software:
1. A Product
• Information transformer
• Producing, managing, acquiring, modifying,
Dual role of displaying, or transmitting information
System Impact
Dual role of Release Analysis
software
System Release
Update Planning
When modern computer is built, it is necessary to
answer the following questions:
• Why does it take so long to get software finished?
• Why are development costs so high?
• Why can't we find all the errors before we give the
software to customers?
• Why do we continue to have difficulty in measuring
progress as software is being developed and
maintained?
Increasing Increasing Increasing
Demand Complexity Challenges
Software: A
Crisis on the SOFTWARE CRISIS
Horizon
2. REUSABILITY
Software 3. FLEXIBILITY
Quality 4. MAINTAINABLITY
Attributes 5. PORTABILITY
6. RELIABILITY
7. FUNCTIONALITY
1. Software is developed or engineered, it is not
manufactured
• It is not manufactured like hardware
Software • The manufacturing phase for hardware can
Characteristics introduce quality problems that are nonexistent
(or easily corrected) for software
• Both require the construction of a "product" but
the approaches are different.
2. Software doesn't "wear out"
Software
Characteristics
Software
Characteristics
Customer
myths
Practitioner's • Reality:
✓ The sooner you begin 'writing code', the longer it'll
(Developer) take you to get done.
myths ✓ Industry data indicate that between 60% to 80% of
all effort expended on software will be expended
after it is delivered to the customer for the first
time
• Myth 2: I can not achieve quality until program is
running
• Reality:
Practitioner's ✓ One of the most effective software quality
(Developer) assurance mechanisms can be applied from the
myths beginning of a project—the formal technical review.
✓ Software reviews are a "quality filter" that have been
found to be more effective than testing for finding
certain classes of software defects.
• Myth 3: The only deliverable work product for a
successful project is the working program.
Practitioner's • Reality:
(Developer) ✓ A working program is only one part of a software
configuration
myths ✓ Documentation, Model and plans provides a
foundation for successful engineering and, more
important, guidance for software support.
• Myth 4: Software engineering is about creating
unnecessary documentation.
Practitioner's
• Reality:
(Developer)
✓ Software engineering is not about creating
myths documents. It is about creating quality.
✓ Better quality leads to reduced rework. And
reduced rework results in faster delivery times.
CASE Tools
Engineering: A
Layered Bedrock
Framework
Technology
Sequential
Model or MODELLING
Waterfall
CODING
Model or CONSTRUCTION
TESTING
Cycle
• Communication:
✓ Requirement gathering and analysis
1. The Linear
✓ Software Requirement Specification(SRS)
Sequential document is created
Model or • Planning:
Waterfall ✓ Assessing progress against the project plan.
Model or ✓ Perform required action to maintain schedule
Classic Life • Modelling:
✓ To transform the requirements specified in the
Cycle SRS document into a structure that is suitable for
implementation
• Construction:
✓ Coding and Testing
1. The Linear
✓ Unit testing, Integration and System testing
Sequential • Deployment:
Model or ✓ Maintenance
Waterfall o Corrective Maintenance: Correct errors that
Model or were not discovered in development phase
o Perfective Maintenance: To enhance the
Classic Life functionalities of the system based on the
Cycle customer’s request
o Adaptive Maintenance: To port the software
to work in a new environment
• Requirements are very well known, clear and fixed
• Product definition is stable
• Technology is understood
Component- • Once candidate classes are identified, the class library is searched to
determine if these classes already exist.
based • If class is already available in library extract and reuse it.
development • If class is not available in library, it is engineered or developed using
object-oriented methods.
• The first iteration of the application to be built is then composed,
using classes extracted from the library and any new classes built to
meet the unique needs of the application.
• CBD model leads to software reusability.
• Based on studies, CBD model leads to 70 % reduction in
Advantages development cycle time.
• 84% reduction in project cost.
• Productivity is very high.
Product
Product and solving software or computer based system. It can also be said that this is
Process
project.
•If the process is weak, the end product will suffer. But an over-
reliance on process is also dangerous.
•People derive as much satisfaction from the creative process as they
do from the end product.
•Like an artist enjoys the brush strokes as much as the framed
Product and result.
•A writer enjoys the search for the proper metaphor (comparison)
Process as much as the finished book.
•As creative software professional, you should also derive as much
satisfaction from the process as the end product.
•The duality of product and process is one important element in
keeping creative people engaged as software engineering continues to
evolve.
• Agile is a light weight methods that are people based
What is Agile rather than plan based.
Software
• It forces development team to focus on software
Development? rather than design and documentation.
• The aim is to deliver the working model of the
software quickly to the customer.
What is Agile
Software
Development?
●In the conventional development method, as the
project makes progress the cost of changes increases
non linearly.
Why Agile ●The Agile methodology allow the software team to
Methodology? accommodate changes late in the software project
without drastic cost and time impact.
●Incremental delivery + Agile practices => controlled
cost changes
Agile Software
Development
• Agile is a term used to describe approaches to software
development that employs
• Adaptability
What is Agile • Team collaboration
Software • Incremental development
Development? • Learning and improvement
• Early delivery
• Encourages flexible responses to change.
© www.eudigital.co
Customer satisfaction and valuable
software
Dynamic in development
Agile Principles
Cooperation between business people and developers
F2F Communication
Progressive measure
Sustainable development
Agile Principles
Simplicity
Need of Self-organizing
Being effective
• Agile Process addresses this key assumption
1. Difficulty in predicting S/W requirement(Change)
What is Agile and priority of customer
Software 2. It is difficult to predict how much of design is
Development? required before Construction.
3. Analysis, Design, Coding and Testing are not
predictable as we might say it is
Manifesto for
Agile Software
Development
© www.ontoborn.com
• Project is not very urgent, too complex or novel
• Project plan & requirements are clear & unlikely to
Where agile change
• Your customer requires neat documentation of each
methodology development cycle
not work • Unclear understanding of Agile Approach among
Teams
• Big Enterprises where team collaboration is tough
Agile Model Waterfall Model
• Agile method proposes incremental • Development of the software flows
and iterative approach to software sequentially from start point to end
design point.
• The agile process is broken into • The design process is not broken
individual models that designers into an individual models
work on
• The customer has early and • The customer can only see the
Agile Model Vs frequent opportunities to look at the
product and make decision and
product at the end of the project
Waterfall Model •
changes to the project
Development process is iterative, • The development process is
and the project is executed in short phased, and the phase is much
(2-4) weeks iterations. Planning is bigger than iteration. Every phase
very less. ends with the detailed description
of the next phase.
• It requires close communication with • Developer does not involve in
developers and together analyze requirement and planning process.
requirements and planning Usually, time delays between tests
and coding
Extreme Programming (XP)
Crystal
© www.researchgate.net
• User story-cards
• Release planning
XP - Planning • Small releases
• Iterative process
• Stand up meetings - F2F at same location
• Simple design
• It is always good to keep the things simple to meet
the current requirements
• Spike solution
• For answering the tough technical problem
XP - Design • Refactoring
• Reduction in the redundancy, elimination of
unused functionalities
• Encourage the use of CRC (class-responsibility-
collaborator) cards
CRC cards (Class-Responsibility-Collaborator)
©https://www.lucidchart.com/blog/what-is-extreme-programming
XP - Coding • Pair programming - Driver/Supporter.
• Collective code ownership - All contribute, one
person doesn’t become bottleneck of the project.
• Continuous integration of codes.
• Unit tests should be automated.
• Encourages regression testing whenever code is
XP - Testing modified.
• Integration and validation testing on daily basis.
• Acceptance tests are derived from user stories that
have been implemented as part of software release.
Weekly Cycle
The Weekly Cycle is synonymous to an iteration
Quarterly Cycle
The Quarterly Cycle is synonymous to a release.
Extra The customer lays out the overall plan for the team in terms of features desired within a particular quarter
Slack
The idea behind slack in XP terms is to add some low priority tasks or stories in your weekly and quarterly
cycles that can be dropped if the team gets behind on more important tasks or stories.
• This model is developed by Jeff Sutherland and Ken
Schwaber in 1995.
• Scrum is an agile process model which is used for
2. Scrum developing the complex software systems.
• It is a lightweight process framework.
• Lightweight means the minimum overhead of the process
in order to maximize the productivity.
• Iterative and incremental approach.
• There are small working teams on the projects due to
which there is maximum communication and minimum
overhead.
• The task of people must be partitioned into small and
clean packets/partitions.
Scrum • The process must accommodate the technical or business
Principles •
changes, if they occur.
The process should produce software increments.
• During product building, constant testing and
documentation must be conducted.
• The SCRUM process must produce the working model of
the product whenever required or demanded.
• Product Owner
• The product owner is the project’s key stakeholder and represents users,
customers and others in the process.
• Scrum Master
• Typically a Team Leader
• Responsible for enacting Scrum values and practices
• Project Team
• 5-10 members; Teams are self-organizing
• Cross-functional: QA, Programmers, UI Designers, etc.
• This team does not include any of the traditional SE roles such as
programmer, designer, tester or architect.
• Everyone on the project works together to complete the set of work they
have collectively committed to complete within a sprint
Roles
Product Owner
©warren2lynch.medium.com
Roles
Scrum Master
©codersera.com
Product backlog: The product backlog is a prioritized
features list containing every desired feature or
change to the product.
Some more
Terminology
©www.c-sharpcorner.com
• At the start of each sprint, a sprint planning meeting is held,
during which the product owner presents the top items on
the product backlog to the team.
Sprint • The Scrum team selects the work they can complete during
Planning the coming sprint.
• That work is then moved from the product backlog to a
sprint backlog, which is the list of tasks needed to complete
the product backlog items the team has committed to
complete in the sprint.
©www.agilemarketing.net
• Backlog
• It is a list of project requirements or features that must
be provided to the customer.
• The items can be included in the backlog at any time.
• The product manager analyses this list and updates the
Scrum priorities as per the requirements.
Development • Sprint
Activities • These are the work units that are needed to achieve
the requirements mentioned in the backlogs.
• Typically the sprints have fixed duration or time box
(1 to 4 weeks).
• Thus sprints allow the team members to work in stable
and short-term environment.
• Meetings
• There are 15 minutes daily meetings to report the
completed activities, obstacles and plan for next
activities.(Development Team)
• Following are three questions that are mainly discussed
during the meetings.
Scrum 1. What are the tasks done since last meeting ?
Development 2. What are the issues that team is facing ?
Activities 3. What are the next activities that are planned ?
• Demo
• During this phase implemented functionalities are
demonstrated to the customer
• Review:
• Activity to Introspect and Adapt
●Crystal method is an agile software development approach
that focuses primarily on people and their interactions when
working on a project rather than on processes and tools
●Properties of Crystal method:
1. Frequent delivery
3. Crystal 2. Reflective improvement
3. Communication
4. Personal Safety
5. Focus
6. Easy access to expert/users
7. Technical Tools
The Crystal Family: