Organizing Software
Development
Software Engineering 2004-2005
Content
¾
Introduction
¾The three beasts
¾Components of a software development
project
Introduction
¾Software development is a combination of
mutually dependent activities
¾Activities often overlap in time and scope
¾Good organization is the key towards
Content
¾
Introduction
¾
The three beasts
¾Components of a software development
project
Preparing a cappuccino (1/4)
Prepar e the esp resso
Put the esp resso in the Cappucc ino cup
Steam the milk, produ cing a thick foam
Put the fo amed milk in the Cappucc ino cup
Add the sugar and s tir the cappu ccino till pe rfection
Preparing a cappuccino (2/4)
Prepar e the Espresso
Put the esp resso in the Cappucc ino cup
Stea m the milk, produ cing a thick foa m
Start
Put the fo amed milk in the cappu ccino cup
Preparing a cappuccino (3/4)
¾ If you live in the mountains, it may be possible
that your cup of espresso is not as good as that the cup you might enjoy at sea level
• The water boils earlier at higher elevations, so you might lose some of the aroma.
¾ The choice of the coffee from which you make
the espresso has a significant impact on the resulting quality of the cappuccino
• the same for the quality of the water you use,
Preparing a cappuccino (4/4)
¾The basic resources are perishable
• Once you have made a bad espresso, there is
no way to undo the process and get back the original coffee. The milk cannot be steamed too many times
¾The magic touch!
• The touch is needed when you prepare the
espresso
• The touch is needed when you have the foam
ready and you pour it in the cup. Without
such touch, the cappuccino could well become just a Latte
The three beasts
¾3 major problems faced in
developing software • Uncertainty
• Irreversibility • Complexity
¾Occurs
before
,during
,Uncertainty
¾ Difficulty of communication among different
parties
¾ Before: customers yet to decide what they
want exactly
¾ During: unexpected problems with supporting
materials (eg. libraries) discovered by developers
¾ After: bugs and crashes discovered by users;
Irreversibility
¾ Time and most resources are not recoverable
¾ Before: customers’ definition of the expected
quality cannot be reversed
¾ During: structures of the system and unit
tests; choices of design patterns and tools
¾ After: decision of allowing upgrades and the
Complexity
¾Lots of information to kept for a project
¾Coordination between different groups
(i.e. customers, managers, developers, etc.) is important
¾Uncertainty and irreversibility make
Overview of the three beasts
Before Development During Development After Development
Uncertainty in:
The desires of customer; the business goals of managers; the personal goals of developers; …
The resources required; the reliability of supporting tools; …
The failures of the system; the possibility for the system to work in different OSs; …
Irreversibility in:
The definition of the expected level of reliability;
The architecture of the system; structures of packages; …
The level of support decided; upgrading to a new platform, …
Complexity in:
Customers, managers, marketing people, and analysts, …
Cowboy coding, spaghetti code
Customers, customer service, developers, and managers, …
Content
¾
Introduction
¾
The three beasts
¾
Components of a software
development project
Components of a software
development project
¾Starts with vague idea of what to be
developed
¾Ends with codes of various degrees of
satisfaction to the original idea
¾The 3 beasts in general:
• Uncertainty in idea • Irreversibility in time
Product lifecycle
¾Sequences of stages for a product
¾From conception to disposal/maintenance
¾Reduces uncertainty of customers
¾Reduces complexity of development
¾Comes from experience
Example of product lifecycle
Building a home
¾ Analyze requirement of customers
¾ Design home
¾ Purchase land
¾ Commission development to builder
¾ Ensure the building meet standards set by
different parties (personal and governmental)
Software lifecycle (1/2)
¾Aiming for building quality software
products in well organized manner
¾Stages:
• Are a common reference for all parties • Are not fixed; vary for different projects • Are not necessarily implemented in linear
fashion
Software lifecycle (2/2)
¾Stages:
• Requirement elicitation: from customers
• Analysis: purposes formalized in a consistent
and coherent way
• Implementation: code developed
• Testing: system tested for correctness
• Maintenance: bug fixes, new features, new
Diagram of software lifecycle
Time Maintenance Testing Implementation Design Analysis Requirement ElicitationSoftware lifecycle (1/2)
Design Analysis
Requirement Elicitation
Discussion with the customers to understand the problem or the issues they have and the
requirements of the product to develop
Creation of a model of the product to develop to address
Development of the overall internal and external structure
Software lifecycle (2/2)
Maintenance
Time
Testing Implementation
Writing of the code of the system previously designed
Testing of the system to ensure that it does not contains bugs
and it does responds to the desire of the customer
Review of the system to fix bugs found and adapt the system to new hardware r software,
Key stakeholders
¾Key stakeholders
• Customer • Manager • Developer
¾Communication and mutual understanding
of each other’s role are important
¾Pitfall: uncertainty
Customer
¾“what to do”
¾Desires and pays for the product
¾Provides description of requirements
Manager
¾“when to finish and for how
much”
¾A link between customer and
developer
¾Negotiates with customer
(timeline and price)
¾Plans and oversees the project
¾Set constraints of time and
Developer
¾“how to do”
¾Builds the product
¾Aims for the
satisfaction of customer
Three kingdoms (1)
Requirements Analysis Design Implementation Testing Planning Kingdom of Managers Kingdom of Customers Kingdom of DevelopersThree kingdoms (2)
Analysis Design Implementation Testing Planning Kingdom of Managers Kingdom of Customers Kingdom of Developers Requirements Time Time TimeContent
¾
Introduction
¾
The three beasts
¾
Components of a software development
project
Plan-driven approach
¾Aim: reduce uncertainty and complexity
¾Guiding development via long term plans
¾Strict end-to-start dependencies among
stages
¾Irreversibility increases inevitably as
project progresses
Divide and conquer
¾Clearly separate different stages
¾Formalize the worst case scenarios of
by-products to prevent misunderstanding
¾Detect and correct defects as early as
possible
Agile approach
¾Original idea and plans changed
progressively
¾Changes in development is essential, not
evil
¾Accepts and addresses the 3 beasts rather
than avoiding them
It is up to developers to decide which
Review questions
¾ Can you summarize the three major stakeholders and
the three major classes of problems of software development?
¾ What is the root of uncertainty?
¾ What do we mean by the term “complexity” and why is
it so relevant in the production of software systems?
¾ What are the key ingredients of an effective software
development process?
¾ How the several proposals for software development