1) Waterfall
- It's classic
- It's linear: each state finished before moving on
=> It assumes stability and certainty about requirements and environment
=> Might be work in an ideal world
2) V Model
- Well known variation of waterfall attempting to fix some of the shortcomings
- But it's still essentially linear
3) Build and fix
- Another elementary model
- Gains the idea of cycles in development
4) Spiral Model
- Really get to grip with cyclic nature of development
5) WinWin
- A refinement of spiral Model
- In essence, it adds a decision point in each iteration which becomes the requirements exercise for the iteration
=> By negotiation, a "WinWin" condition is identified
=> all parties are satisfied by an iteration of the development
6) Another ..
- Incremental, Prototyping, Formal Methods, Agile, RUP
http://istqbexamcertification.com/what-are-the-software-development-models/
2. Agile methods
1) The 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. |
2) Principles behind the manifesto
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software
- Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale
- Business people and developers must work together daily throughout the project
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation
- Working software is the primary measure of progress
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely
- Continuous attention to technical excellence and good design enhances agility
- Simplicity -- the art of maximising the amount of work not done-- is essential
- The best architectures, requirement and designs emerge from self-organizing teams
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly
http://agilemethodology.org/
3) XP (eXtreme Programming)
: Iterative development with short iterations
- A "big name" in agile development
- Concepts
* Coding: In the final analysis, the code is all that matters
* Testing: It's good and finds flaws, so do lots of it
* Listening: Coders must listen to the client and understand their needs/wants
* Designing: Organising the logic of the system and avoiding unnecessary inter-dependencies
- Emphasis on Testing and Customer satisfactions / Teamwork and Pair programming
- Criticisms
* Onsite client making informal changes requests can lead to requirements "creep"
* Not clear it scales to larger projects
http://www.extremeprogramming.org/
4) Scrum
- Another of the well known Agile development "styles"
- Key features is the "sprint": A short iteration of product development
- At the start of each sprint, there's a planning meeting where it is decided what will be done in the next iteration
- Daily Scrum meeting to discuss progress
- At the end, there is a review/retrospective where work is presented to the client and team considers what went well and what didn't
https://www.scrum.org/Resources/What-is-Scrum
https://www.mountaingoatsoftware.com/blog/differences-between-scrum-and-extreme-programming
5) Common features of Agile
- Small teams, small increments of development
- Rapid development
- Emphasis on testing and (interim) approval from client
- Close customer communication
- Flexible requirements - often generate "on the fly" - or very nearly so
댓글 없음:
댓글 쓰기