最近在学习软件工程的相关知识,并且正准备着手开发一个软件。为了使开发过程更加规范,并且记录自己的学习过程,写了这样一篇博客记录:
1.软件开发生命周期
根据我的理解,任何事物都有其发展规律,做一件事抓住规律是提高效率的不二法门。软件开发也是一个过程,有其对应的步骤与规范。根据软件开发生命周期的规律来开发软件,就能少走弯路,达到事半功倍的效果。
软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。
-
软件定义时期
确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资猴和战本,并且制定工程进度表。这个时期的工作通常又称为系统分析,由系统分析员负责完成。软件定义时期通常进一步划分成3个阶段,即问题定义,可行性研究和需求分析。
-
软件开发时期
开发时期具体设计和实现在前一个时期定义的软件,它通常由下述 4个阶段组成:
总体设计
详细设计
编码和单元测试
综合测试其中前两个阶段又称为系统设计,后两个阶段又称为系统实现
-
软件维护时期
维护时期的主要任务是使软件持久地满足用户的需要。具体地说,当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件以满足用户的新需要。通常对维护时期不再进一步划分阶段,但是每一次维护活动本质上都是一次压缩和简化了的定义和开发过程。
2.问题定义
这一阶段最关键的问题是:“要解决的问题是什么?”如果没有搞清楚问题就试图解决这个问题,只会白白浪费时间和金钱。最终得出的结果可能是毫无意义的。尽管确你过定义而感的必要性是十分明显的,但是在实践中它却确是最容易被忽视的一个步骤。
本阶段要生成的文档:关于问题性质、工程目标和工程规模的书面报告
3.可行性研究
这个阶段主要确定软件开发的目标及其可行性,明确要解决的问题及解决办法,以及解决问题需要的费用、资源、时间。要进行问题定义、可行性分析,制定项目开发计划。
本阶段要生成的文档:可行性分析报告
4.需求分析
需求分析是明确软件系统要做什么,确定软件系统的功能、性能、数据、和界面等要求。这个阶段的任务仍然不是具体地解决问题,而是准确地确定“为了解决这个问题,目标系统必须做什么”,主要是确定目标系统必须具备哪些功能
本阶段要生成的文档:软件需求说明书
5.总体设计
概要设计就是设计软件的结构,明确软件系统由那些模块组成,这些模块的层次结构、调用关系以及模块的功能,同时确定数据结构和数据库结构
本阶段要生成的文档:概要设计说明书
6.详细设计
详细设计是对每个模块完成的功能进行具体的描述,把功能描述转变为精确地、结构化的过程描述,既该模块的控制结构或者说逻辑结构
本阶段要生成的文档:详细设计说明书
7.编码和单元测试
这个阶段的关键任务是写出正确的容易理解、容易维护程序模块。程序员应该根据目标系统的性质和实际环境,选取一张适当的程序设计语言,把详细设计的结果翻译成用选定的语言书写的程序
本阶段要生成的文档:源代码清单
8.综合测试
测试是为了保证软件质量,这个阶段的关键任务是通过各种类型的测试使软件达到预定的要求。
本阶段要生成的文档:软件测试报告
9.软件维护
维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。通常有四类维护活动:
改正性维护,也就是诊断和改正在使用过程中发现的软件错误
适应性维护,即修改软件以适应环境的变化
完善性维护,即根据用户的要求改进或扩充软件使它更完善
预防性维护,即修改软件,为将来的维护活动预先做准备
本阶段要生成的文档:维护文档
以上根据应该完成的任务的性质,把软件生命周期划分成8个阶段。在实际从事软件开发工作时,软件规模、种类、开发环境及开发时使用的技术方法等因素,都影响阶段的划分。事实上,承担的软件项目不同,应该完成的任务也有差异,没有一个适用于所有软件项目的任务集合。适用于大型复杂项目的任务集合,对于小型简单项目而言往往就过于复杂了。