软件工程第一讲教案(3)

2019-04-16 22:22

概括为下述六条基本原则。

(1)用分阶段的生存周期计划严格管理

一个软件从定义、开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。在软件开发与维护的漫长过程中,需要完成许多不同性质的工作,所以应把软件生存周期划分为若干个阶段,并相应的制定出可行的计划然后按照这个计划对软件的开发与维护工作进行管理。不同层次的管理人员都必须严格按照计划各尽其职地管理软件开发与维护工作,绝不能受客户或上级人员的影响而擅自背离预定计划。 (2)坚持进行阶段评审

软件的质量保证工作不能等到编码阶段结束之后再进行。其理由是:①大部分错误是在编码之前造成的,例如,根据统计,设计错误占软件错误的63%,编码错误仅占37%;②错误发现与改正得越晚,所需付出的代价也越高。因此,在每个阶段都进行严格的评审,以便尽早发现在软件开发过程中所犯的错误,是一条必须遵循的重要原则。 (3)实行严格的产品控制

在软件开发过程中不应随意改变需求,因为改变一项需求往往需要付出较高的代价。 但是,在软件开发过程中改变需求又是难免的,由于外部环境的变化,相应地改变用户需求是一种客观需要,显然不能硬性禁止客户提出改变需求的要求,而只能依靠科学的产品控制技术来顺应这种要求。也就是说,当改变需求时,为了保持软件各个配置成分的一致性,必须实行严格的产品控制,其中主要是实行基准配置管理。所谓基准配置又称为基线配置,它们是经过阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。基准配置管理也称为变动控制:一切有关修改软件的建议,特别是涉及到对基准配置的修改建议,都必须按照严格的规程进行评审,获得批准以后才能实施修改,绝对不能随意进行修改。 (4)采用现代程序设计技术

从提出软件工程的概念开始,人们一直把主要精力用于研究各种新的程序设计技术。20世纪 60年代末提出的结构程序设计技术,其风格为清晰第一,效率第二,已经成为绝大多数人公认的先进的程序设计技术。以后又进一步发展出各种结构分析(SA)与结构设计(SD)技术。实践表明,采用先进的技术既可提高软件开发的效率,又可提高软件维护的效率。 (5)应能清楚地审查结果

软件产品不同于一般的物理产品,它是看不见摸不着的逻辑产品。软件开发人员(或开发小组)的工作进展情况可见性差,难以准确度量,从而使得软件产品的开发过程比一般产品的开发过程更难于评价和管理。为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限,规定

11

开发组织的责任和产品标准,从而使得所得到的结果能够清楚地被审查。 (6)合理安排软件开发小组的人员

软件开发小组的人员合理安排的原则是人员应该少而精,即小组的组成人员的素质应该好,而人数不应过多。高素质的人员会大大提高软件的开发效率,且明显减少软件中的错误。此外,随着开发开小组人员数目的增加,因交流问题和讨论情况而造成的通信开销也急剧增加,所以要保证软件开发小组人员少而精。 最后要强调的是:必须不断灵活改进软件工程实践。要按照软件工程的基本原理实现软件的工程化生产,仅遵循上述这六条基本原则是不够的。因为,这样并不能保证软件开发的过程跟上时代的前进和技术的进步,因此必须不断灵活改进软件工程实践。按照这个要求,就要积极主动的采用新的软件技术,而且要注意不断总结经验。例如:收集出错类型和问题报告等数据,这些数据不仅可以用来评价软件技术的效果,而且也可以用来指明必须重点开发的软件工具和应该优先研究的技术。

1.2.2 软件工程研究的基本内容与目标

从内容上划分,软件工程学可分为理论,结构,方法,工具,环境,管理,规范等。理论与结构是软件开发的技术基础,包括程序正确性证明理论,软件可靠性理论,软件成本估算模型,软件开发模型,模块划分原理等。软件开发技术包括软件开发方法学,软件工具和软件开发环境。良好的软件工具可促进方法的研制,而先进的软件开发方法能改进工具。软件工具的集成构成软件开发环境。管理技术是提高开发质量的保证,软件工程管理包括软件开发管理和软件经济管理,前者包括人员分配,制定计划,确定标准与配置,而后者的主要内容有成本估算和质量评价。

