软件定 义时期通常进一步划分成三个阶段,即问题定义、可行性研究和需求分析。 开发时期具体设计和实现在前一个时期定义的软件, 它通常由下述四个阶段组成: 总体设计, 详细设计,编码和单元测试,综合测试。 维护时期的主要任务是使软件持久地满足用户的需要。 具体地说, 当软件在使用过程中发现 错误时应该加以改正; 当环境改变时应该修改软件以适应新的环境; 当用户有新要求时应该 及时改进软件满足用户的新需要。 通常对维护时期不再进一步划分阶段, 但是每一次维护活 动本质上都是一次压缩和简化了的定义和开发过程。 下面扼要介绍软件生存周期每个阶段的基本任务和结束标准。 1 问题定义 问题定义阶段必须回答的关键问题:“要解决的问题是什么?”如果不知道问题是什么就试图 解决这个问题,显然是盲目的,只会白白浪费时间和金钱,最终得出的结果很可能是毫无意 义的。 尽管确切地定义问题的必要性是十分明显的, 但是在实践中它却可能是最容易被忽视 的一个步骤。 通过问题定义阶段的工作, 系统分析员应该提出关于问题性质、 工程目标和规模的书面报告。 通过对系统的实际用户和使用部门负责人的访问调查,分析员扼要地写出他对问题的理解, 并在用户和使用部门负责人的会议上认真讨论这份书面报告, 澄清含糊不精的地方, 改正理 解不正确的地方,最后得出一份双方都满意的文档。 问题定义阶段是软件生存周期中最简短的阶段,一般只需要一天甚至更少的时间。 2 可行性研究 这个阶段要回答的关键问题:“对于上一个阶段所确定的问题有行得通的解决办法吗?”为了 回答这个问题, 系统分析员需要进行一次大大压缩和简化了的系统分析和设计的过程, 也就 是在较抽象的高层次上进行的分析和设计的过程。 可行性研究应该比较简短,这个阶段的任务不是具体解决问题,而是研究问题的范围,探索 这个问题是否值得去解,是否有可行的解决办法。 在问题定义阶段提出的对工程目标和规模的报告通常比较含糊。 可行性研究阶段应该导出系 统的高层逻辑模型(通常用数据流图表示),并且在此基础上更准确、更具体地确定工程规 模和目标。 然后分析员更准确地估计系统的成本和效益, 对建议的系统进行仔细的成本/效 益分析是这个阶段的主要任务之一。 可行性研究的结果是使用部门负责人做出是否继续进行这项工程的决定的重要依据, 一般说 来, 只有投资可能取得较大效益的那些工程项目才值得继续进行下去。 可行性研究以后的那 些阶段将需要投入要多的人力物力。 及时中止不值得投资的工程项目, 可以避免更大的浪费。 3 需求分析 这个阶段的任务仍然不是具体地解决问题,而是准确地确定“为了解决这个问题,目标系统 必须做什么”,主要是确定目标系统必须具备哪些功能。 用户了解他们所面对的问题, 知道必须做什么, 但是通常不能完整准确地表达出他们的要求, 更不知道怎样利用计算机解决他们的问题;软件开发人员知道怎样使用软件实现人们的要 求, 但是对特定用户的具体要求并不完全清楚。 因此系统分析员在需求分析阶段必须和用户 密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。通常用数据流图、数据字 典和简要的算法描述表示系统的逻辑模型。 在需求分析阶段确定的系统逻辑模型是以后设计和实现目标系统的基础, 因此必须准确完整 地体现用户的要求。