在
软件开发与维护的实践过程中,怎样体现上述的软件工程基本原理呢?软件工程基本途径是
软件生存周期方法学。以下是其基本内容。
软件工程强调使用生存周期方法学和各种结构分析及结构设计技术。它们是在20世纪70年代为了对付应用软件日益增长的复杂程度、漫长的开发周期以及用户对软件产品经常不满意的状况而发展起来的。人类解决复杂问题时普遍采用的一个策略就是“各个击破”,也就是对问题进行分解然后再分别解决各个子问题的策略———分而治之。软件工程采用的生存周期方法学就是从时间角度对软件开发和维护的复杂问题进行分解,把软件生存的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。
采用生存周期方法学开发软件的时候,从对任务的抽象逻辑分析开始,一个阶段一个阶段地进行开发。如果检查通不过,则必须进行必要的返工,并且返工后还要再经过审查。审查的一条工作的基础。此外,文档也起备忘录的作用,如果文档不完整,那么一定是某些工作忘记做了,在进入生存周期的下一阶段之前,必须补足这些遗漏的细节。在完成生存周期每个阶段的任务时,应该采用适合该阶段任务特点的系统化的技术方法—结构分析或结构设计技术。
把软件生存周期划分成若干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发工程的困难程度。在软件生存周期的每个阶段都采用科学的管理技术和良好的技术方法,而且在每个阶段结束之前都从技术和管理两个角度进行严格
的审查。合格之后才开始下一阶段的工作,这就使软件开发工程的全过程以一种有条不紊的方式进行,保证了软件的质量,特别是提高了软件的可维护性。总之,采用生存周期方法学可以大大提高软件开发的成功率和软件开发生产率。
!("($#生存周期各阶段的基本任务
目前划分软件生存周期阶段的方法有许多种,软件规模、种类、开发方式、开发环境以及开发时使用的方法论都影响软件生存周期阶段的划分。在划分时应该遵循的一条基本原则,就是使各阶段的任务彼此间尽可能相对独立,同一阶段各项任务的性质尽可能相同,降低每个阶段任务的复杂程度,简化不同阶段之间的联系,有利于软件开发工程的组织管理。一般说来,软件生存周期由软件定义、软件开发和软件维护三个时期组成,每个时期又进一步划分成若干个阶段。
软件定义时期的任务是确定软件开发工程必须完成的总目标;确定工程的可行性;导出实行工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程的资源成本,并且制定工程进度表。这个时期的工作通常又称系统分析,由系统分析员负责完成。软件定义时期通常进一步划分成三个阶段:即问题定义、可行性研究和需求分析。开发时期具体设计和实现前一个时期定义的软件,它通常由四个阶段组成:总体设计、详细设计、编码和单元测试、综合测试。其中前两个阶
下面扼要介绍软件生存周期每个阶段的基本任务和结束标准。
!"问题定义
问题定义阶段必须回答的关键问题是:“要解决的问题是什么?”如果不知道问题是什么就试图解决这个问题,显然是盲目的,只会白白浪费时间和金钱,终终得出的结果很可能是毫无意义的。尽管确切地定义问题的必要性是十分明显的,但是在实践中它却可能是最容易被忽视的
一个步骤。通过问题定义阶段的工作,系统分析员应该提出关于问题性质、工程目标和规模的书面报告。通过对系统实际用户和使用部门负责人的访问调查,系统分析员(通常是软件专家)扼要地写出对问题的理解,并在用户和使用部门负责人的会议上认真讨论这份书面报告,澄清含糊不清的地方,改正理解不正确的地方,后面得出一份双方都满意的文档。问题定义阶段是软件生存周期中最简短的阶段,一般只需要一天甚至更少的时间。
#"可行性研究
这个阶段需要回答的关键问题是:“对于问题定义所确定的问题有行得通的解决方法吗?”为回答此问题,系统分析员需要进行一次大大压缩和简化的系统分析和设计的过程,也就是在较抽象的高层次上进行的分析和设计的过程。可行性研究应该比较简短,这个阶段的任务不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。
在问题定义阶段提出的对工程目标和规模的报告通常比较含糊。可行性研究阶段应该导出系统的高层逻辑模型(通常用数据流图表示),并且在此基础上更准确、更具体地确定工程规模和目标。然后分析员更准确地估计系统的成本和效益,对建议的系统进行仔细的成本$效益分析
是这个阶段的主要任务之一。可行性研究的结果是使用部门负责人做出是否继续进行这项工程的决定的重要依据。一般说来,只有投资可能取得较大效益的那些工程项目才值得继续进行下去。及时终这个阶段的任务仍然不是具体地解决问题,而是准确地确定“为了解决这个问题,目标系统
必须做什么(what to do)”,主要是确定目标系统必须具备那些功能。
用户了解他们所面对的问题,知道必须做什么,但是通常不能完整准确地表达出他们的要求,更不知道怎样利用计算机解决他们的问题;软件开发人员知道怎样用软件实现人们的要求,但是对特定用户的具体要求并不完全清楚。因此,系统分析员在需求分析阶段必须和用户密切
配合,充分交流信息,以得出经过用户确认的系统逻辑模型。通常用数据流图、数据字典和简要的算法表示系统的逻辑模型。
在需求分析阶段确定的系统逻辑模型是以后设计和实现目标系统的基础,因此必须准确完整地体现用户的要求。软件工程使用的结构分析设计的方法为每个阶段都规定了特定的结束标准,需求分析阶段必须提出完整准确的系统逻辑模型,经过用户确认之后才能进入下一个阶段,
这样就可以有