软件工程信息学院复习.ppt

上传人:sccc 文档编号:5635249 上传时间:2023-08-04 格式:PPT 页数:79 大小:2.77MB
返回 下载 相关 举报
软件工程信息学院复习.ppt_第1页
第1页 / 共79页
软件工程信息学院复习.ppt_第2页
第2页 / 共79页
软件工程信息学院复习.ppt_第3页
第3页 / 共79页
软件工程信息学院复习.ppt_第4页
第4页 / 共79页
软件工程信息学院复习.ppt_第5页
第5页 / 共79页
点击查看更多>>
资源描述

《软件工程信息学院复习.ppt》由会员分享,可在线阅读,更多相关《软件工程信息学院复习.ppt(79页珍藏版)》请在三一办公上搜索。

1、1/62,软件工程复习,东北大学信息科学与工程学院 高岩College of Information Science&Engineering,NEU,E-Mail:gaoyan_,gaoyan_,2/90,复习资料,课件PPT本复习PPT教材教材P186模拟测试题,3/90,课程总体概览,非重点,重点,4/90,总体要求,软件开发各阶段所使用的图中的各种图形表示软件开发各阶段的主要任务重点在于需求分析和系统设计两个阶段,5/90,1 软件工程概述,软件工程产生原因在软件危机背景下产生,为解决“软件危机”软件工程概念软件工程是以质量为核心,为了经济地开发满足客户需求的软件而研究、建立和应用的系统

2、化的、有规则的、可度量的和可控制的工程原则、方法,涉及到软件过程、项目管理、开发方法、软件复用、软件度量、开发工具,甚至企业文化等各个方面,6/90,2 过程和活动,软件工程以“质量”为核心,质量焦点,过程,方法,CASE 工具,7/90,2 过程和活动,软件开发过程黑箱软件开发过程不像硬件制造过程那样直观、明确人的因素需求变更因素,8/90,2 过程和活动,软件开发过程中(黑箱中)包含的活动基础活动问题定义,需求,规约,设计,实现,软件验证,集成,测试,软件演进/维护,退役辅助性活动软件项目跟踪和控制,正式的技术复审,软件质量保证,软件配置管理,文档编制,复用管理,度量,风险管理,,9/90

3、,2 过程和活动,问题定义一个软件项目开发的开始是软件开发过程当中的一个定义要解决的问题并确定系统范围的活动可行性研究以相对短的时间和相对低的成本来确定给定的问题在其约束条件内是否有解、有几种解以及哪个是最佳解,10/90,2 过程和活动,需求分析确定“做什么、不做什么、做到什么程度”需求:以一种清晰、简洁、一致且无二义性的方式,对一个待开发系统中各个有意义方面的陈述的一个集合需求工程:指应用已证实有效的原理、方法,通过合适的工具和记号,系统地描述出待开发系统及其行为特征和相关约束;通常是一些过程的集合:需求获取(需求引出)、需求分析和编写软件规格说明书(SRS)及验证(包括鉴定和证实),11

4、/90,2 过程和活动,需求分析功能性需求描述了系统应该做什么,即具备的功能或服务。(输入、输出和计算等)非功能性需求 描述了系统必须遵守的约束条件。(响应时间、吞吐量、可靠性、可移植性、可扩展性、易用性、安全性、资源要求、可复用性、技术要求、文化和政策需求、法律需求、道德要求、隐私要求,等等),12/90,2 过程和活动,需求分析描述需求的标准是完整的、正确的、必要的、无歧义的、可行的、可验证的、可追踪的以及被设置了优先级别的,13/90,2 过程和活动,设计研究“如何做”是在系统的约束条件下,为了实现系统的功能性需求和非功能性需求,而找到并描述的一种遵循高质量的通用原则的方法,其交付文档能

5、够指导开发人员实现系统分为总体设计(概要设计、架构设计)和详细设计两个阶段,14/90,2 过程和活动,实施编码:是将软件设计结果转换成用某种程序设计语言书写的程序。单元测试:是把一个模块作为独立的程序单元进行测试,以保证它能够正确执行规定的功能。集成:是指将单独的软件构件合并成一个整体的软件系统。集成分为集成子系统和集成系统两个级别,15/90,2 过程和活动,测试测试:是选择适当的测试用例执行被测程序的过程,其目的在于发现程序错误。缺陷:是系统任一方面(包括需求、设计或代码)的缺点。该缺点会促成或潜在的促成一个或多个失败发生。错误:是指程序中的缺陷所产生的不正确结果。失败:当一个程序不能运

