软件工程第1篇-第1章 概述(update)_第1页
软件工程第1篇-第1章 概述(update)_第2页
软件工程第1篇-第1章 概述(update)_第3页
软件工程第1篇-第1章 概述(update)_第4页
软件工程第1篇-第1章 概述(update)_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2023年12月19日©曲阜师范大学计算机科学学院1第一篇软件工程学概述第一章概述2023年12月19日©曲阜师范大学计算机科学学院2第一章概述本章的主要目标是介绍软件工程这门学科,读完你将了解以下基本内容:软件工程的相关基本概念:软件、软件危机、软件工程、软件生命周期、软件过程等,具体见下述部分介绍。软件从业人员的道德和职业问题对软件工程产业的影响。2023年12月19日©曲阜师范大学计算机科学学院3第一章概述1.1

基本概念1.2软件工程从业人员的职业和道德素养

2023年12月19日©曲阜师范大学计算机科学学院41.1基本概念当今世界的信息化进程,愈来愈趋向复杂化、人性化和扁平化。

软件工程作为一门工程学科,它的主要目标就是驱使软件系统向高性价比发展。

具有实时动态性,抽象、不可触摸,它的面向对象目标不受物理因素限制。软件工程同时又是一门比较年轻的学科。“软件工程”这一概念是在1968年NATO会议上针对“软件危机”的议题提出。

2023年12月19日©曲阜师范大学计算机科学学院51.1基本概念构建这些软件系统的早期经验是:个人英雄主义、作坊式非正规的软件开发并不奏效。投资很大,做得很差。制作既满足用户要求、又能按期完成并且不超出项目预算的复杂软件仍然存在很多困难。软件工程自1968年以来已得到了长足的发展。面向对象、构件、WEB服务及云计算等的扩充和提高已成为现实。

2023年12月19日©曲阜师范大学计算机科学学院61.1基本概念1.1.1软件1.1.2软件危机1.1.3软件工程1.1.4软件生命周期1.1.5软件过程模型1.1.6软件工程面临的挑战2023年12月19日©曲阜师范大学计算机科学学院71.1.1软件1.1.1.1软件及组成1.1.1.2软件的特点1.1.1.3软件的分类1.1.1.4软件的发展阶段2023年12月19日©曲阜师范大学计算机科学学院81.1.1.1软件及组成计算机软件是与计算机系统操作有关的程序(Program)、规程、规则及任何与之有关的文档和数据。

2023年12月19日©曲阜师范大学计算机科学学院9程序1.

程序程序是用程序设计语言描述的、适合于计算机处理的语句序列,软件开发人员根据需求开发出来满足用户。目前的程序设计语言有三种类型:机器语言和汇编语言、独立于机器的面向过程的语言以及独立于机器的面向问题的语言,后两种类型为高级语言。用于科学计算的FORTRAN,用于事务处理的COBOL,支持结构化程序设计的PASCAL,支持现代软件开发的C、ADA,支持面向对象设计方法的C++、JAVA等。2023年12月19日©曲阜师范大学计算机科学学院10程序

面向问题的语言是第四代语言(4GL),也称为非过程式语言。

数据库查询语言(StructureQueryLanguage,SQL)、报表语言、机床控制专用语言和电路设计专用语言等都是面向问题的语言。2023年12月19日©曲阜师范大学计算机科学学院11文档2.文档文档(Document)是一种数据媒体和其上所记录的数据。最新的计算机软件文档编制规范是GB/T8567-2006。2023年12月19日©曲阜师范大学计算机科学学院121.1.1.2软件的特点软件是逻辑产品而不是物理产品。软件开发与硬件开发相比,更依赖于开发人员的业务素质、智力以及人员的组织、合作和管理。

首先,软件在运行期间会曝露潜伏的错误,这就要进行“纠错性维护”。其次,用户有时需要提高和完善软件的性能,必须对软件产品进行修改,进行“完善性维护”。再次,由于软件的长时间运行,为适应新的硬件和软件环境,也需要对产品进行修改,进行“适应性维护”。软件不会磨损和老化,只会退化。

2023年12月19日©曲阜师范大学计算机科学学院131.1.1.3软件的分类1.系统软件

计算机系统软件是计算机管理自身资源(如CPU、内存、外存等)、提高计算机的使用效率并为计算机用户提供各种服务的基础软件。2.实时软件