软件工程学研究的基本目标:

(1)定义面向计划、开发维护整个软件生存周期的良好的方法学。 (2)确定的软件成分,记录软件生存周期每一步的软件文件资料,按步显示轨迹。

(3)可预测的结果,在生存周期中,每隔一定时间可以进行复审。 软件工程学的最终目的,是以较少投资获得易维护、易理解、可靠、高效率的软件产品。软件工程学是研究软件结构、软件设计与维护方法、软件工具与环境、软件工程标准与规范 、软件开发技术与管理技术的相关理论。 1.2.3 软件工程的原则

为了开发出低成本高质量的软件产品,软件工程学应遵守以下基本原则。 1.分解

12

分解是人类分析解决复杂问题的重要手段和基本原则,其基本思想是从时间上或是从空间上将一个复杂抽象问题分成若干个较小的、相对独立的、容易求解的子问题,然后分别求解。软件瀑布模型,结构化分析方法,结构化设计方法,Jackson方法,模块化设计都运用了分解的原则。 2.抽象和信息隐蔽

尽量将可变因素隐藏在一个模块内,将怎样做的细节隐藏在下层,而将做什么抽象到上一层做简化,从而保证模块的独立性。这就是软件设计独立性要遵守的基本原则。模块化和局部性的设计过程使用了抽象和信息隐蔽的原则。 3.一致性

研究软件工程方法的目的之一,就是要使开发过程标准化,使软件产品设计有共同遵循的原则。要求软件文件格式一致,工作流程一致,软件开发过程要标准化,统一化。 4.确定性

软件开发过程要用确定的形式表达需求,表达的软件功能应该是可预测的,用可测试性,易维护性,易理解性,高效率的指标来具体度量软件质量。 组织实施软件工程项目,从技术和管理上采取了多项措施后,项目的成功主要要达到的目标有:开发成本较低,软件功能能达到用户要求并具有较好的性能,软件具有良好的可移植性,易于维护且维护费用较低,软件的开发工作能按时完成及时交付实用。

1.3 软件生存周期与软件开发模型

软件工程采用的生存周期方法就是从时间角度对软件的开发与维护这个复杂问题进行分解,将软件生存漫长的时期分为若干阶段,每个阶段都有其相对独立的任务,然后逐步完成各个阶段的任务。 1.3.1 软件生存周期

软件生存周期就是从提出软件产品开始,直到该软件产品被淘汰的全过程。研究软件生存周期是为了更科学地、有效地组织和管理软件的生产,从而使软件产品更可靠、更经济。采用软件生存周期来划分软件的工程化开发,是软件开发分阶段依次进行。前一个阶段任务的完成是后一个阶段的前提和基础,而后一个阶段通常是将前一个阶段提出的方案进一步具体化。每一个阶段的开始与结束都有严格的标准。前一个阶段结束的标准就是与其相邻的后一个阶段开始的标准。每一个阶段结束之前都要接受严格的技术和管理评审。不能通过评审时,就要重复前一阶段的工作直至通过上述评审后才能结束。采用软件生存周期的划分方法,是每一阶段的任务相对独立,有利于简化整个问题且便于不同人员分工协作。而且其严格而科学的评审制度保证了软件的质量,提高了软件的可维护性。从而

13

大大提高了软件开发的成功率和生产率。

软件生存周期一般可分为以下阶段: S1:问题定义 S2:可行性研究 S3:需求分析 S4:概要设计 S5:详细设计 S6:编码 S7:测试 S8:运行与维护

