欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    随着计算机系统的发展.docx

    • 资源ID:1828989       资源大小:174.98KB        全文页数:18页
    • 资源格式: DOCX        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    随着计算机系统的发展.docx

    17概 述随着计算机系统的发展,计算机的应用日益广泛,计算机软件的开发、维护工作显得越来越重要。如何才能开发出用户满意的软件;如何以较低的成本开发出高质量的软件;怎样使所开发的软件在运行过程中容易维护,以延长软件的使用期限;如何提高软件开发、维护过程中的自动化程度,提高软件开发效率;软件工程如何管理等。这些就是软件工程研究的问题。软件工程是指导计算机软件开发和维护的学科。软件工程的目的是在规定的时间、规定的开发费用内,开发出满足用户需要的、质量合格的软件产品。本章介绍软件工程的发展史,软件危机是如何形成和消除的,软件工程的基本概念、内容及基本原理等。本章重点:· 软件工程;· 软件生命周期。1.1 软件工程的产生计算机系统的发展、软件应用的日益广泛和软件危机的困扰促使了软件工程的产生和发展。1.1.1 软件工程发展史自从20世纪40年代电子计算机问世以来,计算机软件随着计算机硬件的发展而逐 步发展起来,软件和硬件一起构成计算机系统。一开始只有程序的概念,后来才出现软件的概念。当软件需求量大大增加后,人们把软件视为产品,确定了软件生产的各个阶段必须完成的有关计算机程序的功能、设计和使用的文字或图形资料,这些资料称为“文档”。软件是指计算机程序及其有关的数据和文档。随着计算机系统的发展,软件的生产大体经历了程序设计、软件、软件工程、第四代技术等阶段。在此过程中,软件危机产生并越来越严重,因而逐步形成了研究如何消除软件危机,如何合理地开发和维护软件的学科软件工程学。1程序设计阶段20世纪40年代中期到20世纪60年代中期,电子计算机价格昂贵、运算速度低、存储量小。计算机程序是描述计算任务的处理对象和处理规则。早期的程序规模小,程序往往是个人设计、自己使用。程序设计通常要注意如何节省存储单元、提高运算速度,除了程序清单之外,没有其他任何文档资料。2“软件=程序+文档”阶段20世纪60年代中期到20世纪70年代中期,集成电路计算机的运算速度和内存容量大大提高。随着程序的增加,人们把程序区分为系统程序和应用程序,并把它们称为软件。计算机软件的应用范围更加广泛,当软件需求量大大增加后,许多用户去“软件作坊”购买软件。软件产品交付给用户使用之后,为了纠正错误或适应用户需求的改变对软件进行的修改,称为软件维护(software maintenance)。此时,由于在软件开发过程中很少考虑到它们的维护问题,软件维护的费用以惊人的速度增长,并且不能及时满足用户的需求,质量也得不到保证。所谓的“软件危机”由此开始。人们逐渐重视软件的“可维护性”问题,软件开发开始采用结构化程序设计技术,并规定软件开发时必须书写各种规格书、说明书、用户手册等文档。1968年北大西洋公约组织(NATO)的计算机科学家在联邦德国召开国际会议,讨论软件危机问题,正式提出了“软件工程”(software engineering)的术语。从此一门新的工程学科诞生了。3软件工程阶段20世纪70年代中期到20世纪90年代,大规模集成电路计算机的功能和质量不断提高,个人计算机已经成为大众化商品,计算机应用不断地扩大。软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的速度,软件产品供不应求,软件危机日益严重。为了维护软件需要耗费大量的成本。美国当时的统计数据表明,对计算机软件的投资占计算机软件、硬件总投资的70%,到1985年时软件成本大约占总成本的90%。为了对付不断增长的软件危机,软件工程学把软件作为一种产品进行批量生产,运用工程学的基本原理和方法来组织和管理软件生产,以保证软件产品的质量,提高软件产品的生产率。软件生产使用数据库、软件开发工具、开发环境等,软件开发技术有了很大的进步,开始采用工程化开发方法、标准和规范,以及面向对象技术等。4第四代技术阶段计算机系统发展的第四阶段不再是单台的计算机和计算机程序,而是面向计算机和软件的综合影响。复杂的操作系统控制的强大的桌面系统,以及连接局域网和因特网、高带宽的数字通信与先进的应用软件相互配合,产生了综合的效果。计算机体系结构从主机环境转变为分布式的客户机/服务器环境。软件开发的第四代技术有了新的发展:计算机辅助软件工程(Computer Aided Software Engineering,CASE)将工具和代码生成器结合起来,为许多软件系统提供了可靠的解决方案;面向对象技术已在许多领域迅速取代了传统的软件开发方法;专家系统和人工智能软件有了实际应用;人工神经网络软件展示了信息处理的美好前景;并行计算技术、网络计算机、虚拟现实技术、多媒体技术和现代通信技术使人们开始采用和原来完全不同的方法进行工作。此外,光计算机、化学计算机、生物计算机和量子计算机等新一代计算机的研制发展,必将给软件工程技术带来一场革命。1.1.2 软件危机软件危机是指在计算机软件开发和维护时所遇到的一系列问题。软件危机主要包含两方面的问题:一是如何开发软件以满足社会对软件日益增长的需求,二是如何维护数量不断增长的已有软件。本节研究软件危机产生的原因、主要表现形式以及解决的途径。1软件危机产生的原因软件危机产生的原因与软件的特点有关,也与软件开发的方式、方法、技术以及软件开发人员本身有关。(1)软件是计算机系统中的逻辑部件,软件产品往往规模庞大,给软件的开发和维护带来客观的困难。(2)软件一般要使用510年,在这段时间里,很可能出现开发时没有预料到的问题,如系统运行的硬件、软件环境发生变化,系统需求变化等,需要及时地维护软件,使软件可以继续使用。(3)软件开发技术落后,生产方式和开发工具落后。(4)软件开发人员忽视软件需求分析的重要性,轻视软件维护,也是造成软件危机的原因。2软件危机主要表现形式(1)软件发展速度跟不上硬件的发展和用户的需求。计算机硬件成本逐年下降,软件应用日趋广泛,软件产品“供不应求”,与硬件成本相比,软件成本越来越高。(2)软件成本高,开发进度不能预先估计,用户不满意。由于软件应用范围越来越广,很多应用领域往往是软件开发者不熟悉的,加之开发人员与用户之间信息交流不够,导致软件产品不符合要求,不能如期完成。因而,软件开发成本和进度都与原先的估计相差太大,引起用户不满。(3)软件产品质量差,可靠性得不到保证。软件质量保证技术没有应用到软件开发的全过程,导致软件产品质量问题频频发生。(4)软件产品可维护性差。软件设计时不注意程序的可读性,不重视程序的可维护性,程序中存在的错误很难改正。因此软件需求发生变化时,维护相当困难。(5)软件没有合适的文档资料。软件开发时文档资料不全或文档与软件不一致,会引起用户不满,同时也会给软件维护带来很大的困难。3解决软件危机的途径目前,计算机的体系结构在硬件上是冯·诺依曼计算机。硬件的基本功能是做简单的运算与逻辑判断,主要还是适用于数值计算。随着计算机应用的日益广泛,许多企事业单位80%以上的计算机用于管理方面。管理方面大多为非数值计算问题,需要设计计算机软件来进行处理,因而可能会使软件变得复杂、庞大,从而导致软件危机的产生。要解决软件危机问题,需要采用以下措施:(1)使用好的软件开发技术和方法。(2)使用好的软件开发工具,提高软件生产率。(3)有良好的组织、严密的管理,各类人员相互配合共同完成任务。为了解决软件危机,既要有技术措施(好的方法和工具),也要有组织管理措施。软件工程正是从技术和管理两方面来研究如何更好地开发和维护计算机软件的。1.2 软件工程学1.2.1 什么是软件软件是计算机程序及其有关的数据和文档的完整集合。其中,计算机程序是能够完成预定功能的可执行的指令序列;数据是程序能适当处理的信息,具有适当的数据结构;软件文档是开发、使用和维护程序所需要的图文资料。软件文档(software documentation)是以人们可读的形式出现的技术数据和信息。文档描述或规定软件的设计细节,说明软件具备的能力,或为使用该软件以便从软件系统得到所期望的结果提供操作指令。B. Boehm指出:“软件是程序以及对其进行开发、使用和维护所需要的所有文档。”特别当软件成为商品时,文档是必不可少的;没有文档,仅有程序是不能称为软件产品的。1.2.2 什么是软件工程软件工程是计算机科学中的一个重要分支。按照中华人民共和国国家标准GB/T 114571995软件工程术语的定义:软件工程是软件开发、运行、维护和引退的系统方法。因而,软件工程是指导计算机软件开发和维护的工程学科。软件工程采用工程的概念、原理、技术和方法来开发与维护软件。软件工程的目标是实现软件的优质高产,软件工程的目的是在规定的时间、规定的开发费用内,开发出满足用户需求的、高质量的软件产品。1.2.3 软件工程学的内容软件工程学的主要内容是软件开发技术和软件工程管理。软件开发技术包含软件工程方法学、软件工具和软件开发环境;软件工程管理学包含软件工程经济学和软件管理学。1软件工程方法学最初,程序设计是个人进行的,只注意如何节省存储单元、提高运算速度。以后,兴起了结构程序设计,人们采用结构化的方法来编写程序。结构程序设计只有顺序、条件分支和循环这三种基本结构。这样不仅改善了程序的清晰度,而且能提高软件的可靠性和软件生产率。后来,人们逐步认识到编写程序仅是软件开发过程中的一个环节,在典型的软件开发工作中,编写程序所需的工作量只占软件开发全部工作量的10%20%,软件开发工作应包括需求分析、软件设计、编写程序等几个阶段,于是形成了“结构化分析”、“结构化设计”、面向数据结构的Jackson方法等传统软件开发方法。之后,20世纪80年代广泛应用了面向对象设计方法。软件工程方法学是编制软件的系统方法,它确定软件开发的各个阶段,规定每一阶段的活动、产品、验收的步骤和完成准则。软件工程方法学有三个要素,包括方法、工具和过程。· 方法:完成软件开发任务的技术方法。· 工具:为方法的运用提供自动或半自动的软件支撑环境。· 过程:规定了完成任务的工作阶段、工作内容、产品、验收的步骤和完成准则。各种软件工程方法的适用范围不尽相同。目前使用得最广泛的软件工程方法学可以分为传统方法学和面向对象方法学两类。(1)传统方法学传统方法学采用结构化技术,包括结构化分析、结构化设计和结构化实现,来完成软件开发任务。传统方法把软件开发工作划分成若干个阶段,每个阶段相对独立,也比较简单,顺序完成各阶段的任务;每个阶段的开始和结束都有严格的标准;每个阶段结束时要进行严格的技术审查和管理复审。用传统方法学开发软件,首先确定软件功能,再对功能进行分解,确定怎样开发软件,然后实现软件功能。传统方法提高了软件的可维护性,提高了软件开发的成功率,软件生产率也明显提高。传统方法学历史悠久,为广大软件开发人员所熟知,在开发某些软件时十分有效。传统方法可以再分为面向数据流设计方法和面向数据结构设计方法。(2)面向对象方法学面向对象方法学是在传统方法学的基础上发展起来的,把对象作为数据和对数据的操作相结合的软件构件,用对象分解取代了传统方法的功能分解。该方法把所有对象都划分为类,把若干个相关的类组织成具有层次结构的系统,下层的子类继承上层的父类所具有的数据和操作,而对象与对象之间通过发送消息相互联系。面向对象方法学的要素是对象、类、继承以及消息通信。可以用下列方程来概括:面向对象=对象+类+继承+消息通信面向对象方法学是多次反复、迭代开发的过程。面向对象方法在分析和设计时使用相同的概念和相同的表示方法,两个阶段之间没有明显的界限。最终产品是由许多基本独立的对象组成的,这些对象具有简单、易于理解、易于开发、易于维护的特点,并且具有可重用性。本书既介绍传统方法学,使读者掌握软件开发的基本步骤、方法和文档书写规范,也介绍面向对象方法学。在实际工作中,软件开发人员可以根据具体情况,选择不同的软件开发方法,也可将不同的方法结合起来,扬长避短,在提高软件开发效率的同时,提高软件的质量。2软件工具软件工具(software tools)是指为了支持计算机软件的开发和维护而研制的程序系统。使用软件工具的目的是提高软件设计的质量和软件生产效率,降低软件开发、维护的成本。软件工具用于软件开发的整个过程。例如,需求分析工具用类生成需求说明;设计阶段需要使用编辑程序、编译程序、连接程序,有的软件还能自动生成程序;在测试阶段可使用排错程序、跟踪程序、静态分析工具和监视工具等;软件维护阶段用到版本管理、文档分析工具等;软件管理方面也有许多软件工具。软件开发人员在软件生产的各个阶段可根据不同的需要,选择合适的工具使用。目前,软件工具发展迅速,许多用于软件分析和设计的工具正在建立,其目标是实现软件生产各阶段的自动化。3软件开发环境软件开发方法和软件工具是软件开发的两大支柱,它们之间密切相关。软件开发方法提出了明确的工作步骤和标准的文档格式,这是设计软件工具的基础,而软件工具的实现又将促进软件开发方法的推广和发展。软件开发环境是方法和工具的结合。在1985年第八届国际软件工程会议上,关于“软件开发环境”的定义是:“软件开发环境是相关的一组软件工具集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成”。软件开发环境的设计目标是提高软件生产率和改善软件质量。本书将在后续章节介绍一些常用的软件开发方法、软件工具及软件开发环境。计算机辅助软件工程(Computer Aided Software Engineering,CASE)是一组工具和方法的集合,可以辅助软件生命周期各阶段进行的软件开发活动。CASE是多年来在软件工程管理、软件开发方法、软件开发环境和软件工具等方面研究和发展的产物。CASE吸收了CAD(计算机辅助设计)、软件工程、操作系统、数据库、网络和许多其他计算机领域的原理和技术。因而,CASE领域是一个应用、集成和综合的领域。其中,软件工具不是对任何软件开发方法的取代,而是对方法的辅助,它旨在提高软件开发的效率和软件产品的质量。4软件工程管理软件工程管理学包含软件工程经济学和软件管理学。本书只介绍有关软件工程管理的内容,即对软件开发各阶段的活动进行管理。软件工程管理的目的是按预定的时间和费用,成功地生产软件产品。软件工程管理的任务是有效地组织人员,按照适当的技术、方法,利用好的工具来完成预定的软件项目。软件工程管理的内容包括软件费用管理、人员组织、工程计划管理、软件配置管理等。(1)费用管理一般来讲,开发一个软件是一种投资,人们总是期望将来获得较大的经济效益。从经济角度分析,开发一个软件系统是否划算,是软件使用单位的负责人决定是否开发这个项目的主要依据,要从软件开发成本、运行费用、经济效益等方面来估算整个系统的投资和回报情况。软件开发成本主要包含开发人员的工资报酬,以及开发阶段的各项支出;软件运行费用取决于系统的操作费用和维护费用,其中操作费用包括操作人员的人数、工作时间、消耗的各类物资等开支;系统的经济效益是指因使用新系统而节省的费用和增加的收入。由于运行费用和经济效益两者在软件的整个使用期内都存在,总的效益和软件使用时间的长短有关,所以,应合理地估算软件的寿命。一般在进行成本/效益分析时一律假设软件使用期为五年。(2)人员组织软件开发不是个体劳动,需要各类人员协同配合,共同完成工程任务,因而应该有良好的组织、周密的管理。(3)工程计划管理软件工程计划是在软件开发的早期确定的。在计划实施过程中,如果有其他需要,应对工程进度做适当的调整。在软件开发结束后应写出软件开发总结,以便今后能制定出更切实际的软件开发计划。(4)软件配置管理软件工程各阶段所产生的全部文档和软件本身构成软件配置。每完成一个软件工程步骤,都涉及软件工程配置,必须使软件配置始终保持其精确性。软件配置管理就是在系统的整个开发、运行和维护时期控制配置的状态和变动,验证配置项的完整性和正确性。1.2.4 软件过程国际标准化组织(International Standardization Organization,ISO)是世界性的标准化专门机构。ISO 9000把软件过程定义为:“把输入转化为输出的一组彼此相关的资源和 活动”。软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件开发过程(software development process)是把用户要求转化为软件需求,把软件需求转化为设计,用代码来实现设计并对代码进行测试,完成文档编制并确认软件可以投入运行使用的过程。软件过程定义了运用方法的顺序、应该交付的文档、开发软件的管理措施和各阶段任务完成的标志。软件过程是软件工程方法学的三个要素(方法、工具和过程)之一。软件过程必须科学、合理才能获得高质量的软件产品。1.2.5 软件工程基本原理著名软件工程专家B. Boehm综合有关专家和学者的意见并总结了多年来开发软件的经验,于1983年在一篇论文中提出了软件工程的七条基本原理。(1)用分阶段的生存周期计划进行严格的管理。(2)坚持进行阶段评审。(3)实行严格的产品控制。(4)采用现代程序设计技术。(5)软件工程结果应能清楚地审查。(6)开发小组的人员应该少而精。(7)承认不断改进软件工程实践的必要性。B. Boehm指出,遵循前六条基本原理,能够实现软件的工程化生产;按照第七条原理,不仅要积极主动地采纳新的软件技术,而且要注意不断总结经验。在本课程的学习中,读者将体会到软件工程基本原理的含义和作用。1.3 软件生命周期1.3.1 软件生命周期定义软件生命周期(software life cycle)是从设计软件产品开始到产品不能使用为止的时间周期。软件产品从问题定义开始,经过开发、使用和维护,直到最后被淘汰的整个过程就是软件生命周期。一个人从出生开始,经过儿童、青年、中年、老年等时期到死亡。在人的一生中,国家和社会对他的负担主要体现在儿童、青少年时期的培养及老年丧失劳动能力后的供养方面。而一个人从参加工作开始就对国家与社会做贡献,贡献越大,人的价值也就越大。同样,软件生命周期中软件的开发要投资、消耗价值,在软件交付使用后就开始产生价值,但软件维护又要消耗价值。软件生命周期中,消耗价值越少,即软件开发与维护时的费用越低,软件的使用寿命越长,产生的价值就越大,这就是掌握软件工程学的目的。软件生命周期是软件工程的一个重要概念。软件生命周期有时与软件开发周期作为同义词使用。一个软件产品的生存周期可划分为若干个互相区别而又有联系的阶段。把整个生存周期划分为若干个阶段,赋予每个阶段相对独立的任务,然后逐步完成每个阶段的任务。这样,能够简化每个阶段的工作,容易确立系统开发计划,还可明确系统各类开发人员的分工与职责范围,以便分工协作,保证质量。每一阶段的工作都以前一阶段的结果为依据,并作为下一阶段的前提。每个阶段结束时都要有技术审查和管理复审,从技术和管理两方面对这个阶段的开发成果进行检查,及时决定系统是继续进行,还是停工或是返工。应避免到开发结束时,才发现前期工作存在问题,造成不可挽回的损失和失败的现象。每个阶段都要进行的复审,主要检查是否有高质量的文档资料,前一个阶段复审通过了,后一个阶段才能开始。开发单位的技术人员可根据所开发软件的性质、用途及规模等因素决定在软件生命周期中增加或减少相应的阶段。把一个软件产品的生存周期划分为若干个阶段,是实现软件生产工程化的重要步骤。软件生命周期划分阶段的方法有多种,可按软件规模、种类、开发方式、开发环境等来划分生存周期。不管用哪种方法划分生存周期,划分阶段的原则是相同的。1.3.2 软件生命周期划分阶段的原则软件生命周期划分阶段的原则如下:(1)各阶段的任务彼此间尽可能相对独立。这样便于逐步完成每个阶段的任务,能够简化每个阶段的工作,易于确立系统开发计划。(2)同一阶段的工作任务性质尽可能相同。这样有利于软件工程的开发和组织管理,明确系统各类开发人员的分工与职责范围,以便协同工作,保证质量。1.3.3 软件生命周期各阶段的任务软件生命周期一般由软件计划、软件开发和软件运行维护三个时期组成。软件计划时期分为问题定义、可行性研究和需求分析三个阶段。软件开发时期可分为软件设计、软件实现和综合测试三个阶段。其中,软件设计阶段可分为概要设计和软件详细设计阶段,软件实现阶段进行程序设计和软件单元测试,软件开发的最后阶段是进行综合测试等。软件交付使用后在运行过程中需要不断地进行维护,才能使软件持久地满足用户的需要。下面简要介绍软件生命周期各阶段的主要任务。(1)问题定义确定系统的目标、规模和基本任务。(2)可行性研究从经济、技术、法律等方面分析确定系统是否值得开发,如果不值得开发应及时建议停止项目开发,避免人力、物力、时间的浪费。(3)需求分析确定软件系统应具备的具体功能。通常用数据流图、数据字典和简明算法描述表示系统的逻辑模型,防止造成系统的设计与用户的实际需求不相符的后果。(4)概要设计确定系统设计方案,以及软件的体系结构,即软件由哪些模块组成及这些模块之间的相互关系。(5)详细设计描述应该如何具体地实现系统。详细设计每个模块,确定实现模块所需要的算法和数据结构。 (6)软件实现阶段进行程序设计(编码)和模块测试。(7)综合测试阶段通过各种类型的测试,查出软件设计中的错误并改正,确保软件质量;还要在用户的参与下进行验收,才可交付使用。(8)软件运行、维护软件运行期间,通过各种必要的维护使系统改正错误或修改扩充功能使软件适应环境变化,以延长软件的使用寿命,提高软件的效益。每次维护的要求及修改步骤都应详细准确地记录下来,作为文档保存。1.4 软件开发模型根据软件生产工程化的需要,软件生命周期的划分也有所不同,从而形成了不同的软件生命周期模型(software life cycle model),或称软件开发模型。总体来说,软件开发模型包括传统的瀑布模型和后来兴起的快速原型模型两类。具体可分为瀑布模型、快速原型模型、增量模型、喷泉模型、螺旋模型和统一过程。下面分别加以介绍。1.4.1 瀑布模型瀑布模型(waterfall model)遵循软件生命周期的划分规划,明确规定每个阶段的任务,各个阶段的工作以线性顺序展开,恰如奔流不息的瀑布。瀑布模型把软件生命周期分为计划时期、开发时期、运行时期等三个时期。这三个时期又可细分为若干个阶段:计划时期可分为问题定义、可行性研究、需求分析三个阶段,开发时期分为概要设计、详细设计、软件实现、软件测试等阶段,运行时期则需要不断进行运行维护以延长软件的使用寿命,如图1.1所示。瀑布模型要求开发过程的每个阶段结束时要进行复审,复审通过了才能进入下一阶段,复审通不过则要进行修改或回到前面的阶段进行返工。软件维护时可能需要修改错误、排除故障;也可能是用户的需求改变了,或软件的运行环境改变了,需要修改软件的结构或功能,因而维护工作可能要从修改需求分析或修改概要设计开始,也可能要从修改软件编码开始。图1.1中的实线箭头表示开发工作的流程,每个阶段顺序进行,有时会返工;虚线箭头表示维护工作的流程,根据不同的情况返回到不同的阶段进行维护。图1.1 瀑布模型瀑布模型软件开发有以下几个特点。1软件生命周期的顺序性顺序性是指:只有前一阶段工作完成以后,后一阶段的工作才能开始;前一阶段的输出文档,就是后一阶段的输入文档。只有前一阶段有正确的输出,后一阶段才可能有正确的结果。因而,瀑布模型的特点是由文档驱动的。如果在生存周期的某一阶段出现了错误,往往要追溯到在它之前的一些阶段。瀑布模型开发适合于在软件需求比较明确,开发技术比较成熟,工程管理比较严格的场合下使用。2尽可能推迟软件的编码程序设计也称为编码。实践表明,大、中型软件编码开始得越早,完成所需的时间反而越长。瀑布模型在编码之前安排了需求分析、概要设计、详细设计等阶段,从而把逻辑设计和编码清楚地划分开来,尽可能推迟编码阶段。3保证质量为了保证质量,瀑布模型坚持两个重要做法:(1)每个阶段都要完成规定的文档。(2)每个阶段都要对已完成的文档进行复审,以便及早发现隐患,排除故障。本书以瀑布模型为典型开发模型,介绍各阶段工作的具体方法、步骤、所需工具,对其他模型可以参照此模型执行。1.4.2 快速原型模型正确的需求定义是系统成功的关键,但是许多用户在开始时往往不能准确地叙述他们的需求,软件开发人员需要反复和用户交流信息,才能全面、准确地了解用户的需求。当用户实际使用了目标系统以后,通过对系统的执行、评价,使用户明确对系统的需求。此时用户常常会改变原来的某些想法,对系统提出新的需求,以便使系统更加符合他们的 需要。快速原型模型(rapid prototype model)是指快速开发一个可以运行的原型系统,该原型系统所能完成的功能往往是最终产品能完成的功能的一个子集。请用户试用原型系统,以便能准确地认识到他们的实际需要是什么,然后书写软件系统的需求规格说明文档,根据这份文档开发出来的软件可以满足用户的真实需求。这相当于工程上先制作“样品”,试用后做适当改进,然后再批量生产一样。创建快速原型从设计用户界面开始,所建立的原型能完成的功能,往往是用户需求的主要功能。快速原型模型鼓励用户参与开发过程,用户参与原型的运行和评价,能充分地与开发者协调一致。开发期间,原型还可作为终端用户的教学模型。开发者一边进行软件开发,一边让用户学习使用,若用户发现软件功能不符合自己的实际要求,可及时提出意见,开发者应立即进行修改,如此反复进行,直到用户满意为止。虽然此方法要额外花费一些成本,但是可以尽早获得更符合需求的模型,从而减少测试和调试的工作量,提高软件质量。因此,只要快速原型法使用得当,就能减少软件的总成本,缩短开发周期。快速原型模型是目前比较流行的实用开发模型。根据建立原型的目的不同,实现原型的途径也有所不同,通常有下述三种类型的原型。1渐增式的原型渐增式的原型开发模型也称增量模型。2用于验证软件需求的原型系统分析员在确定了软件需求之后,从中选出某些需要验证的功能,用适当的工具快速构造出可运行的原型系统,由用户试用和评价。这类原型往往用后就丢弃,因此构造它们的软件环境不必与目标系统的软件环境一致,通常使用简洁而易于修改的高级语言对原型进行编码。3用于验证设计方案的原型原型可作为新颖设计思想的实现工具,对于新的设计思想,开发部分软件的原型,可提高风险开发的安全系数,从而证实设计的可行性。为了保证软件产品的质量,在概要设计和详细设计过程中,可用原型来验证总体结构或某些关键算法。如果设计方案验证完成后就将原型丢弃,则构造原型的工具不必与构造目标系统的工具一致。如果想把原型作为最终产品的一部分,原型和目标系统可使用同样的软件设计工具。软件快速原型模型的开发过程如图1.2所示。开发人员听取用户的意见,进行需求分析,尽快构造出原型,原型的作用是获得用户的真正需求。原型由用户运行、评价和测试,开发人员根据用户的意见修改原型,再次请用户试用,逐步使其满足用户的需求。产品一旦交付给用户使用,维护便开始。根据需要,维护工作可能返回到需求分析、设计或编码等不同的阶段。图1.2 快速原型开发过程1.4.3 增量模型增量模型也称渐增模型,先选择一个或几个关键功能,建立一个不完全的系统,此时只包含目标系统的一部分功能,或对目标系统的功能从某些方面进行简化,通过运行这个简化后的系统取得经验,加深对软件需求的理解,使系统逐步得到扩充和完善。如此反复进行,直到用户对所设计的软件系统满意为止。增量模型是对瀑布模型的改进,增量模型使开发过程具有一定的灵活性和可修改性。增量模型把软件产品作为一系列增量构件来设计、编码、集成和测试。增量模型开发的软件系统是逐渐增长和完善的,所以整体结构不如瀑布模型开发的软件那样清晰,但是,由于增量模型开发过程自始至终都有用户参与,因而能及时发现问题并加以修改,可以更好地满足用户需求。增量模型在项目开发过程中,以一系列的增量方式来逐步开发系统。增量方式包括增量开发和增量提交两个方面。· 增量开发:不是整体地开发软件,而是按一定的时间间隔开发部分软件。· 增量提交:先提交部分软件给用户试用,听取用户意见,再提交另一部分软件让用户试用,如此进行,直到全部提交为止。增量开发和增量提交方式可以同时使用,也可以单独使用。增量开发方式可以在软件开发的部分阶段采用,也可以在全部开发阶段都采用。例如,在软件需求分析和设计阶段采用整体开发方式,在编码和测试阶段采用增 量模型开发方式,如图1.3所示。先对部分功能进行编码、测试,提交给用户试用,听 取用户意见,及早发现问题并解决问题;再对另一部分功能进行编码、测试,提交用户 试用。图1.3 增量模型另一种方式是,所有阶段都采用增量模型开发方式。先对某部分功能进行需求分析、设计、编码和测试,提交给用户试用,充分听取用户意见;再对另一部分功能进行需求分析、设计、编码和测试,提交给用户试用,直至所有功能开发完毕,如图1.4所示。用这种方式开发软件时,不同功能的软件构件可以并行地构建,因此有可能加快工程进度,但是也存在软件构件无法集成为一个整体的风险。图1.4 风险更大的增量模型增量模型的优点是能在较短的时间内向用户提交能完成一定功能的产品,并使用户有较充裕的时间学习和适应产品。使用增量模型的难点在于,软件的体系结构设计必须是开放的,要便于向现有结构中加入新的构件,即每次增量开发的产品都应当是可测试的、可扩充的。从长远来看,具有开放结构的软件,其可维护性明显好于封闭结构的软件。1.4.4 喷泉模型使用传统的瀑布模型开发、维护软件时,需要有以下两个前提:图1.5 喷泉模型· 用户能清楚地提供系统的需求。· 开发者能完整地理解这些需求,软件生命周期各阶段能明确地划分,每个阶段结束时要复审,复审通过后下一阶段才能开始。然而,在实际开发软件时,往往用户事先难以说清系统需求,开发者也由于主客观的原因,缺乏与用户交流的机会,其结果是系统开发完成后,修改、维护的开销及难度过大。喷泉模型(fountain model)是典型的面向对象软件开发模型,着重强调不同阶段之间的重叠。一般认为面向对象软件开发过程,不需要或不应该严格区分不同的开发阶段,如图1.5所示。喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,适合面向对象的开发方法。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型的开发过程具有迭代性和无间隙性。基于喷泉模型,Hodge等人提出将软件开发过程划分为系统分析、系统设计、对象设计与实现(编程)、测试和系统组装集成等五个阶段,也体现出分析和设计之间的重叠。1系统分析系统模型中的对象是现实世界中的客观对象的抽象,结构清晰、易于理解、易于描述规范。在分析阶段建立对象模型和过程模型。2系统设计给出模型对象和过程的规范描述。3对象设计和对象实现(编程)面向对象设计方法强调软件模块的再用和软件合成,因而在对象设计和实现时,并不要求所有的对象都从头开始设计,而是充分利用以前的设计工作。在软件开发时检索对象库,若是对象库中已经存在的,则可不必设计,只需重复使用或加以修改;否则,应定义新的对象,进行设计和实现。面向对象设计方法要求与用户充分沟通,在用户试用软件的基础上,根据用户的需求,不断改进、扩充和完善系统功能。4测试测试所有的对象及对象相互之间的关系是否符合要求。5系统集成面向对象软件的特点之一是软件重用和组装技术。对象是数据和操作的封装载体,组装在一起才能构成完整的系统。模块组装也称为模块集成、系统集成。软件设计是指将对象模块集成,构造生成所需的系统。6演化由于喷泉模型主张分析和设计过程的重叠,不严格加以区分,模块集成过程要反复经过分析、设计、测试、集成这几个阶段,每次集成都使系统功能在原有基础上得到扩展,因而称为系统演化。1.4.5 螺旋模型 瀑布模型要求在软件开发的初期就完全确定软件的需求,这在很多情况下是做不到的。螺旋模型试图克服瀑布模型的这一不足之处。螺旋模型(Spiral Model,SM)是1986年由B. Boehm提出的。SM把软件开发过程安排为逐步细化的螺旋周期序列,每经历一个周期,系统就细化和完善一些。SM每一螺旋周期由下列六个步骤组成,如图1.6所示。1确定任务目标根据初始需求分析项目计划,确定任务目标、可选方案和约束限制。2选择对象对各种软硬件设备、开发方法、技术、开发工具、人员、开发管理等对象进行选择,并决定软件是进行研制、购买还是利用现有的。3分析约束条件软件开发的时间、经费等限制条件。4风险分析评估目标、对象、约束条件三者之间的联系,列出可能出现的问题及问题的严重程度等,把最重要的问题作为尚未解决的关键问题,称为风险。5制定消除风险的方法应有详尽的说明和周密的计划,并估计可能产生的后果。依此来开发软件,为制定下一周期的计划打下基础。图1.6 螺旋模型6制定下一周期的工作计划在第一个螺旋周期,确定目标、选择对象、分析约束,通过风险分析制定消除风险的方法,初步开发原型1,制定系统开发计划。在第二个螺旋周期,进一步明确系统的目标、开发方案及约束条件,通过风险分析制定消除风险的方法,在原型1的基础上开发原型2。进一步明确软件需求,进行需求确认,修改开发计划。在第三个螺旋周期,再进一步确认系统目标、开发方案及约束条件,进行风险分析,制定进一步消除风险的方法,在原型2的基础上开发原型3。此时可进行产品设计,再对设计进行验证和确认,制定集成测试计划。在第四个螺旋周期,软件开发方案、系统目标和约束条件得到确定,在风险分析的基础上,开发具有实用价值的可操作原型,此时可对产品进行详细设计,进入编码、单元测试、集成测试阶段,最后进入验收测试阶段,验收合格后交付用户使用,进入运行、维护阶段。1.4.6 统一过程统一过程是经过30多年的发展形成的,它是汲取了各种生存周期模型的先进思想和丰富的实践经验而产生的。统一过程将成为软件开发的主流过程。统一过程(Rational Unified Process,RUP)使用统一建模语言(Unified Modeling Language,UML),采取用例驱动和架构优先的策略,采用迭代增量建造方法。UML采用了面向对象的概念,引入了各种独立于语言的表示符号。UML建立用例模型、静态模型和动态模型完成对整个系统的建模,所定义的概念和符号可用于软件开发过程的分析、设计和实现的全过程。软件开发人员不必在开发过程的不同阶段进行概念和符号的转换。用例(use case)代表某些用户可见的功能,实现一个具体的用户目标。用例代表一类功能而不是使用该功能的某一具体实例。用例是精确描述需求的重要工具。统一过程所构造的软件系统,是由软件构件建造而成的。这些软件构件定义了明确的接口,相互连接成整个系统。在构造软件系统时统一过程采用架构优先的策略。软件构架概念包含了系统中最重要的静态结构和动态特征,构架体现了系统的整体设计。构架优先开发的原则是RUP开发过程中

    注意事项

    本文(随着计算机系统的发展.docx)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开