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

下载本文档

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

文档简介

1、软件工程课程内容:1、传统的软件工程方法2、面向对象的开发方法(UML)关于课程课程的主要特点及教学安排1.研究内容广泛,发展迅速。2.实践性强。注意取材,内容反映最新发展。 A.采用理论教学与案例教学相结合。 B.以综合性的设计型实验及课程设计带动课程的学习。在教师指导下,组成开发小组。成员协同工作,完成一个实际课题的开发。1、软件工程导论(第五版) 张海藩 清华大学出版社,2008.22、Software Engineering 6th Edition ,Ian Summerville3、Software Engineering:Theory and Practice (third edi

2、tion),美,Shari Lawrence Pfleeger ,加Joanne M.Atlee4、软件工程-实践者的研究方法 Roger S. Pressman 著,梅宏译,机械工业出版社,20035、面向对象与传统软件工程-统一过程的理论与实践(美)Stephen R.Schach 著,韩松,邓迎春译,机械工业出 版社,20066、 / 软件工程专家网7、 / UML软件工程组织教材及主要参考书: “软件工程”课程 与其它软件专业课的区别(1) 立足于系统的整体。(2) 讲授系统分析、系统设计、测试及维护的理论和方法。(3) 构筑一个软件系统,实践软件开发过程。 “软件工程”课程教学与实践

3、的目标 转变对软件开发的认识: 上升 程序 系统 转变思维定式: 上升 程序员 系统工程师 (系统分析员) 工程化训练考核方式出勤率(10%)+ 实验成绩(30)+期末考试成绩(60%)第一章 软件工程概述1、软件与软件危机2、软件工程3、软件过程1、软件与软件危机软件及其特性软件危机及其原因软件软件是由计算机程序的发展而形成的一种概念。程序是按既定算法,用某种计算机语言所规定的指令或语句编写的一系列指令或语句的集合。软件是程序再加上程序实现和维护程序时所必须的文档的总称。软件被普遍接受的软件的定义是:软件(software)是计算机系统中与硬件(hardware)相互依存的另一部分,它包括程

4、序(program)、相关数据(data)及其说明文档(document)。其中程序是按照事先设计的功能和性能要求执行的指令序列;数据是使程序能正常处理信息的数据结构;文档是与程序开发维护和使用有关的各种图文资料。 软件根据国际标准化组织的定义,软件是“与计算机系统操作有关的程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据。软件的特性软件是一种生产出来的产品,即软件产品。软件产品在市场上流通,卖给一个或多个客户就成为软件商品。软件产品是一种不同于物质性产品的逻辑性产品。它除具有一般产品的诸多属性外,还具有自己特有的属性。软件的特性软件是一种逻辑实体,具有抽象性。这个特点使它

5、与其它工程对象有着明显的差异。人们可以把它记录在纸上、内存、和磁盘、光盘上,但却无法看到软件本身的形态,必须通过观察、分析、思考、判断,才能了解它的功能、性能等特性。软件没有明显的制造过程。一旦研制开发成功,就可以大量拷贝同一内容的副本。所以对软件的质量控制,必须着重在软件开发方面下工夫。软件的特性软件在使用过程中,没有磨损、老化的问题。软件在生存周期后期不会因为磨损而老化,但会为了适应硬件、环境以及需求的变化而进行修改,而这些修改有不可避免的引入错误,导致软件失效率升高,从而使得软件退化。当修改的成本变得难以接受时,软件就被抛弃。软件对硬件和环境有着不同程度的依赖性。这导致了软件移植的问题。

6、软件的开发至今尚未完全摆脱手工作坊式的开发方式,生产效率低。软件的特性软件是复杂的,而且以后会更加复杂。软件是人类有史以来生产的复杂度最高的工业产品。软件涉及人类社会的各行各业、方方面面,软件开发常常涉及其它领域的专门知识,这对软件工程师提出了很高的要求。软件的成本相当昂贵。软件开发需要投入大量、高强度的脑力劳动,成本非常高,风险也大。现在软件的开销已大大超过了硬件的开销。软件工作牵涉到很多社会因素。许多软件的开发和运行涉及机构、体制和管理方式等问题,还会涉及到人们的观念和心理。这些人的因素,常常成为软件开发的困难所在,直接影响到项目的成败。软件危机软件危机指的是在计算机软件的开发和维护过程中

7、所遇到的一系列严重问题。概括来说,软件危机包含两方面问题:一、如何开发软件,以满足不断增长,日趋复杂的需求;二、如何维护数量不断膨胀的软件产品。 软件危机的表现(1)对软件开发成本和进度的估计常常不准确,软件生产进度无法控制。开发成本超出预算,实际进度比预定计划一再拖延的现象并不罕见。软件危机的表现(2)软件需求定义不准确,易偏离用户需求。用户对“已完成”系统不满意的现象经常发生。软件危机的表现(3)软件产品的质量往往靠不住。Bug一大堆,Patch一个接一个。软件危机的表现(4)软件的可维护程度非常之低。很多程序的错误是很难改正的,不能根据用户的需求变化在原有程序中增加新的功能。软件危机的表

