随着计算机系统的发展.docx
《随着计算机系统的发展.docx》由会员分享,可在线阅读,更多相关《随着计算机系统的发展.docx(18页珍藏版)》请在三一办公上搜索。
1、17概 述随着计算机系统的发展,计算机的应用日益广泛,计算机软件的开发、维护工作显得越来越重要。如何才能开发出用户满意的软件;如何以较低的成本开发出高质量的软件;怎样使所开发的软件在运行过程中容易维护,以延长软件的使用期限;如何提高软件开发、维护过程中的自动化程度,提高软件开发效率;软件工程如何管理等。这些就是软件工程研究的问题。软件工程是指导计算机软件开发和维护的学科。软件工程的目的是在规定的时间、规定的开发费用内,开发出满足用户需要的、质量合格的软件产品。本章介绍软件工程的发展史,软件危机是如何形成和消除的,软件工程的基本概念、内容及基本原理等。本章重点: 软件工程; 软件生命周期。1.1
2、 软件工程的产生计算机系统的发展、软件应用的日益广泛和软件危机的困扰促使了软件工程的产生和发展。1.1.1 软件工程发展史自从20世纪40年代电子计算机问世以来,计算机软件随着计算机硬件的发展而逐 步发展起来,软件和硬件一起构成计算机系统。一开始只有程序的概念,后来才出现软件的概念。当软件需求量大大增加后,人们把软件视为产品,确定了软件生产的各个阶段必须完成的有关计算机程序的功能、设计和使用的文字或图形资料,这些资料称为“文档”。软件是指计算机程序及其有关的数据和文档。随着计算机系统的发展,软件的生产大体经历了程序设计、软件、软件工程、第四代技术等阶段。在此过程中,软件危机产生并越来越严重,因
3、而逐步形成了研究如何消除软件危机,如何合理地开发和维护软件的学科软件工程学。1程序设计阶段20世纪40年代中期到20世纪60年代中期,电子计算机价格昂贵、运算速度低、存储量小。计算机程序是描述计算任务的处理对象和处理规则。早期的程序规模小,程序往往是个人设计、自己使用。程序设计通常要注意如何节省存储单元、提高运算速度,除了程序清单之外,没有其他任何文档资料。2“软件=程序+文档”阶段20世纪60年代中期到20世纪70年代中期,集成电路计算机的运算速度和内存容量大大提高。随着程序的增加,人们把程序区分为系统程序和应用程序,并把它们称为软件。计算机软件的应用范围更加广泛,当软件需求量大大增加后,许
4、多用户去“软件作坊”购买软件。软件产品交付给用户使用之后,为了纠正错误或适应用户需求的改变对软件进行的修改,称为软件维护(software maintenance)。此时,由于在软件开发过程中很少考虑到它们的维护问题,软件维护的费用以惊人的速度增长,并且不能及时满足用户的需求,质量也得不到保证。所谓的“软件危机”由此开始。人们逐渐重视软件的“可维护性”问题,软件开发开始采用结构化程序设计技术,并规定软件开发时必须书写各种规格书、说明书、用户手册等文档。1968年北大西洋公约组织(NATO)的计算机科学家在联邦德国召开国际会议,讨论软件危机问题,正式提出了“软件工程”(software engi
5、neering)的术语。从此一门新的工程学科诞生了。3软件工程阶段20世纪70年代中期到20世纪90年代,大规模集成电路计算机的功能和质量不断提高,个人计算机已经成为大众化商品,计算机应用不断地扩大。软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的速度,软件产品供不应求,软件危机日益严重。为了维护软件需要耗费大量的成本。美国当时的统计数据表明,对计算机软件的投资占计算机软件、硬件总投资的70%,到1985年时软件成本大约占总成本的90%。为了对付不断增长的软件危机,软件工程学把软件作为一种产品进行批量生产,运用工程学的基本原理和方法来组织和管理软件生产,以保证软件产品的质量,提高软件
6、产品的生产率。软件生产使用数据库、软件开发工具、开发环境等,软件开发技术有了很大的进步,开始采用工程化开发方法、标准和规范,以及面向对象技术等。4第四代技术阶段计算机系统发展的第四阶段不再是单台的计算机和计算机程序,而是面向计算机和软件的综合影响。复杂的操作系统控制的强大的桌面系统,以及连接局域网和因特网、高带宽的数字通信与先进的应用软件相互配合,产生了综合的效果。计算机体系结构从主机环境转变为分布式的客户机/服务器环境。软件开发的第四代技术有了新的发展:计算机辅助软件工程(Computer Aided Software Engineering,CASE)将工具和代码生成器结合起来,为许多软件
7、系统提供了可靠的解决方案;面向对象技术已在许多领域迅速取代了传统的软件开发方法;专家系统和人工智能软件有了实际应用;人工神经网络软件展示了信息处理的美好前景;并行计算技术、网络计算机、虚拟现实技术、多媒体技术和现代通信技术使人们开始采用和原来完全不同的方法进行工作。此外,光计算机、化学计算机、生物计算机和量子计算机等新一代计算机的研制发展,必将给软件工程技术带来一场革命。1.1.2 软件危机软件危机是指在计算机软件开发和维护时所遇到的一系列问题。软件危机主要包含两方面的问题:一是如何开发软件以满足社会对软件日益增长的需求,二是如何维护数量不断增长的已有软件。本节研究软件危机产生的原因、主要表现
8、形式以及解决的途径。1软件危机产生的原因软件危机产生的原因与软件的特点有关,也与软件开发的方式、方法、技术以及软件开发人员本身有关。(1)软件是计算机系统中的逻辑部件,软件产品往往规模庞大,给软件的开发和维护带来客观的困难。(2)软件一般要使用510年,在这段时间里,很可能出现开发时没有预料到的问题,如系统运行的硬件、软件环境发生变化,系统需求变化等,需要及时地维护软件,使软件可以继续使用。(3)软件开发技术落后,生产方式和开发工具落后。(4)软件开发人员忽视软件需求分析的重要性,轻视软件维护,也是造成软件危机的原因。2软件危机主要表现形式(1)软件发展速度跟不上硬件的发展和用户的需求。计算机
9、硬件成本逐年下降,软件应用日趋广泛,软件产品“供不应求”,与硬件成本相比,软件成本越来越高。(2)软件成本高,开发进度不能预先估计,用户不满意。由于软件应用范围越来越广,很多应用领域往往是软件开发者不熟悉的,加之开发人员与用户之间信息交流不够,导致软件产品不符合要求,不能如期完成。因而,软件开发成本和进度都与原先的估计相差太大,引起用户不满。(3)软件产品质量差,可靠性得不到保证。软件质量保证技术没有应用到软件开发的全过程,导致软件产品质量问题频频发生。(4)软件产品可维护性差。软件设计时不注意程序的可读性,不重视程序的可维护性,程序中存在的错误很难改正。因此软件需求发生变化时,维护相当困难。
10、(5)软件没有合适的文档资料。软件开发时文档资料不全或文档与软件不一致,会引起用户不满,同时也会给软件维护带来很大的困难。3解决软件危机的途径目前,计算机的体系结构在硬件上是冯诺依曼计算机。硬件的基本功能是做简单的运算与逻辑判断,主要还是适用于数值计算。随着计算机应用的日益广泛,许多企事业单位80%以上的计算机用于管理方面。管理方面大多为非数值计算问题,需要设计计算机软件来进行处理,因而可能会使软件变得复杂、庞大,从而导致软件危机的产生。要解决软件危机问题,需要采用以下措施:(1)使用好的软件开发技术和方法。(2)使用好的软件开发工具,提高软件生产率。(3)有良好的组织、严密的管理,各类人员相
11、互配合共同完成任务。为了解决软件危机,既要有技术措施(好的方法和工具),也要有组织管理措施。软件工程正是从技术和管理两方面来研究如何更好地开发和维护计算机软件的。1.2 软件工程学1.2.1 什么是软件软件是计算机程序及其有关的数据和文档的完整集合。其中,计算机程序是能够完成预定功能的可执行的指令序列;数据是程序能适当处理的信息,具有适当的数据结构;软件文档是开发、使用和维护程序所需要的图文资料。软件文档(software documentation)是以人们可读的形式出现的技术数据和信息。文档描述或规定软件的设计细节,说明软件具备的能力,或为使用该软件以便从软件系统得到所期望的结果提供操作指
12、令。B. Boehm指出:“软件是程序以及对其进行开发、使用和维护所需要的所有文档。”特别当软件成为商品时,文档是必不可少的;没有文档,仅有程序是不能称为软件产品的。1.2.2 什么是软件工程软件工程是计算机科学中的一个重要分支。按照中华人民共和国国家标准GB/T 114571995软件工程术语的定义:软件工程是软件开发、运行、维护和引退的系统方法。因而,软件工程是指导计算机软件开发和维护的工程学科。软件工程采用工程的概念、原理、技术和方法来开发与维护软件。软件工程的目标是实现软件的优质高产,软件工程的目的是在规定的时间、规定的开发费用内,开发出满足用户需求的、高质量的软件产品。1.2.3 软
13、件工程学的内容软件工程学的主要内容是软件开发技术和软件工程管理。软件开发技术包含软件工程方法学、软件工具和软件开发环境;软件工程管理学包含软件工程经济学和软件管理学。1软件工程方法学最初,程序设计是个人进行的,只注意如何节省存储单元、提高运算速度。以后,兴起了结构程序设计,人们采用结构化的方法来编写程序。结构程序设计只有顺序、条件分支和循环这三种基本结构。这样不仅改善了程序的清晰度,而且能提高软件的可靠性和软件生产率。后来,人们逐步认识到编写程序仅是软件开发过程中的一个环节,在典型的软件开发工作中,编写程序所需的工作量只占软件开发全部工作量的10%20%,软件开发工作应包括需求分析、软件设计、
14、编写程序等几个阶段,于是形成了“结构化分析”、“结构化设计”、面向数据结构的Jackson方法等传统软件开发方法。之后,20世纪80年代广泛应用了面向对象设计方法。软件工程方法学是编制软件的系统方法,它确定软件开发的各个阶段,规定每一阶段的活动、产品、验收的步骤和完成准则。软件工程方法学有三个要素,包括方法、工具和过程。 方法:完成软件开发任务的技术方法。 工具:为方法的运用提供自动或半自动的软件支撑环境。 过程:规定了完成任务的工作阶段、工作内容、产品、验收的步骤和完成准则。各种软件工程方法的适用范围不尽相同。目前使用得最广泛的软件工程方法学可以分为传统方法学和面向对象方法学两类。(1)传统
15、方法学传统方法学采用结构化技术,包括结构化分析、结构化设计和结构化实现,来完成软件开发任务。传统方法把软件开发工作划分成若干个阶段,每个阶段相对独立,也比较简单,顺序完成各阶段的任务;每个阶段的开始和结束都有严格的标准;每个阶段结束时要进行严格的技术审查和管理复审。用传统方法学开发软件,首先确定软件功能,再对功能进行分解,确定怎样开发软件,然后实现软件功能。传统方法提高了软件的可维护性,提高了软件开发的成功率,软件生产率也明显提高。传统方法学历史悠久,为广大软件开发人员所熟知,在开发某些软件时十分有效。传统方法可以再分为面向数据流设计方法和面向数据结构设计方法。(2)面向对象方法学面向对象方法
16、学是在传统方法学的基础上发展起来的,把对象作为数据和对数据的操作相结合的软件构件,用对象分解取代了传统方法的功能分解。该方法把所有对象都划分为类,把若干个相关的类组织成具有层次结构的系统,下层的子类继承上层的父类所具有的数据和操作,而对象与对象之间通过发送消息相互联系。面向对象方法学的要素是对象、类、继承以及消息通信。可以用下列方程来概括:面向对象=对象+类+继承+消息通信面向对象方法学是多次反复、迭代开发的过程。面向对象方法在分析和设计时使用相同的概念和相同的表示方法,两个阶段之间没有明显的界限。最终产品是由许多基本独立的对象组成的,这些对象具有简单、易于理解、易于开发、易于维护的特点,并且
17、具有可重用性。本书既介绍传统方法学,使读者掌握软件开发的基本步骤、方法和文档书写规范,也介绍面向对象方法学。在实际工作中,软件开发人员可以根据具体情况,选择不同的软件开发方法,也可将不同的方法结合起来,扬长避短,在提高软件开发效率的同时,提高软件的质量。2软件工具软件工具(software tools)是指为了支持计算机软件的开发和维护而研制的程序系统。使用软件工具的目的是提高软件设计的质量和软件生产效率,降低软件开发、维护的成本。软件工具用于软件开发的整个过程。例如,需求分析工具用类生成需求说明;设计阶段需要使用编辑程序、编译程序、连接程序,有的软件还能自动生成程序;在测试阶段可使用排错程序
18、、跟踪程序、静态分析工具和监视工具等;软件维护阶段用到版本管理、文档分析工具等;软件管理方面也有许多软件工具。软件开发人员在软件生产的各个阶段可根据不同的需要,选择合适的工具使用。目前,软件工具发展迅速,许多用于软件分析和设计的工具正在建立,其目标是实现软件生产各阶段的自动化。3软件开发环境软件开发方法和软件工具是软件开发的两大支柱,它们之间密切相关。软件开发方法提出了明确的工作步骤和标准的文档格式,这是设计软件工具的基础,而软件工具的实现又将促进软件开发方法的推广和发展。软件开发环境是方法和工具的结合。在1985年第八届国际软件工程会议上,关于“软件开发环境”的定义是:“软件开发环境是相关的
19、一组软件工具集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成”。软件开发环境的设计目标是提高软件生产率和改善软件质量。本书将在后续章节介绍一些常用的软件开发方法、软件工具及软件开发环境。计算机辅助软件工程(Computer Aided Software Engineering,CASE)是一组工具和方法的集合,可以辅助软件生命周期各阶段进行的软件开发活动。CASE是多年来在软件工程管理、软件开发方法、软件开发环境和软件工具等方面研究和发展的产物。CASE吸收了CAD(计算机辅助设计)、软件工程、操作系统、数据库、网络和许多其他计算机领域的原理和技术。因而,CASE领域是一个应用、
20、集成和综合的领域。其中,软件工具不是对任何软件开发方法的取代,而是对方法的辅助,它旨在提高软件开发的效率和软件产品的质量。4软件工程管理软件工程管理学包含软件工程经济学和软件管理学。本书只介绍有关软件工程管理的内容,即对软件开发各阶段的活动进行管理。软件工程管理的目的是按预定的时间和费用,成功地生产软件产品。软件工程管理的任务是有效地组织人员,按照适当的技术、方法,利用好的工具来完成预定的软件项目。软件工程管理的内容包括软件费用管理、人员组织、工程计划管理、软件配置管理等。(1)费用管理一般来讲,开发一个软件是一种投资,人们总是期望将来获得较大的经济效益。从经济角度分析,开发一个软件系统是否划
21、算,是软件使用单位的负责人决定是否开发这个项目的主要依据,要从软件开发成本、运行费用、经济效益等方面来估算整个系统的投资和回报情况。软件开发成本主要包含开发人员的工资报酬,以及开发阶段的各项支出;软件运行费用取决于系统的操作费用和维护费用,其中操作费用包括操作人员的人数、工作时间、消耗的各类物资等开支;系统的经济效益是指因使用新系统而节省的费用和增加的收入。由于运行费用和经济效益两者在软件的整个使用期内都存在,总的效益和软件使用时间的长短有关,所以,应合理地估算软件的寿命。一般在进行成本/效益分析时一律假设软件使用期为五年。(2)人员组织软件开发不是个体劳动,需要各类人员协同配合,共同完成工程
22、任务,因而应该有良好的组织、周密的管理。(3)工程计划管理软件工程计划是在软件开发的早期确定的。在计划实施过程中,如果有其他需要,应对工程进度做适当的调整。在软件开发结束后应写出软件开发总结,以便今后能制定出更切实际的软件开发计划。(4)软件配置管理软件工程各阶段所产生的全部文档和软件本身构成软件配置。每完成一个软件工程步骤,都涉及软件工程配置,必须使软件配置始终保持其精确性。软件配置管理就是在系统的整个开发、运行和维护时期控制配置的状态和变动,验证配置项的完整性和正确性。1.2.4 软件过程国际标准化组织(International Standardization Organization,
23、ISO)是世界性的标准化专门机构。ISO 9000把软件过程定义为:“把输入转化为输出的一组彼此相关的资源和 活动”。软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件开发过程(software development process)是把用户要求转化为软件需求,把软件需求转化为设计,用代码来实现设计并对代码进行测试,完成文档编制并确认软件可以投入运行使用的过程。软件过程定义了运用方法的顺序、应该交付的文档、开发软件的管理措施和各阶段任务完成的标志。软件过程是软件工程方法学的三个要素(方法、工具和过程)之一。软件过程必须科学、合理才能获得高质量的软件
24、产品。1.2.5 软件工程基本原理著名软件工程专家B. Boehm综合有关专家和学者的意见并总结了多年来开发软件的经验,于1983年在一篇论文中提出了软件工程的七条基本原理。(1)用分阶段的生存周期计划进行严格的管理。(2)坚持进行阶段评审。(3)实行严格的产品控制。(4)采用现代程序设计技术。(5)软件工程结果应能清楚地审查。(6)开发小组的人员应该少而精。(7)承认不断改进软件工程实践的必要性。B. Boehm指出,遵循前六条基本原理,能够实现软件的工程化生产;按照第七条原理,不仅要积极主动地采纳新的软件技术,而且要注意不断总结经验。在本课程的学习中,读者将体会到软件工程基本原理的含义和作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 随着 计算机系统 发展

链接地址:https://www.31ppt.com/p-1828989.html