首页 软件工程期未复习-张海藩版教材

软件工程期未复习-张海藩版教材

举报
开通vip

软件工程期未复习-张海藩版教材 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 第第第 1章章章 软软软件件件工工工程程程学学学概概概述述述 砱砮 1968年砬北大西洋公约组织→正式提出砐软件工程砑 砲砮 编写程序占软件开发全部工作的10%− 20% 砳砮 测试工作占软件开发全部工作的10%− 20% 破砮 软件配置主要包括砺数据、文档和程序 砵砮 概括地说软件工程是指导软件开开开发发发和维维维护护护的一门工工工程程程学学学科科科。 采用工程的概念、原理、技术和方法来开发与维护软件砬把经 过时间考验而证明正确的管理...

软件工程期未复习-张海藩版教材
硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 第第第 1章章章 软软软件件件工工工程程程学学学概概概述述述 砱砮 1968年砬北大西洋公约组织→正式提出砐软件工程砑 砲砮 编写程序占软件开发全部工作的10%− 20% 砳砮 测试工作占软件开发全部工作的10%− 20% 破砮 软件配置主要包括砺数据、文档和程序 砵砮 概括地说软件工程是指导软件开开开发发发和维维维护护护的一门工工工程程程学学学科科科。 采用工程的概念、原理、技术和方法来开发与维护软件砬把经 过时间考验而证明正确的管理技术和当前能够得到的最好的 技术方法结合起来砬以经济地开发出高质量的软件并有效地维 护它砬这就是软件工程。 砶砮 软件工程方法学包括砺方法、工具和过程 • 方法砺完成软件开发的各项任务的技术方法 • 工具砺提供的自动或半自动的软件工程支撑环境 • 过程砺为了获得高质量的软件所需完成的一系列任务的框 架砬它规定了完成各项任务的工作步聚 砷砮 软件工程方法学 { 传统方法学砺抽象→具体 面向对象方法学砺迭代 砸砮 软件生命周期  砱砮软件定义  砱砩问题定义 砲砩可行性研究 砳砩需求分析 砲砮软件开发  砱砩总体 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 砲砩详细设计 砳砩编码和单元测试 破砩综合测试 砳砮运行维护 砹砮 软件工程  瀑布模型砨顺序性、依赖性砩 快速原型模型 增量模型 螺旋模型砨风险分析砫快速原型砩 喷泉模型砨面向对象、迭代、无缝砩 砱砰砮 硒硡硴硩硯确硡硬统一过程砨硒硕硐砩砺砶个核心过程工作流程砫砳个核心支 持工作流程砮P24 砱砱砮 敏捷过程 最重要−→ 极限编程 第第第 2章章章 可可可行行行性性性研研研究究究 砱砮 可行性研究占成本只是预期工程总成本的5%− 10% 砲砮 系统流程图−→物理系统 砳砮 数据流图砫数据字典−→逻辑模型 数据流图  源点砯终点 处理 数据流 数据存储 数据字典  数据流分量 处理 数据流 数据存储 破砮 定义数据方法砺对数据自顶向下地分解砬当分解到不需要进一步 定义砬每个和工程有关的人也都清楚其含义的元素时砬这时分解 过程就结束了。 砵砮 教椐孛典包含名字、别名、描述、定义、位置。 名字砺定货报表 别名砺定货信息 描述砺每天一次送给采购员的需要定货的零件表 定义砺定货报表砽零件编号砫零件名称砮 砮 砮 位置砺输出到打印机 砶砮 典型环境下各开发阶段所需要使用的人力百分比 任务 人力砥 可行性分析 砵 需求分析 砱砰 设计 砲砵 编码和单元测试 砲砰 综合测试 破砰 总计 砱砰砰 第第第 3章章章 需需需求求求分分分析析析 砱砮 需求分析建立砳种模型  数据模型砨硅硒图砩功能模型砨数据流图砩 行为模型砨状态图砩 数据模型砨硅硒图砩  数据对象 数据对象的属性 数据对象间相互连接的关系  砱砺砱砱砺硎 硍砺硎 行为模型砨状态图砩  初态砨只能有一个砩中间状态砨状态名砬状态变量砬活动表砩 终态砨有砰至多个砩 砲砮 活活活动动动表表表 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 砺事件名砨硥确硴硲硹砬硥硸硩硴砬硤硯砩砯动作表达式 砳砮 范式  第一范式砨砱硎硆砩砖不能表中有表 第二范式砨砲硎硆砩砖不能局部依赖 第三范式砨砳硎硆砩砖不能传递依赖 破砮 其他图型工具 � 层次方框图砖树形结构 � 硗硡硲确硩硥硲图砖层次结构 � 硉硐硏图砖输入、处理、输出图 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 ⊕层次方框图 ⊕硗硡硲确硩硥硲图砺 . . .  . . .  . . .. . .{ . . . . . . . . . ⊕ 硉硐硏图 砵砮 验证软件需求  一致性 方法←− 人工技术或软件工具 完整性 方法←− 原型系统 现实性 方法←− 仿真或性能模拟技术 有效性 方法←− 快速原型系统 第第第 4章章章 形形形式式式化化化说说 说明 关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书 明明技技技术术术 砱砮 软件工程使用的方法  非形式化砨如砺自然语言描述砩半形式化砨如砺数据流图、硅砭硒图砩 形式化砨如砺有坚实的数学基础砩 非形式化缺点 ♠ 矛盾 ♠ 二义性 ♠ 含糊性 ♠ 不完整性 ♠ 抽象层次混乱 形式化优点 ♠ 简洁准确地描述事物 ♠ 可在不同的软件工程活动之间平滑地过渡 ♠ 提供了高层确认的手段 砲砮 有穷状态机砨一种形式化方法砩 P78保险箱例子 砳砮 书本例子砺电梯 砨硡砩 硅硂硏硆硆砨e, f砩砫硅硂硐砨e, f砩砫确硯硴 硖砨e, f砩⇒硅硂硏硎砨e, f砩 如果电梯按钮砨e, f砩处于关闭状态〔当前状态〕砬而且 电梯按钮砨e, f砩被按下〔事件〕砬而且电梯硥不在硦层〔谓 词〕砬则该电梯按钮打开发光〔下个状态〕。 砨硢砩 硅硂硏硎砨e, f砩砫硅硁硆砨e, f砩⇒硅硂硏硆硆砨e, f砩 如果电梯到达f层砬而且电梯按钮是打开的砬于是它就会熄 灭。 砨硣砩 硆硂硏硆硆砨d, f砩砫硆硂硐砨d, f砩砫确硯硴 硓砨硤砬砱· · ·确砬硦砩 ⇒硆硂硏硎砨d, f砩 硆硂硏硎砨d, f砩砫硆硁硆砨砱· · ·确砬硦砩砫硓砨硤砬砱· · ·确砬硦砩 ⇒硆硂硏硆硆砨d, f砩 如果在f层请求电梯向丄方向运动的楼层按钮处于关闭 状态砬现在该按钮被按下砬并且当时没有正停在f层准备 向d方向移动的电梯砬则该楼层按钮打开。 如果楼层按钮已经打开砬且至少有一部电梯到达f层砬该部 电梯将朝d方向运动砬则按钮将关闭。 破砮 硐硥硴硲硩网  位置P 转换T 输入函数 I 输出函数O 通常砬当每个输入位置所拥有的权标数大于等于从该位置到转 换的线数时砬就允许转换。 禁止线是用一个小圆圈而不是用箭头标记的输入线。通常砬当 每个输入线上至少有一个权标砬而禁止线上没有权标的时候砬相 应的转换才是允许的。 砵砮 硚规则说明 操作的谓词部分砬包含了一组调用操作的前置条件砬以及操作完 全结束后的后置条件。如果前置条件成立砬则操作执行完成后 可得到后置条件。但是砬如果在前置条件不成立的情况下调用 该操作砬则不能得到指定的结果(因此结果无法预测)。 砶砮 判断一个字符串是否为浮点、二进制数砬用有穷状态机进行说 明如下 第第第 5章章章 总总总体体体设设设计计计 砱砮 总体设计原理 砱砮模块化 砲砮抽象 砳砮逐步求精 破砮信息隐藏和局部化 砵砮模块独立→是砱砬砲砬破的直接结果 Φ 模块砺过程、函数、子程序、宏、对象、方法等都是模块 Φ 抽象砺抽象出事物的本质我而暂不考虑它们的细节 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 Φ 逐步求精砺一项把一个时期内必须解决的种种问题按优先 级排序的技术 Φ 模块独立砬两个定性标准度量砺内聚和耦合 砲砮 耦合砺对一个软件结构内不同模块之间互连程度的度量 数据耦合砺砨数据砩→低耦合 控制耦合砨控制停下砩 特征耦合砨得到全部数据砬只用其中一部分砩 公共环境耦合砨通过一个公共数据环境相互作用砩 内容耦合→最高程度耦合 从耦合角度来讲砬设计原则砺尽量使用数据耦合砬少用控制耦合 和特征耦合砬限制公共环境耦合的范围砬完全不用内容耦合 砳砮 内棸砺标志着一个模快内各个元素砬彼此结合的紧密程度 低内聚  偶然内聚砨关系松散砩→错误率高逻辑内聚(完成的任务逻逻逻辑辑辑上上上属于相同或相似的类) 时间内聚(要在同一时间段内执行)→ 比逻辑内聚好些 中内聚 { 过程内聚砨按次序执行砩←流程图 通信内聚砨使用同一输入砬输出数据砩 高内聚 { 顺序内聚←数据流图 功能内聚←最高程度的内聚 接口复杂或不一致砬是紧耦合或低内聚的征兆 破砮 描绘软件的图形工具 { 层次图和硈硉硐硏图 结构图 第第第 6章章章 详详详细细细设设设计计计 砱砮 结构程序设计砺仅通过顺序、选择和循环实现 扩展的结构程序设计砺 除以上的砬还有硄硏硟硃硁硓硅 或硄硏硟硕硎硔硉硌 修正的结构程序设计砺 除以上的砬还可有硌硅硁硖硅或硂硒硅硁硋 砲砮 设计人机界面时遇到的问题砺 Ψ 系统响应时间 Ψ 用户帮助设施 Ψ 出错信息处理 Ψ 命令交互 砳砮 过程设计的工具  图形砺程序流程图、盒图、硐硁硄图表格砺判定表、判定树 语言→过程设计语言 破砮 硊硡硣硫硯确方法砺数据结构→程序结构 砵砮 硍硣硃硡硢硥方法砨流图砩 区域数=环形复杂度硖砨硇砩 砱砩硖砨硇砩砽硅砭硎砫砲砻硅为总的边数砬硎为结点数 砲砩硖砨硇砩砽硐砫砱砻硐为判定结点数砨引出至少两条边的结点砩 砶砮 硈硡硬硳硴硥确方法 预测程序长度的公式砺H = n1 log2 n1 + n2 log1 n2 n1为不同运算符砨包括关键字砩的个数 n2为不同操作数砨变量和常量砩的个数 砷砮 习题砳 第第第 7章章章 实实实现现现 砱砮 编码和测试统称为实实实现现现 砲砮 目前软件测试仍是保证软件质量的关键步骤。 软件测试的工作量往往占软件开发总工作量的40%以上 砳砮 测试的目标是发现软件中的错误砬根本目标是开发出高质量的 完全符合用户需求的软件。 破砮 测试的规则砨目标或定义砩 Φ 测试是为了发现程序中的错误而执行程序的过程砨定义砩 Φ 好的测试 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 是极可能发现迄今为止尚未发现的错误的 错误方案 Φ 成功的测试是发现了至今为止尚未发现的错误的测试 砵砮 测试方法砺白盒测试和黑盒测试 Φ 白盒测试砺知道程序的结构和处理算法砬按照程序内部的 逻辑测试程序砨结构测试砩 Φ 黑盒测试砺不考虑程序的内部结构砬在程序接口进行的测 试砬测试每个功能是否都能正常使用砨功能测试砩 砶砮 软件配置包括砺数据、文档、程序 测试配置包括砺测试 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 、测试方案 砷砮 单元测试主要使用白盒测试砬而且对多个模块的测试可以并行 地进行 砸砮 集成测试砺是测试和组装软件的系统化技术。 由模块组装成程序时砬有两种方法 非渐增式测试方法 渐增式测试方法→集成策略 { 自顶向下砨需根程序砩 自底向上 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 砹砮 确认测试主要使用黑盒测试技术 确认测试也称为验收测试砬它的目标是验证软件的有效 性  单元测试 参与者→ 程序员 集成测试 参与者→ 专门的测试员 验收测试 参与者→ 用户 砱砰砮 测试要点  砱砮模块接口 砲砮局部数据结构 砳砮重要的执行通路 破砮出错处理通路 砵砮边界条件 砱砱砮 使用硁硬硰硨硡测试和硂硥硴硡测试的过程来发现那些看起来只有最 终用户才能发现的错误。 Ψ 硁硬硰硨硡测试砺由用户在开发者的场所进行砬产且在开发者对 用户的砐指导砑下进行测试。开发者负责记录发现的错误 和使用中遇到的问题。总之砬硁硬硰硨硡测试是在受控的环境 中进行的。 Ψ 硂硥硴硡测试砺由软件的最终用户们在一个或多个客户场所进 行。与硁硬硰硨硡测试不同砬开发者通常不硂硥硴硡测试的现场砬因 此砬硂硥硴硡测试是软件在开发者不能控制的环境中的砐真 实砑应用 砱砲砮 白盒测试 控制结构测试  基本路径测试砨环形复杂度砽独立路径砩条件测试砨检测程序条件和其他错误砩 循环测试砨简单、串接、嵌套循环砩 砱砳砮 黑盒测试  等价划分边界值分析 〉 联合使用 错误检测 砱破砮 调试是作为成功测试的后果出现砬也就是说砬调试是在测试发现 错误之后排除错误的过程 调试途径  蛮干法回溯法 原因排除法砨对分查找、归纳法、演绎法砩 砱砵砮 软件可靠性是程序在给定的时间间隔内砬按照规格说明书的规 定成功地运行的概率 砱砶砮 软件可用性是程序在给定的时间点砬按照规格说明书的规定砬成 功地运行的概率。 砱砷砮 平均无故障时间砺MTTF = 1K(ET /IT−Ec(τ)/IT ) = 1 K( ET−Ec(τ) IT ) ET 砺测试前错误总数 Ec(τ)砺改正的错误数 IT 砺程序长度 砱砸砮 测试前错误总数砨ET = B̂o砩 B̂o = B2bc B1 砱砹砮 课后题砱砰 砨砱砩 B̂o = b1×b2b = 20×24 6 = 80 砨砲砩MTTF = 1 K( ET−Ec(τ) IT ) 10 = 24000K(80−20) K = 40 60 = 2400040(80−E′c) E′c = 70 70− 20 = 50个 第第第 8章章章 维维维护护护 砱砮 大型软件的维护成本高达开发成本的破倍左右 砲砮 软件工程的主要目的是  提高软件的的可维护性 减少软件维护所需要的工作量 降低软件系统的总成本 砳砮 软件维护砺所谓的软件维护是在软件交付使用之后砬为了改正错 误或满足新的需要而修改软件的过程。 破砮 软件交付后可能进行的四项活动具体定义四种软件维护砺 改正性维护 适应性维护 完善性维护 预防性维护 砵砮 软件的可维护性定义砺维护人员理解改正、改动或改进这个软 件的难易程度。 决定软件可维护性的因素砺  可理解性 可预测性 可修改性 可移植性 可重用性 砶砮 软件再工程过程模型定义的砶类活动砺  库存目录分析 文档重构 逆向工程 代码重构 数据重构 正向工程 砷砮 文档可以分为砺 { 用户文档 系统文档 第第第 9章章章 面面面向向向对对对象象象方方方法法法学学学引引引论论论 砱砮 传传传统统统方方方法法法学学学与与与面面面向向向对对对象象象方方方法法法学学学的的的区区区别别别: 软件本质上是信息处 理系统砬数据和处理原本是密切相关的砬把数据和处理人为地 分为独立的两个部分砬会增加软件开发的难度砬与传统的方法相 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 反砬面向对象方法是一种以数据或信息为主线砬把数据和处理相 结合的方法砬面向对象方法把对象作为由数据及可以施加在这 些数据上的操作所构成的统一体砬对象与传统的数据有本质区 别砬它不是被动地等待外界对它施加操作砬相反砬它是进行处理 的主体砬必须发消息请求对象主动地执行它的某些操作砬处理它 的私有数据砬而不能从外界直接对它的私有数据进行操作。 砲砮 面面面向向向对对对象象象方方方法法法的的的要要要点点点: 砨硡砩 认为客观世界是由各种对象组成砬任何事物都是对象砬复 杂的对象可以由比较简单的对象以某种方式组和而成。 砨硢砩 把所有对象都划分成各种类砬每个类都定义了一组数据和 一组方法。 砨硣砩 按照子类与父类的关系砬把若干个类组成一个有层次结构 的系统。 砨硤砩 对象彼此之间仅能通过传递消息相互联系。 综上所诉砬面向对象的方法学可以用下列方程来概括砺 硏硏砽硯硢硪硩硥硣硴硳砫硣硬硡硳硳硥硳砫硩确硨硥硲硩硴硡确硣硥 砫硣硯硭硭硵确硩硣硡硴硩硯确 硷硩硴硨 硭硥硳硳硡硧硥硳 砳砮 面面面向向向对对对象象象方方方法法法学学学的的的优优优点点点:  与人类习惯的思维方法一致 稳定性好 可重用性好 较易开发大型软件产品 可维护性好 破砮 面面面向向向对对对象象象的的的概概概念念念砺 对象是封装了数据结构及可以施加在这些 数据结构上的操作的封装体砬这个封装体有可以唯一的标识它 的名字砬而且向外界提供一组服务(即公有的操作)。 砵砮 面面面向向向对对对象象象建建建模模模:用面向对象方法开发软件砬通常需要建立3种 形式的模型砬 描述系统数据结构的对象模型描述系统控制结构的动态模型 描述系统功能结构的功能模型 对对对象象象模模模型型型表示静态的结构化的系统的砐数据砑性质。它是对模 拟客观世界实体的对象以及对象彼此间的关系的映射砬描述了 系统的静态结构。 砶砮 统一建模语言硕硍硌是国际对象管理组织硏硍硇批准的基于面 向对象技术的标准建模语言砺 使用硕硍硌类图来建立对象模型 使用硕硍硌状态图来建立动态模型 使用数据流图或硕硍硌的用例图来建立功能模型 砷砮 类图的基本符号 表示类的图形符号砺砨考) 砱砮 定义类砬为类名命名砺 砨硡砩 使用标准术语 砨硢砩 使用具有确切含义的名词 砨硣砩 必要时用名词短语作名字 砲砮 定义属性 硕硍硌描述属性的语法格式如下砺 可见性属性名:类型名=初值{性质串} 砳砮 定义服务 服务也就是操作砬硕硍硌描述属性的语法格式如下砺 可见性 操作名(参数表):返回值类型{性质串} 第第第 10章章章 面面面向向向对对对象象象分分分析析析 砱砮 面向对象建模得到的模型包含系统的三个要素砺 静态结构砨对象模型砩 交互次序砨动态模型砩 数据变换砨功能模型砩 砲砮 分析工作主要包括的内容砺  理解表达 验证 面向对象分析的关键工作砬是分析、确定问题域中对象及对象 间的关系砬并建立起问题域的对象模型。 砳砮 复杂问题砨大型系统砩的对象模型通常由五个层次组成砺 主题层 类与对象层 结构层 属性层 服务层 破砮 面向对象分析大体上按照下列顺序进行砺 寻找类与对象 识别结构 定义属性 定义属性 建立动态模型 建立功能模型 定义服务 砵砮 建立对象模型砺 确定类与对象 确定关联 划分主题 确定属性 识别继承关系 反复修改 砶砮 分析模型是系统分析员同用户及领域专家交流时有效的通信 手段。 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 第第第 11章章章 面面面向向向对对对象象象设设设计计计 砱砮 面向对象设计的准则砺 模块化 抽象 信息隐藏 弱耦合 强内聚 可重用 砲砮 启发规则砺  设计结果应该清晰易懂 一般特殊结构的深度应该适当 设计简单的类使用简单的协议 使用简单的服务 把设计变动减至最小 砳砮 重用的定义砺重用也叫复用或再用砬只同一事物不做修改就多次 重复使用。包括以下三点砺 知识重用方法和标准的重用 软件成分的重用 破砮 软件成分重用级别砺  代码重用设计结果重用 分析结果重用 砵砮 典型的可重用软件成分砺  砱砮项目计划 砲砮成本估计 砳砮体系结构 破砮需求模型和规格说明 砵砮设计 砶砮源代码 砷砮用户文档和技术文档 砸砮用户界面 砹砮数据 砱砰砮测试用例 砶砮 可重用软构件应具备的特点砺  砱砮模块独立性强 砲砮具有高度可塑性 砳砮接口清晰、简单、可靠 砷砮 类构件的重用方式砺  实例重用继承重用 多态重用 砸砮 面向对象设计模型逻辑上对应目标系统的四个子系统砺 问题域子系统 人机交互子系统 任务管理子系统 数据管理子系统 砹砮 子系统之间的两种交互方式砺 { 砱砮客户砖供应商关系 砲砮平等伙伴关系 砱砰砮 组织系统的两种方案砺  砱砮水平层次组织(封闭式开放式) 砲砮垂直块状组织 砱砱砮 层次结构又可以划分成两种模式砺 { 封闭式 开放式 砨硡砩 所谓封闭式砬就是每层子系统仅仅使用其直接下层提供的 服务。 砨硢砩 在开放模式中砬某层子系统可以使用处于其下面的任何一 层子系统所提供的服务。 砱砲砮 设计任务管理子系统砺  砱砮确定事件驱动型任务 砲砮确定时钟驱动下任务 砳砮确定优先任务 破砮确定关键任务 砵砮确定协调任务 砶砮尽量减少任务数 砷砮确定资源需求 砱砳砮 面向对象数据库管理系统的两种设计途径砺{ 扩展的关系数据库管理系统 扩展的面向对象程序设计语言 砱破砮 设计实现服务的算法考虑的几个因素砺  算法复杂度易理解与易实现 易修改 砱砵砮 提高效率的几项技术砺  增加冗余关联以提高访问效率 调整查询次序 保留派生属性 砱砶砮 采用面向对象方法设计软件系统时砬面向对象设计模型砬与面向 对象分析模型一样砬也由 主题 类与对象 结构 属性 服务 等砵个层次组成。 砱砷砮 利用委托实现行为共享 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 public class stack{ private List list1; public void push (Element e ){ list1.last(); list1.add (e); } public Element pop(){ list1.last(); e=list1.remove(); return e; } } 第第第 12章章章 面面面向向向对对对象象象实实实现现现 砱砮 面向对象语言的优点砺  一致的表示方法可重用性 可维护性 砲砮 强类型语言的两个优点砺 { 有利于在编译时发现错误 增加了优化代码的可能性 砳砮 选择面向对象语言应该注重考虑这些实际因素砺 砱砮将来能否占主导地位 砲砮可重用性 砳砮类库和开发环境 破砮其他因素 破砮 提高软件可重用性的准则砺  提高方法的内聚 减小方法的规模 保持方法的一致性 把策略与实现分开 全面覆盖 尽量不使用全局信息 利用继承机制 砵砮 提高可扩充性砺  砱砮封装实现策略 砲砮不要用一个方法遍历多条关联链 砳砮避免使用多分支语句 破砮精心确定公有方法 砶砮 健壮性砺所谓的健壮性就是在硬件故障、输入的数据无效或操 作错误等意外环境下砬系统能做出适当响应的程度。 提高健壮性遵守以下准则砺  预防用户的操作错误 检查参数的合法性 不要预先确定限制条件 先测试后优化 砷砮 面向对象集成测试的两种不同策略砺 { 基于线程的测试 基于使用的测试 砸砮 良好的面向对象程序设计风格砬既包括传统的程序设计风格准 则砬也包括为适应面向对象方法所特有的概念(如砺继承性)而 必须遵循的一些新准则砺 砱砮提高可重用性砲砮提高可扩充性 砳砮提高健壮性 砹砮 测试策略砺  砨砱砩面向对象的单元测试砨砲砩面向对象的集成测试 砨砳砩面向对象的确认测试 第第第 13章章章 选选选择择择 砱砮 软件工程学科诞生于砱砹砶砸年。 砲砮 下面哪个不属于可行性研究的一个方面砿硄 硁技术可行性 硂经济可行性 硃操作可行性 硄人员可行性砮 砳砮 系统流程图是概括地描述物理系统的传统工具。 破砮 数据流图是系统逻辑功能的图形表示。 砵砮 多数人习惯用实体砖联系图砨硅硒砩 建立数据模型。 砶砮 硊硡硶硡语言不是典型的形式化方法。 硁砮有穷状态机 硂砮硐硥硴硲硩网 硃砮硚语言 硄砮硊硡硶硡语言 砷砮 耦合是影响软件复杂度的一个重要因素砬尽量使用数据耦合。 砸砮 功能内聚是最高程度的内聚。 砹砮 实践表明一个模块环形复杂度硖砨硇砩的上限是砱砰。 砱砰砮 硄 不是调试的途径。 硁砮蛮干法 硂砮回朔法 硃砮原因排除法 硄砮冒泡法 砱砱砮 测试过程的早期主要使用白盒测试。 砱砲砮 平均来说,大型软件的维护成本高达开发成本的破倍。 砱砳砮 破种维护活动中完善性维护占的比例最大。 硁改正性维护 硂适应性维护 硃完善性维护 硄预防性维护 砱破砮 硂不是决定软件可维护性的因素。 硁砮可理解性 硃砮可测试性 硄砮可复用性 硂砮程序效率 砱砵砮 使用硕硍硌提供的类图来建立对象模型。 砱砶砮 硕硍硌中的泛化关系就是通常所说的继承。 砱砷砮 硕硍硌提供的用例图也是进行需求分析和建立功能模型的强有 力工具。 硃砮用例图 硁砮类图 硂砮状态图 硄砮硉硐硏图 砱砸砮 硃不是分析工作主要包括的内容。 硁砮理解 硂砮表达 硄砮验证 硃砮设计 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 砱砹砮 硃不是用面向对象方法开发软件通常要建立的砳种形式的模型 之一。 硁砮对象模型 硂砮动态模型 硄砮功能模型 硃砮数据模型 砲砰砮 面向对象方法强调围绕对象来构造系统。 砲砱砮 结对编程是极限编程的特点。 砲砲砮 喷泉模型是典型的面向对象的软件过程之一。 硂砮喷泉模型 硁砮 瀑布模型 硃砮快速原型 硄砮增量模型 砲砳砮 详细设计的任务是设计程序砐蓝图砑。P13 砲破砮 硊硡硣硫硳硯确方法是面向数据结构的设计方法。 硁砮硊硡硣硫硳硯确方法 硂砮数据流图法 硃砮硍硣硃硡硢硥法 硄砮硈硡硬硳硴硥硡硤法 砲砵砮 硚语言也许是应用得最广泛的形式化方法。 硁砮有穷状态机 硂砮硐硥硴硲硩网 硃砮 硚语言 硄砮硊硡硶硡语言 砲砶砮 偶然内聚是最低程度的内聚。 砲砷砮 在测试过程的后期主要使用验收测试。 砲砸砮 硂不属于白盒测试。 硁砮基本路径测试 硃砮条件测试 硄砮循环测试 硂砮等价划分 砲砹砮 风险驱动的螺旋模型适用于内部开发的大型软件项目。P19 砳砰砮 可行性研究的成本只是预期的工程总成本的砵砥砭砱砰砥。 砳砱砮 硃不是成本估算技术之一。 硁砮 代码行技术 硂砮任务分解技术 硄砮自动估计成本技术 硃砮 硈硡硬硳硴硥硡硤方法 砳砲砮 硃不属于黑盒测试技术。 硁砮等价划分 硂砮 边界值分析 硄砮 错误推测 硃砮基本路径测试 砳砳砮 详细设计阶段应完成的主要工作是体系结构设计。 砳破砮 硐硥硴硲硩网是可用于描述并发活动形式化方法。 硁砮有穷状态机 硃砮硚语言 硄砮硘硍硌语言 硂砮硐硥硴硲硩网 砳砵砮 耦合是影响软件复杂度的一个重要因素砬不用硄。 硁砮控制耦合 硂砮数据耦合 硃砮特征耦合 硄砮内容耦合 第第第 14章章章 填填填空空空 砱砮 总体设计过程通常由两个阶段组成:系系系统统统设设设计计计阶阶阶段段段和结结结构构构设设设 计计计阶阶阶段段段。 砲砮 在设计人机界面的过程中,几乎总会遇到下述破个问题:系系系统统统 响响响应应应时时时间间间、用用用户户户帮帮帮助助助设设设施施施、出出出错错错信信信息息息处处处理理理和命命命令令令交交交互互互。 砳砮 请列出砳种过程设计工具PAD 、盒盒盒图图图 和程程程序序序流流流程程程图图图、判判判定定定 表表表、判判判定定定树树树、过过过程程程设设设计计计语语语言言言 破砮 通常把编编编码码码 和测测测试试试 统称为实现。 砵砮 目前软软软件件件测测测试试试仍然是保证软件质量的关键步骤,它是对软件 规格说明、设计和编码的最后复审。 砶砮 大型软件的测试应该分阶段进行,通常至少分为单单单元元元测测测试试试、 集集集成成成测测测试试试和验验验收收收测测测试试试砳个基本阶段。 砷砮 复杂问题的对象模型通常由砵个层次组成:主主主题题题层层层、类类类与与与对对对 象象象层层层、结结结构构构层层层、属属属性性性层层层、服服服务务务层层层。 砸砮 1968年北大西洋公约组织的计算机科学家在联邦德国召开会 议首先正式提出砐软件工程砑。 砹砮 瀑布模型的成功在很大程度上是由于它基本上是一种文文文档档档驱驱驱 动动动的模型。 砱砰砮 软件生命周期包括砸个阶段:问问问题题题定定定义义义、可可可行行行性性性分分分析析析、总总总体体体 描描描述述述、系系系统统统设设设计计计、编编编码码码和和和单单单元元元测测测试试试、综综综合合合测测测试试试、运运运行行行维维维护护护。 砱砱砮 一般说来,至少从砳个方面研究可行性:技技技术术术可可可行行行性性性、经经经济济济 可可可行行行性性性、操操操作作作可可可行行行性性性 砱砲砮 数据字典由破类元素的定义组成数数数据据据流流流、数数数据据据流流流分分分量量量、数数数据据据 存存存储储储、处处处理理理。 砱砳砮 多数人习惯于使用实实实体体体- 联联联系系系图图图(E-R 建立数据模型,使用数数数 据据据流流流图图图建立功能模型,使用状状状态态态图图图 建立行为模型。 砱破砮 有有有穷穷穷状状状态态态机机机、Petri网网网和Z语语语言言言 是砳种典型的形式化方法。 砱砵砮 应该尽量使用数数数据据据耦合,完全不用内内内容容容 耦合。 砱砶砮 黑黑黑盒盒盒测测测试试试又称为功能测试;白白白盒盒盒测测测试试试又称为结构测试。 砱砷砮 目前软软软件件件测测测试试试仍然是保证软件可靠性的主要手段。 砱砸砮 维维维护护护是软件生命周期最后一个阶段,也是持续时间最长、代 价最大的一个阶段。软件工程学的主要目的就是提高软件的 可可可维维维护护护性性性,降低维维维护护护的代价。 砱砹砮 面向对象方法学认为,客观世界由各各各种种种各各各样样样的的的对对对象象象组成。不 同对象彼此之间通过传传传递递递消消消息息息相互作用、相互联系。 砲砰砮 通常数数数据据据流流流图图图和数数数据据据字字字典典典共同构成系统的逻辑模型。 砲砱砮 软件重用分砳个层次知知知识识识重重重用用用、方方方法法法和和和标标标准准准的的的重重重用用用、软软软件件件成成成 分分分的的的重重重用用用。 砲砲砮 面向对象设计的准则有模模模块块块化化化、抽抽抽象象象、信信信息息息隐隐隐藏藏藏、弱弱弱耦耦耦合合合、 强强强内内内聚聚聚、可可可重重重用用用。 砲砳砮 α测试是在受控环境中的测试。 砲破砮 面向对象方法的优点有与人人人类类类习习习惯惯惯的的的思思思维维维方方方法法法一一一致致致、稳稳稳定定定性性性 好好好、可可可重重重用用用性性性好好好、较较较易易易开开开发发发大大大型型型软软软件件件产产产品品品、可可可维维维护护护性性性好好好 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 第第第 15章章章 名名名词词词解解解释释释 砱砮 软软软件件件工工工程程程 概况的说砬软件工程是指导软件开发和维护的一门工程学科。 采用工程的概念、原理、技术和方法来开发与维护软件,把 经过时间的考验而证明正确的管理技术和当前能够得到的最 好的技术方法结合起来,以经济地开发出高质量的软件有效 的维护它。这就是软件工程。 砲砮 软软软件件件可可可靠靠靠性性性 在给定的时间间隔内砬程序按规格说明书的规定成功地运行的 概率 砳砮 砮结结结构构构程程程序序序设设设计计计 结构程序设计它的主要观点是采用自顶向下、逐步求精的程 序设计方法;使用顺序、选择和循环这三种基本控制结构构 造程序,结构化程序设计主要强调的是程序的易读性。 破砮 Alpha测测测试试试 硁硬硰硨硡测试由用户在开发者的场所进行,并且在开发者对用户 的砐指导砑下进行测试。开发者负责记录发现的错误和使用中 遇到的问题。总之,硁硬硰硨硡测试是在受控的环境中进行。 砵砮 模模模块块块化化化 就是把程序划分成独立命名且可独立访问的模块砬每个模块完 成一个子功能砬把这些模块集成起来构成一个整体砬可以完成指 定的功能满足用户的需求砮 砶砮 逆逆逆向向向工工工程程程 分析程序砬在比源代码更高的抽象层次上创建出程序的某种 表示的过程,也就是说,逆向工程是一个恢复设计结果的过 程,逆向工程工具从现存的程序代码中抽取有关数据、体系 结构和处理过程的设计信息。 砷砮 抽抽抽象象象 人类在认识复杂现象的过程中使用的最强有力思维工具是抽 象。在现实世界中一定事物、状态或过程之间总存在着某些 共性。把这些共性集中和概括起来,暂时忽略它们之间的差 异,这就是抽象。或者说抽象就是抽出事物的本质特性而暂 时不考虑的细节。 砸砮 重重重用用用 重用也叫复用或再用,只同一事物不做修改就多次重复使 用。 砹砮 对对对象象象 封装了数据结构及对这些数据结构操作的封装体 砱砰砮 软软软件件件危危危机机机 软件在维护和开发中遇到的一系列严重问题砮包含两方面的问 题砺 如何开发软件砬以满足对软件日益增长的需求砻 如何维护数 量不断膨胀的已有软件。 砱砱砮 类类类 具有相同或相似性质的对象的抽象就是类。 砱砲砮 基基基线线线 是软件生存周期中各开发阶段的一个特定点,它把各阶段 的工作划分的更加明确化,使本来连续的工作在这些点上断 开,便于检查与肯定阶段成果。 砱砳砮 信信信息息息隐隐隐蔽蔽蔽 信息隐蔽指在设计和确定模块时砬使得一个模块内包含信 息砨过程或数据砩砬对于不需要这些信息的其他模块来说砬是不 能访问的砮 砱破砮 软软软件件件可可可用用用性性性 程序在给定的时间点,按照规格说明书的规定,成功的运行 的概率 第第第 16章章章 简简简答答答题题题 砱砮 软件生命周期由哪些时期组成?每个时期包括哪些阶段? 软件生命周期  砱砮软件定义  砱砩问题定义 砲砩可行性研究 砳砩需求分析 砲砮软件开发  砱砩总体设计 砲砩详细设计 砳砩编码和单元测试 破砩综合测试 砳砮运行维护 砲砮 什么是数据字典?它由哪些元素组成? 数据字典是关于数据信息的集合,也就是对数据流图中包含 的所有元素的定义的集合。数据字典的作用也正是在软件分 析和设计的过程中给人提供关于数据的描述信息。 数据字典有四类元素:数据流、数据流分量即数据元素、数 据存储、处理 砳砮 软件测试的主要准则有哪些? 砨硡砩 所有测试都应该能追溯到用户需求 砨硢砩 应该远在测试开始之前就制定出测试计划。 砨硣砩 把硐硡硲硥硴硯原理应用到软件测试中。 砨硤砩 应该从砐小规模砑测试开始,并逐步进行砐大规模砑测试。 砨硥砩 穷举测试是不可能的。 砨硦砩 为了达到最佳的测试效果,应该由独立的第三方从事测 试工作。 破砮 什什什么么么是是是结结结构构构程程程序序序设设设计计计??? 结构化程序设计是进行以模块功能和处理过程设计为主的详 细设计的基本原则。它的主要观点是采用自顶向下、逐步求 精的程序设计方法;使用顺序、选择、循环三种基本控制结 构构造程序。结构化程序设计主要强调的是程序的易读性。 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 砵砮 如如如何何何计计计算算算环环环形形形复复复杂杂杂度度度??? 环形复杂度的计算方法砪 可以用下列 任何一种方法计算环形复杂度 砨硡砩 流图中的区域数等于环形复杂度 砨硢砩 流图硇的环形复杂度硖砨硇砩砽硅砭硎砫砲,其中,硅是流图中 边的条数,硎是结点数。 砨硣砩 流图硇的环形复杂度硖砨硇砩砽硐砫砱,其中,硐是流图中判 定结点的数目。 砨硤砩 流图硇的环形复杂度硖砨硇砩砽区域数 砶砮 调调调试试试常常常用用用的的的途途途径径径有有有哪哪哪些些些???加加加以以以解解解释释释。。。 调试过程的关键是用 来推断错误原因的基本策略。主要有: 砨硡砩 试探法:凭经验猜测。 砨硢砩 回溯法:由症状砨硳硹硭硰硴硯硭砩最先出现的地方,沿硣硯确硴硲硯硬 砝硯硷向回检查。适用于小型程序。 砨硣砩 对分法:在关键点插入变量的正确值。 砨硤砩 归纳法:从错误症状中找出规律,推断根源。 砨硥砩 演绎法:普通→ 特殊 砷砮 软软软件件件的的的维维维护护护包包包括括括哪哪哪4类类类活活活动动动???其其其中中中占占占比比比例例例最最最大大大的的的是是是哪哪哪类类类活活活 动动动??? 改正性维护17%− 21% 适应性维护18%− 25% 完善性维护50%− 66% 预防性维护 砸砮 软软软件件件工工工程程程的的的基基基本本本原原原理理理有有有哪哪哪些些些??? 砱砮 用分阶段地方法严格管理; 砲砮 坚持进行阶段评审; 砳砮 实行严格的产品控制; 破砮 采用现代程序设计技术; 砵砮 结果应能清楚恶的审查; 砶砮 开发小组的人应该少而精; 砷砮 承认不断改进软件工程实践的必要性。 砹砮 有有有两两两个个个类类类:::学学学生生生和和和班班班级级级。。。用用用UML类类类图图图表表表示示示它它它们们们之之之间间间的的的关关关 系系系。。。 砱砰砮 建建建立立立对对对象象象模模模型型型典典典型型型的的的工工工作作作步步步骤骤骤是是是怎怎怎样样样的的的??? 确定类与对象 确定关联 划分主题 确定属性 识别继承关系 反复修改 砱砱砮 V(e, f):表表表示示示电电电梯梯梯e停停停在在在f层层层。。。写写写出出出下下下列列列转转转换换换规规规则则则的的的含含含义义义::: 硅硂硏硆硆(e, f)砫硅硂硐(e, f)砫确硯 硖(e, f)→硅硂硏硎(e, f) 如果电梯按钮(e, f)处于关闭状态砨当前状态砩,而且电梯按 钮(e, f)被按下砨事件砩,而且电梯硥不在硦层砨谓词砩,则电梯按钮 打开发光砨下个状态砩。 砱砲砮 写写写出出出下下下列列列状状状态态态转转转换换换规规规则则则的的的含含含义义义::: 硅硂硏硎(e, f)砫硅硁硆(e, f)→硅硂硏硆硆(e, f) 电梯达到硦层,而且电梯按钮是打开的,于是它就会熄灭。 砱砳砮 有有有3个个个类类类,,,交交交通通通工工工具具具,,,汽汽汽车车车,,,火火火车车车。。。用用用UML图图图形形形表表表示示示它它它们们们 之之之间间间的的的关关关系系系。。。 第第第 17章章章 问问问答答答题题题 砱砮 面面面向向向对对对象象象方方方法法法要要要点点点有有有哪哪哪些些些???它它它的的的优优优点点点是是是什什什么么么??? 面面面向向向对对对象象象方方方法法法具具具有有有四四四个个个要要要点点点::: 砨硡砩 认为客观世界是由各种对象组成,任何事物都是对象, 复杂的对象可以由比较简单的对象以某种方式组和而 成。 砨硢砩 把所有对象都划分成各种对象类,每个对象类都定义了 一组数据和一组方法。 砨硣砩 按照子类与父类的关系,把若干个对象类组成一个有层 次结构的系统。 砨硤砩 对象彼此之间仅能通过传递消息相互联系。 面面面向向向对对对象象象方方方法法法学学学的的的优优优点点点::: 与人类习惯的思维方法一致、稳定性好、可重用性好、较易 开发大型软件产品、可维护性好 砲砮 在在在软软软件件件工工工程程程的的的每每每一一一个个个阶阶阶段段段结结结束束束前前前的的的技技技术术术审审审查查查和和和管管管理理理复复复审审审中中中 应应应该该该如如如何何何着着着重重重对对对可可可维维维护护护性性性进进进行行行复复复审审审??? 可维护性复审在软件开放的不同阶段有不同的重点。 例例例如如如, 分析阶段的复审重点是:  可靠性可移植性 可用性 编码阶段则主要是:  可理解性可修改性 可移植性和效率 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 硶硩硲硨硵硡硩砮硳硵 砳砮 决决决定定定软软软件件件可可可维维维护护护性性性的的的因因因素素素有有有哪哪哪些些些??? 决定软件可维护性的因素砺  可理解性 可预测性 可修改性 可移植性 可重用性 破砮 面面面向向向对对对象象象分分分析析析建建建立立立哪哪哪些些些模模模型型型???其其其典典典型型型的的的工工工作作作步步步骤骤骤是是是怎怎怎样样样 的的的??? 面向对象分析需要建立三种形式模型: 描述系统数据结构的对象模型描述系统控制结构的动态模型 描述系统功能结构的功能模型 对象模型始终是最重要、最基本、最核心的 工作步骤:  寻找类与对象 识别结构 识别主题 定义属性 建立动态模型 建立功能模型 定义服务 砵砮 应应应该该该从从从哪哪哪些些些方方方面面面验验验证证证软软软件件件需需需求求求的的的正正正确确确性性性??? 需求分析阶段的工作结果是开发软件系统的重要基础,大量 统计数字表明,软件系统中砱砵砥的错误起源于错误的需求。   为了提高软件质量,确保软件开发成功,降低软件开发 成本,一旦对目标系统提出一组要求之后,必须严格验证这 些需求的正确性。   一般说来,应该从下述破个方面进行验证: 砨砱砩 一致性:所有需求必须是一致的,任何一条需求不能和 其他需求互相矛盾。 砨砲砩 完整性:需求必须是完整的,规格说明书应该包括用户 需要的每一个功能或性能。 砨砳砩 现实性:指定的需求应该是用现有的硬件技术和软件 技术基本上可以实现的。对硬件技术的进步可以做些预 测,对软件技术的进步则很难做出预测,只能从现有技 术水平出发判断需求的现实性。 砨破砩 有效性:必须证明需求是正确有效的,确实能解决用户 面对的问题。 目目目 录录录 1 软软软件件件工工工程程程学学学概概概述述述 1 2 可可可行行行性性性研研研究究究 1 3 需需需求求求分分分析析析 1 4 形形形式式式化化化说说说明明明技技技术术术 2 5 总总总体体体设设设计计计 2 6 详详详细细细设设设计计计 3 7 实实实现现现 3 8 维维维护护护 4 9 面面面向向向对对对象象象方方方法法法学学学引引引论论论 4 10 面面面向向向对对对象象象分分分析析析 5 11 面面面向向向对对对象象象设设设计计计 6 12 面面面向向向对对对象象象实实实现现现 7 13 选选选择择择 7 14 填填填空空空 8 15 名名名词词词解解解释释释 9 16 简简简答答答题题题 9 17 问问问答答答题题题 10 软件工程学概述 可行性研究 需求分析 形式化说明技术 总体设计 详细设计 实现 维护 面向对象方法学引论 面向对象分析 面向对象设计 面向对象实现 选择 填空 名词解释 简答题 问答题
本文档为【软件工程期未复习-张海藩版教材】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_007806
暂无简介~
格式:pdf
大小:923KB
软件:PDF阅读器
页数:11
分类:互联网
上传时间:2012-06-30
浏览量:177