第01章软件工程概述_第1页
第01章软件工程概述_第2页
第01章软件工程概述_第3页
第01章软件工程概述_第4页
第01章软件工程概述_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

软件工程软件工程主讲:闫满计算机与信息工程学院软件工程说明《软件工程》课程说明一、课程的性质和特点

《软件工程》是计算机科学与技术专业本科生的一门重要的专业课程。通过学习使我们掌握软件工程的基本概念和基础理论知识,达到熟练地运用各种实用开发方法和基本技术方法,了解软件工程各领域的发展动向,从事各种类型软件项目的工程化开发;培养具有独立工作能力的高素质高水平的软件人才。

软件工程说明二、课程的基本要求(1)掌握软件工程的基本概念,基本原理,基本方法和基本实现技术。(2)能运用软件工程的基本技术方法和开发工具,独立承当软件项目开发,设计和管理。(3)了解本领域出现的新概念,新技术和新方法,达到进一步提高自己的理论水平和实践能力。(4)了解软件开发过程应遵循的流程,准则,标准和规范。三、与有关课程的联系要求:有一定的程序设计经验,因此至少应学习过一门程序设计语言。先行课程:面向对象程序设计、数据结构、数据库系统概论。软件工程说明四、课程学习方法指导

(1)在全面系统学习的基础上掌握基本理论、基本知识、基本方法。本课程从软件开发、维护和软件管理等方面系统地阐述了软件工程的基本概念和常用的方法,各章之间既有联系又有很大的区别,有的还有相对独立性。应全面系统的学习各章,再认识各章之间的联系,在全面系统学习的基础上掌握重点。

(2)把学习软件工程理论和应用软件工程的方法结合起来。本课程的内容既有理论又有方法,应学会正确运用和应用软件工程的方法去分析和解决有关的软件问题

(3)重视理论联系实际,结合软件开发全过程的实践来进行学习。在学习过程中应把课程的内容同实际软件开发联系起来,进行对照比较,分析研究,以增强感性认识,提高自己分析问题和解决问题的能力。

软件工程说明五、课程的考核方法本门课程为必修课,考核成绩有三部分组成:平时成绩(占20%)、综合设计(占30%)、期末考试(占50%)说明:平时成绩:上课出勤情况、上课纪律情况、上课提问情况等。综合设计:在讲课过程中向学生布置题目,在规定的时间完成,按做的质量评定。期末考试:参加学院组织的考试,以卷面成绩为准。软件工程说明课程设计(1)根据本课程的学习,用结构化方法、面向对象方法设计一个小型软件,实现一定的功能,比如人事管理软件、图书资料管理软件、商场商品管理软件、学校学籍管理软件等。(2)软件的设计按照软件工程的方法,各个阶段必须有相应文档记录,比如可行性分析报告,项目开发计划,需求规格说明书,概要设计说明书,详细设计要有流程图,编码有源代码(改进前后的)及软件测试报告等。(3)软件维护修改过程中,必须有文档记录修改原因,改进前后优缺点等内容。(4)软件不要求十分商业化,要求基本运行正确,无重大错误。

(5)提交内容及提交方式:最好是设计完成后采用安装程序打包,可以发行。将设计好的下列材料保存刻成光盘供评定。

(a)软件(运行版本或安装版本)。

(b)以上要求的设计文档报告。

(c)源程序(各阶段分目录保存)。第1章软件工程概述软件工程第一章软件工程概述本章概括地介绍了软件工程的产生、软件危机、软件生产的发展、软件生存周期各阶段、软件生存周期各种模型及各种软件开发方法。通过本章的学习可以了解软件工程的基本概念、内容、性质、特点、目标;软件生产发展的三个阶段,软件危机的产生及其表现形式,初步了解各种生存周期模型和各种开发方法。其中的一些开发方法和模型在后续章节中进一步详细介绍。在学习本章时,主要掌握软件工程的一些基本概念、软件危机产生原因、软件工程面临的主要问题。软件工程第一章软件工程概述

软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。

程序是按事先设计的功能和性能要求执行的指令序列。

数据是使程序能正常操纵信息的数据结构。

