软件工程(第3版) 课件 第7章

合集下载

《软件工程》PPT课件

《软件工程》PPT课件
第四课时
第一章第四课时
喷泉模型 软件工程的任务与研究范围 软件开发的原则与开发方法
返回
喷泉模型
瀑布模型要求在软件开发的初期就完全确定软件的需求,这在很多 情况下往往是做不到的.螺旋模型试图克服瀑布模型的这一不足.SM 把软件开发过程安排为逐步细化的螺旋周期序列,每经历一个周期, 系统就细化和完善一些.SM每—螺旋周期由六个步骤组成: <1> 确定任务目标: 根据初始需求分析项目计划,确定任务目标、可选 方案和限制.<2>选择对象:对各种软硬件设备、开发方法、技术、 开发工具、人员、开发管理等对象进行选择:并决定软件是进行研 制、购买还是利用现有的.<3>分析约束条件:软件开发的时间、经 费等限制条件.<4>风险分析:评估目标、对象、约束条件三者之间 的联系,列出可能出.现的问题及问题的严重程度等,把最重要的问 题作为尚未解决的关键问题的风险.<5>制定消除风险的方法:应有 详尽的说明和周密的计划,并估计可能产生的后果.依此来开发软件, 为制订下一周期的计划打下基础.<6>制定下一周期的工作计划:在 第一个螺旋周期,确定目标、选择对象、分析约束,通过风险分析制 订消除风险的方法,初步开发原型1,制定系统生存周期计划.
软件工程的任务与研究范围
•软件产品的特点 •软件工程的研究内容与方法 •软件工具与软件支撑环境 •软件管理
软件开发的原则与方法
•软件开发的原则 • 自顶向下与模块结构 •软件开发的方法 •1.非自动形式的系统开发方法 •〔1〕系统流程图〔2〕结构分析法〔3〕结构化设计法 •〔4〕数据结构法〔5〕层次输入——处理——输出方法<HIPO法> • 2.半自动形式的系统开发方法 •〔1〕软件需求工程法〔2〕问题说明语言与分析法 • 3. 自动形式的系统开发方法 〔HOS方法〕:由计算机自动确定规 范、自动分析、自动编程、自动执行与模拟,以规范语言AXES、资 源分配工具RTA为工具.能自动进行分析、设计,工作量少、设计规范, 也能自动进行修改和维护.该方法适用于系统分析和设计.

软件工程7-3

软件工程7-3

要达到 CMM 规定的 SCM要求所需具备的能力
1.
2. 3. 4.
5.
具有对软件基线产品有管理权限的组织已经建立, 例如:软件配置管理委员会; 协调和实现软件配置管理的组织已经建立; 为进行软件配置管理所需要的各项资源已经分配; 软件配置管理组织里的成员已经接受了软件配置目 标、流程、方法方面的培训; 软件项目组或是其他的相关的部门经过培训,可以 执行他们的软件配置管理活动;
SCM的三个应用层次
SCM从应用层次上可以从低到高分为三级:版本控制、以开发者 为中心、过程驱动。 版本控制主要应用于个人独立开发或小组开发,它可以控制任 何文件的版本、实现分支和归并功能、进行文本比较、标记注 释 和 版 本 报 告 信 息 , 主 要 工 具 有 MS 的 Visual SourceSafe 及 Intersolv PVCS。 以开发者为中心主要应用于部门级开发,它可用于软件维护、 不断增加的开发任务、并行开发、QA及测试,它面向大型团队、 利于交流、能最大限度地利用人力资源,主要工具为Rational ClearCase及MKS Source Integrity。 过程驱动主要使用于企业级开发,着重解决新的工具引入、IT 审核、管理报告、复杂的生命周期、应用工具包、集成解决方 案、资料库等问题,实现真正规范的团队开发 ,主要工具为 Platinum Technology CCC/Harvest。
产品升级和维护所必需的程序和文档非常混乱 代码可重用性差从而不能对产品进行功能扩充 开发过程中的人员流动经常发生 由于管理不善致使未经测试的软件加入到产品中 用户与开发商没有有效的产品交接界面
开发环境的复杂性
多操作系统 多开发工具 网络化 团队方式 异地开发
缺乏管理所造成的问题

计算机软件工程基础课件,高等教育出版社,第三版-PPT文档资料

