本文参考自 Software Engineering : A Practitioner’s Approach — 8th edition by Roger S. Pressman
1.1 软件的特性
- 软件决定了现代信息化社会的发展
- 以往个体的程序员正在被软件开发团队取代
- 团队个体间有序分工
- 控制开发成本
- 时间,预算
- debug
- 更新、修复 现有的软件系统
- 评测开发/维护进度
软件不会老化
硬件 | 软件 |
---|---|
![]() |
![]() |
但是,软件会折旧!
- 软件会面临来自各方的改进建议
- 时间:上线前 - 运行很久之后
- 每次更改会带来高失败率
- 没等到完全稳定,新的更改又来
- 最终更改太多,软件“折旧”了
- 时间:上线前 - 运行很久之后
- 软件出bug一般意味着更深层的问题,因此也更复杂
1.1.2 七类软件
- 系统软件
- 商业软件
- 工程软件
- 嵌入式软件
- 消费级软件
- Web/手机软件
- 人工智能软件
1.1.3 老软件
- 历史遗留软件很多
- 核心,不可替代
- 难以适应新环境、新需求
- 怎么办?Do nothing.
- 直到“不得不”改进
1.2 四种流行的新软件
- WebApps
- 手机App
- 云计算
- product line software???
2.2.1 process包含的5个阶段
- communication
- project启动
- 收集用户需求信息
- planning
- cost/benefit估计
- 时间安排
- 资源投入
- modeling
- 打草稿
- 分析+设计
- construction
- 写代码
- 测试
- deployment
- 部署,交付给用户
- 技术支持
- 用户反馈+评分
2.2.2 Umbrella Activities
执行上述阶段时要注意的方面:
- Software project tracking and control
- 帮助大家了解项目进行到哪个阶段
- Risk management
- Software quality assurance
- Technical reviews
- 同行代码审阅
- Measurement
- Software configuration management
- 控制“更改代码的影响”
- Reusability management
- Documentation
Maintenance 的种类
- Corrective
- Fix defects
- Adaptive
- Accommodate environment changes
- Perfective
- Add functionality
- Preventive
- Attempt to avoid future problems
什么是Software Life Cycle
The period of time that begins when a software product is conceived and ends when the software is no longer available for use
通常包含这些阶段:构思,需求,设计,写码,测试,安装部署,操作维护