文档是与程序开发,维护和使用有关的图文材料。1.1软件的概念、特点和分类1.1.1

软件的概念与特点基本概念软件的特点软件工程第一章软件工程概述

软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性。

软件的生产与硬件不同,在它的开发过程中没有明显的制造过程。

在软件的运行和使用期间,没有硬件那样的机械磨损老化问题。但在软件生存期中,为了使它能够克服以前没有发现的故障,适应硬件和软件环境的变化以及用户新的要求,必须要多次修改(维护)软件,每次修改必然引入新的错误,导致软件失效率升高。硬件、软件生命周期的比较硬件失效率曲线软件失效率曲线生磨命合初调期整磨损用坏理想曲线实际曲线由于副作用造成的失效率提高修改失效率时间失效率时间软件工程第一章软件工程概述软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。软件的开发至今尚未完全摆脱硬件单独活动。在开发和运行中必须以硬件提供的条件为依据。软件的开发至今尚未完全摆脱手工艺的开发方式。软件产品大多都是“定做”的,很少能做到利用现成的部件组装成所需的软件。

软件本身是复杂的:实际问题的复杂性;程序逻辑结构的复杂性。软件技术的发展落后于复杂的软件需求。软件工程第一章软件工程概述软件成本相当昂贵。软件的研制工作须要投入大量的复杂的、高强度的脑力劳动。软件复杂性时间软件技术发展落后于需求差距软件需求软件技术硬件软件1950196019701980199020406080100成本%年份计算机系统硬、软件成本比例变化相当多的软件工作涉及到社会因素。1.1.2

软件的分类系统软件:能与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效工作的软件。是计算机系统必不可少的组成部分。如:操作系统、数据库管理系统、设备驱动程序、通信处理程序等。支撑软件:是协助用户开发软件的工具性软件。如:文本编辑程序、文件格式化程序、磁盘向磁带做数据传输的程序、程序库系统等支持需求分析、设计、实现、测试和支持管理的软件。应用软件:是在特定领域内开发,为特定目的服务的一类软件。如:商业数据处理软件、工程与科学计算软件、计算机辅助设计/制造软件(CAD/CAM)、系统仿真软件、智能产品嵌入软件、医疗制药软件、事务管理、办公自动化软件、计算机辅助教学软件(CAI)等。

按软件的功能进行划分:

按软件的规模进行划分:

类别

参加人员数

研制期限

源程序行数微型

1

1~4周

0.5k(500行)

小型

1

1~6月

1k~2k

中型

2~5

1~2年

5k~50k

大型

5~20

2~3年

50k~100k

甚大型

100~1000

4~5年

1M(=1000k)

极大型

2000~5000

5~10年

1M~10M

按软件的工作方式进行划分:

实时处理软件:指在事件或数据产生时,立即予以处理,并及时反馈信号,控制需要监测和控制过程的软件。主要包括数据采集、分析、输出三部分。分时软件:允许多个联机用户同时使用计算机的软件。系统把处理机时间轮流分配给各联机用户,使各用户都感到只是自己在使用计算机。交互式软件:能实现人机通信的软件。批处理软件:把一组输入作业或一批数据以成批处理的方式一次运行,按顺序逐个处理完的软件。按软件的服务对象的范围划分:

项目软件:也称定制软件,是受某个特定用户(或少数用户)的委托,由一个或多个软件开发机构在合同的约束下开发出来的软件。产品软件:是由软件开发机构开发出来直接提供给市场,或为千百个用户服务的软件。按软件的使用频度进行划分:

一次使用软件:也软件开发出来仅供一次使用。频繁使用软件:需要每天都及时进行数据处理的软件。按软件的失效的影响进行划分:

高可靠性软件(关键软件):一但失效会造成灾难性后果的软件。一般可靠性软件:一但失效,对整个系统带来的影响不大的软件。1.1.3软件危机的原因及解决途径

软件的发展程序设计阶段

—50至60年代

程序系统阶段

—60至70年代

软件工程阶段

—70年代以后Evolutionofsoftware

早期

面向批处理

有限的分布

自定义软件

195019601970Evolutionofsoftware

早期

