高级软件工程 Advanced Software Engineering

上传人:飞****9 文档编号:163927781 上传时间:2021-01-25 格式:PPT 页数:296 大小:1.50MB
返回 下载 相关 举报
高级软件工程 Advanced Software Engineering_第1页
第1页 / 共296页
高级软件工程 Advanced Software Engineering_第2页
第2页 / 共296页
高级软件工程 Advanced Software Engineering_第3页
第3页 / 共296页
高级软件工程 Advanced Software Engineering_第4页
第4页 / 共296页
高级软件工程 Advanced Software Engineering_第5页
第5页 / 共296页
点击查看更多>>
资源描述

《高级软件工程 Advanced Software Engineering》由会员分享,可在线阅读,更多相关《高级软件工程 Advanced Software Engineering(296页珍藏版)》请在金锄头文库上搜索。

1、高级软件工程,Advanced Software Engineering,2,主要内容,一、软件工程概述 二、软件需求 三、软件设计 四、检验和有效性验证方法 五、软件进化 六、软件项目管理 七、Advanced Topics in Software Engineering,3,一、软件工程概述,软件工程的基本概念 基于计算机的系统工程 软件过程 软件项目管理的基本内容,4,1.什么是软件?,Software=program+data+document Custom software Generic software,Shrink-wrapped software Embedded softw

2、are Safety-critical software COTS(Commercial Off-the-shelf ) I will create a software to update the database. (some software, a piece of software, a software system),5,软件的分类,可以按功能、规模、工作方式、可靠性高低等进行划分 有关软件的词汇 Custom software Generic software Embedded software Safety-critical software COTS(Commercial O

3、ff-the-shelf ) I will create a software to update the database. (some software, a piece of software, a software system),6,2.什么是软件工程?,1968年秋季,NATO(北约)的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。Fritz Bauer在会议上首次提出“软件工程”概念。 软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法进行软件开发和维护的学科。,7,Fritz Bauer:软件工程是为了经济地获得

