Lecture 1
Introduction
General Introducton
Lecture 2
本节主要介绍 程序设计的步骤和软件周期
同时引进了四种软件设计模型 落水式开发, 演化式开发, 敏捷开发, 增量开发
Process
- Major activities
- Intermediate and final products
- Sub-processes and has entry and exit criteria
- Organized in a sequence
Process Building development
- lec2 p8
Software life cycle
- Sepcifying
- Designing
- Implementing
- Testing Software System
Software Process Models
- The Water fall model
- Evolutionary Development
- Agile and Scrum
+ The Water fall model*
lec2-p12
- Waterfall Model Problems
- Inflexible partitioning of the project into distinct stages
- difficult to respond to changing customer requirements
- onky apply for requirements which are well-understood
- describes a process of stepwise refinement
- Based on hardware engineering models
- Widely used in military and aerospace industries
- Reality check
Evolutionary Development
- On idea of developing an initial implementation
- Exploratory development
- Objective is to worl with CUSTOMEERS <=> evolve a final system from an initial outline specification
- Start with well-understood requirements
- System evolves by adding newe features as they are proposed by customer.
- Problem
- Lack of process visibility
- System are sometimes poorly structured
- Applicability
- All types of system but rare in safety critical
- Reality check
- 所有现代开发都采用这种方式但是是混合的形式
- 大多数情况下规范在最开始进行, 后续进行补全
- 周期先确定100个功能 后续分部分完成
lec2-p16
Agile development 轻量化 便捷 可以自己维护
- Lightweight approach to software development 轻量级软件开发
- Focused on
- Code development as code activity
- Test driven development
- Often use pair proframming
- Iterative decelopment
- Self organised teams
Increment Development
- broken down into increments => 每一片实现一个需求功能
- User requirements are prioritised
- Once the development of an increment is started, the requirements are frozen
- advantages
- Customer value => increment => system functionality is available earlier
- Early increments => prototype => elicit requirements for later increments
- Lower risk of overall project failure
- The highest priotity system services tend to receive the most testing
- In reality
- Most software processes involve
- Prototyping
- Iterative building
- why
- 降低程序开发风险
- 允许软件经受更多测试
- 随着程序开发建设库存损失机会
- Most software processes involve
Lecture 3
This lecture
- Requirements engineering and specification
- Software design
- Programming, testing and debugging
- Software Evolution
software Specification
- The process of establishing => 确定需要哪些服务以及系统运行和开发的约束条件
- Requirements Engineering Process
- Feasibility study
- Requirements elicitation and analysis
- Requirements specification
- Requirements validation
The Requirements Engineering Process
lec3-p4
由此我们总结出程序设计的设计分类和设计思想
Design
- Architechtural design
- Abstract Specification
- Interface design
- Component design
- Data Structure Design
- Algorithm
- Example System
- Coffee machine
Method
Systematic approaches to developing a software design
- Data-flow model
- Entity-realtion-attribute model
- Structural model
- Object models
- A state transition model showing system states and triggers
Programming and Debugging
- design => program & removing errors
- Programming is usually personal activity
- Programmers carry out some program testing
The testing Process
Lec3-p13
Testing Stages
- Unit testing
- Module testing
- Related collections of dependent components are tested
- Sub-system testing(merges with system testing)
- Modules are integrated into sub-systems and tested. The focus here should be on interface testing
- System testing
- Testing of the system as whole. Testin of emergent properties
- Acceptance testing
- Testing with customer data to check that it is acceptable
Testing mapped to OO progtamming
- Unit testing
- Testing an individual classes methods
- Module testing
- Testing classes which integrate with other classes
- Sub-system testing
- A number of classes tested which produce a given service
- Organised as package or JAR library
- System Test
- Test whole system