第二阶段面向批处理

多用户有限的分布

实时自定义软件

数据库软件产品

1950196019701980Evolutionofsoftware

早期

第二阶段第三阶段面向批处理

多用户

分布式系统

有限的分布

实时

嵌入“智能”自定义软件

数据库

低成本硬件

软件产品消费者的影响

19501960197019801990

早期

第二阶段第三阶段第四阶段面向批处理

多用户

分布式系统

强大的桌面系统有限的分布

实时

嵌入“智能”面向对象技术自定义软件

数据库

低成本硬件

专家系统

软件产品消费者的影响

人工神经网络

并行计算

网络计算机195019601970198019902000Evolutionofsoftware软件的危机在软件发展的第二阶段,随着计算机硬件技术的进步,计算机容量、速度和可靠性有明显提高,生产硬件的成本降低了。这样,要求软件能与之相适应。一些开发复杂的、大型的软件项目提了出来。但此时软件的发展一直未能满足需求。在软件开发过程中遇到的问题找不到解决的办法,形成了日益尖锐的矛盾。归纳有:软件开发无计划性。软件需求不充分。软件开发过程无规范。软件产品无评测手段。这就形成了软件危机。软件危机的主要特征软件开发周期大大超过规定日期。软件系统开发成本高,周期长,质量差,满足不了市场需求。软件质量无保证。软件系统开发人员数量少,质量低。软件系统维护难度大。软件开发缺乏合适的工具和方法。软件的版权问题得不到保证。例1

:Windows95程序超过1000万行。例2:

WWMCCS(军事和控制)花费3500多人拖了几年才完成,交付后发现出了100多个错误,最后失败。1.2软件工程概念

软件工程过程是为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动。每个软件开发机构都可以规定自己的软件工程过程(针对某一类软件产品为自己规定的工作步骤,应当是科学的、合理的,否则将影响到软件产品质量)。概念软件工程过程基本过程活动软件规格说明:规定软件的功能及其运行的限制。软件开发:产生满足规格说明的软件。软件确认:确认软件能够完成客户提出的要求。软件演进:为满足客户的变更要求,软件必须在使用的过程中演进。软件工程过程具备的特性

易理解性。

可见性:每个过程活动均能以取得明确的结果而告终,使过程的进展对外可见。可支持性:易于得到计算机辅助软件工程工具的支持。可接受性:易于为软件工程师接受和使用。可靠性:不会出现过程错误。健壮性:不受意外发生问题的干扰。可维护性:过程可随软件机构需求的变更而演进。速度:从给出规格说明起,就能较快地完成开发而交付使用。软件工程的定义“软件工程”术语首次出现:1968年德国照开的NATO(北大西洋公约组织)会议上。在德国Garmish召开的学术会议FritzBauer首先提出了“软件工程”概念,引入了现代软件开发的方法,希望用工程化的原则和方法来克服软件危机.Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。IEEE:软件工程是开发、运行、维护和修复软件的系统方法。

Fritz

Bauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。

软件工程:是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。软件工程三要素:方法、工具和过程。软件工程方法为软件开发提供了“如何做”的技术。软件工具为软件工程方法提供了自动的或半自动的软件支撑环境。软件工程过程则是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。定义了方法使用的顺序;要求交付的文档资料;为保证质量和适应变化所需要的管理;软件开发各个阶段完成的里程碑。软件工程项目的基本目标付出较低的开发成本。达到要求的软件功能。取得较好的软件性能。开发的软件易于移植。需要较低的维护费用。能按时完成开发工作,及时交付使用。在实际开发具体项目中,企图让几个目标都达到理想的程度是很困难的。而且上述目标很可能是互相冲突的。但有些目标之间存在互补的。基本目标成为了判断软件开发方法或管理方法优劣的衡量尺度。如图:基本目标说明低开发成本按时交付易于维护高可靠性高性能互补关系互斥关系软件工程目标之间的关系互斥:如,只顾降低开发成本,同时可能降低了软件可靠性;过于追求软件性能,可能造成开发出的软件对硬件具有较大依赖性,一是可以影响软件可移植性,也可以影响开发成本的提高等。1.3

