分类：电脑/网络-程序设计
问题：请问软件开发的一般过程？如可行性分析、程序设计、测试…… 
请问开发的一般过程？如可行性分析、程序设计、测试……
回答：一、问题定义 问题定义阶段必须回答的关键问题是：“要解决的问题是什么?”因此，分析员通过对系统的实际用户和使用部门负责人的访问调查，扼要地写出他们对问题的理解，并在用户和使用部门负责人的会议上认真讨论这份书面报告，澄清含糊不清的地方，改正理解不正确的地方，最后得到一份双方都满意的，此文档中系统分析员应该写明问题的性质、工程目标和规模。 问题定义阶段是软件生存周期中最简短的阶段，一般只需一天甚至更少的时间。 二、可行性研究 此阶段的任务不是具体解决问题，而是研究问题的范围，探索这个问题是否值得去解决， 是否有可行的解决办法。在这个阶段，系统分析员应该导出系统的高层逻辑模型，并且在此基础上更准确、更具体地确定工程规模和目标。然后分析员更准确地估计系统的成本和效益，对建议的系统进行仔细的成本／效益分析，这是这个阶段的主要任务之一。 可行性研究的结果是使用部门负责人做出是否继续进行这项工程的决定的重要依据。 三、需求分析 这个阶段的任务，主要是确定目标系统必须具备哪些功能。因此，系统分析员在需求分析阶段必须和用户密切配合，充分交流信息，以得出经过用户确认的系统逻辑模型。通常用数据流图濑据字典和简要的算法描述表示系统的逻辑模型。需求分析阶段确定的系统逻辑模型，是以后设计和实现目标系统的基础，因此必须准确完整地体现用户的要求。 四、总体设计 这个阶段必须回答的关键问题是：“应该如何解决这个问题?” 首先应该考虑几种可能的解决方案，一般包括： 1．低成本的解决方案。系统只能完成最必要的工作，不能多做一点额外的工作。 2．中等成本豹解决方案，这样的系统不仅能够很好地完成预定的任务，使用起来很方便， 而且可能还具有用户没有具体指定的某些功能和特点。 3．高成本的“十全十美”的系统。这样的系统具有用户可能希望有的所有功能和特点。 系统分析员应该使用系统流程图或其他工具描述每种可能的系统，估计每种方案的成本 和效益；还应该在充分权衡各种方案利弊的基础上，推荐一个较好的系统，并且制定实现所推荐的系统的详细计划。 要完成上述任务，通常采用结构设计的一条基本原理就是程序应该模块化，因此，总体设计还应设计软件的结构，通常用软件结构图表示。 五、详细设计 详细设计阶段的任务就是把解法具体化，设计出程序的详细规格说明，包括必要的细节， 程序员可以根据它们写出实际的程序代码。 通常用程序流程图，N—S图，PAD图，}{IPO图或PDI_．语言描述详细设计的结果。 六、编码和单元测试 这个阶段的任务是程序员根据目标系统的性质和实际环境，选取一种适当的高级程序设 计语言(必要时用汇编语言)，把详细设计的结果翻译成用选定的语言书写的程序，并且仔细测试编写出的每一个模块。 程序员在书写程序模块时，应使它的可读性、可理解性和可维护性良好。 七、综合测试 这个阶段的任务是通过各种类型的测试，使软件达到预定的要求。 最基本的测试是集成测试和验收测试。集成测试是根据设计的软件结构，把经单元测试的模块按某种选定的策略装配起来，在装配过程中对程序进行必要的测试。验收测试是按照需求规格说明书的规定，由用户对目标系统进行验收。 通过对软件测试结果的分析可以预测软件的可靠性；反之，根据对软件可靠性的要求也可以决定测试和调试过程什么时候可以结束。 在进行测试的过程中，应该用正式的文档把测试计划、详细测试方案以及实际测试结果保存下来，作为软件配置的一部分。 八、软件维护 维护阶段的任务，是通过各种必要的维护活动使系统持久地满足用户的需要。 通常维护活动有四类：改正性维护，即诊断和改正在系统使用过程中发现的软件错误；适应性维护，即修改软件以适应环境的变化；完善性维护，即根据用户的要求改进或扩充软件使它更完善；预防性维护，即修改软件为将来的维护活动预先做准备。 每一项维护活动都应该准确地记录下来，作为正式的文档资料加以保存。 软件的生存周期划分为上述8个阶段，前3个阶段称为软件的定义阶段，第4至第7个阶段称为软件的开发阶段，最后一个阶段称为软件的维护阶段。在软件开发期间，测试的工作量最大，约占总开发量的40％；而软件的维护阶段周期最长，工作量非常大。 软件系统的研制工作，不可能是直线进行，研制人员常常需从后面阶段回复到前面。为了减少返工现象，研制人员通常在各个阶段进行阶段复审，以确保研制工作顺序进行。 在软件生存周期的各个阶段完成研制任务后，应提交各阶段的格式文档资料。 §1.4软件工程方法学 软件开发的目标就是在规定的投资和时间限制内，开发出符合用户需求的高质量软件。软件开发是一种高智能的活动，必须用软件工程的方法和技术指导软件开发的全过程。