CSIT314 Software Development Methodologies
Software process models and ethics
This lecture …
Copyright By PowCoder代写 加微信 powcoder
Software process models Waterfall model
Prototyping model
Iterative/incremental model Spiral model
Rational Unified Process Agile methods
Acknowledgement: some materials are adapted from Chapter 2 – (2010), Software Engineering, 9th Edition, Addison-Wesley.
The software process
A structured set of activities required to develop a software system
Many different processes but they all involve:
Requirements specification- defining what the system should do;
Design & Implementation – defining the organization of the system and implementing the system
Verification & Validation (V & V) – checking that it conforms to the specification and does what the customer wants
Maintenance and Evolution – changing the system in response to changing customer needs.
A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective
Waterfall model
Image source: http://en.wikipedia.org/wiki/Waterfall_model
Waterfall model (cont.)
The waterfall model is a sequential software development process.
a phase has to be complete and absolutely correct before moving onto the next phase.
Progress flows from the top to the bottom, like a waterfall.
Has its origins in the manufacturing and construction industries and adapted for software development since 1970s.
First described for software development by . Royce in 1970
Waterfall model limitations
The difficulty of responding to changing customer requirements.
Designers will have to fully predict problem areas of the system and produce a correct design before implementation is started
This model is only appropriate when the requirements are well-understood and changes will be fairly limited during the design process.
Few business systems have stable requirements.
The Rise and Fall of Waterfall
Prototyping model
gather requirements
quick design focusing on what will be visible to user – input
& output formats
build a prototype, i.e. a working version of the system
prototype evaluated and requirements refined
process iterated until customer & developer satisfied
then throw away prototype and rebuild system to high quality
Listen to Customers
Build/Revise Mock up
Customer test-drives mock -up
Throw-away prototypes
Prototypes should be discarded after development as they are not a good basis for a production system:
It may be impossible to tune the system to meet non-functional requirements;
Prototypes are normally undocumented;
The prototype structure is usually degraded through rapid change;
Prototyping model Benefits
Users are actively involved in the development Reduced time and costs
aworkingmodelofthesystemisprovided,theusers get a better understanding of the system being developed.
Prototypingcanimprovethequalityofrequirements and specifications provided to developers.
Quickeruserfeedbackisavailableleadingtobetter solutions.
Best projects to use prototyping Human-ComputerInterface
Prototyping model
Limitations
User confusion of prototype and completed system
Users can begin to think that a prototype, intended to be thrown away, is actually a final system that merely needs to be finished or polished.
Developer attachment to prototype:
Developers can also become attached to prototypes they have spent a great deal of effort producing; this can lead to problems like attempting to convert a limited prototype into a final system when it does not have an appropriate underlying architecture
Excessive development time of the prototype:
A key property to prototyping is the fact that it is supposed to be done quickly. If the developers lose sight of this fact, they very well may try to develop a prototype that is too complex
Expense of implementing prototyping:
the start up costs for building a development team focused on
prototyping may be high
Source: http://en.wikipedia.org/wiki/Software_prototyping
Incremental and Iterative model
Incremental and Iterative model
Develop a system through repeated cycles (iterative) and in smaller portions at a time (incremental).
Rather than deliver the system as a single delivery, the development and delivery is broken down into increments with each increment delivering part of the required functionality.
User requirements are prioritised and the highest priority requirements are included in early increments.
At each iteration, design modifications are made and new functional capabilities are added.
The software system
increment 4
increment 1
increment 2
increment 3
Incremental approach:benefits
Feedback from early stages used in developing latter stages
The cost of accommodating changing customer requirements is reduced.
More rapid delivery and deployment of useful software to the customer is possible.
Customers are able to use and gain value from the software earlier than is possible with a waterfall process
Early increments act as a prototype to help elicit requirements for later increments.
Lower risk of overall project failure.
The highest priority system services tend to receive the most testing.
Possible disadvantages of incremental delivery
Loss of economy of scale some costs will be repeated
System structure tends to degrade as new increments are added.
Unless time and money is spent on refactoring to improve the software, regular change tends to corrupt its structure.
Incorporating further software changes becomes increasingly difficult and costly.
The Spiral Model
The Spiral Model
A combination of prototyping with iterative model
Process is represented as a spiral rather than as a sequence of activities with backtracking.
Each loop in the spiral represents a phase in the process.
Risks are explicitly assessed and resolved throughout the process.
Spiral model usage
Spiral model has been very influential in helping people think about iteration in software processes and introducing the risk-driven approach to development.
The spiral model is mostly used in large projects.
Game development is a main area where the spiral model is used and needed
Military projects, e.g. Future Combat Systems program.
it had a 2 year iteration (spiral).
The Rational Unified Process
Note: We will later explore Unified Process in depth.
Agile methods
In the 1990s, the IT industry faces substantial frustration:
Most project followed the waterfall model
Big time gap between business requirements and the delivery of software that answered those needs => cancelling many projects.
Business environments and requirements quickly changed and the final product did not meet the then current needs.
The waterfall model did not take advantage of how quickly software could be altered.
Agile methods (cont.)
Agile refers to a set of methods and practices under which:
Requirements and solutions evolve through the collaborative effort of self-organizing cross-functional teams and their customers and users.
adaptive planning, evolutionary development, early delivery, and continuous improvement are advocated.
Rapid and flexible response to change is encouraged Agile methodologies are mostly based on the values and
principles expressed in the Agile Manifesto.
Check out this video https://www.youtube.com/watch?v=oHBs4wxiSpQ
Agile principles
1. The highest priority is to satisfy the customer through early and continuous delivery of valuable software.
2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
Source: www.agilemanifesto.org
Agile principles (cont.)
4. Business people and developers must work together daily throughout the project.
5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Source: www.agilemanifesto.org
Agile principles (cont.)
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
9. Continuous attention to technical excellence and good design enhances agility.
Source: www.agilemanifesto.org
Agile principles (cont.)
10.Simplicity–the art of maximizing the amount of work not done–is essential.
11. The best architectures, requirements, and designs emerge from self- organizing teams.
12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly.
Source: www.agilemanifesto.org
Agile software development methods
Extreme Programming
Dynamic Systems Development Methods Kanban
Lean software development
Potentially shippable product increment
Sprint goal
RCeatnucrenl
Sprint backlog
t Product backlog
Scrum projects make progress in a series of “sprints” (i.e. iterations)
Typical duration is 2–4 weeks or a calendar month at most
Product is designed, coded, and tested during the sprint
Product backlog
A typical Scrum backlog comprises the following different types of items:
Features
Technical work (e.g. “Upgrade all developers’ workstations to Windows 7”)
Knowledge acquisition (e.g. “researching various JavaScript libraries and making a selection.”
Prioritized by the product owner
Reprioritized at the start of each sprint
This is the product backlog
User stories
User stories are short, simple descriptions of a feature told from the perspective of a user or customer of the system who desires the new capability.
User stories typically follow a simple template:
Asa