Chapter2:software process model

Organization of processes and activities

Key points in this chapter:

  1. What is software process?
  2. What is software process model?
  3. What are the software process models and what’s their advantages and disadvantages and implementation area?
  4. Difference between plan-driven and agile?
  5. What is agile method?
  6. What are the steps of software process?
  • fundamental activities in software processes

    (all processes involve the following steps)

    • Specification:what the system should do
    • Design and implementation:the organization of system
    • Validation:checking if it does what the customer wants
    • Evolution:changing in response to customer need(changing requirements) development and evolution
  • descriptions of activities in software process
    • Products: What do you get when this activity ends
    • Roles: Who should be involved in the activity
    • Pre- and Post- conditions

      • Pre-condition:conditions that must test true before rntering this activity
      • Post-condition:conditions that must test true after exiting this activity

        (If the post-condition does not match when exiting the module, it means the coding of the module is wrong.)

  • software process:a sequence of activities leading to the production of a software product.
  • software process model/aka product life cycle : an abstract representation of a software process.
  • software processes(des and where)

    • Plan-driven processes:Plan-driven processes are processes where all of the process activities are planned in advance and progress is measured against this plan.
    • Agile processes:In agile processes, planning is incremental and it is easier to change the plan and the software to reflect changing customer requirements.
  • Kinds of software process models:
    • Waterfall model: plan-dirven process with strict order(only after the previous activity ends can the next activity proceed)

      The previous activity ends before the next activity can proceed

      5 steps in waterfall model:

      • requirements definition
      • system and software design
      • implementation and unit testing
      • integration and system testing
      • operation and maintenance

      Advantages of waterfall model

      • Helps coordinate the work
      • Good requirements imporves software quality.

      Disadvantages of waterfall model: difficult to deal with changing requirements

      Application domain of waterfall model:

      • Large system
      • Requirements that are well-understood and unlikely to change, such as the boardroom reservation system
    • Incremental model

      interleaving activities

      Advantages of incremental model:

      • dealing with change
      • repid delivery
      • effective feedbacks

      Disadvantages of incremental model:

      • invisible processes
      • degrading system structure

      Application condition of incremental model:

      • Limited Time and Budget (Incremental Savings)
      • Changing Requirements (can change at any time)
    • Reuse-oriented model

      component search and configuration

      Key points of re-use oriented model:

      • Component selection
      • Component filtering
      • Component-dependent requirements development

      Advantages of reuse-oriented model:

      • Reduce cost and risk(why Reduce risk)
      • Faster delivery(using components made by others will be Faster)

      Disadvantages of reuse-oriented model:

      • You will need no definite requirements as long as you want.
      • Different from Real Needs
      • (The implementation details inside the Components may not be known)
    • These models are not mutually exclusive and are often used together, especially for large systems development.
    • For large systems, it makes sense to combine some of the best features of the waterfall and the incremental development models.
    • You need to have information about the essential system requirements to design a software architecture to support these requirements. You cannot develop requirements incrementally.
    • Sub-systems within a larger system may be developed using different approaches.
    • Parts of the system that are well understood can be specified and developed using a waterfall-based process.
    • Parts of the system which are difficult to specify in advance, such as the user interface, should always be developed using an incremental approach.

Agile methods(ideas, ideas, and values, not concrete models)

  • Agile software development methods
    • Extreme programming(XP)
    • Scrum(Agile Development)
    • Crystal
    • Adaptive software development(ASD)
    • DSDM(Dynamic Systems Development Method)
    • Feature driven development(FDD)
  • Scaling agile mothods:
    • Change from a small fish tank to a bigger fish tank
    • Go from a small tank to a bigger tank