Chapter2:software process model
Organization of processes and activities
Key points in this chapter:
- What is software process?
- What is software process model?
- What are the software process models and what's their advantages and disadvantages and implementation area?
- Difference between plan-driven and agile?
- What is agile method?
- 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
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
(退出这个module时 如果不符合post-condition 表示这个module的coding是有错的)
- 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(前一个activity结束才能进行下一个activity)
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 radically 比如说会议室预约系统
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省时省钱)
- changing requirements(可以随时改)
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(为什么reduce risk)
- Faster delivery(都用别人做好的组件那肯定快）
Disadvantages of reuse-oriented model:
- Inevitable requirements compromises(不一定能找到非常符合要求的组件)
- Different from real needs(同上)
- Components out of control(组件里面的实现细节可能不知道)
- 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(是一种理念、思想和价值观 不是具体的一种模型)
Agile software development methods
- Extreme programming(XP)
- Adaptive software development(ASD)
- DSDM(Dynamic Systems Development Method)
- Feature driven development(FDD)
Scaling agile mothods：
- Scaling up 从一个小鱼缸换成一个大鱼缸
- Scaling out(pipeline) 从一个小鱼缸伸一个馆子到大鱼缸