软件工程与实践第12章

合集下载

第12章 更多的黑盒测试 正交试验法

第12章 更多的黑盒测试  正交试验法
– 2个因子的水平数>=2 – 2个因子的水平数>=3 – 1个因子的水平数>=6 – 满足上面条件的正交表有两个:L49(78),L18(3661)
• 取行数最小的L18(3661)
选择正交表
❖ L18(3661)正交表
选择正交表
❖ 最终的结果 ▪ A:0->A1,1->A2 ▪ B:0->B1,1->B2 ▪ C:0->C1,1->C2, 2->C3 ▪ D:0->D1,1->D2, 2->D3 ▪ E:0->E1,1->E2, 2->E3,3->E4, 4->E5,5->E6
▪ 用n个不同的拉丁字母排成一个n阶方阵(n<26 ), 如果每行的n个字母均不相同,每列的n个字母均不 相同,则称这种方阵为n*n拉丁方或n阶拉丁方。每 个字母在任一行、任一列中只出现一次。
❖什么是正交拉丁方?
▪ 设有两个n阶的拉丁方,如果将它们叠合在一起,恰 好出现n2个不同的有序数对,则称为这两个拉丁方 为互相正交的拉丁方,简称正交拉丁方。
正交实验法
❖ 设计步骤 1. 依据被测对象说明构造因子—状态表 2. 加权筛选,生成因素分析表 3. 选取合适的正交表,生成测试数据集 4. 根据被测对象的特征,补充由正交表无法得到的测 试用例
构造因子-状态表
❖ 案例 ▪ 某系统的文件查询功能如下描述:某系统文件查询功能面向系 统注册用户和非注册用户开放,查询条件有简单查询和高级查 询之分,非注册用户只能查询公开文件并且查询结果只能在终 端屏幕上显示,系统注册用户可以查询公开文件和授权文件并 且查询结果可以输出到指定的文件或在终端上显示。
测试组合会变得很多,如果按照传统的测试方法,会导 致很大的测试工作量

自学考试软件工程第12章自测题及参考答案

自学考试软件工程第12章自测题及参考答案

第12章自测题及参考答案一、名词解释1.软件项目计划2.人力资源3.硬件资源4.软件资源5.专家估算6.类推估算7.算式估算8.COCOMO估算9.工程网络图10.软件配置管理11.软件配置项12.基线13.版本控制14.变更控制二、填空题1.软件工程包括软件开发技术和______两大部分内容。

2.软件工程管理不同于其他工程管理,它对保证高质量的______产品更具有极为重要的意义。

3.软件工程管理的具体内容包括对开发人员、组织机构、用户、______等方面的管理。

4.在一个软件项目的开发过程中要自始至终得到______的密切合作与支持。

5.软件项目计划的第一项活动是确定______。

6.主程序员组织机构的制度突出了主程序员的领导,责任集中在少数人身上,有利于提高______。

7.在一个大系统的开发过程中,由于______失误造成的后果要比程序错误造成的后果更为严重。

8.软件开发人员一般分为:______、系统分析员、高级程序员、初级程序员、资料员和其他辅助人员。

9.在软件项目管理过程中,一个关键的活动是______。

10.目前软件工程规范可分为三级:国家标准与国际标准、行业标准与工业标准和______。

11.成本估算方法中,有自顶向下估算方法、自底向上估算方法和______方法。

12.差别估算的缺点是不容易明确“差别”的界限,但它的优点是可以提高______。

13.基线的作用是把各阶段的开发工作划分得更加明确,便于检查与确认阶段成果。

因此,基线可以作为项目的一个______。

14.在软件开发和维护过程中,一个软件往往有许多版本,版本控制工具用来存储、更新、恢复和管理一个软件的______。

三、选择题1.软件工程管理是对软件项目的开发管理,即对整个软件( )的一切活动的管理。

A.软件项目B.生存期C.软件开发计划D.软件开发2.单元测试是发现编码错误,集成错误是发现接口错误,确认错误是发现功能错误,系统测试是发现( )错误。

软件工程习题解答(含基本章节应试例子以及一个UML案例)

软件工程习题解答(含基本章节应试例子以及一个UML案例)

软件⼯程习题解答(含基本章节应试例⼦以及⼀个UML案例)软件⼯程习题解答⼀、软件⽣存周期各阶段的基本任务?1. 问题定义:(1)回答要解决的问题是什么。

(2)系统分析员应该提出关于问题性质、⼯程⽬标和规模的书⾯报告。

(3)经过和⽤户讨论,澄清含糊不清的地⽅,改正理解不正确的地⽅,得出⼀份双⽅都满意的⽂档。

(4)问题定义是软件⽣命周期中最简短的阶段。

2.可⾏性研究:(1)前⼀阶段定义的问题有可⾏的解决办法吗?(2)系统分析员要进⾏⼀次⼤⼤压缩和简化了的系统分析和设计。

导出⾼层逻辑模型(⽤数据流图表⽰)。

确定⼯程规模和⽬标,准确估计系统的成本和效益。

