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

2019-04-16 22:22

1.1.4 软件的分类

在工作和学习中,经常接触到各式各样的软件。那么这些数量众多的软件究竟归为哪种类型,这就需要考虑对计算机软件进行分类的依据。但事实上由于人们与软件的关系各不相同且所关心软件的侧重点也不相同,所以要给出计算机软件一个科学的、统一的严格分类标准是不现实的。但对软件的类型进行必要的划分对于根据不同类型的工程对象采用不同的开发和维护方法是很有价值的,因此有必要从不同角度对计算机软件做适当的分类。

1.基于软件的功能划分

(1)系统软件:是与计算机硬件紧密配合以使计算机的各个部件与相关软件及数据协调、高效工作的软件。例如:操作系统、数据库管理系统等。系统软件在工作时频繁地与硬件交往,以便为用户服务,共享系统资源,在这中间伴随着复杂的进程管理和复杂的数据结构的处理。系统软件是计算机系统必不可少的重要组成部分。

(2)支撑软件:它是协助用户开发软件的工具性软件,包括帮助程序人员开发软件产品的工具和帮助管理人员控制开发的进程的工具。可划分为: ?一般类型:包括文本编辑程序、文件格式化程序、程序库系统等。 ?支持需求分析:包括PSL/PSA问题描述语言、问题描述分析器、关系数据库系统、一致性检验程序等。

6

?支持设计:包括图形软件包、结构化流程图绘图程序、设计分析程序、程序结构图编辑程序等。

?支持实现:包括编译程序、交叉编译程序、预编译程序、连接编译程序等。 ?支持测试:包括静态分析程序、符号执行程序、模拟程序、测试覆盖检验程序等。

?支持管理:包括PERT进度计划评审方法、绘图程序、标准检验程序和库管理程序等。

(3)应用软件:是在特定领域内开发的,为特定目的服务的一类软件。现在几乎所有的国民经济领域都使用了计算机,为这些计算机应用领域服务的应用软件种类繁多。其中商业数据处理软件是占比例最大的一类,工程与科学计算软件大多属于数值计算问题。应用软件还包括计算机辅助设计/计算机辅助制造(CAD/CAM)、系统仿真、智能产品嵌入软件(如汽车油耗控制、仪表盘数字显示、刹车系统),以及人工智能软件(如专家系统、模式识别)等,此外,在事务管理、办公自动化,中文信息处理、计算机辅助教学(CAI)等方面的软件也得到了迅速发展,产生了惊人的生产效率和巨大的经济效益。 2.基于软件工作方式划分

·实时处理软件:指在事件或数据产生时,立即处理,并及时反馈信号,控制需要监测和控制的过程的软件。主要包括数据采集、分析、输出三部分,其处理时间是应严格限定的,如果在任何时间超出了这一限制,都将造成事故。 ·分时软件:允许多个联机用户同时使用计算机。系统把处理机时间轮流分配给各联机用户,使各用户都感到只是自己在使用计算机的软件。

·交互式软件,能实现人机通信的软件。这类软件接收用户给出的信息,但在时间上没有严格的限定,这种工作方式给予用户很大的灵活性。

·批处理软件:把一组输入作业或一批数据以成批处理的方式一次运行,按顺序逐个处理的软件。 3.基于软件规模的划分

根据开发软件所需的人力、时间以及完成的源程序行数,可划分为下述六种不同规模的软件。

·微型软件:指一个人在几天之内完成的、程序不超过500行语句且仅供个人专用的软件。通常这类软件没有必要做严格的分析,也不必要有完整的设计、测试资料。

·小型软件:一个人半年之内完成的2000行以内的程序。这种程序通常没有与其他程序的接口。但需要按一定的标准化技术、正规的资料书写以及定期的

7

系统审查,只是没有大题目那样严格。

·中型软件:5个人以内在一年多时间里完成的5000~50000行的程序。中型软件开始出现了软件人员之间、软件人员与用户之间的联系、协调的配合关系问题。因而计划、资料书写以及技术审查需要比较严格地进行。在开发中使用系统的软件工程方法是完全必要的,这对提高软件产品质量和程序人员的工作效率起着重要的作用。

·大型软件:5~10个人在两年多的时间里完成的50000~100000万行的程序。参加工作的软件人员需要按二级管理。在任务完成过程中,人员调整往往不可避免。因此会出现对新手的培训和逐步熟悉工作的问题。对于这样规模的软件,采用统一的标准,实行严格的审查是绝对必要的。由于软件的规模庞大以及问题的复杂性,往往在开发的过程中出现一些事先难于做出估计的不测事件。 ·甚大型软件:100~1000人参加用4~5年时间完成的具有100万行程序的软件项目。这种甚大型项目可能会划分成若干个子项目,每一个子项目都是一个大型软件。子项目之间具有复杂的接口。例如,实时处理系统、远程通信系统、多任务系统、大型操作系统、大型数据库管理系统通常有这样的规模。很显然,如果这类问题没有软件工程方法的支持,它的开发工作是不可想象的。 ·极大型软件:2000~5000人参加,10年内完成的1000万行以内的程序。这类软件很少见,往往是军事指挥、弹道导弹防御系统等。

可以看出,规模大、时间长、很多人参加的软件项目,其开发工作必须要有软件工程的知识做指导。而规模小、时间短、参加人员少的软件项目也得用到软件工程概念,遵循一定的开发规范,其基本原则是一样的。 4.基于软件失效的影响进行划分