8、现(5)软件通常没有适当的文档资料。管理人员可以使用这些文档作为管理和评价软件开发工程的进展情况;软件开发人员可以利用他们作为信息交换工具;对于软件维护人员文档更是必不可少。软件危机的表现(6)软件的成本不断提高。随着技术的进步硬件成本不断降低,而软件成本随着人力资源成本的增高、软件规模的增大而不断上涨。在美国1985年的软件成本已经占到计算机系统总成本的90。软件危机的表现(7)软件开发生产率的提高赶不上硬件的发展和人们需求的增长。 软件危机的原因(1)软件本身的特点引起(2)软件开发与维护的方法不正确 引起软件危机的消除(1)正确认识计算机软件(2)软件开发是组织良好、管理严密、人员相互配

9、合、共同完成的工程项目。(3)推广在实践中总结出来的开发软件的成功技术和方法,探索更加有效的技术和方法。(4)开发和使用更好的软件工具软件的质量正确性:满足需求。可靠性:在规定的条件和规定的时间内,计算机程序完成规定功能的概率。有不同的可靠模型。健壮性:程序在需求规范没有预见的情况下(如遇到不正确的输入数据或者硬件故障)也能合理的运行。可用性: 程序在给定的时间点,完成规定功能的概率。可验证性:可以容易的验证软件系统的性质,如可以验证性能等。软件质量可维护性:维护人员理解、改正、改动或改进软件得难易程度。可重用性:可以在不同的粒度级别上实现重用,包括从整个应用程序到单独的子程序,但软件组件级别

10、上的重用比整个产品的实现重用更加合适。2、软件工程软件工程的定义和本质特征软件工程的基本原理软件生命周期软件工程方法学软件工程概括的说,软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济的开发出高质量的软件并有效的维护它,这就是软件工程。软件工程软件工程有两个典型的定义。 1968,NATO:软件工程就是为了经济的获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。1993,IEEE:软件工程是:(1)把系统的、规范的、可度量的途径应用于软件开发

11、、运行和维护过程,也就是把工程应用于软件;(2)研究(1)中提出的方法。软件工程的本质特点软件工程关注于大型程序的构造软件工程的中心课题是控制复杂性软件经常变化开发软件的效率非常重要和谐合作是开发软件的关键软件必须有效支持用户在软件工程领域中是具有一种文化背景的人替另外一种文化背景的人创造产品Boehm软件工程的基本原理用分阶段的生命周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采纳现代程序设计技术结果应能清楚地审查开发小组的人员应少而精 承认不断改进软件工程实践的必要性 软件生命周期问题定义可行性研究需求分析总体设计详细设计编码和单元测试综合测试软件维护软件工程方法学工具方法过程质

12、量焦点Software engineering layers软件工程三个要素:方法、工具、过程软件工程方法学三个要素:方法、工具和过程。方法:完成软件开发的各项任务的技术方法。工具:为运用方法而提供的自动或者半自动的软件工程支撑环境。过程:是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件工程方法学传统方法学(生命周期方法学或者结构化范型)采用结构化技术完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。传统软件工程方法特点自顶向下,逐步求精,把系统进行从大到小的功能分解把软件生命周期划分为若干个阶段,每阶段任务相对独立,比较

13、简单,便于协作开发生命周期的每个阶段都采用科学的管理技术和良好的开发技术,阶段结束后进行技术和管理评审,评审的主要标准是文档,提高可维护性和软件开发质量。解决问题的切入点是问题中各种事物之间相互作用的过程,将相互作用抽象为逻辑模型。是面向过程的开发方法,把变量和函数按照功能模块进行分类和打包。软件工程方法学面向对象方法学具有四个特点:(1)把对象看成是融合了数据及在数据上的操作的统一的软件构件。(2)把所有对象都划分成类。(3)按照父类和子类的关系,形成类等级。(4)对象间通过消息通信。两种方法学的区别一、切入点不同结构化开发方法:注重的是系统功能,自顶向下,从大到小的功能分解。往往系统需求变

14、化最大就是功能,一段较长的时间内,商业的流程可能已经发生了很大的变化,这样基于功能和过程的方法显然难以维护的,代码重用率可想而知。其观察事物的方法不是本体客体本身,而是对本体客体相互作用过程抽象,转化成逻辑模型。 两种方法学的区别OO方法:其切入点是客观世界的主体和客体,通过封装实现了信息交流的安全。抽象和继承使得事物得以完整表述(静态和动态的)和容易修改新的变化。聚合,关联反映事物间的相互作用和关系,通过关联类管理,这样把事物和事物间的关系分开减少了复杂度,便于维护,大大提高了代码重用率 二、开发过程不同传统:开发过程强调自顶向下顺序完成软件开发的各阶段任务。OO: 开发过程是一个主动地多次

