[软件工程]第一章,软件工程

      程序如人生 2005-4-1 14:35
一、基本原理

软件的定义:

软件是程序以及开发、使用和维护程序需要的所有文档。

软件工程的定义:

软件工程是知道计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。

1。用分阶段的生命周期计划严格管理
2。坚持进行分段评审
3。实行严格的产品控制
4。采用现代程序设计技术
5。结果应该能清楚地审查
6。开发小组的人员应该少而精
7。承认不断改进软件工程实践的必要性。

二、传统途径

(1)。生命周期个阶段的基本任务

1。问题定义

“要解决的问题是什么?”
通过问题定义阶段的工作,系统分析员应该提出关于问题性质、工程目标和规模的书面报告。
通过对系统的实际用户和使用部门负责人的访问调查,分析员扼要地写出他对问题的理解,并在用户和使用部门负责人的会议上认真讨论这份书面报告,澄清含糊不清的地方,改正理解不正确的地方,最后得出一份双方都满意的文档。

2。可行性研究

“对于上一个阶段所确定的问题有行得通的解决办法吗?”
系统分析员需要进行一次大大压缩和简化了的系统分析和设计的过程,也就是在较抽象的高层次上进行分析和设计的过程。可行性研究应该比较简短,这个阶段的任务不是解决具体问题,而是研究问题的范围,探索这个问题是否值得去解决,是否有可行的解决办法。

可行性研究阶段应该导出系统的高层逻辑模型(通常用数据流图表示),并且在此基础上更准确、更具体地确定工程规模和目标。然后分析员更准确地评估系统的成本和效益,对建议的系统进行仔细的成本/效益分析是这个阶段的主要任务之一。

可行性研究的结果是使部门负责人作出是否继续进行这项工程的决定的重要依据,一般来说,只有投资可能取得较大效益的那些工程项目才值得继续进行下去。可行性研究以后的那些阶段将需要投入更多的人力物力。及时终止不值得投资的工程项目,可以避免更大的浪费。

3。需求分析

“为了解决这个问题,目标系统必须做什么”

主要是确定目标系统必须具备哪些功能。

用户了解他们所面对的问题,知道必须做什么,但是通常不能完整准确的表达出他们的要求,更不知道怎么利用计算机解决他们的问题;软件开发人员知道怎样用软件实现人们的要求,但是对特定用户的具体要求并不完全清楚。

因此,系统分析员在需求分析阶段必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。通常用数据流图、数据字典和简要的算法表示系统的逻辑模型。

在需求分析阶段确定的系统逻辑模型是以后设计和实现目标系统的基础,因此必须准确完整地体现用户的要求。

软件工程使用的结构分析设计方法为每个阶段都规定了特定的结束标准,需求分析阶段必须提出完整的系统逻辑模型,经过用户确认之后才能进入下一个阶段。这就可以有效地防止和克服急于着手进行具体设计的倾向。

4。总体设计

“概括地说,应该如解决这个问题?”

首先,应该考虑几种可能的解决方案。

(1)低成本的解决方案
(2)中等成本的解决方案
(3)高成本的“十全十美”的系统

系统分析员应该使用系统流程图或其他工具描述每种可能的系统,估计每种方案的成本和效益,还应该在充分权衡

各种方案的利弊的基础上,推荐一个较好的胸,并且制定实现所推荐的系统的详细计划。如果用户接受分析员推荐的系统,则可以着手完成本阶段的另一项主要工作。

上面的工作确定了解决问题的策略以及目标系统需要哪些程序。

结构设计的一条基本原理就是程序应该模块化,也就是一个大程序应该由许多规模适中的模块按合理的层次结构组织而成。

总体设计的第二项主要任务就是设计软件的结构,也就是确定程序由哪些模块组成以及模块间的关系。通常用层次图或结构图描述软件的结构。

5。详细设计

总体设计阶段以比较详抽象概括的方式提出了解决问题的办法。纤细设计阶段的任务就是把解决办法具体化。

“应该怎样具体地实现这个系统呢?”

这个阶段的任务是设计出程序的详细规格说明。这种规格说明的作用很类似于其他工程领域中工程师经常使用的工程蓝图,它们应该包括必要的细节,程序员可以根据他们写出实际的程序代码。

通常用HIPO图(层次图加输入/处理/输出图)或PDL语言(过程设计语言)描述详细的结果。

6。编码和单元测试

这个阶段的主要任务是写出正确的容易理解、容易维护的程序模块

程序员应该根据目标系统的性质和实际环境,选取一种适当的高级程序设计语言(必要时使用汇编语言),把详细设计的结果翻译成选定的语言书写的程序,并且仔细测试编写出的每一个模块。

7。综合测试

这个阶段的关键任务是通过各种类型的测试及相应的调试使软件达到预定的要求。

最基本的测试是集成测试和验收测试。

所谓集成测试是根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配过程中对程序进行必要的测试。

所谓验收测试则是按照规格说明书的规定(通常在需求分析阶段确定),由用户(或在用户参与下)对目标系统进行验收。

必要时还可以再通过现场测试或平行运行等方法对目标系统进一步测试检验。

通过对软件测试结果的分析可以预测软件的可靠性;反之,根据对软件可靠性的要求,也可以决定测试和调试过程什么时候可以结束。

8。软件维护

维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。

标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}