计算机软件工程基础课件,高等教育出版社,第三版-PPT文档资料
1、什么是计算机? 计算机是接收、处理和提供数据的装置,它由硬件和软件两大部分组成。 CPU是Central Processing Unit(中央微处理器),是计算机中最重要的一 个部分,由运算器和控制器组成。如果把计算机比作人,那么CPU就是人的 大脑。 计算机就是我们平时常用的PC机吗? PC机只是计算机的一种,计算机家族中还有很多其他的成员,特别是随着 IPV6的实际应用,数字化化社会的发展,计算机种类和形式已经越来越丰富 多彩。 计算机发展的摩尔定律:集成电路芯片上所集成的电路的数目,每隔18个月就 翻一番。微处理器的性能每隔18个月提高一倍,而价格下降一倍。用一个美元 所能买到的电脑性能,每隔18个月翻两番。...
软件及实现技术
计算机 软件技术
软件开发方法与技术
12
1.3 程序与软件
• 程序是计算机指令的序列,是一个用计算机语言描述的某 一问题的解决步骤。这些指令非常简单(简单的四则运算、 逻辑运算、数据传送和跳转指令)但它们的组合却能完成 非常复杂的任务 。 • 软件是计算机程序,方法,规则,相关的文档以及在计算 机上运行它时所必需的数据。
9
软件的发展历史

10
3、软件技术
计算机解题过程: 1. 理解问题,建立数学模型 2. 设计解题方案 3. 程序编码和调试 4. 程序测试和维护
在这个过程中要用到各种各样的软件技术,有的是抽 象的指导理论,有的是具体的实现工具。
11
软件技术分类
程序设计语言 编译技术 操作系统及实用程序 数据库技术 软件工具 软件工程 程序设计方法 数据结构和算法
e.程序是分层嵌套的
– 程序在结构上是层层嵌套的,在功能上是层层迭加的。
15
P ... call A ... end

第7章 最佳接收机

第7章 最佳接收机

三多选 1.数字通信系统中,为提高接收机性能,在相同输入信噪比的条 件下,使接收机实现特定准则的最佳接收方式有( )。 A 最大输出信噪比准则 B最小均方误差准则 C 最小错误概率准则 D 最大后验概率准则 2.下列关于匹配滤波器冲激响应的说法正确的是( )。 A 冲击响应就是输入信号的镜像在时间上延迟一个取样时刻t0 B 冲击响应就是输入信号的镜像在时间上延迟任意时刻ti C 若某滤波器的冲激响应是波形 s (t ) 在时间上对于固定时刻t0的镜 象,则该滤波器一定是 s (t ) 的匹配滤波器 D 若某滤波器的冲激响应 h(t )是波形s (t ) 在时间上对于固定时刻t0的 反转,则该滤波器一定是 s (t ) 的匹配滤波器
x(t ) s1 (t )dt x(t ) s 2 (t )dt s1
0 TB 0
TB
B
x(t ) s 2 (t )dt x(t ) s1 (t )dt s 2
最大后验 f (s1 / x) f (s 2 / x) s1 f (s1 / x) f (s 2 / x) s 2 概率
准则演变形式
TB s(t ) s (t )dt TB s(t ) s (t )dt s 1 2 1 0 0 TB TB 0 s(t ) s1 (t )dt 0 s(t ) s 2 (t )dt s 2 无
T 最小错误 x VT 或 x B s1 0 T x VT 或 x B s 2 0 概率
4.满足该最小均方误差判决准则的接收机就是最小均方误差 接收机,其相应的框图如下图7—8所示。
平方 -s1(t) s1(t) 比较判决 s2(t) 平方 积分 积分

TB

C++程序设计(第3版)谭浩强 第7章PPT课件

