系统开发共有5个阶段:需求分析、系统分析、系统设计、程序实现和测试阶段。
软件过程对于组织的重要性,就如同算法对子程序运行一般。合适的算法可以提高运行的效率,不合适的算法则不仅无法提高效率,而且会浪费组织资源的使用率。软件开发过程牵涉到的是更为复杂的人、事、物,而算法则是纯粹的机器代码执行。本章将介绍构成软件过程(Software Process)的基本活动,以及几种在软件与系统产业界常用的软件过程。
软件开发过程主要是描述开发软件系统所牵涉到的相关活动,以及如何循序渐进地执行这些活动。不同的系统、组织及开发,其管理工具所采用的流程都有可能不同。例如:有些系统适合采用按部就班的方式,从分析、设计、实现、测试到移交逐步地进行;有些系统则适合采用反复循环的方式,不断地重复执行分析、设计、实现、测试等活动。
“需求分析 ” 的主要内容是了解客户的需求、分析系统的可行性、分析需求的一致性及正确性等。
“ 设计 ” 是将需求转换为系统的重要过程。设计包含架构设计、模块间的接口设计、数据库设计、算法设计与数据结构设计等。许多软件工程师常会认为,自己可以立即编写程序而不需要分析需求和撰写设计,因而忽略规划的重要性,直接进行程序编写。此种做法对于软件系统而言,可能会造成种种问题。举例而言,如果没有架构设计,就会缺乏整体性的思考,系统可能因此而无法满足接口需求以及非功能性的需求(例如性能、可维护性等);此外,还可能会因为忽略事先的规划与分析而造成重复工作等。
“ 实现”指的是通过程序语言,将所设计的内容转化为可以执行的软件系统。 “ 除错 ” 是实现活动中不可避免的工作,主要是修改程序编写过程中产生的错误。除此之外,“单元测试”通常也会在实现阶段进行,目的是要确认单元程序代码的正确性。当程序有错误时,需要进行除错,将错误排除。
“测试”是对实现的程序代码模块进行检测,检验其功能是否正确、性能是否符合要求。一般而言,测试可以分为单元测试、集成测试、系统测试与验收测试。
单元测试:测试单元模块功能是否能正常运行。
集成测试:测试模块或子系统的接口集成是否能正常运行。
系统测试:测试系统的整体性能、安全性、稳定度等非功能性需求是否符合预期目标。
验收测试:测试系统的整体性能是否符合使用者的要求。
软件系统的特性之一就是需求会经常发生变动,许多系统每隔半年甚至是几个月就会改版。软件“维护”的目的是要确保已经发行的软件系统可以持续满足客户的需要。一般而言,维护可以有如下几种情况:修复错误、增加或变更功能,以及因为平台改变所做的调整。