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
- Products: 这一个 activity 完结之后会失去什么
- Roles: 哪些人须要参加到这个 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
(退出这个 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)
前一个 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 比如说会议室预约零碎
-
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 省时省钱)
- changing requirements(能够随时改)
-
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(为什么 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)
- Scrum(麻利开发)
- Crystal
- Adaptive software development(ASD)
- DSDM(Dynamic Systems Development Method)
- Feature driven development(FDD)
-
Scaling agile mothods:
- Scaling up 从一个小鱼缸换成一个大鱼缸
- Scaling out(pipeline) 从一个小鱼缸伸一个馆子到大鱼缸