C++程序设计(第3版)谭浩强 第7章PPT课件
• 7.1.4 结构体数组
结构体数组每个元素都是一个结构全类型的数据,它们分别包括各个成员项。 例7.2 对候选人得票的统计程序。设有3个候选人,最终只能有1个人当选为领导。今有10 个人参加投票,从键盘先后输入这10个人所投候选人的名字,要求最后输出各候选人得票结 果。 方法二:string法
第7章 用户自定义数据类型
第7章 用户自定义数据类型
• 7.2 枚举类型
例7.7 口袋中有红、黄、蓝、白、黑5种颜色的球若干。每次从口袋中任意取出3个球,问得 到不同颜色的球的取法,输出每种排列的情况。
写在最后
成功的基础在于好的学习习惯
The foundation of success lies in good habits
结构体变量的指针引用成 员变量方法: (1)(*p).成员名 (2)p->成员名
第7章 用户自定义数据类型
• 7.1.5 指向结构体变量的指针
• 2.用结构体变量和指向结构体变量的指针构成链表 链表是一种常见的重要的数据结构。
例7.4 建立一个如图7.6所示的简单链表, 它由3个学生数据的结点组成。输出各 结点中的数据。
20
谢谢聆听
·学习就是为了达到一定目的而努力去干, 是为一个目标去 战胜各种困难的过程,这个过程会充满压力、痛苦和挫折
Learning Is To Achieve A Certain Goal And Work Hard, Is A Process To Overcome Various Difficulties For A Goal
声明枚举类型的一般形式为: enum 枚举类型名 {枚举常量表}; 例如: enum weekday {sun,mon,tue,wed,thu,fri,sat} workday,week_end; 说明: (1)枚举元素按常量处理,故称枚举常量。 (2)枚举元素作为常量,它们是有值的,其值是一个整数,编译系统定义时的顺序对它们 赋值为0,1,2,…… (3)枚举值可以用来做判断比较,按整数比较规则进行比较。 (4)不能把一个整数直接赋给一个枚举变量,枚举变量只能接受枚举类型数据。

北邮软件工程课件第7章面向对象分析

北邮软件工程课件第7章面向对象分析

一般说来,确定属性的过程包括分析和选择两个步骤。
7.3.4确定属性
属性的确定既与问题域有关,也和目标系统的任务有关。应该仅考虑与具体应用直接相关的属性,不要考虑那些超出所要解决的问题范围的属性。在分析过程中应该首先找出最重要的属性,以后再逐渐把其余属性增添进去。在分析阶段不要考虑那些纯粹用于实现的属性。
通常,在需求陈述中不会一个不漏地写出问题域中所有有关的类—&—对象,因此,分析员应该根据领域知识或常识进一步把隐含的类—&—对象提取出来。例如,在ATM系统的需求陈述中虽然没写“通信链路”和“事务日志”,但是,根据领域知识和常识可以知道,在ATM系统中应该包含这两个实体。
筛选出正确的类—&—对象
显然,仅通过一个简单、机械的过程不可能正确地完成分析工作。非正式分析仅仅帮助我们找到一些候选的类—&—对象,接下来应该严格考察每个候选对象,从中去掉不正确的或不必要的,仅保留确实应该记录其信息或需要其提供服务的那些对象。
1.分析
2.选择
认真考察经初步分析而确定下来的那些属性,从中删掉不正确的或不必要的属性。通常有以下几种常见情况。 误把对象当作属性 把链属性误作为属性 把限定误当成属性 误把内部状态当成了属性 过于细化 存在不一致的属性
图7.5 ATM对象模型中的属性
7.3.5识别继承关系
01
确定了类中应该定义的属性之后,就可以利用继承机制共享公共性质,并对系统中众多的类加以组织。
ATM打印账单,退出现金兑换卡,请储户拿走它们;储户取走账单和卡
ATM确认取款额在预先规定的限额内,然后要求总行处理这个事务;总行把请求转给分行,该分行成功地处理完这项事务并返回该账户的新余额[ZK)]
ATM问储户是否继续这项事务;储户回答“不”

软件工程培训课件(PPT)

软件工程培训课件(PPT)

