RUP, CMM, PSP, TSP, and other Software Development Processes


RUP - Rational Unified Process

See http://www.rational.com/products/whitepapers/100420.jsp for a good introduction. (Much more is here).

Organized around six "best practices":

  1. Develop software iteratively
  2. Manage requirements
  3. Use component-based architectures
  4. Visually model software
  5. Verify software quality
  6. Control changes to software

Not surprisingly, Rational (now IBM) has tools you can buy to do these things!

Famous graph of how software is developed:

(From http://www.m2sys.com/methodology.htm)

Cycles and Phases and Iterations, oh my!

Software development lifecycle is broken into cycles. But cycles just correspond to generations of product. One generation of a product is one cycle.

Each cycle has four phases (with well-defined endpoint milestones):

  1. Inception: business case, project scope, use cases (10-20% complete), initial risk assessment, project plan, one or several prototypes.
  2. Elaboration: problem domain analysis, architectural design, major functional and non-functional requirements. Must enough "for an organization to commit to a fixed-price construction phase". Also one or more iterations of executable architectural prototypes.
  3. Construction: "a manufacturing process", construction of remaining functionality, delivers the end software product, users manuals. "no creation of intellectual property".
  4. Transition: deliver to user community, and support.

Iterative development within the four phases:

Static Process Structure:

Six core engineering workflows:

  1. Business modeling: (optional?) business use cases
  2. Requirements: what the system does
  3. Analysis and Design: how the system does it (what is analysis?)
  4. Implementation: system realization
  5. Testing:
  6. Deployment:

Three core supporting workflows:

  1. Project management:
  2. Configuration and change management:
  3. Environment:

(From http://medlem.spray.se/perlin27/rup.htm)


Capability Maturity Model (CMM) and CMMI

http://www.sei.cmu.edu/cmm/

http://www.sei.cmu.edu/cmmi/

US Gov't wanted some way to evaluate their contractor's practices

CMM == Capability Maturity Model

A 5-level model of an organization's development process maturity:

  1. Initial: ad-hoc, chaotic
  2. Repeatable: basic management, tracking of cost, schedule, and functionality.
  3. Defined: documented, standardized software development process; "all projects use an approved, tailored version" of the standard process.
  4. Managed: measurement of product and process; quantitative control over process.
  5. Optimized: continuous process improvement based on quantitative feedback.

Each level has key process areas -- which define it:

  1. none
  2. requirements management; project planning; project tracking and oversight; subcontractor management; software quality assurance; configuration management.
  3. organization process focus; organization process definition; training program; integrated software management; software product engineering; intergroup coordination; peer reviews.
  4. quantitative process management; software quality management.
  5. defect prevention; technology change management; process change management.

CMM is (was?) an industry -- companies pay for licenecd CMM assessors to come in and evaluate them and assess their level.

Mostly just bean-counting the activities (independent of the results of those activities).

CMM is being replaced by CMMI == Capability Maturity Model Integration

More focussed on results of process than the process activities.

A large (?) collection of many ideas

Multiple models -- basic software engineering, SE + systems engineering, SE+SS + integrated process and product development, SE+SS+IPPD + supplier sourcing.

Continuous and staged versions: staged is a predefined ladder of process activities for an organization to follow for improvement. Continuous allows custom selection of process areas. Staging essentially maps to CMM 5-level model?

Example: SE-Continuous is 645pp! (staged is 639pp)

Measure organizations in the areas, but do not reduce to a single level


Personal and Team Software Process (PSP,TSP)

http://www.sei.cmu.edu/tsp/

PSP first introduced by Watts Humphrey in mid-90's as a course supplement.

Goal was to get developers to measure what they do.

(From http://www.sei.cmu.edu/tsp/)

Personal Software Process: Measuring time and quality

Measure time and activities, predict (plan) time and activities, manage time and activities.

Measuring defects, finding defects, predicting defects.

Team Software Process: Team-based work planning and tracking (quantitatively)

TSP divides activities in four phases: requirements, design, implementation, test.

But says project can begin or end on any phase, phases can overlap, be launched and re-launched, etc.


Six Sigma

Based on quantitative data gathering and statistical inference.

Sigma == standard deviation

6Sigma == 3.4 defects per opportunity??

http://software.isixsigma.com/

http://www3.gartner.com/4_decision_tools/measurement/measure_it_articles/2002_10/six_sig.jsp


ISO Standards

ISO 9001 (9000-3): http://www.praxiom.com/iso-9000-3.htm

ISO 12207: http://www.acm.org/tsc/lifecycle.html


http://www.standishgroup.com/sample_research/PDFpages/chaos1999.pdf

http://www.standishgroup.com/sample_research/PDFpages/extreme_chaos.pdf