监控、分析和控制现实世界发生的事件,以足够快的速度对输入信息并在规定的时间内做出反应,这类软件称为实时软件。2023年12月19日©曲阜师范大学计算机科学学院141.1.1.3软件的分类3.嵌入式软件嵌入式计算机系统将计算机嵌入在某一系统中,使之成为该系统的重要组成部分,控制该系统的运行,进而实现一个特定的物理过程。4.科学与工程计算软件

此类软件以数值算法为基础,对数值量进行处理和计算。2023年12月19日©曲阜师范大学计算机科学学院151.1.1.3软件的分类5.事务处理软件用于处理事务信息,特别是商务信息的计算机软件。6.人工智能软件支持计算机系统产生人类某些智能的软件。人工智能软件常用的计算机语言有LISP和PROLOG等。2023年12月19日©曲阜师范大学计算机科学学院161.1.1.3软件的分类7.个人计算机软件个人计算机上使用的软件包括系统软件和应用软件两类。8.CASE工具软件计算机辅助软件工程(Computer-AidedSoftwareEngineering,CASE)是指软件开发和管理人员在软件工具的帮助下进行软件产品的开发、维护以及开发过程的管理。2023年12月19日©曲阜师范大学计算机科学学院171.1.1.4软件的发展阶段第一阶段

(20世纪50年代初至20世纪60年代初)是计算机系统开发的初期阶段。这时的通用计算机由于价格昂贵、体积大、功耗高、机器不稳定和需要专人维护等原因,只能放在公共的实验室内供大家使用。

第二阶段

(20世纪60年代中期至20世纪70年代末)引进了多用户、多道程序和人机交互等新概念。实时系统可以从多路信号源上采集、处理、分析和转换数据,在相当短的时间输出计算结果。

2023年12月19日©曲阜师范大学计算机科学学院181.1.1.4软件的发展阶段第三阶段(20世纪70年代中期至20世纪80年代末)分布式系统、计算机网络、嵌入式计算机系统有了很大发展。微处理器、个人计算机、高性能的桌面工作站具有相当高的性价比,广泛走进了人们工作、生活的各个方面。

2023年12月19日©曲阜师范大学计算机科学学院191.1.1.4软件的发展阶段第四阶段

(自20世纪80年代末期开始至现在)在很多应用领域,人们开始采用面向对象的技术,专家系统、人工智能软件、构件开发、服务化软件、云计算等开始走向实际应用。20世纪90年代末,Internet技术。21世纪,电子商务、电子政务,服务化软件、云计算新型软件模式的出现。2023年12月19日©曲阜师范大学计算机科学学院201.1.2软件危机1.1.2.1软件危机的表现1.1.2.2软件危机的产生原因1.1.2.3软件危机的克服途径2023年12月19日©曲阜师范大学计算机科学学院211.1.2.1软件危机的表现

20世纪60年代末至20世纪70年代初,“软件危机”直到1968年在原西德加米施(Garmish)召开的国际软件工程会议上才被世人所注目。计算机生物圈的计算机硬件,却有一个可怕的摩尔定律。

《人月神话》(TheMythicalMan-Month)。

《没有银弹》(NoSilverBullet)。软件危机概括地包含下述两方面的问题:如何开发软件、如何维护数量不断膨胀的已有软件。

2023年12月19日©曲阜师范大学计算机科学学院221.1.2.1软件危机的表现软件危机主要有以下一些典型表现:

对软件开发成本和进度的估计常常很不准确。用户对“已完成”的系统不满意很普遍。软件产品的质量往往靠不住。软件常常不可维护。

缺失适当的文档资料。软件成本在计算机系统总成本中的比例逐年上升。软件开发生产率的速度,远远跟不上计算机的普及和深入趋势。

2023年12月19日©曲阜师范大学计算机科学学院231.1.2.2软件危机的产生原因软件危机的原因:

用户对软件需求的描述不精确,存在遗留、二义性、错误的情况经常发生

。软件开发人员对用户需求的理解与用户的本来愿望有差异

。大型软件项目需要组织一定的人力共同参与完成

。软件项目开发人员不能有效、独立自主地处理大型软件的全部关系和各个分支

。缺乏有力的方法学和工具的支持

。软件产品的特殊性和人类智力的局限性导致人们无力处理很多复杂问题

。2023年12月19日©曲阜师范大学计算机科学学院241.1.2.3软件危机的克服途径

用现代工程的概念、原理、技术和方法进行软件的开发、管理、维护和更新。计算机科学技术诞生了一个新的研究领域——

软件工程