(3)使⽤部门的负责⼈根据可⾏性研究的结果决定是否继续进⾏该⼯程的开发⼯作。

3.需求分析:(1)主要确定⽬标系统必须具备哪些功能。

(2)系统分析员和⽤户密切配合,充分交流,得出经⽤户确认的系统逻辑模型(数据流图、数据字典、算法描述)。

4.总体设计:(1)回答如何解决问题。

(2)系统分析员应使⽤系统流程图或其他⼯具描述每种可能系统;估计每种⽅案的成本和效益。

推荐⼀较好的系统──有其详细计划。

设计软件的结构(⽤层次图或结构图描述)。

5.详细设计:(1)回答应该怎样具体地实现这个系统。

(2)设计出程序的详细规格说明(⽤HIPO层次图加输⼊/处理/输出图)或PDL语⾔(过程设计语⾔)。

6.编码和单元测试:(1)写出正确的容易理解,容易维护的程序模块。

(2)程序员:选取⼀种适当的⽤⾼级语⾔书写程序(或汇编语⾔)。

仔细测试编写出的每⼀个模块。

7.综合测试:(1)通过各种类型的测试,使软件达到预定的要求。

(2)最基本的测试是集成测试和验收测试⽅法。

集成测试是根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配的过程中对程序进⾏必要的测试。

验收测试是按照需求规格说明书的规定,由⽤户对⽬标系统进⾏验收。

(3)⽤正式⽂档将测试计划、详细测试⽅案以及实际测试结果保存。

软件工程:理论与实践(第2版)

软件工程:理论与实践(第2版)

读书笔记
如果是初学者,不建议阅读此书,干巴巴得容易让人丧失兴趣,建议阅读《构建之法》。
目录分析
第1章软件与软 件工程
第2章软件过程
1.1软件 1.2软件危机 1.3软件工程 1.4软件开发方法 1.5软件工程工具 1.6 “小型网上书店系统”案例介绍 习题
2.1软件过程概述 2.2软件生命周期 2.3软件开发模型 2.4软件开发模型实例 习题
软件工程:理论与实践(第2 版)
读书笔记模板
01 思维导图
03 读书笔记 05 作者介绍
目录
02 内容摘要 04 目录分析 06 精彩摘录
思维导图
本书关键字分析思维导图
第版
内容
第章
面向对象
过程
实例
面向对象
软件
软件
工程 软件
案例
理论
习题
过程
系统
实验
ห้องสมุดไป่ตู้
书店
工程
内容摘要
本书按照典型的软件开发过程来组织内容,旨在培养读者具备软件工程思想及实际软件开发的能力。本书共 分为12章,内容涉及软件与软件工程、软件过程、可行性研究与项目开发计划、结构化分析、结构化设计、面向 对象方法与UML、面向对象分析、软件体系结构与设计模式、面向对象设计、软件实现、软件测试、软件维护与 软件工程管理。本书理论与实践相结合,内容翔实,可操作性强。本书是高等院校计算机科学、软件工程及相关 专业“软件工程”课程的理想教材。
第6部分软件维护与软件工程管 理
12.1软件维护 12.2软件估算 12.3软件开发进度计划 12.4软件开发人员组织 12.5软件开发风险管理 12.6软件质量保证 12.7软件配置管理概述 12.8软件工程标准与软件文档 12.9软件过程能力成熟度模型

第12章Rational统一过程ppt课件全

第12章Rational统一过程ppt课件全

学习内容
统一过程的概念 统一过程的结构 配置和实现Rational统一过程
统一过程的概念
Rational统一过程,从字面的意思来讲,其包含有三层含义。 1.作为“Rational”统一过程,它是由Rational软件开发公司开发并维护的,它可以被看成是Rational软件开发公司的一款软件产品,并且和Rational软件开发公司开发的一系列软件开发工具进行了紧密的集成。 2.其次是它的“统一”的含义,Rational统一过程拥有自己的一套架构,并且这套架构是以一种大多数项目和开发组织都能够接受的形式存在的。其采用了现代软件工程开发的六项最佳实践。 3.最后是它的“过程”上,Rational统一过程不管是如何解释,其最终仍然是一种软件开发过程,提供了如何对软件开发组织进行管理的方式,并且拥有自己的目标和方法。
统一过程的结构
产物 产物是被过程产生的、修改的,或为过程所使用的一段信息。 产物是项目的有形产品:项目最终产生的事物,或者向最终产品迈进过程中使用的事物。产物用作角色执行某个活动的输入,同时也是该活动的输出。在面向对象的设计术语中,如活动是活动对象(角色)上的操作一样,产物是这些活动的参数。 产物可以具有不同的形式: 模型,模型组成元素,文档,源代码和可执行文件。
统一过程的结构
角色 角色定义了个人或由若干人所组成小组的行为和责任,它是统一过程的中心概念,很多事物和活动都是围绕角色进行的。 角色举例: 架构师(Architect) 架构师在整个项目中领导和协调技术活动和产物。架 构师为每一个架构视图建立整体结构:视图分解、元素分组以及在这些主要分组之间的接口。 系统分析员(System Analyst) 系统分析员通过描述系统功能的纲要和约束,领导和协调系统需求的将Rational统一过程的开发过程使用一种二维结构来表达,即使用沿着横轴和纵轴两个坐标轴来表达该过程。

