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

上传人:本田雅阁 文档编号:2641174 上传时间:2019-04-28 格式:PPT 页数:79 大小:2.77MB
返回 下载 相关 举报
软件工程信息学院复习.ppt_第1页
第1页 / 共79页
软件工程信息学院复习.ppt_第2页
第2页 / 共79页
软件工程信息学院复习.ppt_第3页
第3页 / 共79页
亲,该文档总共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 过程和活动,软件开发过程中(黑箱中)包含的活动 基础活动 问题定义,需求,规约,设计,实现, 软件验证,集成,测试,软件演进/维护,退役 辅助性活动 软件项目跟踪和控制,正式的技术复审, 软件质量保证,软件配置管理,

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

4、和编写软件规格说明书(SRS)及验证(包括鉴定和证实),11/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 模型 循环(圆形)模型,原型模型 边

7、建边改模型 增量模型 螺旋模型 并发模型 XP模型 RUP模型 CBD Assembly Model(构件组装模型) 形式化方法模型 IDEAL模型,19/90,3 软件过程模型,不好的模型 线性顺序模型 瀑布模型 V模型 DoD模型 环形模型 边建边改模型,20/90,3 软件过程模型,推荐使用的模型 RUP模型 增量模型 螺旋模型 XP模型,21/90,3 软件过程模型,RUP(Rational Unified Process) Model,22/90,3 软件过程模型,过程模型的选择 RUP适用与任何情况 螺旋模型适用于风险较高情况 增量模型适用于不断向用户交付产品情况 XP模型适用于1

8、0人以下小组开发,并且客户随时参与情况 RAD模型和构件组装模型适用于有许多复用资源情况,23/90,4 问题定义和可行性研究的方法,可行性研究 是以相对短的时间和相对低的成本来确定给定的问题是否有解 确定一个项目是否“可行”是本阶段的任务 包括 市场可行性、政策可行性、竞争可行性、技术可行性、经济可行性、操作可行性、调度可行性、社会可行性,24/90,5 需求分析方法,需求分析 确定“做什么、不做什么、做到什么程度” 需求包括两大类: 功能性需求 非功能性需求,25/90,5 需求分析方法,分析原则 循序渐进 自顶向下,逐层分解 少涉实现 定义需求属性 可验证性 可追踪性 ,26/90,5

9、需求分析方法,可验证性 理由 证明所开发的系统符客户和用户的要求的依据 不可验证的需求,仅仅是对需求的一种主观愿望,对于设计和测试等活动而言都是缺乏意义的 度量出系统实现的质量,27/90,5 需求分析方法,可验证性 示例 系统响应速度足够快 验收标准:在90%情况下,响应时间不超过3秒,其它情况不超过10秒 系统应具有高应可靠性 验收标准:在该产品运行的3个月内,未发生崩溃或死机现象 系统应界面友好 验收标准:管理员经3日培训即可掌握系统使用,28/90,5 需求分析方法,传统分析模型,29/90,5 需求分析方法,传统分析模型 功能建模 数据流程图(Data Flow Diagram, D

10、FD) 行为建模 状态变迁图(State-Transition Diagram, STD) Petri网 数据建模:E-R图 数据字典 判定表和判定树,30/90,5 需求分析方法,传统分析模型-数据流程图 是一个分层的概念模型 目的 指明数据在系统中移动时如何被变换 描述对数据流进行变换的功能(和子功能) 3个层次:总体图,零级图,细节图,31/90,5 需求分析方法,传统分析模型-数据流程图 数据流程图的分层表示,32/90,5 需求分析方法,传统分析模型-行为建模 状态变迁图 Petri网,33/90,5 需求分析方法,面向对象分析模型,34/90,5 需求分析方法,面向对象分析模型 用

11、例建模 描述功能,使用用例图及用例描述 CRC建模 对象-关系建模 类图 对象-行为建模 时序图、活动图等,35/90,5 需求分析方法,面向对象分析模型-用例图 用例 是系统、子系统或类和外部的参与者(Actor)交互的动作序列的说明,包括可选的动作序列和会出现异常的动作序列 参与者 是在系统之外,透过系统边界与系统进行有意义交互的任何事物,包括人、设备和外部系统等,36/90,5 需求分析方法,面向对象分析模型-用例图 图例,参与者,用例,参与者与用例之间的关联,37/90,5 需求分析方法,面向对象分析模型-用例图 参与者之间的关系 仅有泛化关系,泛化关系,38/90,5 需求分析方法,

12、面向对象分析模型-用例图 用例之间关系 泛化 包含 扩展,39/90,5 需求分析方法,面向对象分析模型-用例图 用例之间关系 泛化,40/90,5 需求分析方法,面向对象分析模型-用例图 用例之间关系 包含,41/90,5 需求分析方法,面向对象分析模型-用例图 用例之间关系 扩展,42/90,5 需求分析方法,面向对象分析模型-CRC建模 实际上是一组表示类的标准的索引卡片集合 卡片的顶部:类的名字、类型和特征 卡片的左边:列出类的责任, 卡片的右边:列出协作者,43/90,5 需求分析方法,面向对象分析模型-对象-关系建模 识别出系统的候选类,分析这些类之间的关系,以类图形式展现,可由C

