1、2018/11/19,大学IT,0,大 学 I T,山东省教育厅组编,2018/11/19,大学IT,1,第3章 计算机软件,2018/11/19,大学IT,2,本章要点,3.1 软件概述 3.2 系统软件 3.3 应用软件 3.4 软件工程 3.5 软件的应用,2018/11/19,大学IT,3,3.1 软件概述,3.1.1 计算机软件 3.1.2 软件版权 3.1.3 软件与硬件 3.1.4 软件版本 3.1.5 软件兼容性 3.1.6 帮助,2018/11/19,大学IT,4,3.1.1 计算机软件,软件是计算机的重要组成部分。相对于硬件而言,软件是计算机的无形部分。所谓软件是指能指挥计
2、算机工作的程序与程序运行时所需要的数据,以及与这些程序和数据相关的文档说明。软件是用户与机器的接口,它使用户面对的不再是单纯的机器(裸机),而是一台抽象的逻辑机器(虚拟机),用户不必了解计算机的内部构造就可以有效地使用它。,2018/11/19,大学IT,5,程序,程序由计算机基本的操作指令组成,计算机所有的指令称为机器的指令系统。程序中的每一步都由程序员用计算机能够理解的计算机语言编写而成。,2018/11/19,大学IT,6,3.1.2 软件版权,软件就同书籍一样受版权保护。 版权是授予程序的作者或者版权所有者的独占权利的一种合法的保护形式,版权的所有者惟一享有拷贝、发布、出售、更改软件的
3、诸多权利。因而,虽然软件很容易被复制、传播,但有些复制会引起法律问题。 我国在2001年12月20日公布并于2002年1月1日起实施的计算机软件保护条例,对计算机程序、文档、软件开发者和软件著作权人都做了明确的定义。 有关软件版权的法律规定,各国不完全一样,因而在软件使用中涉及这些问题时,要注意法律细节。下图所示为AutoCAD的版权声明。,2018/11/19,大学IT,7,3.1.3 软件与硬件,软件这个词是相对硬件而言的。硬件是看得见摸得到的实体,如CPU、存储器、显示器、键盘等。在计算机工业的早期时代,通常把计算机系统除硬件以外的所有部分称为软件,即软件是指计算机程序以及程序所使用的数
4、据。软件通常分为系统软件与应用软件,系统软件是管理计算机的软件,而应用软件是为解决各种实际问题而设计的软件,由于人机的统一性,二者之间的界限也越来越模糊。从计算机的组成看软件与硬件的关系从计算机的发展过程看软件与硬件的关系,2018/11/19,大学IT,8,软件与硬件的关系(一),计算机的硬件只能按照人们给予它的一个个命令按部就班地运行。如果没有命令,它什么也不会做。这一组组计算机的命令就是计算机程序。确切地说,计算机程序是指示计算机如何去解决问题或是完成任务的一组详细的逐步执行的指令。计算机按照程序中的命令执行操作、解决问题、完成任务。在这一过程中,程序也会涉及数据,因此软件是指计算机完成
5、一个任务的、以电子格式存储的指令序列和相关的数据。如果用一个比喻来形容软件和硬件的关系的话,可以把硬件比喻为“舞台”,是系统的物质基础,把软件比喻为“剧目”,是系统的灵魂,二者缺一不可。硬件和软件相互依存才能构成一个可用的计算机系统。另外,理论上讲软件可以硬化,硬件功能可以通过软件实现。,2018/11/19,大学IT,9,计算机的发展过程更能充分说明计算机的硬件和软件之间的相互关系。硬件的高速发展为软件的发展提供了支持,如果没有硬件的高速运算能力和大容量的存储,软件将失去依托,无法发挥作用。软件的发展也对硬件提出了更多的要求,促使硬件的更新和发展。因此,软件在很大程度上决定着计算机应用功能的
6、发挥。,软件与硬件的关系(二),2018/11/19,大学IT,10,3.1.4 软件版本(一),软件的版本很多,在进行软件安装之前,首先要区别软件的不同版本: Alpha版(内部测试版):一般只在软件开发公司内部运行,不对外公开,主要用于开发者对软件产品进行测试,检查产品是否存在缺陷、错误,验证产品的功能与说明书、用户手册是否一致等。 Beta版(外部测试版):软件开发公司为对外宣传,一般将非正式产品免费发送给具有典型性的用户,让用户测试该软件的不足之处以及存在的问题,以便在正式发行前进一步改进和完善。Beta版软件一般可通过Internet免费下载,也可以向软件公司索取。 Demo版(演示
7、版):主要用于演示正式软件的部分功能,用户可以从中获知软件的基本操作,为正式产品的发售扩大影响。该版本也可以从Internet上免费下载。 Enhance版(增强版或加强版):如果是一般软件,通常称作“增强版”,会加入一些实用的新功能;如果是游戏,一般称作“加强版”,会加入一些新的游戏场景和游戏情节等。,2018/11/19,大学IT,11,Free版(自由版):一般是个人或自由软件联盟组织的成员制作的软件,希望免费给大家使用,没有版权,一般也可以通过Internet免费下载。 Full Version版(完全版):也就是正式版,是最终正式发售的版本。 Shareware版(共享版):有些公司
8、为了吸引客户,对于他们制作的某些软件,可以允许用户通过Internet免费下载。不过,此共享版软件多会带有一些使用时间或次数的限制。用户可利用在线注册或电子注册成为正式版用户。 Release版(发行版):非正式版,带有时间限制,也是为扩大影响所做的宣传策略之一。比如Windows Me的发行版就限制只能使用几个月,并可从Internet上免费下载。 Upgrade版(升级版):当你拥有某一软件旧的正式版本时,可以购买升级版,将你的软件升级为最新版。升级后的软件与正式版在功能上相同,但价格会低些,这主要是为了给原正式版用户提供优惠。,3.1.4 软件版本(二),2018/11/19,大学IT,
9、12,3.1.5 软件兼容性,软件兼容问题是指某一软件能否在你的计算机上正常使用。 两种软件兼容问题: 计算机系统不能满足软件运行需求 。如:有的软件是针对Windows系统开发的,而在Linux系统上可能无法运行;有的软件对机器的内存要求较高,当机器实际内存达不到要求时,软件或者运行慢或者根本就不能运行;有的软件需要有高质量的显卡才能生成高质量的图形,而实际使用的机器可能不满足要求。 软件安装时可能会发生版本冲突 。如微软的S 2002和Office 2003,如果在一台机器上同时安装微软的这两种软件,就会发生软件不能正常使用的情况。,2018/11/19,大学IT,13,3.1.6 帮助,
10、用户购买的软件一般都带有用户手册,用以介绍软件的使用和可能遇到问题的解决办法。通常这一部分内容被放在光盘或软盘内,也有的公司把这部分内容做成多媒体教程,供用户使用。但这些内容一般都比较简单,仅用于用户熟悉软件的基本功能。软件环境中一般带有“帮助”功能,单击“帮助”,用户可以获得软件功能的详细资料。,2018/11/19,大学IT,14,3.2 系统软件,3.2.1 操作系统 3.2.2 几种典型的计算机操作系统 3.2.3 语言处理程序 3.2.4 实用工具程序,2018/11/19,大学IT,15,3.2.1 操作系统,操作系统是最基本、最重要的系统软件,由一组控制计算 机系统并对计算机系统
11、进行管理的程序所组成,是用户与计 算机硬件系统的接口,并为用户和应用软件提供了访问与控制计算机硬件的桥梁。每台计算机都必备一个操作系统;没有操作系统,计算机就无法启动。 硬件、操作系统、应用软件之间的层次关系如下图所示。加载操作系统的过程 操作系统能实现三个最基本的功能 : 1. 资源管理 2. 用户界面 3. 运行应用软件,2018/11/19,大学IT,16,加载操作系统的过程,必须把操作系统安装到计算机后,计算机才可以执行任何读、写或计算操作。计算机通电后,操作系统从硬盘加载到内存。实际上,计算机的ROM中固化了一小部分操作系统指令,这部分指令称为基本输入/输出系统(BIOS),用于启动
12、操作系统的装载过程:先把一部分操作系统从磁盘中读入内存,然后再由读入的这部分操作系统装载所有的操作系统软件。装载操作系统的过程称为自举或引导。计算机系统完成引导后,只有一部分操作系统驻留计算机内存。常驻内存的这部分操作系统有多种不同的称呼,如内核、执行程序、监控程序或管理程序等,它主要包括经常使用的内部命令。没有常驻内存的操作系统软件主要是使用频率不高的命令,这些命令称为外部命令,外部命令在使用时才被装载到内存。,2018/11/19,大学IT,17,1. 资源管理,操作系统协助计算机管理所有的资源,包括键盘、鼠标、打印机、显示屏、存储设备等,它是计算机硬件和当前正在运行的应用软件之间的接口,
13、其目标是合理地调度硬件资源,以满足应用软件的需要。,2018/11/19,大学IT,18,2. 用户界面,用户使用的应用软件和硬件都需要通过用户界面来执行。 早期的计算机和现在某些系统采用的是命令行界面(CUI),在命令行界面下,需要准确输入要执行的命令。如MS-DOS 操作系统。 早期的计算机用户希望他们的计算机具有更友好的用户界面。为了满足这个需求,开发者们开发了带有简单菜单的操作系统,允许用户从菜单列表中选取命令,这些菜单最终发展成了图形化用户界面(GUI)。现在几乎所有的操作系统都提供了类似窗口的图标用户界面,窗口中的图标代表着比较常用的操作对象。,2018/11/19,大学IT,19
14、,3. 运行应用软件,操作系统可以运行和存储诸如文字处理和电子表格等应用软件。大多数操作系统支持多任务窗口,即可以同时运行多个应用软件。目前应用比较广泛的操作系统有DOS、Windows、OS/2、Mac OS、Unix和Linux等。,2018/11/19,大学IT,20,3.2.2 几种典型的计算机操作系统,1. DOS 2. Windows系列操作系统 3. Linux,2018/11/19,大学IT,21,1. DOS,DOS(Disk Operation System,磁盘操作系统,简称DOS),是早期微型计算机最常用的一种操作系统。 1980年,IBM推出的IBM PC新机型采用I
15、ntel 8086 CPU,具有160 KB的磁盘驱动器和常用输入输出设备。 1987年4月,微软推出的MS-DOS 3.3支持1.44 MB的磁盘驱动器和更大容量的硬盘,它的流行确立了MS-DOS在个人电脑操作系统的霸主地位。 MS-DOS的最后一个版本是6.22版,以后的DOS就和Windows相结合了。 在今天的大多数计算机上,DOS已被Windows操作系统所取代。,2018/11/19,大学IT,22,2. Windows系列操作系统(一),Windows是微软公司研制的具有视窗功能的操作系统,它提供了支持多道程序运行的窗口操作系统,是DOS的换代产品。自从1985年微软推出Wind
16、ows 1.0以来,Windows系统经历了二十多年的风风雨雨。从最初在DOS下运行的Windows 3.x,到现在风靡全球的Windows 9x、Windows 2000、Windows XP,Windows已成为新一代操作系统大亨。,2018/11/19,大学IT,23,最初的Windows 3.x系统只是DOS下的一种16位应用程序,但在Windows 3.1中出现了剪贴板、文件拖动等功能。当32位的Windows 95发布的时候,Windows 3.x中的某些功能被保留了下来。 Windows 98是Windows 9x的最后一个版本,在它以前有Windows 95和Windows 9
17、5 OEM(Original Equipment Manufacturer,原始设备生产商,又译贴牌生产)两个版本,Windows 95 OEM也就是常说的Windows 97。其实这三个版本并没有很大的区别,它们都是前一版本的改良产品。 Windows ME(Windows千禧版)具有Windows 9x和Windows 2000的特征,实际上由Windows 98改良得到,但在界面和某些技术方面模仿了Windows 2000。 Windows 2000即Windows NT 5.0,它是微软公司为解决Windows 9x系统的不稳定和Windows NT的多媒体支持不足而推出的一个版本。它
18、分为Windows 2000 Professional和Windows 2000 Server两种版本,前者面向普通用户,后者面向网络服务器,后者的硬件要求高于前者。 2001年10月25日,微软又推出了Windows系列的新一代产品:Windows XP。,2.Windows系列操作系统(二),2018/11/19,大学IT,24,3. Linux,Linux是与国际上流行的Unix同类的操作系统,但Unix是商品软件,而Linux则为GPL(General Public License,共用许可证,简称GPL)保护下开发的自由软件,用户可以免费获得其源代码。 Linux由芬兰赫尔辛基大学的
19、一个大学生Linus B. Torvolds在1991年首次编写,其标志性的图标是一个可爱的小企鹅。Linux是一种类Unix系统,Linus当时编写它的目的是为了替代一种名叫Minix的操作系统。Linux的应用也十分广泛。 如:PS2游戏机;电影泰坦尼克号的数字技术合成工作,2018/11/19,大学IT,25,3.2.3 语言处理程序,现有的程序设计语言一般分为机器语言、汇编语言和高级语言三类。机器语言是最低级且依赖硬件的计算机语言;汇编语言是用助记符和地址符号来表示指令的语言;高级语言是一类面向问题的程序设计语言,又称为算法语言。 语言处理程序是一类系统软件,用来把汇编语言或高级语言编
20、写的程序汇编、解释和编译成计算机能直接执行的目标程序。 语言处理程序主要有:汇编程序、解释程序和编译程序。,2018/11/19,大学IT,26,汇编程序用来处理汇编语言编写的程序,它把汇编语言源程序汇编成机器语言程序。 解释程序和编译程序都可以用来处理用高级语言编写的程序,但二者的不同之处在于:解释程序是一种边解释边执行的语言处理程序,因而利用解释程序来运行的程序效率比较低,而且不能生成可独立执行的可执行文件; 编译程序把程序翻译成机器指令序列,所以,它的目标程序可以脱离其语言环境而独立执行,因而效率较高。 不同的计算机语言要使用其相对应的语言处理程序。现在汇编语言主要使用宏汇编,而大多数高
21、级语言的处理程序是编译型的。,2018/11/19,大学IT,27,3.2.4 实用工具程序,实用工具是系统软件的一个子类,用来提供一些让计算机用户控制、分配和使用计算机资源的方法。 有些实用工具包含在操作系统内,完成一些诸如备份、磁盘格式化、磁盘分区和磁盘整理的工作; 有些实用工具独立于操作系统之外,如Norton实用工具,它能从硬盘中恢复数据并解决一些硬盘问题; 有些实用程序能帮助你诊断你的计算机系统中所存在的问题,如网卡安装正不正确等。下图所示为实用工具软件示例。,2018/11/19,大学IT,28,3.3 应用软件,应用软件是为解决各类实际问题而设计的软件,可以认为是最终用户所需要的
22、软件,如数据库应用软件、文字处理软件、计算软件和图形图像处理软件等。计算机软件的大多数都是应用软件。按照其服务对象,应用软件分为: 3.3.1 通用应用软件 3.3.2 专用应用软件 3.3.3 中间件,2018/11/19,大学IT,29,3.3.1 通用应用软件,文字处理、电子表格和数据库管理都属于通用应用软件,它们是为人们完成一些基本任务而设计的,因而又称为基础应用软件。这类软件一般都有一些共同的设计特征:如:窗口、菜单、工具栏、帮助等。 目前较为流行的通用应用软件主要有文字处理(Word Processor)、电子表格(Spread sheet)、图形软件、多媒体软件、 数据库管理(D
23、ata Base)、计算机辅助设计与辅助制造(CAD与CAM)、计算机通信与网络(Computer communication & NET work)等。,2018/11/19,大学IT,30,字处理软件,字处理软件是一类非常常用的软件,它能帮助人们利用计算机创建、编辑、存储和打印文件。 字处理软件也能让人们选择打印的字符类型、大小,还提供打印预览功能,让你在打印之前就看到打印的结果。 字处理软件提供的另一个有用的功能是检查拼写错误,能够自动提示一些错误,但这一功能对于汉字的输入力不从心。 常见的字处理软件有MS Word和WPS。,2018/11/19,大学IT,31,电子表格软件,电子表格
24、软件是为处理数字型数据设计的,在日常生活中有着广泛的应用。 电子表格以分类账目为设计模型,使用起来十分方便。一个电子表格由一系列行和列组成。在大多数电子表格里,列标号用字母表示,行标号用数字表示,行和列的交叉点称为单元格。我们可以方便地对建立起的电子表格的行和列进行添加、删除、修改和重组等。 MS Excel、Lotus 1-2-3就是比较著名的电子表格软件。,2018/11/19,大学IT,32,图形软件,图形软件帮助人们制作、编辑和操作图片。 有的图形软件帮助你编辑动画和视频数据,有的图形软件可以处理照片,更换颜色、结合不同的图片,也可用它来做贺卡、海报等;还有的图形软件用来生成三维图形,
25、让人们看到立体效果。 图形软件的运行一般都对计算机要求较高,若计算机的配置较低,图形软件运行速度会很慢,甚至无法运行。 图形软件种类较多,常见的如Corel Draw、Adobe Illustrator等。,2018/11/19,大学IT,33,多媒体软件,多媒体软件将文字、图像、动画、视频、音频和音效结合起来。 一个多媒体系统是将桌面计算机系统、多媒体相结合的软件、硬件的统一体。 多媒体软件为各种类型的计算机应用增添了更大的魅力,使创造性应用成为可能,并允许用户创造出近乎专业的互动形式的产品。 多媒体软件也帮助公司制作多媒体促销工具或交互式培训软件。 常用的多媒体软件有Quick Time和
26、MS Video for Windows等。,2018/11/19,大学IT,34,数据库管理系统,数据库管理系统对于商务的成功与否是最具决定性的。在信息爆炸的今天,能否有效地维护海量数据,是非常重要的。 数据库管理系统使得人们能够创建和维护庞大的数据集合。 数据库管理软件一般在商业、政府和教育机构经常使用。 常见的数据库管理系统有Access、Oracle和MS SQL Server等。,2018/11/19,大学IT,35,3.3.2 专用应用软件,专用应用软件是专门为少数用户设计的、目标单一的应用软件,如用于某实验仪器的数据采集与数据处理的专用软件、某机床设备的自动控制软件、为专门学习某
27、门课程而设计的辅助教学软件等。这类软件一般用户平时接触很少。,2018/11/19,大学IT,36,3.3.3 中间件,现在还有一种称为“中间件”的热门软件,从技术上讲,介于系统软件和应用软件之间。它是基于计算机硬件和操作系统之上,支持应用软件开发和运行的系统软件。它能够使应用软件相对独立于计算机硬件和操作系统平台,为当今的大型分布式应用搭起了一个标准的平台,把大型企业分散的系统和技术组合在一起,实现大型企业应用软件系统的集成。中间件具有标准的程序接口和协议,可以实现不同硬件和操作系统平台上的数据共享和应用操作。在具体实现上,中间件是一个用API定义的分布式软件管理框架,具有强大的通信能力和良
28、好的可扩展性。,2018/11/19,大学IT,37,3.4 软件工程,3.4.1 软件危机 3.4.2 软件危机产生的原因 3.4.3 软件工程 3.4.4 软件开发过程模型 3.4.5 软件体系结构,2018/11/19,大学IT,38,3.4.1 软件危机,在计算机系统发展的早期,软件的规模往往比较小,软件的编写者和使用者往往是同一组人。这时软件编写的速度和质量主要看编写者个人的技巧。在20世纪6070年代,随着计算机的普及,软件的数量和规模急剧扩大,而原有的软件生产方式却没有太大变化。人们在软件编写中常常发现:对软件开发成本和进度的估计很不准确;用户对“已完成”的软件系统不满意的现象很
29、多;软件产品的质量往往靠不住;软件无法维护;软件没有恰当的文档资料;软件成本在整个计算机系统中的比例逐年上升。这种由于软件生产的复杂性和高成本,使得大型软件的生产出现了很大困难的现象称为软件危机。软件危机的主要表现有: (1) 软件需求增长得不到满足; (2) 软件生产成本高,价格昂贵; (3) 软件生产进度无法控制; (4) 软件需求定义不准确,易偏离用户需求; (5) 软件质量不易保证; (6) 软件可维护性差。,2018/11/19,大学IT,39,3.4.2 软件危机产生的原因,导致软件开发过程中出现问题的原因有很多,主要与软件的特点以及软件的开发和维护方法有关,大体有: 程序的复杂程
30、度急剧增加 如何保证庞大的开发团体协同开发复杂程度急剧增加的软件 当程序员对用户的需求还没有完整的认识时就开始着手编写程序 人们最初对软件完成后维护工作的重要性认识不足 人们的理论和实践总体还是不足,2018/11/19,大学IT,40,3.4.3 软件工程,面对软件危机的出现,1968年和1969年,北大西洋公约组织成员国软件工作者两次召开会议(NATO会议),讨论摆脱软件危机的办法,并提出软件工程的概念。 人们发现,将传统工程的原理、技术和方法应用于软件开发可以起到使软件生产规范化的作用,有利于组织软件生产,提高开发质量,降低成本和控制进度。因此软件工程的比较准确的定义为“以工程化的方式组
31、织软件的开发”。 “软件工程学” 所包含的内容,2018/11/19,大学IT,41,“软件工程学”,(1) 软件开发技术软件开发方法学软件工具软件工程环境 (2) 软件工程管理软件管理软件工程经济学,2018/11/19,大学IT,42,3.4.4 软件开发过程模型,软件开发过程包括软件开发策略和开发流程。1. 线性顺序模型2. 原型模型3.其他两种软件开发模型,2018/11/19,大学IT,43,1. 线性顺序模型,线性顺序模型,也被称为“传统生命周期模型”或“瀑布模型”。 一个软件从定义、开发、使用和维护,到最终被放弃,要经历一个漫长的时期,通常把这个时期称为生存期。软件工程采用的生存
32、期方法就是从时间角度把软件开发和维护的问题分解,把软件的漫长生存期分解为一个个不同阶段,对不同阶段的任务,采用不同方法加以解决完成。 采用软件生存期方法开发软件,使每个阶段任务独立,使问题简单化,便于开发人员协调,降低了整个软件的开发难度。在软件生存期的每个阶段都采用良好的工程管理方法和技术,在每个阶段合格后才开始下一阶段。这使软件开发更有条理,便于保证软件的产品质量,也提高了软件的可维护性,最终也提高了开发的生产效率。 软件生存期的八个阶段一般可划为:问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试和软件维护,如下图所示。,2018/11/19,大学IT,44,软
33、件生存期的八个阶段,(1)问题定义:这个阶段主要是弄清楚开发软件要解决什么问题,即开发软件的目的、性质和工程规模。这需要进行调研和商谈。 (2)可行性研究:这个阶段主要研究软件开发的可行性问题。如:没无解决方法、解决方案 、没无开发价值、是否进行下一个开发环节等。 (3)需求分析:这个阶段主要考虑这个软件系统应该具备哪些功能。 (4)总体设计:在此阶段,可能有不止一种设计方案,系统设计者应从经济可行性、技术可行性及运作可行性三方面来选择一种最佳的解决方案。 (5)详细设计:在确定总体解决方案后,我们就该着手解决具体的问题,编写出软件的详细规格说明。 (6)编码和单元测试:这个阶段就是用计算机语
34、言编写程序阶段,把上面的工作用代码表现出来,并测试是各个功能模块的效果。 (7)综合测试:这个阶段是从总体上测试软件。 (8)软件维护:这个阶段的主要任务是维护软件,使它尽可能地正确工作,以满足用户的需求。,2018/11/19,大学IT,45,2. 原型模型,使用原型模型的原因 原型模型的开发过程 原型模型的缺点,2018/11/19,大学IT,46,使用原型模型的原因,以线性顺序模型开发软件一般需要较长的周期,但通常软件开发要求时间紧迫;有时用户给出了软件的一般性目标,但不明确详细的输入、输出等需求;或者软件工程师无法确定有效的算法、操作系统的适应性或人机界面的安排。在这些情况下,软件的开
35、发选择原型模型可能是有效的选择。,2018/11/19,大学IT,47,原型模型的开发过程,原型模型的开发过程为:首先听取用户意见和用户一起确定软件的目标,然后快速设计建造一个软件的模型或原型,以用户看得见的部分,如输入、输出、交互界面为主。建造后的软件原型交由用户测试并听取用户意见,明确先前不明确的东西,在原型的基础上,再次开发软件,然后再把它交给用户测试评估。如此反复,直到满足用户要求。原型模型开发过程如下图所示。实质上,这种方法是在许多目标不明确的条件下,我们首先建立一个能工作的模型,经过对模型的实际操作确定需要什么样的软件;然后,我们就能抛弃原来的模型或者部分抛弃,建造满意的软件。这个
36、过程可能一次成功,也可能反复几次。,2018/11/19,大学IT,48,原型模型的缺点,原型模型的开发周期比较短,但可能带来很多问题,如效率低、速度慢、存在漏洞、无法控制费用等,而且在原型基础上进行开发可能导致许多不理想的选择。因而,原型经常被抛弃,重新建造实际的最终系统。,2018/11/19,大学IT,49,3.其他两种软件开发模型,(1)RAD模型 (2)增量模型,2018/11/19,大学IT,50,(1)RAD模型,RAD(Rapid Applications Development,快速应用开发,简称RAD)是线性顺序模型的变种,它强调极短的开发周期,其开发速度是通过使用基于构件
37、的建造方法获得的。RAD快速应用开发模型如图所示。特点及缺点,2018/11/19,大学IT,51,特点及缺点,特点: 这种开发方式是在几个前提下工作的:首先,要求开发人员很好地理解用户对软件的需求,但用户的需求常常是不充分的;其次,软件必须能够划分成构件,但并不是所有软件都能满足这个要求;最后,每个构件要一个开发小组完成开发,这样整个系统的开发就要求很多的人手可用,这并不是所有公司都能具备的条件。 缺点: RAD开发方式尽管可能花费较高的费用,但时间周期比较短,且软件的开发质量也会比前两种方式更好;RAD开发要求也比较严格,需要强大的开发软件支持,灵活、专业的团队协作和高素质的专业人员。因而
38、并不是任何软件开发都适合使用这种方式。,2018/11/19,大学IT,52,(2)增量模型,增量模型融合了线性顺序模型的基本成分和原型模型的迭代特性。如图所示,增量模型采用随日程进展而交错的线性序列,每一个序列产生一个可发布的软件增量版本。 增量模型像原型模型一样,具有迭代的特征。与原型模型相同,增量模型的早期版本是不完善的,但增量模型与原型模型不同的是,增量模型的每一个版本(增量)都是提供给用户可用的产品,每一个版本都在增加着前一个版本的功能。 当开发人员不能在项目设定的期限内实现软件的完全版本时,增量开发是很有用的。这时软件开发者可以先指派少量人员开发核心版本,然后再开发增量版本。这样可
39、以有计划地管理技术风险,并避免过分延长系统的面世时间。,2018/11/19,大学IT,53,3.4.5 软件体系结构,1. 软件体系结构的产生背景 2. 软件体系结构 3. 软件体系结构类型简介 4. 软件体系结构的结合,2018/11/19,大学IT,54,1. 软件体系结构的产生背景,在计算机系统发展初期,软件多由个人或小组编写,并供自己使用。软件编写者把自己的思想编成代码,这个过程充满了不为人所知的个人智慧,带有很重的个人英雄主义色彩。随着计算机的普及,软件变得越来越大,越来越复杂。统计资料表明,个人可以理解和控制的代码,最多为一万行左右,但现代的软件一般有几百万行或更多代码行。这个问
40、题不能通过简单增加人手来解决,因为实在太复杂了。这迫使人们把软件系统划分成一个个模块或组件或构件,用代码编出模块,而后用模块组装成大的模块,最后构成整个软件系统,其中每个模块都在可以控制的范围内。,2018/11/19,大学IT,55,2. 软件体系结构,抽象地讲,软件的体系结构包括用于组建系统的模块描述、模块之间的相互关系和模块的组织模式。总的来说,一个系统可以用模块集合和相互作用来定义。 这把软件分成两个层次:系统和模块。模块用来组建成系统,模块本身有可能也是由小的模块组成。 这也把软件编写分成了两个部分:系统结构层设计和模块编写。 后者涉及选择合适的计算机语言、恰当的数据结构和巧妙的算法
41、。数据结构是数据在计算机中的表现方式,常见的有链表、数组、结构等。算法是我们解决问题的方法。 相比模块编写,系统结构层设计更为重要。同样,软件的整体结构设计比算法和数据结构的选择更能影响系统的性能。 如何划分和组织每个模块从而使软件整体性能更加优良,是软件体系结构考虑的主要问题。当然软件体系结构还涉及每个模块的组织、全局的控制结构、模块的功能的分配、模块的大小、模块的相互替代、模块的同步、模块间的数据接口和通信协议等。,2018/11/19,大学IT,56,3. 软件体系结构类型简介,常见的软件体系结构有很多,如管道过滤器结构、层次结构和客户服务器结构等。下面介绍其中的五种结构: 管道过滤器结
42、构 数据抽象和面向对象结构 面向事件结构 层次结构 其他体系结构,2018/11/19,大学IT,57,(1)管道过滤器结构,在这种结构中,各模块都有数据的输入和输出。输入端从数据流中读取数据,从输出端输出数据,数据在模块中被计算处理,因而在这种结构中的模块被形象地称为过滤器,过滤器之间的部分被称为管道,管道中流的是数据,一个数据流被过滤器处理输出后流经管道成为下一级过滤器的输入,如下图所示。在管道过滤器结构中,过滤器之间相互独立,不能共享状态变量。过滤器只需做好自己的工作,无需知道数据从何而来又到哪里去,也不必知道其他的过滤器存在与否。管道是数据流动的通道,当然也不是什么数据都行,管道对数据
43、类型都有特定要求,各段管道要求的数据类型都不尽相同。 管道过滤器结构的优、缺点及采用此结构的代表软件,2018/11/19,大学IT,58,优点: 首先它允许设计人员通过简单的过滤器组合来理解整个系统; 其次它支持软件重用,只要过滤器的输入输出数据符合管道的要求就可以替换相应的模块; 第三,系统易于维护,新的功能更强的过滤器很容易加到系统中,这种系统也很容易开发。 缺点: 这种结构不利于对输入的要求做快速反应,不便于人机交互,也阻碍了多个不同但相关的数据流之间的通信。由于每个管道要求的数据类型不同,过滤器的输入输出的数据类型必须经过转换才能满足管道的要求,这种数据类型转换增加了工作量。 代表软
44、件: 采用管道过滤器结构最有名的软件是Unix系统的内核;另一个众所周知的例子是计算机语言编译器。,2018/11/19,大学IT,59,(2)数据抽象和面向对象结构,在使用某种计算机语言时,该语言都会给使用者一些固定的数据类型,而人们在考虑问题时,会自然而然地把事物和事物的属性以及事物与外界的联系放在一起。如果在计算机语言中,人们可以定义自己的数据类型,把属性和它可能与外界的作用结合在一起,这更加符合人们的思考习惯。在新的计算机语言中,发展了类似的抽象数据类型,它封装了数据和函数,这种抽象数据类型,大部分系统中叫做类(Class),类的实体叫对象或实例。 采用这种抽象数据类型概念的语言就叫面
45、向对象语言。 用这种面向对象语言开发系统有很多优点,由于对象隐藏了数据和操作(函数或过程),具体的这个对象内部有什么数据,函数或过程如何编写,外部并不知道,因而我们能够更改对象的内部,而不影响对象和其他对象的关系。面向对象也有利于设计者把整个系统分成一个个相互作用的对象,使之便于设计和理解。如下图所示为数据抽象和面向对象结构的图例。 数据抽象和面向对象结构的不足,2018/11/19,大学IT,60,数据抽象和面向对象结构的不足是: 一个对象如果要和另一个对象进行交互,它必须切实了解那个对象。这和管道过滤器结构不同,过滤器根本不用考虑其他过滤器;另外,对象之间的相互作用复杂,有可能产生意想不到
46、的副作用:例如A、B、C三个对象,A和C都调用B,在C调用B后,更改了B的内部属性(数据),这看起来与A无关,但在A调用B时会发生什么,可能就与预想的不同,这种作用是难以估计的。,2018/11/19,大学IT,61,(3)面向事件结构,面向事件结构与面向对象结构类似,也有类、对象、对象间的相互作用,差别在于对象间的相互作用不通过显式函数调用,而是采用了一种越来越被关注的技术面向事件技术(也有人叫隐式调用、选择广播)。在这种体系中,一个类公布或广播一个或多个事件,其他的类把自己的过程登记到这个事件上,当前一个类宣布的事件发生时,系统自动调用所有登记到这个事件上的过程。事件发生时,拥有这个事件的
47、类的对象没有调用任何过程,而是由系统完成,因而叫做隐式调用。 面向事件结构的一个重要特征是:没有人知道事件什么时候发生,也不知道事件发生的顺序。当某一事件发生时,登记到这个事件的过程都将被系统调用,但调用顺序也没人清楚。 面向事件结构的优、缺点及采用此种结构的代表软件,2018/11/19,大学IT,62,优点: 面向事件结构的最大优点是强有力地支持模块重用,一个模块可以简单地加入到系统中,只需把它登记到系统的事件上;另一个优点是便于系统更新和功能增强,一个模块很容易被另一个更新的模块替代,而不影响其它模块。 缺点: 面向事件结构的主要缺陷是:模块放弃了对事件处理过程的控制,把这交给了系统处理
48、,但当模块宣布事件发生时,无法确定哪一个模块响应这一事件,即便模块了解哪些模块登记到这一事件上,也无法确定它们的响应顺序。另外的问题是模块的数据交换。一些数据能够通过事件传递,但大多数情况下,系统需经过共享的数据存储结构来完成数据交互,这时资源管理就成了关键。最后,如何判定系统的正确性也成为问题。 代表软件: Windows操作系统和一些编程环境的工具。,2018/11/19,大学IT,63,(4)层次结构,层次结构的模型及特征: 采用层次结构的软件体系结构如图所示。这种体系结构分层组织,整个系统分成若干层,每一层都提供服务给上一层,并作为下一层的客户。理论上,A层只能和B层相互通信,其他层都
49、看不见它,内层的模块成了一个虚拟的机器。实际的系统并不严格遵守这种层次关系,有时也允许A层和C层相互作用。 层次结构有几个引人注目的特性:首先,它支持一系列功能逐渐增强的抽象层,这允许设计者把复杂的问题分解成一系列逐渐完成的步骤;其次,这种结构支持功能扩展,就像管道过滤器结构一样;第三,支持重用,同一层的功能可以有不同的实现方式,只要支持相同的接口即可。 层次结构的缺点及采用此种结构的代表软件,2018/11/19,大学IT,64,缺点: 层次结构的缺点是:并不是所有的系统都可以按层次的方式来构造。即便一个系统在逻辑上可以划分成不同的层次,考虑到系统的效率问题,受具体实现方式限制,也不一定能采用层次结构。另外,抽象层次的划分很难确定,有时某一层必须跨几层,与其他层交互,这导致层次结构优点的丧失。 代表软件: 通信协议,