在软件的研制和开发过程中`:①要了解和分析用户的问题,以及经济、技术和时间等方面的可行性。②将用户的需求规范化、形式化。编写成需求说明书及初步的系统用户手册,提交评审。③将软件需求设计为软件过程描述,即设计人员将以确定的各项需求转化成一个相应的体系结构。结构的每一组成部分都是意义明确的模块,每个模块都与某些需求相对应(概要设计)。然后对每个模块的具体任务进行具体的描述(详细设计)。④编代码,就是把过程描述编为机器可执行的代码。⑤测试,发现错误,进行改正。⑥维护,包括故障的排除以及为适应使用环境的变化和用户对软件提出新的要求所作的修改。

软件生存期也可以分为三个大的阶段:计划阶段。开发阶段和维护阶段。 (1)计划阶段

这里又可分两步:软件计划和需求分析。第一步,因为软件是计算机系统中一个子系统,这样不但要从确定的软件子系统出发,确定工作域,即确定软件总的目标、功能等;开发这样的软件系统需要哪些资源(人力和设备)。作出成本估算,而且还要求作出可行性分析,即在现有资源与技术的条件下能否实现这样的目标;最后要提出进度安排,并写出软件计划文档。上述问题都要进行管理评审。第二步,在管理评审通过以后,要确定系统定义和有效性标准(软件验收标准),写出软件需求说明书。还要开发一个初步用户手册,这里要进行技术评审。技术评审通过以后。再进行一次对软件计划的评审,因为这时对问题有了进一步的了解。而计划制定时,数据较少,且经验不足,所以对制定的计划需要进行多次修改,以尽量满足各种要求,然后再进入到开发阶段。

(2)开发阶段

14

开发阶段要经三个步骤:设计、编码和测试。首先对软件进行结构设计,定义接口,建立数据结构,规定标记。接着对每个模块进行过程设计、编码和单元测试。最后进行组合测试和有效性测试,对每一个测试用例和结果都要进行评审。 (3)维护阶段

首先要做的工作,就是配置评审,检查软件文档和代码是否齐全,两者是否一致,是否可以维护、确定维护组织和职责,并定义表明系统错误和修改报告的格式等。维护可分为改正性维护、完善性维护和适应性维护等。维护内容广泛,有人把维护看成是第二次开发。要适应环境的变化,就要扩充和改进,但不是建立新系统。维护的内容应该通知用户,要得到用户的认可。然后则可进入修改,修改不只是代码修改,必须要有齐全的修改计划、详细过程以及测试等文档。 以上简要的介绍了软件生存周期各个阶段的主要任务和评审标准。以后本书将围绕软件生存周期的各个阶段详细讲述其所要完成的任务、完成这些任务所需的技术方法和辅助工具、软件开发和维护的主要管理技术。 1.3.2 软件开发模型

为了反映软件生存周期内各种工作应如何组织及周期各个阶段应如何衔接,需要用软件开发模型给出直观的图示表达。软件开发模型是软件工程思想的具体化,是实施于过程模型中的软件开发方法和工具,是在软件开发实践中总结出来的软件开发方法和步骤。总的说来,软件开发模型是跨越整个软件生存周期的系统开发、运作、维护所实施的全部工作和任务的结构框架。 1.瀑布模型

瀑布模型又称生存周期模型,由B.M.Boehm提出,是软件工程的基础模型。其核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作。采用结构化的分析与设计方法,将逻辑实现与物理实现分开。瀑布模型规定了各项软件工程活动,包括:制定开发计划,进行需求分析和说明,软件设计,程序编码,测试及运行维护。并且规定了软件生存周期的各个阶段如同瀑布流水,逐级下落,自上而下、相互衔接的固定次序。参阅图1-4,每项开发活动均应具有下述特征。

(1)从上一项活动接收该项活动的工作对象,作为输入; (2)利用这一输入实施该项活动应完成的内容;

(3)给出该项活动的工作结果,作为输出传给下一项活动;

(4)对该项活动实施的工作进行评审。若其工作得到确认,则继续进行下一项活动,否则返回前项,甚至更前项的活动进行返工。

15


软件工程第一讲教案(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:决策树习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: