Software Development Models: Waterfall and Spiral Sung Hee Park Department of Mathematics and...
-
Upload
aron-simmons -
Category
Documents
-
view
214 -
download
1
Transcript of Software Development Models: Waterfall and Spiral Sung Hee Park Department of Mathematics and...
Software Development Models: Waterfall and Spiral
Sung Hee Park
Department of Mathematics and Computer Science
Virginia State University
August 21, 2012
Announcements (tentative) Course web page:
http://www.cs.vt.edu/~shpark/VSU/CSCI487(685)-SoftwareDesignAndDevelopment
Project teams should be formed by next week. Last time, course motivation. software crisis,
software development tasks.
= = = =Template follows= = = = Short title (up to 40 characters): Long title: Contact person and their contact information: Project description (paragraph): Project deliverables: Expected impact of the project: Required skills of the team engaging in the
project: URLs to follow for additional information: Type of project (web site, video, audio, computer
security, data structure, game, database, ...):
Discussion: Your Programming/System Development Experience What is the biggest project you’ve been a part
of? How many lines of code was it (or other
complexity measure) ? Did you sit and think and draw a few diagrams
before you started to code? If it was a team project, how was your team
experience?
Do We Need a Software Process Model? Designing simple software (such as homeworkassignments) has two steps
1 Analysis - we think! 2 Design - we code!
However, in this class we consider software which is more complex In terms of size of development team, having
actual customers, and lines of code.
The Two-Step Methodology Has Benefits All steps are creative Programmers are happy doing them, unlike
beaurocratic activities Customers are happy to pay programmers to
do this
But It Doesn’t Scale Bigger development team means task needs
to split up, in a way that they can be easily composed to form the resulting system
How do we ensure we know what the customer meant when they asked for feature X? How do we ensure we give them only what they pay for?
What about cross-cutting concerns, such as security, accountability, performance, upgradeablily etc?
What is a Software Process Model? It determines the order of the stages involved
in software development and evolution It provides the answer to the following two
questions? What shall we do next? How long shall we continue to do it?
First software process model: waterfall model
Additional Steps Are Necessary System Requirements Software Requirements Analysis Software Architecture Design (Coding) Testing Maintenance
Good and Bad in the Waterfall Model? The Good
Simple!!! Plenty of documentation, which is good (allows for
management of project) In use since the 50s, and still in use for very large
custom, built from scratch software projects. The Bad
Testing is towards the end of the model, and it may expose fundamental problems, requiring rework
Customer is not involved
Evolutionary development Exploratory development
Objective is to work with customers and to Evolutionary development evolve a final system from an initial outline specification. Should start with well-understood requirements and add new features as proposed by the customer.
Throw-away prototyping Objective is to understand the system
requirements. Should start with poorly understood requirements to clarify what is really needed.
Problems with Evolutionary development Problems
Lack of process visibility; Systems are often poorly structured; Special skills (e.g., in languages for rapid
prototyping) may be required. Applicability
For small or medium-size interactive systems; For parts of large systems (e.g., the user
interface); For short-lifetime systems.
The Spiral Model is Flexible A series of iterations where
A system is prototyped Risk is considered Various documents are produced
At the end of each iteration you consider what you’ve accomplished and what is left to be done.
Agile Software Development Models Some similarities to the spiral model Trades-off long-term planning for quick
adaptability Proven to work on smaller software projects
accomplished by small teams (<10 collocated developers)
Manifesto for Agile Software 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
That is, while there is value in the items on the right, we value the items on the left more.
Twelve principles underlie the Agile Manifesto: 1 Customer satisfaction by rapid, continuous delivery of useful
software 2 Working software is delivered frequently (weeks rather than
months) 3 Working software is the principal measure of progress 4 Even late changes in requirements are welcomed 5 Close, daily cooperation between business people and
developers 6 Face-to-face conversation is the best form of communication
(co-location) 7 Projects are built around motivated individuals, who should be
trusted 8 Continuous attention to technical excellence and good design 9 Simplicity 10 Self-organizing teams 11 Regular adaptation to changing circumstances
Individual Presentations Prepare quick (5-10 minute) presentations for next
week on a particular agile method SCRUM Lean Software Development Extreme Programming (XP) Open Unified Process Getting Real etc.
Use google (or you other favorite way to obtain information) to teach us and convince us why a particular model is good.
Make slides, but not too many (generally, < 5) Aim for clarity!!!! Don’t put up anything in a slide that
you do not understand.