6、行或者其表现不可被接受时称为失败。失败是系统执行中出现的情况。失败源于代码缺陷。单元测试、集成测试、系统测试、(alpha)、(Beta)、验收测试,16/90,2 过程和活动,部署是为确保最终用户可以正常使用软件产品而进行的活动部署单元:由一个工作版本(可执行构件集)、文档(最终用户支持材料和发布说明)和安装工件组成,17/90,3 软件过程模型,如何组织这些活动?,18/90,3 软件过程模型,经典模型线性顺序模型瀑布模型V 模型国防部模型RAD 模型循环(圆形)模型,原型模型边建边改模型增量模型螺旋模型并发模型XP模型RUP模型CBD Assembly Model(构件组装模型)形式化方

7、法模型IDEAL模型,19/90,3 软件过程模型,不好的模型线性顺序模型瀑布模型V模型DoD模型环形模型边建边改模型,20/90,3 软件过程模型,推荐使用的模型RUP模型增量模型螺旋模型XP模型,21/90,3 软件过程模型,RUP(Rational Unified Process)Model,22/90,3 软件过程模型,过程模型的选择RUP适用与任何情况螺旋模型适用于风险较高情况增量模型适用于不断向用户交付产品情况XP模型适用于10人以下小组开发,并且客户随时参与情况RAD模型和构件组装模型适用于有许多复用资源情况,23/90,4 问题定义和可行性研究的方法,可行性研究是以相对短的时间

8、和相对低的成本来确定给定的问题是否有解确定一个项目是否“可行”是本阶段的任务包括市场可行性、政策可行性、竞争可行性、技术可行性、经济可行性、操作可行性、调度可行性、社会可行性,24/90,5 需求分析方法,需求分析确定“做什么、不做什么、做到什么程度”需求包括两大类:功能性需求非功能性需求,25/90,5 需求分析方法,分析原则循序渐进自顶向下,逐层分解少涉实现定义需求属性可验证性可追踪性,26/90,5 需求分析方法,可验证性理由证明所开发的系统符客户和用户的要求的依据 不可验证的需求,仅仅是对需求的一种主观愿望,对于设计和测试等活动而言都是缺乏意义的度量出系统实现的质量,27/90,5 需

9、求分析方法,可验证性示例系统响应速度足够快验收标准:在90%情况下,响应时间不超过3秒,其它情况不超过10秒系统应具有高应可靠性验收标准:在该产品运行的3个月内,未发生崩溃或死机现象系统应界面友好验收标准:管理员经3日培训即可掌握系统使用,28/90,5 需求分析方法,传统分析模型,29/90,5 需求分析方法,传统分析模型功能建模数据流程图(Data Flow Diagram,DFD)行为建模状态变迁图(State-Transition Diagram,STD)Petri网数据建模:E-R图数据字典判定表和判定树,30/90,5 需求分析方法,传统分析模型-数据流程图是一个分层的概念模型目的

10、指明数据在系统中移动时如何被变换描述对数据流进行变换的功能(和子功能)3个层次:总体图,零级图,细节图,31/90,5 需求分析方法,传统分析模型-数据流程图数据流程图的分层表示,32/90,5 需求分析方法,传统分析模型-行为建模状态变迁图Petri网,33/90,5 需求分析方法,面向对象分析模型,34/90,5 需求分析方法,面向对象分析模型用例建模描述功能,使用用例图及用例描述CRC建模对象-关系建模类图对象-行为建模时序图、活动图等,35/90,5 需求分析方法,面向对象分析模型-用例图用例是系统、子系统或类和外部的参与者(Actor)交互的动作序列的说明,包括可选的动作序列和会出现