工作在不同领域的软件,在运行中对可靠性也有不同的要求。事实上,随着计算机进入国民经济等各个重要领域,其软件的可靠性越来越显得重要。人们一般称这类软件为关键软件,其特点在于:

(1)可靠性质量要求高;

(2)常与完成重要功能的大系统的处理部件相联;

(3)含有的程序可能对人员、公众、设备或设施的安全造成影响。还可能影响到环境的质量和关系到国家的安全和机密。 5.基于软件服务对象的范围划分

软件工程项目完成后可以有两种情况提供给用户:

.定制软件:是受某个特定客户(或少数客户)的委托,由一个或多个软件开发机构在合同的约束下开发出来的软件。

8

.产品软件,是由软件开发机构开发出来直接提供给市场,或是为千百个用户服务的软件。 1.2 软件工程概念

由于微电子学技术的进步,计算机硬件的性能有了很大的提高,而且质量稳步提高;然而,计算机软件成本却不断上升,质量的保证也不尽如人意,软件的开发的生产率也远远不能满足计算机应用的要求。软件已经成为限制计算机系统进一步发展的关键因素。

更为严重的是计算机系统发展的早期所形成的一系列错误概念和做法,已经严重地阻碍了计算机软件的开发,甚至有的大型软件根本无法维护,只能提前报废,造成大量人力、物力的浪费,从而导致软件危机。为了研究解决软件危机的方法,计算机科学技术领域中的一门新兴的学科逐步形成了,这就是计算机软件工程学。

1.2.1 软件危机与软件工程定义 1.软件危机

软件危机指的是软件开发和维护过程中遇到的一系列严重问题。软件危机包含下述两方面的问题:如何开发软件,怎样满足对软件的日益增长的需求;如何维护数量不断膨胀的已有软件。具体地说,软件危机主要有下列表现: ?产品不符合用户的实际需要。因为软件开发人员对用户需求没有深入准确的了解,甚至对所要解决的问题还没有正确认识,就着手编写程序,而且软件开发人员和用户之间的信息交流往往很不充分,导致用户对软件产品不满意的现象发生。

?软件开发生产率提高的速度远远不能满足客观需要,软件的生产率远远低于硬件生产率和计算机应用的增长速度,使人们不能充分利用现代计算机硬件提供的巨大潜力。

?软件产品的质量差。软件可靠性和质量保证的定量概念刚刚出现不久,软件质量保证技术(审查、复审和测试)没有贯穿到软件开发的全过程中,这些都导致软件产品发生质量问题。

?对软件开发成本和进度的估计常常不准确。实际成本比估计成本有可能高出一个数量级,实际进度比预期进度拖延几个月甚至几年。这种现象降低了软件开发者的信誉。而为了赶进度和节约成本所采取的一些权宜之计又往往降低了软件产品的质量,从而不可避免地会引起用户的不满。

?软件的可维护性差。很多程序中的错误是难以改正的,实际上不能使这些程序适应硬件环境的改变,也不能根据用户的需要在原有程序中增加一些新的功能。没能实现软件的可重用,人们仍然在重复开发功能类似的软件。

9

?软件文档资料通常既不完整也不合格。计算机软件不仅包括程序,还应该包括一整套文档资料,这些文档资料应该是在软件开发过程中产生出来的,而且应该和程序代码完全一致。软件开发的管理人员可以用这些文档资料来管理和评价软件开发过程的进展状况;软件开发人员可以利用它们作为通信工具,在软件开发过程中准确地交流信息;对于软件维护人员而言,这些文档资料更是至关重要和必不可少的。因为缺乏必要的文档资料或者文档资料不合格,必然给软件开发和维护带来许多严重的困难和问题。

?软件的价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升。由于微电子学技术的进步和生产自动化程度不断提高,导致硬件成本逐年下降,然而软件开发需要大量人力,软件成本上升。

2.软件工程的定义

首先,采用工程化方法和途径来开发与维护软件。软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。必须充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法。应该推广使用在实践中总结出来的开发软件的成功技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。将软件的生成问题在时间上分成若干阶段以便于分步而有计划的分工合作,在结构上简化若干逻辑模块。把软件作为工程产品来处理,按计划、分析、设计、实现、测试、维护的周期来进行生产。

其次,应该开发和使用更好的软件工具。在软件开发的每个阶段都有许多繁琐重复的工作需要做,在适当的软件工具辅助下,开发人员可以把这类工作做得既快又好。如果把各个阶段使用的软件工具有机地集合成一个整体,支持软件开发的全过程,则称为软件工程支撑环境。

最后,采取必要的管理措施。软件产品是把思维、概念、算法、组织、流程、效率、质量等多方面问题融为一体的产品。但它本身是无形的,所以有不同于一般的工程项目的管理。它必须通过人员组织管理,项目计划管理,配置管理等来保证软件按时高质量完成。

总之,为了解决软件危机,既要有技术措施(包括方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。

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

1968年在联邦德国召开的国际会议上正式提出并使用了软件工程这个术语,运用工程学的基本原理和方法来组织和管理软件生产。后来还发展了与软件有关的心理学、生理学和经济学等方面的学科。在这期间,研究软件工程的专家学者们陆续提出了100多条关于软件工程的准则。这100多条软件工程准则可以

10


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

下一篇:决策树习题

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

马上注册会员

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