The major cause of the software crisis is that the
machines have become several orders of magnitude more powerful! To put
it quite bluntly: as long as there were no machines, programming was no
problem at all; when we had a few weak computers, programming became a
mild problem, and now we have gigantic computers, programming has become
an equally gigantic problem.
That involves architects, carpenters, plumbers, electricians,
construction workers, etc.
large scale problem
How about a larger office building?
Extensive requirements specification, design and planning
phases, cost estimations, safety requirements, etc.
a study
Study showed: 68 percent of IT projects fail. (Krigsman 2009)
Solid requirements planning establishes a clear connection
between the business case, project goals, and the project outcome.
the issue
Software development going wrong is often not easy to
see.
misconception
Big misconception:
Programming is not Software Engineering!
Successful software development
Successful software development requires a plan!
Requirements specification (listen to the customer)
Software Design (listen to the developers, organization)
Implementation
Testing
Documentation
general aim
Aim of Software Engineering:
Find repeatable, predictable processes that improve productivity
and quality.
Software development processes
Some try to systematize or formalize the seemingly unruly task of
designing software.
Others apply project management techniques to designing software.
old world
The old world:
Requirements gathering
Planning and design
Development
Testing and quality assurance
Deployment
Maintenance and support
Waterfall
The waterfall model
(Sommerville 2011)
Waterfall
The waterfall model:
dates back to 1970
strict sequential procedure
early commitments, yet no change allowed
errors appear very late in the process.
Spiral Model
(Boehm 1988;
Sommerville 2011)
Spiral Model
The Spiral model:
Main aim: minimizing risk
iterative risk analysis
incremental
the old world
The old world (summarized)
(Sommerville 2011)
the new world
The new world
(Sommerville 2011)
Agile 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
(Beck et al.
2001)
Agile Development
The values are based on these principles:
Customer satisfaction by early and continuous delivery of valuable
software.
Welcome changing requirements, even in late development.
Deliver working software frequently (weeks rather than months).
Close, daily cooperation between business people and
developers.
Projects are built around motivated individuals, who should be
trusted.
Face-to-face conversation is the best form of communication
(co-location).
Agile Development
Working software is the primary measure of progress.
Sustainable development, able to maintain a constant pace.
Continuous attention to technical excellence and good design.
Simplicity - the art of maximizing the amount of work not done - is
essential.
Best architectures, requirements, and designs emerge from
self-organizing teams.
Regularly, the team reflects on how to become more effective, and
adjusts accordingly.
Agile Methods
Agile Development is brought to life by agile methods,
or agile practices
incremental and continuous delivery
customer involvement
people not process
embrace change
maintain simplicity
Agile Methods
Agile methods are most suitable for projects
with rapidly changing requirements
where working software needs to be delivered quickly
in which customers can be involved
Agile Methods
A bunch of methods exist
adaptive software development
dynamic systems development method
extreme programming
feature-driven development
lean software development
kanban
scrum
…
Agile practices
And a bunch of practices exist as well
backlogs
cross-functional team
daily stand-up
pair programming
scrum events
story-driven modeling
user stories
…
Extreme Programming
Best known and most widely used of the agile methods.
(Beck
1999)
Extreme?
Push iterative development to extreme levels:
For example, in XP, several new versions of a system may be developed
by different programmers, integrated and tested in a day. (Sommerville
2011)
XP release cycle
Extreme Programming Release Cycle
(Sommerville 2011)
XP implementation
Extreme Programmings implementation of the agile mindset:
Incremental Development:
small, frequent releases
requirements based on user stories
user stories decide what functionality is implemented
XP implementation
Extreme Programmings implementation of the agile mindset:
Customer Involvement:
continuous engagement of customer in dev. team
customer takes part in development
customer is responsible for defining acceptance tests
XP implementation
Extreme Programmings implementation of the agile mindset:
People, not process:
pair programming
collective ownership of system code
sustainable process, no excessively long working hours
XP implementation
Extreme Programmings implementation of the agile mindset:
Embrace change:
regular system releases to customers
test-first development
refactoring of code
continuous integration
XP implementation
Extreme Programmings implementation of the agile mindset:
Maintain simplicity:
constant code refactoring to improve code quality
simple designs
no anticipation of future changes
XP story cards
Story cards are the main input to the XP planning process.
(Sommerville 2011)
XP tasks
Story cards are broken down into tasks, efforts are estimated, and
resources are planned.
(Sommerville 2011)
XP tests
In XP, testing is absolutely crucial.
(Sommerville 2011)
Testing in XP
Test-first development is one of the most important innovations in
XP.
Testing is required due to extensive code refactoring and shared
responsibilities.
Testing in XP
Key features of testing in XP:
Test-first development
develop tests from scenarios
involve users/customers in test development and
validation
use automated testing frameworks
Testing in XP
However, many automated tests not necessarily lead to thoroughly
tested software:
Programmers are lazy take shortcuts when
writing tests
Some tests can be very difficult to write
incrementally
Judging completeness of a set of tests is
difficult
Pair programming
Pair programming is the second important innovation in XP.
Agile development has multiple flavors and combinations of methods
& practices.
DevOps
Lean Software Development
Dynamic systems development method (DSDM)
Kanban
…
Issues with agile methods
Agile development is sometimes difficult to realize
customers need to be willing to be involved
team members have to like intense involvement
prioritizing changes can be difficult
maintaing simplicity is not easy
organizations are sometimes too sluggish
Context-specific conflict of objectives
Scientific principles
Learn from data science and scientific principles (Farley 2021)!
Scientific principles
Continuous delivery is founded upon most durable ideas from
science:
Characterize: Make an observation of the current
state.
Hypothesize: Create a description, a theory that
may explain your observation.
Predict: Make a prediction based on your
hypothesis.
Experiment: Test your prediction.
(Farley
2021)
general aim
Aim of Software Engineering (revisited):
Find repeatable, predictable processes that improve productivity
and quality.
general aim
So far, we focused on productivity.
What about quality?
Quality in Software
(7 2023)
How good is the software?
A good software fulfils requirements.
There are functional requirements and
non-functional requirements.
Non-Functional Requirements
(Sommerville 2011)
Quality is more
Quality is more than that.
Software quality
ISO software quality attributes refer to external and internal
quality.
(Yenduri and
Gadekallu 2023)
Interdependencies
Interdependencies between quality characteristics goes in two
ways
positive interdependence
quality aspects support each other
negative interdependence
quality aspects interfere with each other
Not all quality measurements can be maximized at the same time.
Quality in Software
Quality is the key to product success and customer satisfaction.
Quality is multi-dimensional
Quality in software is hard to measure.
References
7, ISO/IEC JTC 1/SC. 2023. “Systems and
software engineering – Systems and software Quality Requirements and
Evaluation (SQuaRE) – Quality-in-use model.” Standard.
Geneva, CH: International Organization for Standardization. https://www.iso.org/standard/78177.html.
Beck, Kent, Mike Beedle, Arie Van Bennekum, Alistair Cockburn, Ward
Cunningham, Martin Fowler, James Grenning, et al. 2001. “The Agile
Manifesto.”http://agilemanifesto.org/.
Boehm, Barry W. 1988. “A Spiral Model of Software Development and
Enhancement.”Computer 21 (5): 61–72.
Farley, David. 2021. Modern Software Engineering: Doing What Works
to Build Better Software Faster. Addison-Wesley Professional.
Yenduri, Gokul, and Thippa Reddy Gadekallu. 2023. “A Review on
Soft Computing Approaches for Predicting Maintainability of Software:
State‐of‐the‐art, Technical Challenges, and Future Directions.”Expert Systems 40 (7). https://doi.org/10.1111/exsy.13250.