11、异常的动作序列参与者是在系统之外,透过系统边界与系统进行有意义交互的任何事物,包括人、设备和外部系统等,36/90,5 需求分析方法,面向对象分析模型-用例图图例,参与者,用例,参与者与用例之间的关联,37/90,5 需求分析方法,面向对象分析模型-用例图参与者之间的关系仅有泛化关系,泛化关系,38/90,5 需求分析方法,面向对象分析模型-用例图用例之间关系泛化包含扩展,39/90,5 需求分析方法,面向对象分析模型-用例图用例之间关系泛化,40/90,5 需求分析方法,面向对象分析模型-用例图用例之间关系包含,41/90,5 需求分析方法,面向对象分析模型-用例图用例之间关系扩展,42/9

12、0,5 需求分析方法,面向对象分析模型-CRC建模实际上是一组表示类的标准的索引卡片集合卡片的顶部:类的名字、类型和特征卡片的左边:列出类的责任,卡片的右边:列出协作者,43/90,5 需求分析方法,面向对象分析模型-对象-关系建模识别出系统的候选类,分析这些类之间的关系,以类图形式展现,可由CRC卡片导出类间关系类型泛化(Generalization)关系关联(Association)关系 聚集(Aggregation)和合成(Composition)关系依赖(Dependency)关系,44/90,5 需求分析方法,面向对象分析模型-对象-关系模型泛化(Generalization)关系由

13、一个超类和几个直接子类构成的两层结构,改造为,45/90,5 需求分析方法,面向对象分析模型-对象-关系模型泛化(Generalization)关系利用开闭原则,使用玩家-角色模式,可进一步改造为:,进一步改造为,46/90,5 需求分析方法,面向对象分析模型-对象-关系模型关联(Association)关系是模型元素间的一种语义联系,47/90,5 需求分析方法,面向对象分析模型-对象-关系模型聚集(Aggregation)关系是一种特殊的关联,表示类与类之间整体与部分的关系,48/90,5 需求分析方法,面向对象分析模型-对象-关系模型合成(Composition)关系是一种强聚集,组合关

14、系中的类具有相同的生存期,49/90,5 需求分析方法,面向对象分析模型-对象-关系模型依赖(Dependency)关系是类与类之间较弱的关系一个类向另一个类发送消息一个类是另一个类的某个或某些操作的数据成员类型一个类是另一个类的操作的参数类型,50/90,5 需求分析方法,面向对象分析模型-对象-行为模型时序图,51/90,6 软件设计方法,是在系统的约束条件下(如预算、时间、人力资源、用户软、硬件环境和用户对系统的操作能力等),为了实现系统的功能性需求和非功能性需求,而找到并描述的一种遵循高质量的通用原则的方法,其交付文档能够指导开发人员实现系统。分为总体设计(概要设计、架构设计)和详细设

15、计,52/90,6 软件设计方法,设计的总体原则不应陷入片面性 追踪分析模型 选择合适的技术 适度分解可集成提高抽象层次,可复用 可维护和可扩展的有韧性 一致性交互界面应该友好 设计评审,53/90,6 软件设计方法,软件构架反映系统整体的组织结构和基本特征软件的层次结构模块相互作用的方式全局的、重要的数据变量和数据结构数据库的逻辑结构接口,54/90,6 软件设计方法,详细设计在软件构架的基础上进一步确定如何实现目标系统,具体包括系统的模块(如类及其方法)逻辑的详细设计、系统数据结构的设计、系统数据库结构的设计、系统人-机接口的设计等,55/90,6 软件设计方法,分治思想分治概念:将一个大

16、的系统分解为一系列小模块的过程和方法,是软件工程最重要的思想之一分治不能无限分解,56/90,6 软件设计方法,分治思想分治不能无限分解软件开发成本随模块数量增加变小,但将模块组装起来的集成成本将随模块数量增加变大,软件总成本为两个成本之和模块成本和集成成本两个曲线的交汇点M代表了最低软件总成本,应尽量使系统划分的模块数量在M点所在的邻域内,即最小成本邻域,57/90,6 软件设计方法,抽象思想开闭原则(Open-Closed Principle)即一个软件实体应当对扩展开放,对修改关闭,58/90,6 软件设计方法,抽象思想面向对象软件工程中的抽象抽象类,59/90,6 软件设计方法,抽象思

