1) RUP
The Rational Unified Process (RUP) is an iterative software development process framework created by the Rational Software Corporation, a division of IBM since 2003. RUP is not a single concrete prescriptive process, but rather an adaptable process framework, intended to be tailored by the development organizations and software project teams that will select the elements of the process that are appropriate for their needs. RUP is a specific implementation of the Unified Process.
One of the main characteristics of the Rational Unified Process, is that instead of other types of software development which start working on one specific element of the software development cycle, RUP is divided in many iterations. During each iteration there is a specific time investment being delegated towards some of the areas of the software development cycle, for example at the beginning most of the work is focused on business modelling and requirements, whereas, near the end, there is a large emphasis on project and change management. Regardless of this, it is still noted that almost every area of the software development cycle will be worked on during every iteration, but the focus on each area might shift during the different iterations.
4 main phases can be identified in the RUP, which are
a) Inception: Where the project is defined and the scope is identified.
b) Elaboration: Where possible risk elements are attempted to be mitigated and the system’s architecture is defined.
c) Construction: Where the actual software solution is being made.
d) Transition: Where the project is moved from development into production and the end users finally understand it.
2) Spiral ModelThe process begins at the center position. From there it moves clockwise in traversals. Each traversal of the spiral usually results in a deliverable. It is not clearly defined what this deliverable is. This changes from traversal to traversal. For example, the first traversals may result in a requirement specification. The second will result in a prototype, and the next one will result in another prototype or sample of a product, until the last traversal leads to a product which is suitable to be sold. Consequently the related activities and their documentation will also mature towards the outer traversals. E.g. a formal design and testing session would be placed into the last traversal.
The most important element of the Spiral Model is that it is focused on risk management, there is a very large emphasis placed on possible constraints and risks, which makes it one of the safest paradigms to apply on risky projects.
3) Agile
Emphasis on flexibility in producing software quickly and capably
--------Agile manifesto---------
· Value individual and interactions over process and tools
· Prefer to invest time in producing working software rather than in producing comprehensive documentation
· Focus on customers collaboration rather than contract negotiation
· Concentrate on responding to change rather than on creating a plan and then following it
Agile software development describes a set of principles for software development under which requirements and solutions evolve through the collaborative effort of self-organizing cross-functional teams. It promotes adaptive planning, evolutionary development, early delivery, and continuous improvement, and it encourages rapid and flexible response to change. These principles support the definition and continuing evolution of many software development methods.
Examples of agile process
1.- Communication: continual interchange between customers and developers
2.- Simplicity: select the simplest design or implementation
3.- Courage: commitment to delivering functionality early and often
4.- Feedback: loops built into the various activities during the development process
TWELVE FACETS OF XP
The planning game(Customer defines value)
|
Pair programming
|
Small release
|
Collective Ownership
|
Metaphor (Common vision, common names)
|
Continuous integration (Small increments)
|
Simple design
|
Sustainable pace(40 hrs/week)
|
Writing tests first
|
On-site customer
|
Refactoring
|
Coding standard
|
When extreme is Too extreme?
Refactoring issue
- Difficult to rework a system without degrading its architecture
-
Agile's main characteristics:
a) Comunication: interchange of ideas and opinions between customers and developers.
b) Simplicity: select the simplest design or implementation.
c) Courage: commitment to delivering functionality early and often
d) Feedback: loops built into the various activities during the development process.