软件工程课后习题答案2-12章

软件工程课后习题答案2-12章

D3生理信息 定时的生理信号
F2生理信号 P1 接收信号 F2生理信号 定时的 生理信号
F6日志 E3 时钟 F3日前、时间 P4 定时取样 生理信号 F6日志 E1 护士 F1要求报告 P6 产生病情报告 D1患者日志




患者生理信 号获取
生理信号












患者监护系 统
危 日志 机信息
安排航班
预 定 信 息
机票 信息
交款
打印取票单 据
打印及发放 机票

航班
通 效 知
设置航班
录入预定信 息
录入取票凭 证
核对取票凭 证
P2 分析信号 E2 病人 F2生理信号
危及病人信息 F2生理信号 D2患者安全范围 P7制定安 全范围 P5 更新日志
P3 产生警告信息 F4警告信息 E1 护士
F5安全范围
监护处理
志 日 定时生理信号
号 生理信
监护信息输 出



制定生理信 号安全范围
接收信号
定时取样 生理信号
时间
分析信号
更新日志
报警
危机信




信息 危机

信 理 生 时 定 号 信 理
日 志
取得时间

病情报告
• P104:4 • 美国某大学有200名教师,校方与教师工会刚刚签订一项协议。 按照协议,所有年工资超过$26000(含$26000 )的教师工 资将保持不变,年工资少于$26000的教师将增加工资,所增 加工资数额按下述方法计算:给每位教师所赡养的人(包括 教师本人)每年补助$100,此外,教师有一年工龄每年再多 补助¥50,但是,增加后的年工资总额不能多于$26000。 • 教师工资档案存储在行政办公室的磁带上,档案中有目前的 年工资、赡养的人数、雇佣日期等信息。需要写一个程序计 算并印出每名教师的原工资和调整后的新工资。 • 要求:(1)画出此系统的数据流图;(2)写出需求说明; • (3)设计上述的工资调整程序(要求用HIPO图描绘设计结果), 设计时分别采用两种算法,并比较两种算法的优缺点: – (a)搜索工资档案数据,找出年工资少于$26000的人, 计算新工资,校核是否超过$26000,存储新工资,印出新 旧工资对照表; – (b)把工资档案数据按工资从最低到最高的次序排序,当 工资数额超过$26000时即停止排序,计算新工资,校核是 否超过限额,存储新工资,印出结果。 • (4)你所画出的数据流图适应用那种算法?

软件工程课后习题答案2-12章

软件工程课后习题答案2-12章

书状态为S2&终端 输入“H=”加书名 管理员设置状 态 管理员删除 管理员添加
预约
书出库(删除) 书入库
图4.4.2
(三)图书馆终端用户模式的有穷状态机描述 • 状态机J:{读者查询状态,查询结果} • 输入集K:{终端输入用户查询命令,书的各种 状态(S1,S2,S3)} • 转换函数T:如图4.4.3所示 • 初始态S:{读者查询状态} • 终态集F:{查询结果}
取票通知 账单 机票 账单
P3.1 核对取票凭证 顾客 取票通知 P3.2 交款 机票 P3.3 打印机票
机票预定系 统
信 息 通 知 单 机 票


信息
机票

预定信息处 理
信息






取票凭证处 理
通知 账单 单
账单
信 息 定 预 航班信

机票预定子 系统
单 知
机票发放子 系统
效 通 知


取款单
P3.1输入取款 信息
取款信息 E1储 户 密码 P3.2 密码校验
P4 计算利息
利息 利息 P5 打印利息 清单
密码正确信息
E2业 务员
利率
P6设置利 率
利率
不能是两个分开的子系统,是相同的前台单个处理
银行储蓄系 统
存 款 单 款
率 利
利 存单 息清单
密 码
业务单据录 入
利 率
存款单


储蓄业务处理
(一)图书状态的有穷状态机描述 • 状态机J:{书在图书馆S1,书被借出S2, 书被预约S3} • 输入集K:{书上条形码,借阅卡条形码, 终端输入各种命令} • 转换函数T:如图4.4.1所示 • 初始态S:{书在图书馆S1,书被借出S2} • 终态集F:{书被借出S2,书被预约S3}

第十二章 异常处理