17、想面向对象软件工程中的抽象接口:接口隔离原则,使用接口,实现接口,60/90,6 软件设计方法,内聚是一个模块内部各部件之间联系紧密程度的度量强调分解时将相关的内容放到一起 一个模块内的各个部件联系越紧越好耦合是模块间相互联系强弱的度量 耦合的强弱取决于模块间传递数据的方式、接口复杂情况以及传递数据的类型各模块之间的耦合越松散越好,61/90,6 软件设计方法,内聚的分类功能内聚顺序内聚通信内聚过程内聚时间内聚实用程序内聚偶然内聚层内聚,内聚程度由高到低,62/90,6 软件设计方法,内聚的分类(续)功能内聚:所有部件处理同一组数据,共同完成单一的功能顺序内聚:各部件之间既有数据联系又有控制联

18、系通信内聚:所有的部件都访问同一组数据,各部件之间只有数据关系,没有控制关系 过程内聚:各部件之间只有控制联系,而没有数据联系,63/90,6 软件设计方法,内聚的分类(续)时间内聚:所有部件之间既无数据联系,也无控制联系,但是部件之间具有时间关系,即把在执行过程中同一阶段内完成执行任务的部件放到一起,而排除其它部件实用程序内聚:部件常常是一些相关的、可重用的实用程序偶然内聚:模块内部的各部件之间没有任何关系层内聚:将相关服务的功能放到一起,成为一层,而将其它内容排出在外,64/90,6 软件设计方法,耦合分类内容耦合公共耦合外部耦合控制耦合印记耦合数据耦合,耦合程度由高到低,65/90,6

19、软件设计方法,降耦方法-示例印记耦合降耦方法如下印记耦合的降耦方法,public class Order public float calcTotalMoney(User user)int userLevel=user.getLevel();int userConsumeScore=user.getConsumeScore();/计算订单总金额,66/90,6 软件设计方法,降耦方法-示例(续)采用接口方法降耦,public interface IConsumeInfo int getLevel();int getConsumeScore();public class User:IConsum

20、eInfo public int getLevel()/获得用户等级代码 public int getLevel()/获得用户等级代码 public class Order public float calcTotalMoney(IConsumeInfo cinfo)int userLevel=cinfo.getLevel();int userConsumeScore=cinfo.getConsumeScore();/计算订单总金额,67/90,6 软件设计方法,降耦方法-示例(续)采用降为数据耦合方法降耦,public class Order public float calcTotalMo

21、ney(int serLevel,int consumeScore)/计算订单总金额,68/90,6 软件设计方法,复用在新的开发项目中使用以前已获得的概念和对象特别为复用目的而设计的软件的过程重复使用为了复用目的而设计的软件的过程可复用资源及其回报,69/90,6 软件设计方法,复用系统中可复用的模块示例登录用验证码控件联动下拉列表框控件,注册时如先选省份,再选城市,70/90,6 软件设计方法,传统设计描述方法,71/90,6 软件设计方法,传统设计描述方法层次图结构图程序流程图伪代码PDL,72/90,6 软件设计方法,面向对象的设计描述方法,73/90,6 软件设计方法,面向对象的设计

22、描述方法包,74/90,6 软件设计方法,面向对象的设计描述方法类图构件图部署图,75/90,6 软件设计方法,人机交互界面设计以用户为中心GUI界面设计指导原则,76/90,7 软件实施与测试方法,测试:是选择适当的测试用例执行被测程序的过程,其目的在于发现程序错误。测试用例:为特定目标开发的测试输入、执行条件和预期结果的集合测试不能表明软件中不存在错误,它只能说明软件中存在错误单元测试、集成测试、系统测试、(alpha)、(Beta)、验收测试,77/90,7 软件实施与测试方法,测试方法白盒测试黑盒测试单元测试集成测试回归测试系统测试测试测试验收测试,78/90,8 软件项目管理方法,软件计划和进度控制制定进度计划的方法关键日期表甘特图里程碑图关键路径法,79/90,8 软件项目管理方法,人力资源管理项目中的主要软件开发角色系统分析师软件构架师实施工程师测试工程师构件设计师数据库设计师界面设计师以及参考双塔结构中的角色,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号