软件生命周期
一般问题的解决过程:
-
问题的阐述:界定问题,用较宽的范围而不是细节来定义和描述待解问题;
-
问题的分析:问题定义的提炼,把问题分成可以理解和处理的子问题,进而提供基本细节;
-
寻找解法:收集问题的一组可能解法;
-
判定:每一种可能解法的评估和比较,直至获得最佳解法;
-
设计规格说明:对选中解法的细节描述;
-
实现:由设计到构造出结果产品,包括把分解过的各部分综合成一个有机的整体。
如同任何事物一样,软件也有一个孕育、诞生、成长、成熟、衰亡、演化的生存过程;
为了用工程化方式有效地管理软件的全过程,软件的生存过程也可以划分为几个阶段,由此逐步形成“软件生命周期”的概念;
它是一个从用户需求开始,经过开发、交付使用,在使用中不断增补修订,直至让位于新软件的全过程;
概括地说,软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段
软件定义时期:
-
问题定义阶段:界定问题的范围,确切地定义问题;
-
可行性研究阶段:研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法;
-
需求分析阶段:确定目标系统必须具备哪些功能; 还要估计完成该项工程所需要的资源和成本,制定工程进度表。
软件开发时期:
具体设计和实现在前一个时期定义的软件。
- 总体设计阶段:设计出实现目标系统的几种可能的方案,权衡利弊推荐一最佳方案,并制定实现最佳方案的详细计划,以及设计软件的体系结构;
- 详细设计阶段:设计出程序的详细规格说明;
- 编码和单元测试阶段:写出正确的、容易理解、容易维护的程序模块;
- 综合测试阶段:通过各种类型的测试使软件达到预定的要求。集成测试/验收测试/现场测试/平行运行
运行维护(软件维护)时期:
通过各种必要的维护活动使软件系统持久地满足用户的需要。
通常的4种维护活动:
- 改正性维护:诊断和改正使用过程中发现的软件错误;
- 适应性维护:修改软件以适应环境的变化;
- 完善性维护:根据用户需要改进或扩充软件使之更完善;
- 预防性维护:修改软件从而为将来的维护活动做好准备。
软件开发中的各种角色:
- 需求分析师:弄清客户想要什么
- 设计师:系统该如何去做
- 程序员:用代码实现设计师的想法
- 测试员:按照需求清单给系统挑毛病
- 培训人员:教用户如何使用系统
- 维护人员:这个角色可能包括上面所有角色
- 文档库管理员:组织和维护项目文档、记录软件的开发过程
- 配置管理小组:维护变更、控制变更、确保变更正确实现、报告变更