这是我参与「第三届青训营 -后端场」笔记创作活动的第4篇笔记。
1、 软件开发的基本过程工作阶段划分及其相应文档
- 问题定义 确定要解决的问题是什么。通过调研,系统分析员要提出关于问题性质、工程目标和工程规模的书面报告,并且要得到客户对这份报告的确认。 《用户需求分析分档》
- 可行性研究 确定问题是否有行得通的解决办法。用最小的代价在尽可能短的时间内确定问题是否能够解决。 《可行性研究报告》和《项目开发计划》
- 需求分析 确定目标系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰和具体的要求。 《软件需求规格说明书》、《数据要求说明书》、《初步用户手册》
- 概要设计(总体设计、初步设计、逻辑设计、高层设计) 概括地说,怎样实现目标系统? 确定解决问题的方案及目标系统中应该包含的程序。 设计程序的体系结构,确定程序由哪些模块组成以及模块间的关系。 《概要设计说明书》、《测试计划初稿》
- 详细设计(模块设计、物理设计、低层设计) 把解决办法具体化,详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。 《详细设计说明书》、《数据库设计说明书》
- 编码和单元测试 把详细设计的结果翻译成用选定的语言书写的程序,并且仔细测试编写出的每一个模块。 《模块开发卷宗(始)》、《用户手册(完)》、《操作手册》
- 综合测试 通过各种类型的测试及相应的调试使软件达到预定的要求。最基本的测试是集成测试和验收测试。 集成测试(组装测试):根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配过程中对程序进行必要的测试。【前后端联调】 验收测试(确认测试):按照规格说明书的规定,由用户对目标系统进行验收。【UAT测试】 《模块开发卷宗(完)》、《测试计划》、《测试分析报告》、《项目开发总结报告》
- 软件维护 通过各种必要的维护活动使系统持久地满足用户的需要,包括四类维护活动: 改正性维护:诊断和改正软件错误 适应性维护:修改软件以适应环境的变化 完善性维护:根据用户要求改进或扩充软件使它更完善 预防性维护:修改软件为将来的维护活动预先做准备 《开发进度月报》、《软件维护报告》、《软件问题报告》、《软件修改报告》
2、 在软件开发早期阶段为什么要进行可行性研究?可行性研究主要研究什么问题?
- 进行可行性研究原因: 开发一个软件时,需要判断原定的系统模型和目标是否现实,系统完成后所能带来的效益是否值得,从而避免在这些工程上的任何时间、人力、软硬件资源的浪费。 可行性研究的实质是进行一次大大压缩简化了的系统分析和设计过程,就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
- 主要研究问题:
- 技术可行性。包括对要开发项目的功能、 性能和限制条件进行分析, 确定在现有的资源条件下,技术风险有多大,项目是否能实现。这里的资源包括已有的或可以搞到的硬件、软件资源,现有技术人员的技术水平和已有的工作基础。
- 经济可行性。包括进行成本评估以及利润评估, 确定要开发的项目是否值得投资开发。对于大多数系统,一般衡量经济上是否合算,应考虑一个“底线”,经济可行性研究范围较广,包括:
- 成本—效益分析
- 长期公司经营策略
- 开发所需的成本和资源
- 潜在的市场前景
- 操作可行性。有时还要研究社会可行性问题,研究要开发的项目是否存在任何侵犯、妨碍等责任问题。社会可行性所涉及的范围也比较广,它包括合同、责任、 侵权和其他一些技术人员常常不了解的陷阱等。