13、RC卡片导出 类间关系类型 泛化(Generalization)关系 关联(Association)关系 聚集(Aggregation)和合成(Composition)关系 依赖(Dependency)关系,44/90,5 需求分析方法,面向对象分析模型-对象-关系模型 泛化(Generalization)关系 由一个超类和几个直接子类构成的两层结构,改造为,45/90,5 需求分析方法,面向对象分析模型-对象-关系模型 泛化(Generalization)关系 利用开闭原则,使用玩家-角色模式,可进一步改造为:,进一步 改造为,46/90,5 需求分析方法,面向对象分析模型-对象-关系模型

14、关联(Association)关系 是模型元素间的一种语义联系,47/90,5 需求分析方法,面向对象分析模型-对象-关系模型 聚集(Aggregation)关系 是一种特殊的关联,表示类与类之间整体与部分的关系,48/90,5 需求分析方法,面向对象分析模型-对象-关系模型 合成(Composition)关系 是一种强聚集,组合关系中的类具有相同的生存期,49/90,5 需求分析方法,面向对象分析模型-对象-关系模型 依赖(Dependency)关系 是类与类之间较弱的关系 一个类向另一个类发送消息 一个类是另一个类的某个或某些操作的数据成员类型 一个类是另一个类的操作的参数类型,50/90

15、,5 需求分析方法,面向对象分析模型-对象-行为模型 时序图,51/90,6 软件设计方法,是在系统的约束条件下(如预算、时间、人力资源、用户软、硬件环境和用户对系统的操作能力等),为了实现系统的功能性需求和非功能性需求,而找到并描述的一种遵循高质量的通用原则的方法,其交付文档能够指导开发人员实现系统。 分为总体设计(概要设计、架构设计)和详细设计,52/90,6 软件设计方法,设计的总体原则 不应陷入片面性 追踪分析模型 选择合适的技术 适度分解 可集成 提高抽象层次,可复用 可维护和可扩展的 有韧性 一致性 交互界面应该友好 设计评审,53/90,6 软件设计方法,软件构架 反映系统整体的

16、组织结构和基本特征 软件的层次结构 模块相互作用的方式 全局的、重要的数据变量和数据结构 数据库的逻辑结构 接口,54/90,6 软件设计方法,详细设计 在软件构架的基础上进一步确定如何实现目标系统,具体包括系统的模块(如类及其方法)逻辑的详细设计、系统数据结构的设计、系统数据库结构的设计、系统人-机接口的设计等,55/90,6 软件设计方法,分治思想 分治概念:将一个大的系统分解为一系列小模块的过程和方法,是软件工程最重要的思想之一 分治不能无限分解,56/90,6 软件设计方法,分治思想 分治不能无限分解 软件开发成本随模块数量增加变小,但将模块组装起来的集成成本将随模块数量增加变大,软件

17、总成本为两个成本之和 模块成本和集成成本两个曲线的交汇点M代表了最低软件总成本,应尽量使系统划分的模块数量在M点所在的邻域内,即最小成本邻域,57/90,6 软件设计方法,抽象思想 开闭原则(Open-Closed Principle) 即一个软件实体应当对扩展开放,对修改关闭,58/90,6 软件设计方法,抽象思想 面向对象软件工程中的抽象 抽象类,59/90,6 软件设计方法,抽象思想 面向对象软件工程中的抽象 接口:接口隔离原则,使用接口,实现接口,60/90,6 软件设计方法,内聚 是一个模块内部各部件之间联系紧密程度的度量 强调分解时将相关的内容放到一起 一个模块内的各个部件联系越紧

18、越好 耦合 是模块间相互联系强弱的度量 耦合的强弱取决于模块间传递数据的方式、接口复杂情况以及传递数据的类型 各模块之间的耦合越松散越好,61/90,6 软件设计方法,内聚的分类 功能内聚 顺序内聚 通信内聚 过程内聚 时间内聚 实用程序内聚 偶然内聚 层内聚,内聚程度由高到低,62/90,6 软件设计方法,内聚的分类(续) 功能内聚:所有部件处理同一组数据,共同完成单一的功能 顺序内聚:各部件之间既有数据联系又有控制联系 通信内聚:所有的部件都访问同一组数据,各部件之间只有数据关系,没有控制关系 过程内聚:各部件之间只有控制联系,而没有数据联系,63/90,6 软件设计方法,内聚的分类(续)

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

20、Money(User user) int userLevel = user.getLevel(); int userConsumeScore= user.getConsumeScore(); /计算订单总金额 ,66/90,6 软件设计方法,降耦方法-示例(续) 采用接口方法降耦,public interface IConsumeInfo int getLevel( ); int getConsumeScore( ); public class User: IConsumeInfo public int getLevel( ) /获得用户等级代码 public int getLevel( )

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

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

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

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1