4、可靠的,能在实际的机器上高效运行的软件而建立和使用的科学的工程原则。 IEEE:软件工程是(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化思想应用于软件开发过程中,(2)上述方法的研究。 软件工程的目标:低成本,高质量,按时交付,8,软件工程的本质特性,关注大型程序的构造 软件工程的中心课题是控制复杂性 软件需求不断变化 旨在提高软件开发的效率 团队合作是软件工程顺利实施的关键 软件必须有效支持它的用户 由一种文化背景的人替另一种文化背景的人创造产品,9,3.软件工程与计算机科学的区别,计算机科学研究的是构成计算机和软件系统基础的有关理论和方法,而软件工程则

5、研究软件制作中的实际问题。 理论上,所有软件工程都应该以计算机科学理论作为坚实的基础,但对付实际的、复杂的问题时需要用软件工程的方法来解决。,10,4.软件工程与系统工程的区别,系统工程的产生比软件工程早。 基于计算机的系统工程,研究由软件起主导作用的、有关负责系统的开发和进化的方方面面,包括硬件开发、系统决策、过程设计、系统实施和软件过程等。,11,5.什么是软件过程?,软件过程是指开发软件产品的一组活动及其结果。 所有的软件过程都包含4项基本的活动:软件描述、软件开发、软件有效性验证和软件进化。 不同的软件过程以不同的方式组织这4项活动,活动的结果会影响活动的进度。 不同的机构可能用不同的

6、过程来制作同一类产品。,12,过程定义的作用,一个过程定义了为达到确定的目标,需要什么人在什么时间以何种方式做何种工作(Goal,Who,When,How,What) Process vs Music score 对于 Customer, User, Developer, Manager,一个广泛适用的过程使得所有涉众更好地理解自己所扮演的角色、更清楚地知道自己及他人在什么时间做什么。 促使过程的有机结合和改善,以获得“最好过程”。 可以使公司内部的培训标准化。 由于过程的可重复性,利于开发进度的安排,利于成本估算。,13,6.什么是软件过程模型?,模型与建模 软件过程模型是从一特定的角度对软

7、件过程的本质描述。 软件过程模型包括构成软件过程的各种活动、软件产品以及所有涉众(stakeholder),14,从不同的角度对软件过程的描述,就得到不同的过程模型种类。如工作流模型、数据流或活动模型、角色/动作模型等。 工作流模型:描述软件过程中各种活动的序列及其输入、输出和相互依赖型。其中的活动皆为人的活动。 数据流或活动模型:把软件过程描述成一组活动,其中每个活动都完成一定的数据转换。该模型中的活动层次低于工作流模型。 角色/动作模型:描述参与软件过程的不同角色及其所负责的活动。,15,通用模型或范型(Paradigm,Methodology),Waterfall Model The W

8、aterfall Model With Maintenance Circle The Waterfall Model With Prototyping The Spiral Model(瀑布模型原型模型) The V Model The Phased Development Model The Incremental and Iterative Model RUP,16,7.软件工程的成本及分布,软件成本分布取决于所采用的软件过程和所开发的软件类型。 一般的成本分布: 描述:设计:开发:集成与测试(15:25:20:40) 需求极高的软件系统的集成与测试成本50% 软件进化的成本 软件维护的成

9、本 基于WEB的电子商务系统的成本模型,17,8.软件工程方法,结构化分析方法(DeMarco,1978, Yourdon E.和Constantine L.等) JSD方法(Jackson,1983) OO方法(Booch,1994;Rumbaugh等, 1991),18,UML(Unified Modeling Language ),1994,OO思想已经贯穿整个软件生存期,具有影响的OOA&D方法达50余种。 UML是一种对软件密集型系统进行可视化、详述、构造和文档化的建模语言,主要用于分析和设计阶段的系统建模。,19,UML 2.0,1994 Booch方法 Rumbaugh OMT

10、Coad/Yourdon Fire Smith 方法 Jacobson OOSE ,1995.10发布 Unified Method 0.8,1996.6发布UML 0.9 不包含过程指导,Rational联合12家公司成立UML组织,形成UML 1.0,1997.1提交给OMG,1997.11.4, OMG 采纳UML 1.1,2002发布UML 2.0,20,统一过程(RUP),RUP的突出特点 用况驱动(系统功能) 以构架为中心(表现形式) 迭代和增量开发(过程实施),21,Tendency for Change when Using OO Paradigm (Jacobson et a

11、l. 1995),22,9.什么是CASE?,Computer-Aided Software Engineering CASE是支持软件工程实施的一系列工具的集合。 低端CASE工具 支持实现和测试的工具 高端CASE工具 支持分析和设计的工具,23,10.优良软件的属性,功能属性 非功能属性,24,11.软件工程所面临的主要问题,遗留系统的挑战 多样性的挑战 交付上的挑战,25,软件工程总体面临的困难与风险,复杂性与大量的细节(火星探测器的失败) 技术的不确定性(技术的发展与开发人员对技术的理解程度都不同) 由于交流障碍而引起的需求不确定性 需求是持续变化的 不断的修改所带来的错误使得软件退

12、化 人为和市场的风险 软件费用、可靠性、生产率、重用问题难以解决,26,12.职业和道德上的责任,软件工程是应该具有良好的职业道德 无论是否签署了保密协议都严格保守雇主或客户的机密。 实事求是地表述自己的工作能力,不接受超出自己能力的工作。 应知晓控制专利权、著作权等知识产权使用的法律。 避免计算机滥用。 ACM,IEEE、英国计算机协会等组织颁布了职业行为准则和职业道德准则(只涉及基本的道德行为),27,软件工程人员应当遵守的原则(IEEE /ACM, 1999,节选),公众感软件工程人员应始终与公众利益保持一致。 客户和雇主软件工程人员应当在与公众利益保持一致的前提下,满足客户和雇主的最大

13、利益。 产品应保证其产品及其附件达到尽可能高的行业标准。 判断力软件工程人员应具有公正和独立的职业判断力。 管理软件工程管理者和领导者应拥护并倡导合乎道德的适合软件开发和维护的管理办法。 职业感应弘扬职业正义感和荣誉感,尊重社会公众利益。 同事软件工程人员应公平对待和协助每位同事。 自己软件工程人员应毕生学习专业知识,倡导合乎职业道德的职业活动方式。,28,一、软件工程概述,软件工程的基本概念 基于计算机的系统工程 软件过程 软件项目管理的基本内容,29,1.系统总体特性,功能特性 非功能特性,如可靠性、安全性、保密性等。 与系统总体可靠性紧密关联的3个方面: 硬件可靠性 软件可靠性(在第16

14、、17章讨论) 操作可靠性,30,2.系统及其环境,系统都是在一定的环境中存在的。 系统环境必将影响系统的功能和性能。 环境包含一系列相互作用的其它系统,有时,环境可能被看作是一个独立的系统。 系统工程师一定要了解系统环境 在许多情况下,系统的目的就是要改变环境。 一个系统的功能要受到环境变化的影响,这种影响可能很难估计。,31,3.系统建模,系统建模作为系统需求和设计活动的一部分,描述组成系统的组件以及组件之间的关系(系统体系结构) 系统体系结构通常以方块图来描述。 一个系统体系结构可以以功能为单位划分成子系统或功能组件,而不必关心由硬件还是软件实现。,32,功能组件可以分为六类: 传感器组

15、件:收集来自系统环境的信息。 执行机构组件:引起一些系统环境的变化。 计算组件:给定输入,执行计算并产生输出。 通信组件:实现系统组件之间的彼此通信。 调度组件:协调组件间的操作。 接口组件:将一个组件中的表示转换成另一个组件中的表示。,33,4.系统工程过程,需求定义,系统设计,组件开发,系统集成,系统安装,系统进化,系统退役,34,系统需求定义注重三种类型的需求: 抽象的功能需求 系统特性 系统一定不能具有的性质 系统设计所包括的活动有: 分割需求(通常有多种分割方法,可以产生不同的方案) 识别子系统 为子系统分配需求(通常由于外购COTS子系统带来的限制而需要修改需求) 描述子系统的功能

16、 定义子系统的接口,35,子系统开发所常见的问题: 通常可以并行开发不同的子系统 一些超出子系统范围的修改经常发生,但是对已经实现的硬件工程的修改往往带来非常昂贵的代价,这时修改往往落在软件上(软件的固有柔性,flexible),说明软件需求的变化更大更频繁。 系统集成最好采取增量式过程,其理由是: 子系统的开发时间通常无法预计 增量式集成可以减少错误定位的成本(错误定位可能引起不同子系统的承包商之间的争论,解决问题的谈判须花费时日),36,5.系统采购,系统获得的过程包括选择最好的购买方式和最佳的供货商。 在做出采购决策之前,一些相关的系统描述和体系结构设计必须完成,以便确定哪些子系统可以通过直接购买,而不必或避免重新开发。 通常单个机构无法完成大型复杂系统所有组件的设计、制造和测试。此时,客户必须选择和确定主承包商和子承包商。,37,承包商与子承包商模型,38,一、软件工程概述,软件工程的基本概念 基于计算机的系统工程 软件过程 软件项目管理的基本内容,39,1.软件过程模型,一个软件过程模型是软件过程的一个抽象表示。 一般使用过程模型区分或解释不同的软

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号