软件生存期(lifecycle)

概念

软件的生存期就是软件孕育、诞生、成长、成熟、衰亡的生存过程。软件生存期六个步骤制定计划:确定要开发软件系统的总目标;给出功能、性能、可靠性以及接口等方面的要求;完成该软件任务的可行性研究;估计可利用的资源(计算机硬件,软件,人力等)、成本、效益、开发进度;制定出完成开发任务的实施计划,连同可行性研究报告,提交管理部门审查。需求分析:对待开发软件提出的需求进行分析并给出详细的定义;编写软件需求说明书或系统功能说明书及初步的系统用户手册;提交管理机构评审。程序编码:把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示的“源程序清单”,写出的程序应当是结构良好、清晰易读的,且与设计相一致的。软件设计:是软件工程核心部分。概要设计—把各项需求转换成软件的体系结构。结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应。详细设计—对每个模块要完成的工作进行具体的描述,为源程序编写打下基础。编写设计说明书,提交评审。软件测试:是保证软件质量的重要手段。单元测试:查找各模块在功能和结构上存在的问题并加以纠正。组装测试:将已测试过的模块按一定顺序组装起来。最后,按规定的各项需求,逐项进行有效性测试,决定已开发的软件是否合格,能否交付用户使用。运行/维护:已交付的软件投入使用,便进入了运行阶段。改正性维护

运行中发现了软件中的错误需要修正。适应性维护

为了适应变化了的软件工作环境,需做适当变更。完善性维护

为了增强软件的功能需做变更。1.4常用软件开发过程模型

软件生存期模型是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。有:瀑布模型演化模型、螺旋模型、喷泉模型、智能模型等。

1.4.1

瀑布模型(线形顺序模型)

瀑布模型规定了各项软件工程活动,包括制定开发计划、进行需求分析和说明,软件设计,程序编码,测试及运行维护。规定了它们自上向下、互相衔接的固定次序,如同瀑布流水,逐级下落。如图:

可行性研究与计划需求分析设计编码运行维护测试定义阶段开发阶段维护阶段软件生存期瀑布模型瀑布模型开发软件的特点:1)阶段间具有顺序性和依赖性。2)推迟实现的观点。3)每个阶段必须完成规定的文档每个阶段结束前完成文档审查及早改正错误。瀑布模型开发软件的原则1)承接上一项活动中接收本项活动所需的对象作为输入。2)利用输入进行本项活动。3)把本项的活动成果作为输出传送下一项。4)对本项工作进行评审,若评审正确才能进行下一项工作。瀑布模型特点

瀑布模型为软件开发和软件维护提供了一种有效的管理图式。消除非结构化软件、降低软件复杂度、促进软件开发工程化。缺乏灵活性,无法解决软件需求不明确或不准确的问题1.4.2

演化模型第一次只是试验开发(产品称原型),其目标只是在于探索可行性,弄清软件需求。第二次(迭代)则在此基础上获得较为满意的软件产品。针对事先不能够完整定义需求的软件项目,建立起来的开发方法。(1)

根据用户给出的待开发系统的核心需求,先开发出核心系统。(2)用户试用后,提出精化系统、增强系统能力的需求,开发人员实施开发的迭代过程。演化模型概念演化模型一般开发过程需求设计编码测试集成运行、试用核心系统开发第二次迭代反馈设计需求编码测试集成运行、试用反馈软件生存期演化模型演化模型克服了瀑布模型缺点1.4.3

螺旋模型开发复杂的大型软件,开发一个原型往往达不到要求。螺旋模型将瀑布模型和演化模型结合起来,并且加入两种模型忽略了的风险分析,祢补了两者的不足。螺旋模型沿着螺线旋转,在四个象限上分别表达了四个方面的活动,即:制定计划──确定软件目标,选定实施方案,弄清项目开发的限制条件。风险分析──分析所选方案,考虑如何识别和消除风险。

实施工程──实施软件开发。客户评估──评价开发工作,提出修正建议。风险分析工程实施制定计划客户评估产生维护计划

产生增加计划新产生发展计划发展的观

温馨提示

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

评论

0/150

提交评论