编码效率技巧:在保证代 码质量的前提下,应该尽 可能提高编码效率,减少 不必要的重复工作。
单元测试的方法与工具
测试用例设 计
执行测试流 程
测试工具选 择
测试结果分 析和报告
集成测试的方法与工具
测试方法:自 下而上、自上
而下
测试工具: JUnit、
Te s t N G 、 Selenium等
测试目的:检 测模块之间的 接口是否正确
方法:采用版本控制、变更 控制、状态报告等手段进行
管理
感谢观看
汇报人:
软件风险管理的方法与策略
风险识别:识别潜在的风险和 问题
风险评估:评估风险的大小和 影响
风险应对:制定应对策略和措 施
风险监控:持续监控风险的变 化和进展
软件配置管理的基本概念与方法
目的:确保软件产品的完整 性、一致性和可追溯性
范围:包括文档、程序、数 据等所有软件工程产品
定义:软件配置管理是一种 标识、组织和控制修改的技 术
质量控制:通过测试、统计等方 法,对软件开发过程中的质量进 行监控和评估,及时发现和解决 问题。
添加标题
添加标题
添加标题
添加标题
质量保证:通过一系列的质量保 证活动,如代码审查、测试、文 档编写等,确保软件质量的稳定 性和可靠性。
工具和技术:使用一些工具和技 术来辅助软件质量管理,如代码 审查工具、测试工具、项目管理 工具等。
编写要求:清晰明了,易于理解,方便查阅,及时更新
编写目的:方便用户和系统管理员使用和维护系统
06
软件工程管理
软件项目计划与进度安排
定义项目目标和范围 确定关键路径和里程碑 分配资源和工作任务 监控和控制项目进度

C语言程序设计第3版 第7章-利用文件进行数据管理

C语言程序设计第3版 第7章-利用文件进行数据管理

C语言程序设计
任务7.3 顺序读写数据文件
7.3.4 用二进制方式对文件读写一组数据
【例7.5】从键盘输入5名学生的相关数据,然后将它们转存到磁盘文件中去,最后再 读取磁盘文件中的数据,并送显示屏显示。
int main(void)
C语言程序设计
任务7.4 随机读写数据文件
复习:顺序读写数据文件的方法: (1)用fgetc和fputc函数对文件读写一个字符; (2)用fgets和fputs函数对文件读写一个字符串; (3)用fscanf和fprintf函数对文件格式化读写; (4)用fread和fwrite函数对文件读写一组数据(二进制方式)
int age;
//年龄
}stu[10];
将10名学生的数据从磁盘文件中读入内存: for(i=0; i<10; i++) fread(&stu[i], sizeof(struct Student), 1, fp);
将内存中10名学生的数据写入磁盘文件: for(i=0; i<10; i++) fwrite(&stu [i], sizeof(struct Student), 1, fp);
调用形式: clearerr(fp) 若文件读写出错,则ferror的函数值(非零值,读写出错标志)会一直被保 留。对同一文件调用clearerr函数 或 rewind函数,或其他任何一个读写函数, 可清除读写出错标志。
对文件操作之前,须使用FILE定义指向文件的指针变量。例如:FILE *fp; 若使fp指向某个文件的文件信息区,则可通过fp访问该文件。
C语言程序设计
任务7.2 文件的打开与关闭
7.2.对1 文用件f的op操e作n函一般数要打先开后数经据过文打开件、读或写、关闭3步。在C语言中,对文

软件工程第七章PPT资料(正式版)

软件工程第七章PPT资料(正式版)

此时,应当再设计与执行一些测试用例,以获得更多的数据。
调试(Debug)
❖软件调试是在进行了成功的测试之后才 开始的工作。它与软件测试不同,调试 的任务是进一步诊断和改正程序中潜在 的错误。
❖调试活动由两部分组成:
▪ 确定程序中可疑错误的确切性质 和位置。
▪ 对程序(设计,编码)进行修改,排 除这个错误。
▪ 现象实际上是由一些非错误原因 (例如,舍入不精确)引起的。
▪ 现象可能是由于一些不容易发现 的人为错误引起的。
▪ 错误是由于时序问题引起的,与 处理过程无关。
▪ 现象是由于难于精确再现的输入 状态(例如,实时应用中输入顺 序不确定)引起。
▪ 现象可能是周期出现的。在软、 硬件结合的嵌入式系统中常常遇 到。
或某些有关测试。 修改错误的过程将迫使人们暂时回到程序设计阶段。
利用某些程序语言的调试功能或专门的交互式调试工具,分析程序的动态过程,而不必修改程序。
❖从技术角度来看,查找错误的难度在于:
▪ 现象与原因所处的位置可能相距 甚远。
▪ 当其它错误得到纠正时,这一错 误所表现出的现象可能会暂时消 失,但并未实际排除。
几种主要的调试方法
调试的关键在于推断程序内部的错误位 置及原因。可以采用以下方法:
强行排错 这种调试方法目前使用较多,效率较低。
它不需要过多的思考,比较省脑筋。例 如:
▪ 通过内存全部打印来调试,在这 大量的数据中寻找出错的位置。
▪ 在程序特定部位设置打印语句, 把打印语句插在出错的源程序的 各个关键变量改变部位、重要分 支部位、子程序调用部位,跟踪 程序的执行,监视重要变量的变 化。
(-10,-10,10) ……
它不需要过多的思考,比较省脑筋。

