Software Engineering
What?
Why?
MTAT.03.094 / Lecture 01.2 / © Dietmar Pfahl 2016
Software Development – Three Ps
• Software
Development P?
Project or
P? Iteration P?
MTAT.03.094 / Lecture 01.2 / © Dietmar Pfahl 2016
Software Development – Three Ps
• Software Products
Development
People
Project or Processes
Iteration
MTAT.03.094 / Lecture 01.2 / © Dietmar Pfahl 2016
Software Development – Three Ps
• Software Products
Development
People
Project or Processes
Iteration
MTAT.03.094 / Lecture 01.2 / © Dietmar Pfahl 2016
Products in Software Development
Products
Code: Properties of Software:
- Production code: - Functionality
- Source code - Reliability
- Object code - Usability
- Non-production code: - Efficiency
- Test code - Maintainability
- Portability
Non-Code: Types of Software:
- Requirements - Embedded/real-time
- Specifications - Information System
- Architecture/Design docs - Web application
- Issue reports - System software
- User manuals - ...
- Plans of all kinds Models
- ...
MTAT.03.094 / Lecture 01.2 / © Dietmar Pfahl 2016
Products
Properties of Software
The software should deliver the Maintainability
required functionality and performance
Software must evolve to meet
to the user and should be changing needs;
maintainable, dependable and
acceptable. Dependability (Reliability)
Software must be trustworthy;
Efficiency
Software should not make wasteful
use of system resources;
Usability
Software must be accepted by the
users for which it was designed. This
means it must be understandable,
usable and compatible with other
systems.
MTAT.03.094 / Lecture 01.2 / © Dietmar Pfahl 2016
SW Product Modeling Products
UML = Unified Modeling Language
Online information:
[Link]
MTAT.03.094 / Lecture 01.2 / © Dietmar Pfahl 2016
Software Development – Three Ps
• Software Products
Development
People
Project or Processes
Iteration
MTAT.03.094 / Lecture 01.2 / © Dietmar Pfahl 2016
People in Software Development
Teams:
- Team building
- Geographically distributed (international/global)
Roles: - Mechanisms for collaboration/cooperation
- Project Manager - Motivation, Personality, Values, Culture
- Product Manager
- Architect/Analyst
Skills:
- Programmer
- Must match roles
- Tester
- ...
Training:
- Must fill skill-gaps
People
Education:
- Curricula (ACM/IEEE)
User models
MTAT.03.094 / Lecture 01.2 / © Dietmar Pfahl 2016
Software Development – Three Ps
• Software Products
Development
People
Project or Processes
Iteration
MTAT.03.094 / Lecture 01.2 / © Dietmar Pfahl 2016
Software Development Processes
Process
Coding
Deploying
MTAT.03.094 / Lecture 01.2 / © Dietmar Pfahl 2016
Software Development Processes
Process
Find
Requirements
Analysis /
Designing
Coding
Testing
Deploying
MTAT.03.094 / Lecture 01.2 / © Dietmar Pfahl 2016
Software Development Processes
Process
SYSTEM
REQUIREMENTS
SOFTWARE
REQUIREMENTS
PRELIMINARY
PROGRAM
DESIGN
ANALYSIS
PROGRAM
DESIGN
PRELIMINARY
DESIGN
CODING
ANALYSIS
PROGRAM
DESIGN TESTING
CODING
TESTING OPERATIONS
USAGE
(Royce, 1970)
MTAT.03.094 / Lecture 01.2 / © Dietmar Pfahl 2016
Processes in SW Development
Process Types:
- Heavy-weight (rich)
Process Modeling: - Light-weight
- Descriptive PMs - Lean
- Prescriptive PMs - Agile
Process (Model) Elements: - Standards
- Activity - Kanban
- Families
- Input/Output Product(s)
- Roles
- Methods/Techniques/Tools
Process Taxonomy:
- Non-engineering processes
- Business processes
- Social processes Processes
- Engineering processes
- Product-engineering proc.
- Technical prod.-eng. proc.
- Managerial prod.-eng. proc.
- Process-engineering proc.
MTAT.03.094 / Lecture 01.2 / © Dietmar Pfahl 2016
Software Engineering
A bridge from customer/user needs
to software product
Software
Product
Customer,
User
Needs Developer
(SW Engineer)
MTAT.03.094 / Lecture 01 / © Dietmar Pfahl 2015
Software process
• A process defines who does what, when, and how to reach
a specific goal
• In software engineering, the goal is to build a software
product or to enhance an existing one
• Software engineering is an engineering discipline that is
applied to the development of software in
a systematic approach (called a software process)
Münch, Jürgen, et al. Software process definition and management.
Chapter 1. Springer Science & Business Media, 2012.
MTAT.03.295 | Agile Software Development | © Ezequiel Scott 2020
Software process example
?
who does what,
when,
and how
do
everything
software
product
MTAT.03.295 | Agile Software Development | © Ezequiel Scott 2020
Software process example (2)
?
who does what,
when,
and how
do
everything
software
product
MTAT.03.295 | Agile Software Development | © Ezequiel Scott 2020
Software process example (3)
?
who does what,
when,
and how
do everything
for part A
component A
merge
A and B
software
product
do everything
for part B
component B
MTAT.03.295 | Agile Software Development | © Ezequiel Scott 2020
Software process model examples
Scrum
Waterfall
V Model
Spiral
RUP
MTAT.03.295 | Agile Software Development | © Ezequiel Scott 2020
Process types
Adapted from Dietmar Pfahl’s course on Software Engineering Management at UT
MTAT.03.295 | Agile Software Development | © Ezequiel Scott 2020
Problems with waterfall (by Ken Beck)
• Spending enormous amounts time on non-
development activities such as gathering
requirements and design
• Dogmatically sticking to a design that was planned
out far in advance of actual implementation,
regardless of the design’s inherent flaws (the design
phase is over when implementation occurs)
• Testing at the end of the development cycle
[Link]
MTAT.03.295 | Agile Software Development | © Ezequiel Scott 2020
Factors in Choosing a Software Process
• Customer involvement
• Stable requirements
• Team size / proximity
• Developer experience
• Familiarity with technology
• Familiarity with domain
• Severity of impact of incorrect analysis
• Anticipated changes in technology
MTAT.03.295 | Agile Software Development | © Ezequiel Scott 2020
The Agile Manifesto
Individuals and interactions over
processes and tools
Working software over
comprehensive documentation
Customer collaboration over
contract negotiation
Responding to change over
following a plan
[Link]
MTAT.03.295 | Agile Software Development | © Ezequiel Scott 2020
Agile Process Models
• Agile software engineering combines a philosophy and a
set of development guidelines
• Philosophy
• Encourages customer satisfaction and early
incremental delivery of the software
• Small highly motivated project teams
• Informal methods
• Minimal software engineering work products
• Overall development simplicity
• Development guidelines
• Stress delivery over analysis and design
• Active and continuous communication between
developers and customers
Agile Process Models (contd.)
Agile Process Models (contd.)
Agile vs. Waterfall Method
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 into
individual models that designers work an individual models
on
The customer has early and frequent The customer can only see the product
opportunities to look at the product at the end of the project
and make decision and changes to the
project
Agile model is considered Waterfall model are more secure
unstructured compared to the because they are so plan oriented
waterfall model
Agile vs. Waterfall Method
(contd.)
Agile Model Waterfall Model
Small projects can be implemented All sorts of project can be estimated
very quickly. For large projects, it is and completed.
difficult to estimate the development
time.
Error can be fixed in the middle of the Only at the end, the whole product is
project. tested. If the requirement error is
found or any changes have to be
made, the project has to start from the
beginning
Development process is iterative, and The development process is phased,
the project is executed in short (2-4) and the phase is much bigger than
weeks iterations. Planning is very less. iteration. Every phase ends with the
detailed description of the next phase.
Documentation attends less priority Documentation is a top priority and
than software development can even use for training staff and
upgrade the software with another
team
Agile vs. Waterfall Method
(contd.)
Agile Model Waterfall Model
In agile testing when an iteration end, All features developed are delivered at
shippable features of the product is once after the long implementation
delivered to the customer. New phase.
features are usable right after
shipment. It is useful when you have
good contact with customers.
Testers and developers work together Testers work separately from
developers
At the end of every sprint, user User acceptance is performed at the
acceptance is performed end of the project.
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)
• Somewhat controversial new approach; variation of the
incremental model
• First step
• Determine features that client wants (stories)
• Estimate duration and cost of each feature
• Client selects stories for each successive build
• Each build is divided into tasks
• Test cases for a task are drawn up
• Pair programming –working with a partner on one screen
• Continuous integration of tasks
Extreme Programming
(contd.)
Features of XP
• Computers are put in center of large room lined with
cubicles
• Client representative works with the XP team at all
the times
• Individual cannot work overtime for 2 successive
weeks
• There is no specialization
• all members of the XP team work on specification, design,
code, and testing
• There is no overall design phase before various
builds are constructed – Refactoring
Advantages of Agile Model
• Customer satisfaction by rapid, continuous delivery of useful
software.
• People and interactions are emphasized rather than process
and tools. Customers, developers and testers constantly
interact with each other.
• Working software is delivered frequently (weeks rather than
months).
• Face-to-face conversation is the best form of communication.
• Close, daily cooperation between business people and
developers.
• Regular adaptation to changing circumstances.
• Even late changes in requirements are welcomed
Disadvantages of Agile
model
• In case of some software deliverables, especially the large
ones, it is difficult to assess the effort required at the
beginning of the software development life cycle.
• There is lack of emphasis on necessary designing and
documentation.
• The project can easily get taken off track if the customer
representative is not clear what final outcome that they want.
• Only senior programmers are capable of taking the kind of
decisions required during the development process. Hence it
has no place for newbie programmers, unless combined with
experienced resources.
When to use Agile model
• When new changes need to be implemented. The freedom
agile gives to change is very important. New changes can be
implemented at very little cost because of the frequency of
new increments that are produced.
• To implement a new feature the developers need to lose only
the work of a few days, or even only hours, to roll back and
implement it.
• Both system developers and stakeholders alike, find they also
get more freedom of time and options than if the software
was developed in a more rigid sequential way.
• Having options gives them the ability to leave important
decisions until more or better data or even entire hosting
programs are available; meaning the project can continue to
move forward without fear of reaching a sudden standstill.