2023年12月19日©曲阜师范大学计算机科学学院251.1.3软件工程1.1.3.1软件工程的定义1.1.3.2软件工程的基本原理1.1.3.3软件工程的目标1.1.3.4软件工程的原则2023年12月19日©曲阜师范大学计算机科学学院261.1.3软件工程1968年,北大西洋公约组织(NATO)召开计算机科学会议,弗里兹.鲍尔(FritzBauer)首次提出了“软件工程”的概念。2023年12月19日©曲阜师范大学计算机科学学院271.1.3.1软件工程的定义

1993年,IEEE对软件工程的定义为:“将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及有关上述方法的研究”。软件工程包括三个基本要素:方法、工具和过程。2023年12月19日©曲阜师范大学计算机科学学院281.1.3.2软件工程的基本原理

著名的软件工程专家B.W.Boehm综合这些学者们的意见并总结了TRW公司多年开发软件的经验,1983年在一篇论文中提出了软件工程的7条基本原理。

2023年12月19日©曲阜师范大学计算机科学学院291.1.3.2软件工程的基本原理1.用分阶段的生命周期计划严格管理2.阶段评审2023年12月19日©曲阜师范大学计算机科学学院301.1.3.2软件工程的基本原理3.严格的产品控制4.现代的程序设计技术5.结果应能清楚地审查6.开发人员应少而精7.软件工程实践需不断改进2023年12月19日©曲阜师范大学计算机科学学院311.1.3.3软件工程的目标软件工程的目标:可修改性(Modifiability)有效性(Efficiency)可靠性(Reliability)可理解性(Understandability)

2023年12月19日©曲阜师范大学计算机科学学院321.1.3.3软件工程的目标可维护性(Maintainability)

2023年12月19日©曲阜师范大学计算机科学学院331.1.3.3软件工程的目标可重用性(Reusability)可适应性(Adaptability)可移植性(Portability)可追踪性(Traceability)可互操作性(Interoperability)

2023年12月19日©曲阜师范大学计算机科学学院341.1.3.4软件工程的原则软件工程的原则:抽象(Abstraction)

信息隐藏(InformationHiding)

模块化(Modularity)

局部化(Localization)

2023年12月19日©曲阜师范大学计算机科学学院351.1.3.4软件工程的原则一致性(Consistency)

完整性(Completeness)

可验证性(Verifiability)

2023年12月19日©曲阜师范大学计算机科学学院361.1.4软件生命周期软件产品从形成概念开始,经过开发、使用和维护,直到最后退役的全过程称为软件生存周期(SoftwareLifeCycle)。2023年12月19日©曲阜师范大学计算机科学学院371.1.4软件生命周期软件生命周期由软件定义、软件开发和软件使用维护退役3个时期。2023年12月19日©曲阜师范大学计算机科学学院381.1.4软件生命周期1.问题定义要解决的问题是什么?2.可行性研究问题定义所确定的问题有行得通的解决方法吗?此问题值不值得去解决?3.需求分析为了解决这个问题,目标系统必须要做什么

2023年12月19日©曲阜师范大学计算机科学学院391.1.4软件生命周期4.总体设计概括地说,应该怎样实现目标系统?5.详细设计以比较抽象的方式提出解决问题的方法。

6.编码和单元测试写出容易理解和容易维护的正确程序模块。

7.综合测试通过各种类型的测试使软件达到预定的要求。

2023年12月19日©曲阜师范大学计算机科学学院401.1.4软件生命周期8.软件的使用软件的使用是软件发挥社会和经济效益的重要实施阶段。

9.软件的维护维护是对软件产品进行修改或对需求变化做出响应的过程。10.软件的退役终止对软件产品的支持,软件停止使用。2023年12月19日©曲阜师范大学计算机科学学院411.1.5软件过程模型1.1.5.1瀑布模型1.1.5.2原型模型1.1.5.3增量模型1.1.5.4螺旋模型1.1.5.5喷泉模型1.1.5.6基于四代技术的模型1.1.5.7变换模型1.1.5.8组合模型2023年12月19日©曲阜师范大学计算机科学学院421.1.5软件过程模型

软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件过程描述什么人(WHO)、在什么时候(WHEN)、做什么事(WHAT)以及怎样(HOW)做这些事,以期实现某一特定的具体目标。2023年12月19日©曲阜师范大学计算机科学学院431.1.5.1瀑布模型

瀑布模型(WaterfallModel)也称之为软件生存周期模型,由W.Royce于1970年提出。

此模型根据软件生存周期各个阶段的任务,逐步进行阶段性变换,直至得到用户确认的产品为止。

2023年12月19日©曲阜师范大学计算机科学学院441.1.5.1瀑布模型