精品课件-计算机应用基础教程(第3版)王亚平-第7章

精品课件-计算机应用基础教程(第3版)王亚平-第7章
3
第7章 Access 2007数据库简介
3.信息与数据的关联 数据是信息的符号表示,又称为载体;信息是数据的内涵, 也是数据的语义解释。信息与数据是密切关联的,因此,在某 些不需要严格区分的场合,对两者不加区别地使用,如信息处 理也可说成数据处理。例如,5000~5500是数据,而每年学生 入学人数为5000~5500则是信息。
现“空白数据库”栏,在“文件名”中输入文件名“教学管
理”。
(3) 在如图7-5(a)所示的“文件新建数据库”对话框的
“文件名”文本框中输入数据库名“教学管理”,然后单击
“确定”按钮,创建的“教学管理”数据库如图7-5(b)所示。
25
第7章 Access 2007数据库简介
图7-5 例7-3
26
第7章 Access 2007数据库简介
16
第7章 Access 2007数据库简介
【例7-2】 将例7-1设计的E-R图转换为关系模式。 解: ① 实体转换为系部、学生和课程3个独立的关系模式,如 下所示:
系部(系号,系名,主任名) 学生(学号,姓名,性别) 课程(课程号,课程名,学分)
;系号为主键 ;学号为主键 ;课程号为主键
17
第7章 Access 2007数据库简介
23
第7章 Access 2007数据库简介
图7-4 模板创建数据库
24
第7章 Access 2007数据库简介
【例7-3】 在C盘“教学管理”文件夹下创建“教学管理”
数据库。其操作步骤如下:
(1) 选择【功能】选项卡,在中间窗格中单击空白数据库

”图标,可以新建教学管理数据库。
(2) 在“开始使用Microsoft Office Access”栏的右边出
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

解决的问题不同,这三个子模型的重 要程度也不同:解决任何一个问题,都需 要从客观世界实体及实体间相互关系抽象 出极有价值的对象模型;当问题涉及交互 作用和时序时,动态模型是重要的;解决运 算量很大的问题,则涉及重要的功能模型。
动态模型和功能模型中都包含了对象 模型中的操作(即服务或方法)。
复杂问题(大型系统)的对象模型由下 述五个层次组成:主题层(也称为范畴层)、 类—&—对象层、结构层、属性层和服务层, 如图7.1所示。