15、迭代的演化过程,面向对象方法在概念和表示方法上的一致性,保证了各项开发活动之间的平滑过渡。两种方法学的区别三、软件重用不同传统:虽然过程和函数也能重用,但重用级别不高,也不太理想。OO: 对象、类、继承等很大程度提高软件产品的可重用性。两种方法学的区别4、软件过程软件过程软件过程模型软件过程软件过程定义一:软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了各项任务的工作步骤。定义二:一系列用于软件产品开发和维护的活动、方法、惯例的集合。如:项目计划、设计文档、代码、测试案例和用户手册等。 软件过程定义了软件开发中运用的方法的顺序、应该交付的文档、为保证软件质量和协调软件变化所需

16、要采取的管理措施,以及标志软件开发各个阶段任务完成的里程碑。软件过程模型瀑布模型快速原型模型增量模型螺旋模型喷泉模型RUP统一过程敏捷过程微软过程瀑布模型瀑布模型规定了生存期各项软件活动,包括需求分析、设计、编码、测试、维护。并且规定它们自上而下、相互衔接的固定次序。瀑布模型的特点1. 阶段间具有顺序性和依赖性这个特点有两重含义: 必须等前一阶段的工作完成之后,才能开始后一阶段的工作; 前一阶段的输出文档就是后一阶段的输入文档。2. 推迟实现的观点瀑布模型在编码之前设置了系统分析和系统设计的各个阶段,分析与设计阶段的基本任务规定,在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理模型,清

17、楚地区分逻辑设计和物理设计,尽可能推迟程序的物理实现,是按照瀑布模型开发软件的一条重要的指导思想。3. 质量保证的观点在瀑布模型的每个阶段都应坚持两个重要做法:(1) 每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。(2) 每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。瀑布模型理想的瀑布模型传统瀑布模型的缺点a.依赖于早期进行的唯一一次需求调查,不能适应需求的变化;b.由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程;c.风险往往迟至后期的开发阶段才显露,因而失去及早纠正的机会。实际的瀑布模型实际瀑布模型实际瀑布模型优缺点优点:可强迫

18、开发人员采用规范的方法;严格规定了每个阶段必须提交的文档;要求每个阶段交出的产品都必须经过质量保证小组的仔细验证。缺点:瀑布模型完全依赖于书面文档,是一种文档驱动的模型,很可能导致最终开发出的软件产品不能真正满足用户的需要。为此,提出了快速模型原型,它的优点是有助于保证用户的真实需要得到满足。快速原型模型所谓快速原型模型就是快速建立起来的可以在计算机上运行的程序,它所完成的功能往往是最终产品所能完成的功能的一个子集,快速原型的第一步是快速建立一个原型,交给用户使用,根据修改意见进行修改,直到用户认为这个原型能做他们需要的工作,开发人员就可以书写规格说明文档,根据这份文档开发出的软件可以满足用户

19、的真实需求。快速原型模型不带反馈环,软件产品的开发基本上是线性顺序开发的。快速原型模型快速原型模型增量模型也称为渐增模型,使用该模型开发软件时,把软件产品看为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。使用增量模型时,必须在开始实现各个构件之前就全部完成需求分析、规格说明和概要设计的工作。第一个增量构件往往实现软件的基本需求,提供最核心的功能。增量模型分批的逐步向用户提交产品。风险更大的增量模型,先做全部的需求分析,逐个做规格说明,但是冒着无法把构件集成到一起的风险。增量模型增量模型增量模型优缺点优点:能在较短时间内向用户提交可完成部分工

20、作的产品;逐步增加产品功能可以使用户有较充裕的时间学习新产品,从而减少一个全新的软件可能给客户组织带来的冲击。缺点:软件体系结构是开放的,这一点做到有很大难度,但也是软件系统的发展趋势;开发人员必须能够协调好构件之间的关系,否则开发出来的产品可能令人不满意。 一旦确定了用户需求之后,就着手拟定第一个构件的规格说明文档,完成后规格说明组将转向第二个构件的规格说明,与此同时设计组开始设计第一个构件用这种方式开发软件,不同的构件将并行地构建,因此有可能加快工程进度。但是,使用这种方法将冒构件无法集成到一起的风险,除非密切地监控整个开发过程,否则整个工程可能毁于一旦。风险更大的增量模型风险更大的增量模

21、型螺旋模型 瀑布模型与快速原型模型相结合,并加入两者所忽略的风险分析所建立的一种软件开发模型。该模型于1998年由美国TRW公司(B.W.Boehm)提出。软件项目风险的大小作为指引软件过程的一个重要因素,引入这一概念有可能使得螺旋模型被看作一种元模型,因为它能包容任何一个开发过程模型。螺旋模型螺旋模型的基本思想是,使用原型及其他方法尽量降低风险。理解这种模型的一个简便方法,是把它看成在每个阶段之间都增加了风险分析过程的快速原型模型。完整的螺旋模型螺旋模型优缺点优点: 对可选方案和约束条件的强调有利于重用已有软件,也有助于把软件质量作为一个目标;减少了过多测试或者过少测试带来的风险;维护是模型的另一个周期,维护和开发之间没有本质区别。缺点: 引入非常严格的风险识别,风险分析,和风险控制,这对风险管理的技能水平提出了很高的要求。除非软件开发

温馨提示

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

评论

0/150

提交评论