清华大学郑人杰殷仁昆教授软件工程讲义01

上传人:yx****d 文档编号:242983376 上传时间:2024-09-13 格式:PPT 页数:38 大小:152.50KB
返回 下载 相关 举报
清华大学郑人杰殷仁昆教授软件工程讲义01_第1页
第1页 / 共38页
清华大学郑人杰殷仁昆教授软件工程讲义01_第2页
第2页 / 共38页
清华大学郑人杰殷仁昆教授软件工程讲义01_第3页
第3页 / 共38页
点击查看更多>>
资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,软件工程,第一章 软件工程概念,1,提示:设计与建模要点,结构化分析建模:数据流图、实体关系图、状态迁移图、数据字典,结构化设计建模:数据流图转换为系统结构图,结构化程序设计:程序流程图、,N-S,图、,PAD,程序环路复杂性计算,测试用例设计:逻辑覆盖、循环测试、基本路径覆盖、因果图,可靠性分析:估算测试前程序中潜在错误,OMT,建模:对象模型、动态模型(状态图、事件追踪图),UML,建模:用例图、类图、顺序图、活动图,2,软件的概念,软件的定义软件由计算机程序、数据及文档组成。,软件与硬件、数据库、人、过程等共同构成计算机系统。,软件按功能分类:应用软件、系统软件、支撑软件。,软件的发展经历了三个阶段:程序设计阶段、程序系统阶段、软件工程阶段。,3,软件工程概念的出现源自软件危机。,软件危机的主要特征,软件价格在整个项目投入中的比例不断升高,;,软件开发成本严重超标,;,软件开发周期大大超过规定日期,;,软件质量难于保证;,软件修改、维护困难,;,失败的根本原因在于:开发人员写出的东西达不到用户要求,(,人的问题、技术问题,),4,1968,年德国人,Bauer,在北大西洋公约组织会议上的定义:,建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法,。,1983,年,IEEE,的软件工程定义:,软件工程是开发,运行,维护和修复软件的系统方法,。,1993,年,IEEE,的一个更加综合的定义:,将系统化的,规范的,可度量的方法应用于软件的开发,运行和维护的过程,即将工程化应用于软件中,。,软件工程定义,5,软件工程框架,可,用,性,性,性,确,正,合,算,选取适宜的开发模型,采用合适的设计方法,提供高质量的工程支持,重视软件工程的管理,基本过程,支,持,过,程,组,织,过,程,目标,过程,原则,6,软件工程框架给出了软件工程三个主要方面。,软件工程目标,包括可用性、正确性和合算性,规定了软件工程实践的结果(即软件)应具有的基本性质;,软件工程过程,包含的基本活动有需求、分析与设计、实现、确认与测试、维护与支持;,软件工程的四条原则,-采用适宜的开发模型,使用恰当的开发方法,提供高质量的工程支持,实施有效的工程管理,从四个方面指导每一项工程的活动,以实现软件工程目标。,7,软件工程的知识结构,2001,年,5,月,ISO/IEC JTC 1,发布了,SWEBOK,指南,V0.95,(,试用版),,即,Guide to the Software Engineering Body of Knowledge,。,SWEBOK,把软件工程学科的主体知识分为,10,个知识领域这,10,个领域包括:软件需求,软件设计,软件构造,软件测试,软件维护,软件配置管理,软件工程管理,软件工程过程,软件工程工具和方法,软件质量。,8,软件工程的知识结构,2001,年,5,月,ISO/IEC JTC 1,发布了, SWEBOK,指南,V0.95,(,试用版),,即,G,uide to the,S,oftware,E,ngineering,B,ody,o,f,K,nowledge,。,SWEBOK,把软件工程学科的主体知识分为,10,个知识领域。这,10,个领域包括:,软件需求,软件设计,软件构造,软件测试,软件维护,软件配置管理,软件工程管理,软件工程过程,软件工程工具和方法,软件质量,9,ISO 9000定义:,软件工程过程是把输入转化为输出的一组彼此相关的资源和活动,。,从软件开发的观点看,它就是使用适当的资源(包括人员、硬软件工具、时间等),为开发软件进行的一组开发活动,在过程结束时将输入(用户要求)转化为输出(软件产品)。,软件工程过程与软件生存周期,10,软件工程过程定义了: 方法使用的顺序、要求交付的文档资料、为保证质量和适应变化所需要的管理、软件开发各个阶段完成的里程碑。,软件工程过程包含四种基本的过程活动:,plan,:,软件规格说明,do,:,软件开发,check,:,软件确认,action,:,软件演进,11,软件生存周期包含三个阶段:软件定义、软件开发及软件运行维护。,软件生存周期模型是软件工程思想的具体化,是跨越软件生存周期的系统开发、运行、维护所实施的全部活动和任务的过程框架。,常用的软件生存周期模型有瀑布模型,演化模型,螺旋模型,增量模型,喷泉模型,快速应用开发( RAD )模型。,12,瀑布模型,各项活动按自上而下,相互衔接的固定次序,如同瀑布逐级下落,每项活动均处于一个质量环(输入-处理-输出-评审)中。,阶段间具有,顺序性,和,依赖性,。,推迟实现的观点。,每个阶段必须完成规定的文档;每个阶段结束前完成文档审查。,13,需求定义,系统与软件设计,集成与系统测试,实现与单元测试,运行与维护,14,演化模型,演化模型是,迭代,的,软件必须经过不断,演化,才能完善。,演化模型先开发一个“原型”软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得满意的软件产品。,业务和产品需求在变化中,采用线性开发方式是不实际的。,快速实现和提交一个有限的版本,可以应付市场竞争的压力。,15,需求的采集,与细化,客户评价原型,快速设计,建造原型,加工原型,产生样品,停止,开始,16,螺旋模型,螺旋模型将瀑布模型与演化模型结合起来,并且加入两种模型均忽略了的,风险分析,。,螺旋模型沿着螺线旋转,自内向外每旋转一圈便开发出更完善的一个新版本。,制定计划,风险分析,实施工程,客户评估,17,决定目标、,方案和限制,评价方案,识别风险,弱化风险,开发、验证、,下一级产品,计划下一阶段,集成,测试,18,增量模型,增量模型是,迭代,和,演进,的过程。,增量模型把软件产品分解成一系列的增量构件,在增量开发迭代中逐步加入。,每个构件由多个相互作用的模块构成,并且能够完成特定的功能。,早先完成的增量可以为后期的增量提供服务。,增量开发方法的新演进版本叫做 极限程序设计(,eXtreme Programming,) 。,19,定义基,本需求,将需求对应到各增量,设计系统架构,开发其中一个增量,检验和确认该,增量,将增量集成到系统中,确认集成后的系统,20,日历时间,分析,增量1,增量1,交付,设计,编码,测试,分析,增量2,增量2,交付,设计,编码,测试,分析,增量3,增量3,交付,设计,编码,测试,分析,增量4,增量4,交付,设计,编码,测试,系统和信息工程,21,喷泉模型,体现了,迭代,和,无间隙,的特性。,系统某个部分常常重复工作多次,相关对象在每次迭代中随之加入演进的软件成分。,无间隙是指在各项开发活动,即分析、设计和编码之间不存在明显的边界。,喷泉模型是对象驱动的过程。,22,需求阶段,分析阶段,设计阶段,编程阶段,集成与测试阶段,维护与演进阶段,23,变换模型,变换模型是一种基于形式化规格说明语言及程序变换的软件开发模型。,它采用形式化的软件开发方法,对形式化的软件规格说明进行一系列自动的或半自动的程序变换,最终映射成为计算机系统能够接受的程序系统。,多步程序变换过程的重要性质是:每一步程序变换的正确性仅与该步变换所依据的规范 M,i,以及对变换后的假设 M,i+1,有关。,24,软件需求,形式化说,明 (M,0,),软件设计,形式化说,明 (M,1,),(M,2,),(M,n,),模型检查,程序变换,程序变换,程序变换,在此意义上,变换步骤独立于其他变换步骤。这称为变换的独立性。,该模型只适合于软件的形式化开发方法;需要严格的数学理论和形式化技术支持;需要一整套开发环境(如程序变换工具、定理证明工具等)的支持。,25,基于第四代技术的模型,第四代语言 (4GL) 是在大型数据库管理系统的基础上发展起来的,是一种面向结果的非过程性语言。它独立于具体的处理机,有丰富的软件工具支持,能统一利用和管理各种数据资源并能适应不同水平用户的需要。,以4GL为核心的软件开发技术成为第四代技术(4GT),采用4GT的软件开发模型如图。,软件开发人员在定义软件需求,给出需求规格说明之后,4GT工具可将该需求规格说明自动,26,转换为程序代码。这大大减少了分析、设计、编码和测试的时间。,以,4GL,为核心的软件开发技术成为第四代技术,(4GT),,,采用,4GT,的软件开发模型如图。,收集需求,“设计”策略,用“4GL”实现,测试,27,快速应用开发( RAD )模型,快速应用开发模型是一种增量开发模型,该模型开发软件大量使用了可复用的构件。,每一个增量的开发经历五个阶段:,业务建模,对业务功能的信息流建模。,数据建模,对业务的数据对象和关系建模。,过程建模,描述完成业务功能的数据变换。,应用生成,应用构件和自动化工具建造。,测试与反复,对新构件和接口进行测试。,28,业务建模,数据建模,过程建模,应用生成,测试及反复,小组1#,业务建模,数据建模,过程建模,应用生成,测试及反复,小组2#,业务建模,数据建模,过程建模,应用生成,测试及反复,小组3#,60,90,天,29,软件开发范型(Paradigm),范型又称为,风范,。通常认为范型就是开发模型(Model)或开发模式(Pattern),实际上它与方法(Methodology)一样,都被视为一种开发技术。范型支配了设计方法、编码语言、测试和检验技术的选择。,过程性范型,把软件视为处理流,定义成由一系列步骤构成的算法。每一步骤都是带有输入和输出的一个过程,把这些步骤串联在一起可产生贯通于整个程序的控制流。,30,面向对象范型,把标识和模型化问题领域中的实体做为系统开发的起点,面向对象系统中的对象是数据抽象与过程抽象的综合。,逻辑性范型,是基于规则的,它把有关问题的知识分解成一组具体规则(如prolog语言)。,面向进程范型,把一个问题分解成独立执行的模块。让不只一个程序同时运行。这些进程互相配合,解决问题。,面向存取范型,是一种在构造用户界面方面很有用的技术。,31,函数型范型,是基于规则的,它把有关问题的知识分解成一组具体规则,用语言的“if_then”等结构来表示这些规则。,说明性范型,。,每种开发范型都有它的支持者和用户:,每种开发范型都特别适合于某种类型的问题或子问题;,每种开发范型都用不同的方式考虑问题;,每种开发范型都使用不同的方法来分解问题,32,每种开发范型都导致不同种类的块、过程、产生规则。,系统开发时通常把大型问题分解成一组子问题。对于每个子问题采用适当的软件开发范型。,33,软件工程原则有:,抽象与自顶向下、逐层细化,采用分层抽象的方法,有效控制软件开发的复杂性。,模块化,把问题分解为若干较小的较易解决的模块,有助于信息隐蔽和抽象。,信息隐蔽和数据封装,将模块中的软件设计决策封装在模块内部,使得模块实现与使用分离,有助于控制修改局部化。,抽象与自顶向下、逐层细化,软件工程原则,34,局部化,在一个物理模块内集中逻辑上相互关联的计算机资源,促使聚合具有特定目的的事物。,一致性,整个软件系统的模块使用一致的设计策略、编程风格,保持程序内部接口的一致性、软件与硬件接口的一致性、系统规格说明与系统行为的一致性。,完备性,软件系统中不丢失任何成分。,可验证性,系统分解应当遵循易检查、易测试和易评审的原则,以保证系统的正确性。,35,软件工程的基本原理有:,按软件生存期分阶段制定计划并认真实施,把整个软件开发过程视为一项工程,把工程划分为若干阶段,分别制定每个阶段的计划,逐个实施。,坚持进行阶段评审,前一阶段的结果将成为下一阶段的依据。坚持阶段的评审才能保证错误不传播到下一阶段。,36,坚持严格的产品控制,将影响软件质量的因素在整个过程中置于严格控制之下。,使用现代程序设计技术,先进的程序设计技术带来的是生产率和质量的提高。使用合适的开发模式和工具可以有效地建立功能强大的系统。,明确责任,,使得工作结果能够得到清楚的审查,开发组织严格划分责任并制定产品的标准,使得每个成员的工作有据可依,确保产品的质量。,37,用人少而精,开发组织不在人多,在于每个人的技能适合要求。同时用人少而精,可减少沟通路径,提高生产率。,不断改进开发过程,在开发的过程中不断总结经验,改进开发的组织和过程,有效地通过过程质量的改进提高软件产品的质量。,38,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!