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
댓글 없음:
댓글 쓰기