筛选时主要依据下列标准,删除不正 确或不必要的类与对象:
(1) (2) (3) (4) (5) (6)
冗余 无关 笼统 属性 操作 实现
7.3.2
确定关联
分析确定关联,能促使分析员考虑问 题域的边缘情况,有助于发现那些尚未被 发现的类与对象。
1. 初步确定关联
在需求陈述中使用的描述性动词或动 词词组,通常表示关联关系。因此,在初 步确定关联时,大多数关联可以通过直接 提取需求陈述中的动词词组而得出。
· ATM问储户是否继续这项事务;储户回答“不” · ATM打印账单,退出现金兑换卡,请储户拿走它们;储户取走账
单和卡
· ATM请储户插卡
表7.2
· · · ·
ATM系统的异常情况脚本
ATM请储户插卡;储户插入一张现金兑换卡 ATM接受这张卡并顺序读它上面的数字 ATM要求密码;储户误输入“8888” ATM请求总行验证输入的数字和密码;总行在向有关分行咨询 之后拒绝这张卡 · ATM显示“密码错”,并请储户重新输入密码;储户输入 “1234”;ATM请总行验证后知道这次输入的密码正确 · ATM请储户选择事务类型;储户选择“取款” · ATM询问取款额;储户改变主意不想取款了,他敲“取消”键 · ATM退出现金兑换卡,并请储户拿走它;储户拿走他的卡 · ATM请储户插卡
图7.6 修改后 的ATM 对象模 型
7.4 建立动态模型
第一步,是编写典型交互行为的脚本。 第二步,从脚本中提取出事件,确定 触发每个事件的动作对象以及接受事件的 目标对象。
第三步,排列事件发生的次序,确定 每个对象可能有的状态及状态间的转换关 系,并用状态图描绘它们。 最后,比较各个对象的状态图,检查 它们之间的一致性,确保事件之间的匹配。
(5) 派生关联
应该去掉那些可以用其他关联定义的 冗余关联。
3.进一步完善
应该进一步完善经筛选后余下的关联, 通常从下述几个方面进行改进:
(1) (2) (3) (4)
正名 分解 补充 标明重数
7.3.3
划分主题
在开发大型、复杂系统的过程中,为 了降低复杂程度,人们习惯于把系统再进 一步划分成几个不同的主题,也就是在概 念上把系统包含的内容分解成若干个范畴。
分析也不是一个机械的过程。大多数 需求陈述都缺乏必要的信息,所缺少的信 息主要从用户和领域专家那里获取,同时 也需要从分析员对问题域的背景知识中提 取。
7.2 需求陈述 7.2.1 书写要点
通常,需求陈述的内容包括:问题范 围,功能需求,性能需求,应用环境及假 设条件等。 总之,需求陈述应该阐明“做什么” 而不是“怎样做”。
拥有银行账户的储户有权申请领取现 金兑换卡。使用现金兑换卡可以通过ATM访 问自己的账户。目前仅限于用现金兑换卡 在ATM上提取现金(即取款),或查询有关自 己账户的信息(例如,某个指定账户上的余 额)。
所谓现金兑换卡就是银行卡,上面有 分行代码和卡号。分行代码唯一标识总行 下属的一个分行,卡号确定了这张卡可以 访问哪些账户。通常,一张卡可以访问储 户的若干个账户。
1.确定事件
应该仔细分析每个脚本,以便从中提 取出所有外部事件。经过分析,应该区分 出每类事件的发送对象和接受对象。
2.画出事件跟踪图
事件跟踪图实质上是扩充的脚本,而 且可以把它看作是简化的UML顺序图。
在事件跟踪图中,一条竖线代表一个 对象,每个事件用一条水平的箭头线表示, 箭头方向从事件的发送对象指向接受对象, 时间从上向下递增。
银行柜员使用柜员终端处理储户提交 的储蓄事务。储户可以用现金或支票向自 己拥有的某个账户内存款或开新账户。储 户也可以从自己的账户中取款。通常,一 个储户可能拥有多个账户。
柜员负责把储户提交的存款或取款事 务输进柜员终端,接收储户交来的现金或 支票,或付给储户现金。柜员终端与相应 的分行计算机通信,分行计算机具体处理 针对某个账户的事务并且维护账户。
它应该描述用户的需求而不是提出解决 问题的方法。 应该避免对设计策略施加过多的约束, 也不要描述系统的内部结构,因为这样做将 限制实现的灵活性。
尽量做到语法正确,不要把实际需求 和设计决策混为一谈。 需求陈述仅仅是理解用户需求的出发 点,并不是一成不变的文档。
7.2.2
例子Leabharlann 图7.2 所示的自动取款机(ATM)系统, 是本书讲述面向对象分析和面向对象设计 时使用的一个实例。
7.3.4
确定属性
一般说来,确定属性的过程包括分析 和选择两个步骤。
1.分析
通常,在需求陈述中用名词词组表示 属性。属性的确定既与问题域有关,也和 目标系统的任务有关。
2.选择
认真考察经初步分析而确定下来的那 些属性,从中删掉不正确的或不必要的属 性。
(1) 误把对象当作属性
如果某个实体的独立存在比它的值更 重要,则应把它作为一个对象而不是对象 的属性。
(2) 误把关联类的属性当作一般对象 的属性 (3) 把限定误当成属性
(4) 误把内部状态当成了属性
(5) 过于细化
(6) 存在不一致的属性
如果得出一些看起来与其他属性毫不 相关的属性,则应该考虑把该类分解成两 个不同的类。
图7.4
ATM系统对象模型中的属性
7.3.5 识别继承关系
一般说来,可以使用两种方式建立继 承(即泛化)关系。
(1) 自底向上:
抽象出现有类的共同性质泛化出父类, 这个过程实质上模拟了人类归纳思维 过程。
(2) 自顶向下:
把现有类细化成更具体的子类,这模 拟了人类的演绎思维过程。
图7.5 带有 继承 关系 的ATM 对象 模型
7.3.6
反复修改
事实上,软件开发过程就是一个多次 反复修改、逐步完善的过程。
需求陈述、应用领域的专业知识以及 关于客观世界的常识,是建立对象模型时 的主要信息来源。
7.3.1
确定类与对象
类与对象是在问题域中客观存在的, 系统分析员的主要任务,就是通过分析找 出这些类与对象。 首先,找出所有候选的类与对象;然 后,从候选的类与对象中筛选掉不正确的 或不必要的。
五类事物分析法。 非正式分析。这种分析方法以用自然 语言书写的需求陈述为依据,把陈述中的 名词作为类与对象的候选者,用形容词作 为确定属性的线索,把动词作为服务(操作) 的候选者。
应该尽量给每个状态取个有意义的名 字。通常,从事件跟踪图中当前考虑的竖 线射出的箭头线,是这条竖线代表的对象 达到某个状态时所做的行为(往往是引起另 一类对象状态转换的事件)。
7.4.4
画状态图
通常,用一张状态图描绘一类对象的 行为,它确定了由事件序列引出的状态序 列。
图7.8
ATM系统正常情况脚本的事件跟踪图
从一张事件跟踪图出发画状态图时, 应该集中精力仅考虑影响一类对象的事件, 也就是说,仅考虑事件跟踪图中指向某条 竖线的那些箭头线。
把这些事件作为状态图中的有向边(即 箭头线),边上标以事件名。两个事件之间 的间隔就是一个状态。
图7.2
ATM系统
下面陈述对ATM系统的需求。
某银行拟开发一个自动取款机系统, 它是一个由自动取款机、中央计算机、分 行计算机及柜员终端组成的网络系统。ATM 和中央计算机由总行投资购买。
总行拥有多台ATM,分别设在全市各主 要街道上。分行负责提供分行计算机和柜 员终端。柜员终端设在分行营业厅及分行 下属的各个储蓄所内。该系统的软件开发 成本由各个分行分摊。
图7.1
复杂问题的对象模型
综上所述,我们在概念上可以认为, 面向对象分析大体上按照下列顺序进行: 寻找类—&—对象,识别结构,识别主题, 定义属性,建立动态模型,建立功能模型, 定义服务。
但是分析不可能严格地按照预定顺序 进行,大型、复杂系统的模型需要反复构 造多遍才能建成。
通常,先构造出模型的子集,然后再 逐渐扩充,直到完全、充分地理解了整个 问题,才能最终把模型建立起来。
· ATM要求储户选择事务类型(取款、转账、查询等);储户选择
“取款” · ATM要求储户输入取款额;储户输入“880”
· ATM确认取款额在预先规定的限额内,然后要求总行处理这个事 务;总行把请求转给分行,该分行成功地处理完这项事务并返 回该账户的新余额
· ATM吐出现金并请储户拿走这些现金;储户拿走现金
2.筛选
筛选时主要根据下述标准删除候选的 关联。
(1)已删去的类之间的关联 (2)与问题无关的或应在实现阶段考 虑的关联
(3) 瞬时事件
关联应该描述问题域的静态结构,而 不应该是一个瞬时事件。
(4) 三元关联
三个或三个以上对象之间的关联,大 多可以分解为二元关联或用词组描述成限 定的关联。
脚本描写的范围主要由编写脚本的具 体目的决定。 编写脚本时,首先编写正常情况的脚 本。然后,考虑特殊情况,例如输入或输 出的数据为最大值(或最小值)。最后,考 虑出错情况。
表7.1和表7.2分别给出了ATM系统的正
常情况脚本和异常情况脚本。
表7.1
ATM系统的正常情况脚本
· ATM请储户插卡;储户插入一张现金兑换卡 · ATM接受该卡并读它上面的分行代码和卡号 · ATM要求储户输入密码;储户输入自己的密码“1234”等数字 · ATM请求总行验证卡号和密码;总行要求“39”号分行核对储户 密码,然后通知ATM说这张卡有效
相关文档
最新文档