domingo, 28 de agosto de 2016

Software Process Models II

1) RUP

rup_fundamentals_slide03.jpg




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.
spiral.gif




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.

1090842ba1c2d35a3520d22479911b88.jpg

Examples of agile process
  • Extreme programming (XP)
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?
  • Extreme programming practices are interdependent
    • A vulnerability if one of them is modified
  • Requirements expressed as a set of test cases must be passed by the software
    • System passes the tests but is not what the customer is paying for.
  • 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.

No hay comentarios:

Publicar un comentario