第十二章 异常处理
为了加强程序的可读性,使函数的用户能方便地知识所使用的 函数会抛掷哪些异常,可以在函数的声明中列出这个函数可以 抛掷的所有可能的异常类型
例如: void fun() throw(A,B,C,D);
若无异常接口声明,则此函数可以抛 掷任何类型的异常。 不抛掷任何类型异常的函数声明如下:
void fun() throw();
异常处理的实现机制
C++语言提供对处理异常情况的内部支 持。Try、throw和catch语句就是C++ 语言中用于实现异常处理的机制 程序可以向更高的执行上下文传递意想 不到的事件,从而使程序能更好地从这 些异常事件中恢复过来
异常处理的实现机制
异常处理的语法 抛掷异常的程序段
...... throw ......
class Demo { public: Demo(); ~Demo(); }; Demo::Demo() { cout<<"构造 Demo."<<endl; } Demo::~Demo() { cout<<"析构 Demo."<<endl; }
13
void MyFunc() { Demo D; cout<<"在MyFunc()中抛掷Expt类异常。"<<endl; throw Expt(); } int main() { cout<<"在main函数中。"<<endl; try { cout<<"在try块中,调用MyFunc()。" <<endl; MyFunc(); }
异常处理的实现机制

《软件工程实用教程》第12章_软件开发工具与环境

《软件工程实用教程》第12章_软件开发工具与环境

第12章 軟體開發工具與環境
一個集成化的CASE環境應當滿足下列需求: 1. 提供環境中所有工具間共用資訊的機制; 2. 資訊項改動時,能夠自動跟蹤到與之相關的資訊項; 3. 為所有軟體工程資訊提供版本控制及全局性配置管 理; 4. 允許直接的,以非順序方式訪問環境中的任何工具; 5. 支持軟體工程活動的過程性描述的自動建立; 6. 保證人-機介面的一致性和友好性; 7. 支持軟體開發人員間的通信; 8. 收集可用於改進產品和開發過程的管理和技術兩方 面的量度。
第12章 軟體開發工具與環境
10. 維護工具:軟體維護通常作為軟體的補充開 發過程。因此,在維護過程中不僅可能要用 到軟體開發階段用到的所有工具,還要有理 解工具,再生工程工具和逆向工程工具等。
第12章 軟體開發工具與環境
12.3 軟體開發工具 1. 業務系統規劃工具:通過將企業的策略性資訊需求 模型化,提供一個可導出特定資訊系統的“元模 型”,這樣可使業務資訊運行於企業的各個部門。 2. 專案管理工具:借助這類工具,專案管理者可以有 效的估算軟體專案所需的工作量,成本,開發週期 和風險評估等,可以定義一個功能分解結構 WBS,並 制定可行的專案開發計畫;基於需求跟蹤專案的開 發情況;採集量度數據,以評價軟體開發效率和產 品品質。 3. 支持工具:這類工具用於支持軟體工程過程,具體 包括文檔編制工具,品質保證工具,資料庫管理工 具和軟體配置管理工具等。
第12章 軟體開發工具與環境
1. 分析和設計工具:這類工具用於建立待開發系統模 型和模型品質評價,通過對模型的一致性和有效性 檢查,以保證分析與設計的完整性。 2. 編程工具:這類工碼生成器,解釋器及調試器等, 從工具輸出來看,4GL也屬於這一類。 3. 測試和分析工具:常用的測試與分析工具包括靜態 分析工具與動態測試工具。 4. 原型工具:隨著軟體構件重用研究的深入,更增強 了這種開發模式的實用價值。但原型的構造離不開 經驗資訊,如用於用戶介面設計的原型工具可利用 圖形包快速構造出應用系統介面,供用戶評價,以 確定最終產品的介面模式。

(优选)软件工程学第三版课后习题答案

(优选)软件工程学第三版课后习题答案
M 4080e0.28(19951960) 73,577,679(字) 4080e9.8
如果字长为32位,则这个存储器的价格是:
P 0.00332 0.7219951974 73577679 7,127(美元)
如果一条指令为一个字长,则为使存储器装满程序共需 73,577,679条指令。
在上列公式中Y代表年份,M是存储容量(字数),P1和P2代 表价格。
基于上述假设可以比较计算机硬件和软件成本的变化趋势。 要求计算:
作业及解答(第1-2章)
(1) 在1985年对计算机存储容量的需求估计是多少?如果字 长为16位,这个存储器的价格是多少?
(2) 假设在1985年一名程序员每天可开发出10条指令,程 序员的平均工资是每月4000美元。如果一条指令为一个 字长,计算使存储器装满程序所需用的成本。
如果字长为16位,则这个存储器的价格是
P 0.048 0.7219851974 4474263 5,789(美元)
(2)如果一条指令的长度为一个字,则使存储器装满程序共 需4474263条指令。
在1985年一名程序员每天可开发出10条指令,如果每月 有20个工作日,则每人每月可开发出10×20条指令。
为了开发出4474263条指令以装满存储器,需要的工作量
是: 4474263 22,371(人月) 200
作业及解答(第1-2章)
程序员的月平均工资是4000美元, 开发出4474263条指
令的成本是 22371 4000 89,484,000(美元)
(3)在1995年对存储容量的需求估计为:
(3) 假设在1995年存储器字长为32位,一名程序员每天可 开发出30条指令,程序员的月平均工资为6000美元,重 复(1)、(2)题。

第12章 软件项目质量管理

第12章  软件项目质量管理

一、软件项目的质量计划
软件项目质量计划就是要将与项目有关的质量标准标识 出来,提出如何达到这些质量标准和要求的设想。项目质量 保证计划的编写就是为了确定与项目相关的质量标准并决定 达到标准的一种有效方法。
第20页
1.软件质量标准

技术标准包含两个方面:一是作为软件开发企业的软件行业
技术标准,包括知识体系指南、过程标准、建模标准、质量


第24页
在制定质量计划时,主要采取的方法和技术有:

效益/成本分析法。质量计划必须考虑效益与成本的关系。 满足质量需求的主要效益时减少了重复性工作,即高产出、 低成本、高用户满意度。 基准法。主要是通过比较项目的实施与其他同类项目的实施 过程,为改进项目的实施过程提供借鉴和思路,并作为一个 实施的参考标准。 流程图。可以包括原因结果图、系统流程图、处理流程图等。 因此,流程图经常用于项目质量控制过程中,其主要目的是 确定以及分析问题产生的原因。 试验设计。试验设计对于分析整个项目输出结果是最有影响 的因素,也是十分有效的。对于软件开发、设计原型解决核 心技术问题和主要需求也是可行和有效的。

第18页
3.过程的改善 过程的改善仅包含一个方面的活动,即优化过程。 12.2 软件质量的度量 确认目标 对当前能力的理解及评价 设计度量过程 过程原型 过程文档 过程实施 程序扩展
第19页
12.3 软件质量管理
质量管理是在质量方面指挥和控制组织的协调的活动, 指对确定和达到质量所必须的全总职能和活动的管理,包括 制定质量方针和质量目标以及质量策划,通过质量计划的编 制、质量控制、质量保证和质量提高等活动提高质量的活动。
第8页

正确性:系统满足规格说明和用户的程度,即在预定环境下 能正确地完成预期功能的程度。 健壮性:在硬件发生故障、输入的数据无效或操作等意外环 境下,系统能做出适当响应的程度。 效率:为了完成预定的功能,系统需要的计算资源的多少。 完整性:对未经授权的人使用软件或数据的企图,系统能够 控制的程度。 可用性:系统在完成预定应该完成的功能时令人满意的概率。 风险性:按预定的成本和进度把系统开发出来,并且使用户 感到满意。

软件工程_张海蕃

软件工程_张海蕃
普通高校本科计算机专业特色教材精选
张海藩 编著
软件工程导论 (第4版)
总 目 录
第1章 第2章 第3章 第4章 第5章 第6章 第7章 软件工程学概述 可行性研究 需求分析 形式化说明技术 总体设计 详细设计 实现
总 目 录
第8章 维护 第9章 面向对象方法学引论 第10章 面向对象分析 第11章 面向对象设计 第12章 面向对象实现 第13章 软件项目管理
(6) 软件成本在计算机系统总成本中所占的比例逐 年上升。由于微电子学技术的进步和生产自动化程 度不断提高,硬件成本逐年下降,然而软件开发需 要大量人力,软件成本随着通货膨胀以及软件规模 和数量的不断扩大而持续上升。美国在1985年软件 成本大约已占计算机系统总成本的90%。 (7) 软件开发生产率提高的速度,远远跟不上计算 机应用迅速普及深入的趋势。软件产品“供不应求” 的现象使人类不能充分利用现代计算机硬件提供的 巨大潜力。
应该推广使用在实践中总结出来的开发软件的成功 的技术和方法,并且研究探索更好更有效的技术和 方法,尽快消除在计算机系统早期发展阶段形成的 一些错误概念和做法。 应该开发和使用更好的软件工具。正如机械工具可 以“放大”人类的体力一样,软件工具可以“放大” 人类的智力。在软件开发的每个阶段都有许多繁琐 重复的工作需要做,在适当的软件工具辅助下,开 发人员可以把这类工作做得既快又好。如果把各个 阶段使用的软件工具有机地集合成一个整体,支持 软件开发的全过程,则称为软件工程支撑环境。
1983年IEEE为软件下的定义是:计算机程序、方 法、规则、相关的文档资料以及在计算机上运行程 序时所必需的数据。虽然表面上看来在这个定义中 列出了软件的5个配置成分,但是,方法和规则通 常是在文档中说明并在程序中实现的。 更重要的是,必须充分认识到软件开发不是某种个 体劳动的神秘技巧,而应该是一种组织良好、管理 严密、各类人员协同配合、共同完成的工程项目。 必须充分吸取和借鉴人类长期以来从事各种工程项 目所积累的行之有效的原理、概念、技术和方法, 特别要吸取几十年来人类从事计算机硬件研究和开 发的经验教训。

软件工程 第9-12章:三大模型

软件工程 第9-12章:三大模型
监视周边 批准预算
经理
管理人事
批准安全 证书
保安
如果要求安全主管可以担任
经理和保安的角色,这样,安
经理
管理人事
全主管与经理,安全主管与保
安之间存在泛化关系,安全主
批准预算
管就可以参与全部4个用例。
但经理或者保安却不能担任
安全主管
批准安全 证书
安全主管的角色,也就不能参
与用例批准安全证书。
保安
监视周边
Survey sales
监督员
(2)静态图:类图、对象图和包图
Customer name : string phone : string 1 1 1..* Reservation date : Date BoxOffice Request(count, performance) kjosk CreditCardService ShowAvailability(seatlist) DemandPayment(cost) PrintTickets(performance, seats) EjectCard() Charge(cardnumber, cost)
TicketSeller
《datdbase》 TicketDB
1
节点多重性
*
Kiosk
1
1
*
*
*
SalesTerminal
CustomerInterface
ClerkInterface
售票员
顾客
对象模型与静态建模
现实世界
认识抽象
概念模型
信息世界
一 类图 1.实体
类名
属性 术语标准、含义确切、名词或名词短语 可见性 属性名:类型名=初值{性质串} - private # protected

张海藩《软件工程导论》(第6版)(课后习题 第12章 面向对象实现)【圣才出品】

张海藩《软件工程导论》(第6版)(课后习题 第12章 面向对象实现)【圣才出品】

第12章面向对象实现1.面向对象实现应该选用哪种程序设计语言?为什么?答:(1)面向对象实现应该尽量选用面向对象语言来实现面向对象分析、设计的结果。

(2)原因①一致的表示方法。

面向对象开发基于不随时间变化的、一致的表示方法。

既有利于在软件开发过程中始终使用统一的概念,也有利于维护人员理解软件的各种配置成分。

②可重用性。

既可重用面向对象分析结果,也可重用相应的面向对象设计和面向对象程序设计结果。

③可维护性。

程序显式地表达问题域语义,对维护人员理解待维护的软件有很大帮助。

在选择编程语言时,应该考虑的首要因素是哪个语言能最恰当地表达问题域语义。

2.面向对象程序设计语言主要有哪些技术特点?答:(1)支持类与对象概念的机制。

(2)实现聚集结构的机制。

(3)实现泛化结构的机制。

(4)实现属性和服务的机制。

(5)类型检查机制。

(6)类库。

(7)效率。

(8)持久保存对象的机制。

(9)参数化类的机制。

(10)开发环境。

3.选择面向对象程序设计语言时主要应该考虑哪些因素?答:(1)将来能否占主导地位。

(2)可重用性。

(3)类库和开发环境。

(4)其他因素,包括售后服务、对运行环境的需求、集成已有软件的难易程度等。

4.良好的面向对象程序设计风格主要有哪些准则?答:面向对象程序设计风格应遵循如下准则:(1)提高重用性。

(2)提高可扩展性。

(3)提高健壮性。

5.测试面向对象软件时,单元测试、集成测试和确认测试各有哪些新特点?答:(1)单元测试,是在类层面上的测试。

由于继承和复合,类(或对象)在很多情况下已不再是单纯意义上的单个操作。

因此,具体的测试将在多有与操作有关的每个子类语境中进行。

(2)集成测试,由于面向对象软件中类的成分直接和间接交互,使得传统测试放法已经失去意义。

因此有两种策略可供选择,分别是基于线程的测试和基于使用的测试。

(3)确认测试,关注与用户可见的动作和用户识别的系统输出,但基于场景的测试总是主宰面向对象系统的确认测试。

第12章软件项目配置管理计划_k要点

第12章软件项目配置管理计划_k要点

2、三种常见基线
——功能基线 在系统分析和软件定义阶段结束时,经过正是评审和批准的系 统设计规格说明中对被开发软件系统的规格说明;经过项目委托 单位和项目承办单位双方签字同意的协议书或合同中所规定的对 被开发软件系统的规格说明;由下级申请及上级同意或直接由上 级下达的项目任务书中所规定的对待开发软件系统的规格说明。 ——分配基线 在软件需求分析阶段结束时,经正式评审和批准的软件需求规 格说明。 ——产品基线 在软件组装与系统测试阶段技术时,经正式评审和批准的有关 所开发的软件产品的全部配置项的规格说明。
配置项的版本
配置项类
需求规格:
配置项实例
需求规格V1.1
需求规格V1.2
需求规格V1.3
6
chapter_9
2、软件配置
软件配置是一个软件产品在生存期各个阶段的不同形 式(记录特定信息的不同媒体)和不同版本的程序、 文档及相关数据的集合,或者说是配置项的集合。
机型1 初始系统 操作系统1 操作系统2 用户1 用户2
四、变更管理
(一)软件变更
1、软件变更的不可避免性 2、软价变更的复杂性



软件配置项数量大 版本多 变更的迁延性 人员沟通协调
3、变更管理的任务

分析变更 记录和追踪变更 采取措施保证变更在受控状态下进行
(二)配置库 1、配置库的作用


记录与配置相关的所有信息 利用库中的信息可评价变更的后果 可利用库中的信息查询,例如:
系统设计规格说明、程序规格说明、数据 库设计、编码标准、用户界面标准、测试 标准、系统测试计划、用户手册 源代码、目标码、单元测试数据及单元测 试结果 系统测试数据、系统测试结果、操作手册、 安装手册 以上任何需要变更的软件配置项
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象设计的结果既可以用面向对象语言、也可 以用非面向对象语言实现。 选择编程语言的关键因素,是语言的一致的表达能 力、可重用性及可维护性。从面向对象观点看来, 能够更完整、更准确地表达问题域语义的面向对象 语言的语法是非常重要的。
1. 一致的表示方法 这种表示方法应该从问题域到OOA,从OOA到 OOD,最后从OOD到面向对象编程(OOP),始终 稳定不变。一致的表示方法既有利于在软件开发过 程中始终使用统一的概念,也有利于维护人员理解 软件的各种配置成分。 2. 可重用性 在OOA,OOD直到OOP中都显式地表示问题域语 义,其意义是十分深远的。随着时间的推移,软件 开发组织既可能重用它在某个问题域内的OOA结 果,也可能重用相应的OOD和OOP结果。
12.1.2 面向对象语言的技术特点
20世纪50年代诞生的LISP语言 20世纪60年代推出的SIMULA语言 20世纪70年代末期开发的Modula_2语言和Ada语言 20世纪80年代以来开发的Smalltalk语言、Eiffel语 言以及C++等语言 纯面向对象语言着重支持面向对象方法研究和快速 原型的实现,而混合型面向对象语言的目标则是提 高运行速度和使传统程序员容易接受面向对象思想。 成熟的面向对象语言通常都提供丰富的类库和强有 力的开发环境。
12.2 程序设计风格
良好的面向对象程序设计风格,既包括传统的程序 设计风格准则,也包括为适应面向对象方法所特有 的概念(例如,继承性)而必须遵循的一些新准则。
12.2.1 提高可重用性
面向对象方法的一个主要目标,就是提高软件的可 重用性。软件重用有多个层次,在编码阶段主要涉 及代码重用问题。一般说来,代码重用有两种: 一种是本项目内的代码重用,另一种是新项目重用 旧项目的代码。
随机产生的测试用例,可以测试类实例的不同生存 历史。
2. 划分测试 与测试传统软件时采用等价划分方法类似,采用划 分测试(partition testing)方法可以减少测试类时 所需要的测试用例的数量。首先,把输入和输出分 类,然后设计测试用例以测试划分出的每个类别。 (1) 基于状态的划分 这种方法根据类操作改变类状态的能力来划分类操 作。 (2) 基于属性的划分 这种方法根据类操作使用的属性来划分类操作。 (3) 基于功能的划分 这种方法根据类操作所完成的功能来划分类操作。
1. 提高方法的内聚 2. 减小方法的规模 3. 保持方法的一致性 4. 把策略与实现分开 5. 全面覆盖 6. 尽量不使用全局信息 7. 利用继承机制 (1) 调用子过程 (2) 分解因子 (3) 使用委托 (4) 把代码封装在类中
图12.1 通过调用公用方法实现代码重用
图12.2 通过因子分解实现代码重用
12.3.2 面向对象的集成测试
(1) 基于线程的测试(thread based testing)。这 种策略把响应系统的一个输入或一个事件所需要的 那些类集成起来。分别集成并测试每个线程,同时 应用回归测试以保证没有产生副作用。 (2) 基于使用的测试(use based testing)。这种 方法首先测试几乎不使用服务器类的那些类(称为 独立类),把独立类都测试完之后,再测试使用独 立类的下一个层次的类(称为依赖类)。对依赖类 的测试一个层次一个层次地持续进行下去,直至把 整个软件系统构造完为止。
第12章 面向对象实现
12.1 12.2 12.3 12.4 12.5
程序设计语言 程序设计风格 测试策略 设计测试用例 小结
面向对象实现主要包括两项工作: 把面向对象设 计结果翻译成用某种程序语言书写的面向对象程序; 测试并调试面向对象的程序。
12.1 程序设计语言
12.1.1 面向对象语言的优点
3. 基于故障的测试 基于故障的测试(fault based testing)与传统的错 误推测法类似,也是首先推测软件中可能有的错误, 然后设计出最可能发现这些错误的测试用例。
12.4.2 集成测试方法
开始集成面向对象的系统以后,测试用例的设计变 得更加复杂。在这个测试阶段,必须对类间协作进 行测试。 和测试单个类相似,测试类协作可以使用随机测试 方法和划分测试方法,以及基于情景的测试和行为 测试来完成。
多个类的划分测试方法类似于单个类的划分测试方 法,但是,对于多类测试来说,应该扩充测试序列 以包括那些通过发送给协作类的消息而被调用的操 作。 另一种划分测试方法,根据与特定类的接口来划分 类操作。
图12.3 银行系统的类-协作图
2. 从动态模型导出测试用例 在本书第9章中已经讲过,怎样用状态转换图作为 表示类的动态行为的模型。类的状态图可以帮助我 们导出测试该类(及与其协作的那些类)的动态行 为的测试用例。
3. 可维护性 尽管人们反复强调保持文档与源程序一致的必要性, 但是,在实际工作中很难做到交付两类不同的文档, 并使它们保持彼此完全一致。因此,维护人员最终 面对的往往只有源程序本身。 因此,在选择编程语言时,应该考虑的首要因素, 是在供选择的语言中哪个语言能最好地表达问题域 语义。一般说来,应该尽量选用面向对象语言来实 现面向对象分析、设计的结果。
1. 随机测试 银行应用系统的account(账户)类有下列操作: open(打开),setup(建立),deposit(存款), withdraw(取款),balance(余额),summarize(清 单),creditLimit(透支限额)和close(关闭)。上 列每个操作都可以应用于account类的实例。 一个account类实例的最小行为历史包括下列操作: open· setup· deposit· withdraw· close
12.3.3 面向对象的确认测试
在确认测试或系统测试层次,不再考虑类之间相互 连接的细节。和传统的确认测试一样,面向对象软 件的确认测试也集中检查用户可见的动作和用户可 识别的输出。为了导出确认测试用例,测试人员应 该认真研究动态模型和描述系统行为的脚本,以确 定最可能发现用户交互需求错误的情景。
图12.4 account类的状态转换图
12.5 小结
直接支持面向对象设计范式的面向对象程序语言、 开发环境及类库,对于面向对象实现来说是非常重 要的。 面向对象测试的焦点从过程构件(传统模块)移向 了对象类。 一旦完成了面向对象程序设计,就开始对每个类进 行单元测试。测试类时使用的方法主要有随机测试、 划分测试和基于故障的测试。每种方法都测试类中 封装的操作。应该设计测试序列以保证相关的操作 受到充分测试。检查对象的状态(由对象的属性值 表示),以确定是否存在错误。
1. 支持类与对象概念的机制 2. 实现整体-部分(即聚集)结构的机制 3. 实现一般-特殊(即泛化)结构的机制 4. 实现属性和服务的机制 5. 类型检查 6. 类库 7. 效率 8. 持久保存对象 9. 参数化类 10. 开发环境
12.1.3 选择面向对象语言
开发人员在选择面向对象语言时,还应该着重考虑 以下一些实际因素。 1. 将来能否占主导地位 2. 可重用性 3. 类库和开发环境 4. 其它因素
1. 多类测试 Kirani和Tsai建议使用下列步骤,以生成多个类的 随机测试用例。 对每个客户类,使用类操作符列表来生成一系列随 机测试序列。这些操作符向服务器类实例发送消息。 对所生成的每个消息,确定协作类和在服务器对象 中的对应操作符。 对服务器对象中的每个操作符(已经被来自客户对 象的消息调用),确定传递的消息。 对每个消息,确定下一层被调用的操作符,并把这 些操作符结合进测试序列中。
12.4 设计测试用例
目前,面向对象软件的测试用例的设计方法,还处 于研究、发展阶段,面向对象测试关注于设计适当 的操作序列以检查类的状态。
12.4.1 测试类的方法
软件测试从“小型测试”开始,逐步过渡到“大型 测试”。对面向对象的软件来说,小型测试着重测 试单个类和类中封装的方法。测试单个类的方法主 要有随机测试、划分测试和基于故障的测试等 3种。
一个account类实例的最小行为历史包括下列操作: open· setup· deposit· withdraw· close 这就是对account类的最小测试序列。但是,在下 面的序列中可能发生许多其他行为: open· setup· deposit· [deposit|withdraw|balance|su mmarize|creditLimit]n·Байду номын сангаасwithdraw· close 从上列序列可以随机地产生一系列不同的操作序列, 例如:测试用例 #r1:open· setup· deposit· deposit· balance· summarize· withdraw· close
12.3.1 面向对象的单元测试
当考虑面向对象的软件时,单元的概念改变了。 “封装”导致了类和对象的定义,这意味着类和类 的实例(对象)包装了属性(数据)和处理这些数 据的操作(也称为方法或服务),最小的可测试单 元是封装起来的类和对象。 测试面向对象软件时,不能再孤立地测试单个操作, 而应该把操作作为类的一部分来测试。
12.2.2 提高可扩充性
1. 封装实现策略 2. 不要用一个方法遍历多条关联链 3. 避免使用多分支语句 4. 精心确定公有方法
12.2.3 提高健壮性
1. 2. 3. 4. 预防用户的操作错误 检查参数的合法性 不要预先确定限制条件 先测试后优化
12.3 测试策略
测试面向对象软件的策略与测试结构化软件的策略 基本相同,但也有许多新特点。
可以采用基于线程或基于使用的策略完成集成测试。 基于线程的测试,集成一组相互协作以对某个输入 或某个事件作出响应的类。基于使用的测试,从那 些不使用服务器类的类开始,按层次构造系统。设 计集成测试用例,也可以采用随机测试和划分测试 方法。此外,从动态模型导出的测试用例,可以测 试指定的类及其协作者。 面向对象系统的确认测试也是面向黑盒的,并且可 以应用传统的黑盒方法完成测试工作。但是,基于 情景的测试是面向对象系统确认测试的主要方法。
相关文档
最新文档