以充分有效的软件需求有效为前提,具有顺序性、依赖性、推迟时间以及质量保证的特点。它也不是“万能药”,主要体现在:

在软件开发初始阶段指明软件系统的全部需求是不太可能的,有时甚至是不现实的。需求确定后,用户和软件项目负责人要等相当长的时间(经过设计、实现、测试、运行)才能得到一份软件的最初版本。“瀑布模型是借助文档驱动的”是它的另一个主要缺点。2023年12月19日©曲阜师范大学计算机科学学院451.1.5.2原型模型

快速开发原型的本质是“快速”,实现的途径有三种:利用个人计算机模拟软件系统的人机界面和人机交互方式。开发一个工作原型,实现软件系统的部分功能,而这部分功能是重要的,也可能是容易产生误解的。找来一个或几个正在运行的类似软件,利用这些软件向客户展示软件需求中的部分或全部功能。2023年12月19日©曲阜师范大学计算机科学学院461.1.5.2原型模型建造原型的过程如图1.5所示。

原型不能称之为软件,UNIXShell和超文本都是广泛的快速原型语言,近年来,广泛地使用第四代语言(4GL)构建快速原型。

2023年12月19日©曲阜师范大学计算机科学学院471.1.5.3增量模型

增量模型(IncrementalModel)也称为渐进模型,它把软件产品作为一系列的增量构件来设计、编码、集成和测试。

2023年12月19日©曲阜师范大学计算机科学学院481.1.5.3增量模型增量模型的优点体现在:增量模型分批逐步地向用户提交产品,整个软件产品被分解成许多增量构件,开发人员一个构件接一个构件地向用户提交产品。增量模型逐步增加产品功能,可以使用户有较充裕的时间学习和适应新产品功能性能,从而减少一个全新的软件可能给客户带来的不适应。

2023年12月19日©曲阜师范大学计算机科学学院491.1.5.3增量模型增量模型的实施也存在一些难度:

在把每个新的增量构件集成到现有软件体系结构时,必须不破坏原来已开发出的产品。

在设计软件体系结构时,必须使之利于扩充,向现有产品中加入新构件的过程也要简单、方便,即体系结构必须是开放的。2023年12月19日©曲阜师范大学计算机科学学院501.1.5.3增量模型图1.6描绘了一种高风险的增量模型。

2023年12月19日©曲阜师范大学计算机科学学院511.1.5.4螺旋模型

螺旋模型(SpiralModel)是TRW(汤普森-拉美-伍尔德里奇公司,简称为TRW)的B.Boehm于1988年提出的。它基于软件生存周期模型与原型模型的结合。2023年12月19日©曲阜师范大学计算机科学学院521.1.5.4螺旋模型

螺旋模型主要由四部分组成:需求定义、风险分析、工程实现和评审。

螺旋模型在支持大型软件开发方面具有广泛的应用前景,适用于面向规格说明、面向过程和面向对象的软件开发模型。

2023年12月19日©曲阜师范大学计算机科学学院531.1.5.5喷泉模型

喷泉模型(FountainModel)是一种典型的面向对象软件开发模型,迭代是它的主旨思想。

“喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性,如图1.8。

2023年12月19日©曲阜师范大学计算机科学学院541.1.5.6基于四代技术的模型

第四代语言(4GL)是R.Ross于1981年提出,采用四代技术开发软件的模型,如图1.92023年12月19日©曲阜师范大学计算机科学学院551.1.5.7变换模型

变换模型(TransformationalModel)是基于形式化规格说明语言及程序变换的软件开发模型。

软件需求分析确定后,用某种形式化的需求规格说明语言(如VDM的META-IV、CSP和Z)描述,生成形式化的规格说明。2023年12月19日©曲阜师范大学计算机科学学院561.1.5.7变换模型

形式化规格说明语言及其变换描述的研究方兴未艾,人们采用的技术手段主要有:基于模型的规格说明及其变换技术;基于代数结构的规格说明及其变换技术;基于时序逻辑的规格说明及验证技术;基于可视形式化技术的规格说明等等。2023年12月19日©曲阜师范大学计算机科学学院571.1.5.8组合模型

组合的方式有两种:

第一种方式是以一种模型为主,嵌入另外一种或几种模型。

第二种方式是建立软件开发的组合模型。

2023年12月19日©曲阜师范大学计算机科学学院581.1.5.8组合模型1→2→6→9→11→13→14的路径规划软件开发,就是生存周期模型

带有原型的生存周期模型,开发路径为1→3→2→6→9→11→13→14

1→3→2→7→11→13→14

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论