软件工程601-705.ppt

上传人(卖家):罗嗣辉 文档编号:2046186 上传时间:2022-01-21 格式:PPT 页数:105 大小:388.50KB
下载 相关 举报
软件工程601-705.ppt_第1页
第1页 / 共105页
软件工程601-705.ppt_第2页
第2页 / 共105页
软件工程601-705.ppt_第3页
第3页 / 共105页
软件工程601-705.ppt_第4页
第4页 / 共105页
软件工程601-705.ppt_第5页
第5页 / 共105页
点击查看更多>>
资源描述

1、10.6 定义服务定义服务1. 常规行为(服务)常规行为(服务) 如,读、写类属性的操作;如,读、写类属性的操作;2. 从事件导出的操作(服务)从事件导出的操作(服务) 如,如,“请分行验卡请分行验卡”事件事件“验证卡号验证卡号”;3. 与数据流图中处理框对应的操作(服务)与数据流图中处理框对应的操作(服务) 如如“更新帐户更新帐户”等;等;4. 利用继承减少冗余操作(服务)利用继承减少冗余操作(服务)第第11章章 面向对象设计面向对象设计11.1 面向对象设计的准则面向对象设计的准则 1. 模块化模块化 面向对象的软件开发模式,支持了系统模块化面向对象的软件开发模式,支持了系统模块化的原则:

2、对象就是模块。它把数据结构和操作(的原则:对象就是模块。它把数据结构和操作(方法)紧密地结合在一起构成模块。方法)紧密地结合在一起构成模块。2. 抽象抽象 类实际上是一种抽象数据类型,它对外开放类实际上是一种抽象数据类型,它对外开放的公共接口构成了类的规格说明(协议),这的公共接口构成了类的规格说明(协议),这种接口规定了外界可以使用的合法操作符,利种接口规定了外界可以使用的合法操作符,利用这些操作符可以对类的实例中包含的数据进用这些操作符可以对类的实例中包含的数据进行操作。行操作。 3. 信息隐蔽信息隐蔽 在面向对象方法中,信息隐蔽通过对象的封在面向对象方法中,信息隐蔽通过对象的封装性实现:

3、类结构分离了类的接口与类的实装性实现:类结构分离了类的接口与类的实现,从而支持了信息隐蔽。现,从而支持了信息隐蔽。 4. 弱耦合弱耦合 弱的耦合可以提高软件模块的独立性,避免弱的耦合可以提高软件模块的独立性,避免某一部分模块发生变化对其它模块有较大的影某一部分模块发生变化对其它模块有较大的影响。响。一般来说,对象间的耦合有两大类:一般来说,对象间的耦合有两大类: A交互耦合交互耦合:对象间的耦合通过信息连接来:对象间的耦合通过信息连接来实现。应使交互耦合尽量松散。实现。应使交互耦合尽量松散。 B继承偶合继承偶合:与交互耦合相反,应该提高继:与交互耦合相反,应该提高继承耦合的程度。因为通过继承关

4、系结合起承耦合的程度。因为通过继承关系结合起来的基类和派生类,结合得越紧密越好。来的基类和派生类,结合得越紧密越好。5. 强内聚强内聚面向对象设计中存在三种内聚:面向对象设计中存在三种内聚: A服务内聚:一个服务应该完成一个且完成一服务内聚:一个服务应该完成一个且完成一个功能。个功能。 B类内聚:一个类应该只有一个用途,它的属类内聚:一个类应该只有一个用途,它的属性和服务应该是高内聚的。性和服务应该是高内聚的。 C一般一般特殊内聚:即基类特殊内聚:即基类派生类的内聚。派生类的内聚。 6. 可重用可重用 使用已经存在的类(包括开发环境提供的使用已经存在的类(包括开发环境提供的类库,及以往开发相似

5、系统时创建的类),类库,及以往开发相似系统时创建的类),可以提高软件重用性,提高软件生产率。可以提高软件重用性,提高软件生产率。 人们在面向对象方法中也积累了一些经验,人们在面向对象方法中也积累了一些经验,总结出几条启发规则:总结出几条启发规则: 1. 设计结果应该清晰易懂;设计结果应该清晰易懂; 1)用词一致;)用词一致; 2)使用已有的协议;)使用已有的协议; 3)减少消息模式的数目;)减少消息模式的数目; 4)避免模糊的定义。)避免模糊的定义。11.2 启发规则启发规则 2. 一般一般特殊结构的深度应适当:中等规模特殊结构的深度应适当:中等规模的系统中,类等级层次数应保持为的系统中,类等

6、级层次数应保持为72。不是必。不是必要情况,不应该随意创建派生类;要情况,不应该随意创建派生类;3. 设计简单的类:设计小而简单的类,便于设计简单的类:设计小而简单的类,便于开发和管理;开发和管理; 1)避免包含过多的属性;)避免包含过多的属性; 2)有明确的定义;)有明确的定义; 3)尽量简化对象之间的合作关系;)尽量简化对象之间的合作关系; 4)不要提供太多服务。)不要提供太多服务。4. 使用简单的协议:设计简单的类接口,发送使用简单的协议:设计简单的类接口,发送的消息中参数要少。的消息中参数要少。5. 使用简单的服务:编写实现每一个服务时,使用简单的服务:编写实现每一个服务时,避免复杂的

7、语句和结构;避免复杂的语句和结构;6. 把设计变动减至最小。把设计变动减至最小。11.3 软件重用软件重用11.3.1 概述概述 1. 重用重用 重用的三个层次:重用的三个层次: 1)知识重用;)知识重用; 2)方法和标准的重用;)方法和标准的重用; 3)软件成分的重用。)软件成分的重用。2. 软件成分的重用级别:软件成分的重用级别: 1)代码重用)代码重用 a. 源代码剪贴;源代码剪贴; b. 源代码包含;源代码包含; c. 继承;继承; 2)设计结果重用)设计结果重用 3)分析结果重用)分析结果重用 3. 典型的可重用软件成分典型的可重用软件成分 1)项目计划;)项目计划; 2)成本计划;

8、)成本计划; 3)体系结构;)体系结构; 4)需求模型和规格说明;)需求模型和规格说明; 5)设计;)设计; 6)源代码;)源代码; 7)用户文档和技术文档;)用户文档和技术文档;8)用户界面;)用户界面; 9)数据;)数据; 10)测试用例。)测试用例。11.4 系统分解系统分解类与对象层类与对象层人机交互人机交互部分部分问题域部问题域部分分任务管理任务管理部分部分数据管理数据管理部分部分主题层主题层结构层结构层属性层属性层服务层服务层图图11.2 典型的面向对象设计模型典型的面向对象设计模型11.5 设计问题域子系统设计问题域子系统 在设计问题域部分时,仅需要从实现的角度对在设计问题域部分

9、时,仅需要从实现的角度对问题域模型(对象模型、动态模型、功能模型)问题域模型(对象模型、动态模型、功能模型)作一些补充、修改,主要是增添、合并或分解类作一些补充、修改,主要是增添、合并或分解类与对象、属性和服务,调整继承关系等。与对象、属性和服务,调整继承关系等。1. 调整需求调整需求2. 重用已有的类重用已有的类3. 组合问题域的类组合问题域的类4. 增添基类以定义公共函数集合增添基类以定义公共函数集合5. 调整继承层次调整继承层次 1)使用多重继承机制)使用多重继承机制 2)使用单继承机制)使用单继承机制6. ATM系统实例系统实例11.6 设计人机交互子系统设计人机交互子系统 在面向对象

10、分析中,已经对用户界面需求作了在面向对象分析中,已经对用户界面需求作了初步分析,在面向对象设计过程中,要对系统人初步分析,在面向对象设计过程中,要对系统人机交互部分进行详细设计,其中包括指定窗口和机交互部分进行详细设计,其中包括指定窗口和报表的形式、设计命令层次等等。报表的形式、设计命令层次等等。 设计人机交互子系统的策略:设计人机交互子系统的策略: 1)分类用户;)分类用户; 2)描述用户;)描述用户; 3)设计命令层次;)设计命令层次; 4)设计人机交互类。)设计人机交互类。11.7 设计任务管理子系统设计任务管理子系统 任务可视作进程(任务可视作进程(Process)1. 分析并发性分析

11、并发性 基于动态模型分析并发性,如果对象间不存在交互,基于动态模型分析并发性,如果对象间不存在交互,或不同时接受事件,则是并发的。或不同时接受事件,则是并发的。 并发任务可以在不同的处理器上实现,也可以在单个并发任务可以在不同的处理器上实现,也可以在单个处理器上利用多任务操作系统实现。处理器上利用多任务操作系统实现。2. 设计任务管理子系统设计任务管理子系统 1)确定事件驱动型任务:主要完成通信工作)确定事件驱动型任务:主要完成通信工作 工作过程:睡眠工作过程:睡眠等待来自数据线的中断等待来自数据线的中断任务任务唤醒、接收数据唤醒、接收数据通知相应对象通知相应对象继续睡眠继续睡眠 2)确定时钟

12、驱动型任务)确定时钟驱动型任务 每隔一定时间触发执行某些任务。每隔一定时间触发执行某些任务。 3)确定优先任务)确定优先任务4)确定关键任务)确定关键任务5)确定协调任务)确定协调任务 当同时运行的任务较多时(当同时运行的任务较多时(3个以上),一般个以上),一般设计协调任务,会增加系统开销,但有利于封设计协调任务,会增加系统开销,但有利于封装不同任务间的协调控制。装不同任务间的协调控制。6)尽量减少任务数)尽量减少任务数7)确定资源需求)确定资源需求 计算系统载荷(单位时间处理业务数),估计算系统载荷(单位时间处理业务数),估算所需算所需CPU性能。性能。11.8 设计数据管理子系统设计数据

13、管理子系统11.8.1 选择数据存储管理模式选择数据存储管理模式 1. 文件管理系统文件管理系统 2. 关系数据库管理系统关系数据库管理系统 3. 面向对象数据库管理系统面向对象数据库管理系统11.8.2 设计数据管理子系统设计数据管理子系统 1. 设计数据格式设计数据格式 2. 设计相应的服务设计相应的服务11.8.3 ATM系统实例系统实例 采用成熟的商品化关系数据库。根据数据库范式设计,保持数据采用成熟的商品化关系数据库。根据数据库范式设计,保持数据一致性、完整性。一致性、完整性。 处理并发事务时,每个事务作为一个不可分割的批操作来处理,处理并发事务时,每个事务作为一个不可分割的批操作来

14、处理,由事务封锁帐户,直至事务结束。由事务封锁帐户,直至事务结束。11.9 设计类中的服务设计类中的服务11.9.1 确定类中应有的服务确定类中应有的服务11.9.2 设计实现服务的方法设计实现服务的方法 1. 设计实现服务的算法设计实现服务的算法 1)算法复杂度;)算法复杂度; 2)容易理解、容易实现;)容易理解、容易实现; 3)容易修改;)容易修改; 2. 选择数据结构选择数据结构 3. 定义内部类和内部操作定义内部类和内部操作第第12章章 面向对象实现面向对象实现12.1.1 面向对象语言的优点面向对象语言的优点 使用面向对象语言时,编译程序可以自动把使用面向对象语言时,编译程序可以自动

15、把面向对象概念映射到目标程序中。面向对象概念映射到目标程序中。 使用非面向对象语言编写面向对象程序,则使用非面向对象语言编写面向对象程序,则必须由程序员自己把面向对象概念映射到程序必须由程序员自己把面向对象概念映射到程序中。中。 1980年的年的smalltalk-80发展了发展了Simula-67的对的对象和类的概念,并引入了方法、消息、元类及象和类的概念,并引入了方法、消息、元类及协议等概念,所以有人将协议等概念,所以有人将smalltalk80称为第一称为第一个面向对象语言。个面向对象语言。 但是,使面向对象广泛流行的是但是,使面向对象广泛流行的是C+。12.1.2 面向对象语言的技术特

16、点面向对象语言的技术特点选择面向对象语言时应考虑的技术特点:选择面向对象语言时应考虑的技术特点: 1. 支持类与对象概念的机制支持类与对象概念的机制 2. 实现整体部分(聚集)结构的机制实现整体部分(聚集)结构的机制 3. 实现一般特殊(泛化)结构的机制实现一般特殊(泛化)结构的机制 4. 实现属性和服务的机制实现属性和服务的机制 5. 类型检查类型检查6. 类库类库7. 效率效率8. 持久保存对象持久保存对象9. 参数化类参数化类10. 开发环境开发环境12.1.3 选择面向对象语言选择面向对象语言 1. 将来能否占主导地位将来能否占主导地位 2. 可重用性可重用性 3. 类库和开发环境类库

17、和开发环境 4. 其他因素其他因素 有否提供技术支持?提供开发人员什么开发平台?有否提供技术支持?提供开发人员什么开发平台?对及其性能的需求?集成已有软件的容易程度。对及其性能的需求?集成已有软件的容易程度。 12.2 程序设计风格程序设计风格12.2.1 提高可重用性提高可重用性12.2.2 提高可扩充性提高可扩充性12.2.3 提高健壮性提高健壮性12.3 测试策略测试策略12.3.1 面向对象的单元测试面向对象的单元测试基类:操作基类:操作A:X子类:操作子类:操作A1:XA2:XA3:X有必要在每有必要在每个子类中测个子类中测试操作试操作 X 不孤立地测试单个操作(函数),而是把操作作

18、为类的一部分进行测试。不孤立地测试单个操作(函数),而是把操作作为类的一部分进行测试。12.3.2 面向对象的集成测试面向对象的集成测试 两种不同的测试策略:两种不同的测试策略: 1)基于线程的测试()基于线程的测试(thread based testing) 将响应系统的一个输入或一个事件所需要的哪些类集将响应系统的一个输入或一个事件所需要的哪些类集成起来测试。成起来测试。 2)基于使用的测试(基于使用的测试(use based testing) 先测试独立类,再测试使用独立类的下一层次的类先测试独立类,再测试使用独立类的下一层次的类(依赖类),重复直至完毕。(依赖类),重复直至完毕。12.

19、3.3 面向对象的确认测试面向对象的确认测试 主要是根据动态模型和描述系统行为的脚本来设计确认主要是根据动态模型和描述系统行为的脚本来设计确认测试用例。测试用例。12.4 设计测试用例设计测试用例12.4.1 测试类的方法测试类的方法1. 随机测试随机测试 ATM系统中系统中account(帐户)类的操作有:帐户)类的操作有:Open(打打开)、开)、Setup(建立)、建立)、Deposit(存款)、存款)、Withdraw(取取款)、款)、Balance(余额)、余额)、Summarize(清单)、清单)、CreditLimit(透支限额)、透支限额)、Close(关闭)。关闭)。 可以随

20、机地产生一系列不同的操作序列:可以随机地产生一系列不同的操作序列:测试用例测试用例1:Open.Setup.Deposit.Balance.Summarize.Withdraw.Close测试用例测试用例2: Open.Setup.Withdraw.Deposit.Balance.CreditLimit.Close2. 划分测试(类似于等价类划分)划分测试(类似于等价类划分)1)基于状态的划分)基于状态的划分 改变改变Account类状态的操作:类状态的操作: deposit, withdraw; 不改变不改变Account类状态的操作:类状态的操作: balance, summarize,

21、creditLimit 测试用例:测试用例: 1.open.setup.deposit.deposit.withdraw.withdraw.close; 2.open.setup.balance.summarize.creditLimit.close;2)基于属性的划分)基于属性的划分 根据类操作使用的属性来划分操作。根据类操作使用的属性来划分操作。 例,按属性例,按属性Balance分可三类:分可三类: 使用使用Balance的操作;的操作; 不使用不使用Balance的操作;的操作; 不使用也不修改不使用也不修改balance的操作。的操作。3)基于功能的划分)基于功能的划分 依据类操作完

22、成的功能来划分类操作。依据类操作完成的功能来划分类操作。 例,初始化操作:例,初始化操作:open,setup 计算操作:计算操作:deposit,withdraw 查询操作:查询操作:balance, summarize, creditLimit 3. 基于故障的测试基于故障的测试一般依靠经验和直觉,类似于错误推测测试法。一般依靠经验和直觉,类似于错误推测测试法。12.4.2 集成测试方法集成测试方法 测试类协作可以使用随机测试方法、划分测试测试类协作可以使用随机测试方法、划分测试方法、行为测试等。方法、行为测试等。 1. 多类测试多类测试2. 从动态模型导出测试用例从动态模型导出测试用例E

23、mptyacctsetupacctworkingacctnonworkingacctdeadacctopenSetup acctDeposit(initial)closeWithdraw (final)depositwithdrawBalanceCreditAcct InfoAccount类的状态转换图类的状态转换图应使应使Account类实例遍历所有允许的状态转换:类实例遍历所有允许的状态转换:测试用例测试用例1: open. setupacct. deposit(initial). withdraw(final). Close测试用例测试用例2: open. setupacct. depo

24、sit(initial). deposit. blance. credit. withdraw(final). Close测试用例测试用例3: open. setupacct. deposit(initial). deposit. withdraw. AcctInfo. withdraw(final). Close 第13章:软件评价与管理 ANSI/IEEE Std 729-1983 定义的定义的“软件质量软件质量”为:为:与软件产品满足规定的和隐含的需求的能与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体力有关的特征或特性的全体。 M.J.Fisher定义的定义的“软件质量软件

25、质量”为:为:所有描述所有描述计算机软件优秀程度的特性的组合计算机软件优秀程度的特性的组合。 13.1 软件质量软件质量 在计算机发展早期,计算机内存容量有限,在计算机发展早期,计算机内存容量有限,运行速度慢,人们设计软件时特别强调时间、运行速度慢,人们设计软件时特别强调时间、空间效率。空间效率。 现今对软件质量已经开始形成较全面的评价。现今对软件质量已经开始形成较全面的评价。 13.1.1 软件质量标准软件质量标准一般说来,应从三个方面考虑软件质量:一般说来,应从三个方面考虑软件质量:1)功能与性能方面功能与性能方面 软件应该能够按照既定的要求进行工作,与软件应该能够按照既定的要求进行工作,

26、与明确规定的功能和性能需求一致。明确规定的功能和性能需求一致。 软件要保证能够可靠的工作,合法的输入下软件要保证能够可靠的工作,合法的输入下正确运行,非法输入和意外事件可安全处理。正确运行,非法输入和意外事件可安全处理。2)软件结构方面软件结构方面 软件应该具备良好的结构软件应该具备良好的结构: 1)要求系统内部结构清晰,易于软件人员)要求系统内部结构清晰,易于软件人员阅读和理解,方便对软件的修改和维护;阅读和理解,方便对软件的修改和维护; 2)要求系统具备良好的人机交互界面,方)要求系统具备良好的人机交互界面,方便用户使用。便用户使用。 与明确规定的功能和性能要求相比,这些需与明确规定的功能

27、和性能要求相比,这些需求是隐含的,也是求是隐含的,也是“软件质量软件质量”概念中所定义概念中所定义的。的。 3)开发标准与文档方面开发标准与文档方面 软件开发应该与明确成文的开发标准相一软件开发应该与明确成文的开发标准相一致,而且要遵循一些软件开发准则,软件文致,而且要遵循一些软件开发准则,软件文档资料也必须齐全。档资料也必须齐全。 以上三方面是相辅相成的,但还必须指出:以上三方面是相辅相成的,但还必须指出:A不同的人对软件质量的要求不同不同的人对软件质量的要求不同。用户要。用户要求软件使用方便,执行效率高;而维护人求软件使用方便,执行效率高;而维护人员要求软件文档资料清晰、完整。员要求软件文

28、档资料清晰、完整。B不同的软件系统,它的关键特性有所不同不同的软件系统,它的关键特性有所不同。例如,可移植性是某类软件系统的重要特例如,可移植性是某类软件系统的重要特性,而对于另外一些系统却不是最重要的。性,而对于另外一些系统却不是最重要的。 C质量的不同特性之间可能是矛盾的质量的不同特性之间可能是矛盾的。例。例如,片面强调软件执行效率,设计出来如,片面强调软件执行效率,设计出来的软件就可能结构复杂;追求良好的可的软件就可能结构复杂;追求良好的可靠性,就不一定能获得较高的运行速度。靠性,就不一定能获得较高的运行速度。 大型软件系统的质量应该从可靠性、易大型软件系统的质量应该从可靠性、易理解性、

29、易维护性和效率等几个方面评价。理解性、易维护性和效率等几个方面评价。 具体开发时应使诸多的质量特性最大限具体开发时应使诸多的质量特性最大限度地满足。度地满足。软件质量保证(软件质量保证(SQA)主要做好几方面:主要做好几方面:1)应用技术手段应用技术手段 软件质量保证活动开始于帮助分析员获得高软件质量保证活动开始于帮助分析员获得高质量的规格说明书,帮助设计员应用高效的技质量的规格说明书,帮助设计员应用高效的技术方法和工具,并且始终贯穿整个开发过程。术方法和工具,并且始终贯穿整个开发过程。13.1.2 软件质量保证软件质量保证2)组织技术评审组织技术评审 在软件开发过程的每个阶段结束后,都需在软

30、件开发过程的每个阶段结束后,都需要组织技术评审,可以及早发现软件开发过要组织技术评审,可以及早发现软件开发过程中可能引起的潜在错误,并对质量进行评程中可能引起的潜在错误,并对质量进行评价。价。3)加强软件测试加强软件测试 软件测试是软件质量保证的重要手段,软件测试是软件质量保证的重要手段,可以发现软件中大多数隐蔽的错误。可以发现软件中大多数隐蔽的错误。4)推行软件工程标准推行软件工程标准 标准是由用户或委托单位确定的,有时是标准是由用户或委托单位确定的,有时是设计者自定的。设计者自定的。 一旦标准确定,就应该重视标准,并在软一旦标准确定,就应该重视标准,并在软件开发中统一遵循。因此,可以将软件

31、规范件开发中统一遵循。因此,可以将软件规范情况作为软件技术评审的一项内容。情况作为软件技术评审的一项内容。5)控制软件变更控制软件变更 软件质量的一个主要威胁来自于对软件的修软件质量的一个主要威胁来自于对软件的修改和变更。改和变更。 在修改的过程中常常会引起一些新的潜在错在修改的过程中常常会引起一些新的潜在错误。因此,应严格控制软件的修改和变更。误。因此,应严格控制软件的修改和变更。6)对软件质量进行度量对软件质量进行度量 软件质量保证的一个重要目标也是对软软件质量保证的一个重要目标也是对软件质量进行跟踪,这就需要对软件质量进件质量进行跟踪,这就需要对软件质量进行度量,并对软件质量情况及时记录

32、和报行度量,并对软件质量情况及时记录和报告。告。 Boehm在在1976年提出了定量评年提出了定量评价软件质量的概价软件质量的概念,并给出了念,并给出了60个质量度量公式,个质量度量公式,还第一次提出了还第一次提出了软件质量的层次软件质量的层次模型。模型。 可移植性可移植性可使用性可使用性可维护性可维护性可靠性可靠性效率效率环境工程环境工程可测试性可测试性可理解性可理解性可修改性可修改性设备独立性设备独立性完善性完善性准确性准确性一致性一致性设备效率设备效率可存取性可存取性通信性通信性结构性结构性自描述性自描述性简洁性简洁性易读性易读性可扩充性可扩充性图图13.1 Boehm模型模型一、一、B

33、oehm模型模型13.2 软件质量度量模型软件质量度量模型 McCall于于1979年提出了包括软件质量要素、软件年提出了包括软件质量要素、软件评价准则、软件质量度量的三个层次的评价准则、软件质量度量的三个层次的McCall软件软件质量度量模型。质量度量模型。产品修正产品修正产品转移产品转移互连性互连性可移植性可移植性复用性复用性可维护性可维护性可测试性可测试性灵活性灵活性正确性正确性可靠性可靠性可使用性可使用性效率效率完整性完整性图图13.2 McCall软件质量模型软件质量模型产品运行产品运行二、二、McCall模型模型 这个模型提出了这个模型提出了11个软件质量要素,个软件质量要素,22

34、个软件属性个软件属性(评价准则)。其中(评价准则)。其中11个质量要素分别面向软件产品个质量要素分别面向软件产品的运行、修正和转移等三个主要用途。的运行、修正和转移等三个主要用途。 产品修正产品修正产品转移产品转移互连性互连性可移植性可移植性复用性复用性可维护性可维护性可测试性可测试性灵活性灵活性正确性正确性可靠性可靠性可使用性可使用性效率效率完整性完整性图图13.2 McCall软件质量模型软件质量模型产品运行产品运行软件的质量因素定义如下:软件的质量因素定义如下:1)正确性正确性:软件满足设计规格说明及用户:软件满足设计规格说明及用户预期目标的程度,它要求软件没有错误。预期目标的程度,它要

35、求软件没有错误。2)可靠性可靠性:软件按设计要求,在规定时间:软件按设计要求,在规定时间和条件下不出故障、持续运行的程度。和条件下不出故障、持续运行的程度。3)效率效率:为完成预定功能,软件系统所需:为完成预定功能,软件系统所需的计算机资源的多少。的计算机资源的多少。4)完整性完整性:为某一目的而保护数据,避免它:为某一目的而保护数据,避免它受到有意、偶然的破坏或遗失的能力。受到有意、偶然的破坏或遗失的能力。5)可使用性可使用性:用户学习、使用软件以及为程:用户学习、使用软件以及为程序准备输入和解释输出所需工作量的大小。序准备输入和解释输出所需工作量的大小。6)可维护性可维护性:对一个已投入运

36、行的软件进行:对一个已投入运行的软件进行相应诊断和修改所需工作量的大小。相应诊断和修改所需工作量的大小。7)可测试性可测试性:测试软件以确保其能够执行预:测试软件以确保其能够执行预定功能所需工作量的大小。定功能所需工作量的大小。8)灵活性灵活性:修改或改进一个已投入运行的软件:修改或改进一个已投入运行的软件所需工作量的大小。所需工作量的大小。9)可移植性可移植性:将一个软件系统从一个计算机系:将一个软件系统从一个计算机系统移植到另一个计算机系统或环境所需工统移植到另一个计算机系统或环境所需工作量的大小。作量的大小。10)复用性复用性:一个软件(或软件的部件)能再:一个软件(或软件的部件)能再次

37、用于其它应用的程度。次用于其它应用的程度。11)互连性互连性:连接一个软件或其他系统所需工:连接一个软件或其他系统所需工作量的大小。作量的大小。 通常,对以上通常,对以上11个质量要素直个质量要素直接度量是困难的,接度量是困难的,因此因此 McCall 定定义了一些评价准义了一些评价准则,使用它们来则,使用它们来估计软件质量要估计软件质量要素的值。素的值。 可训练性可训练性可操作性可操作性可跟踪性可跟踪性完整性完整性容错性容错性准确性准确性一致性一致性执行效率执行效率复杂性复杂性安全性安全性工具性工具性简明性简明性可审计性可审计性可扩充性可扩充性模块性模块性自描述性自描述性简洁性简洁性通用性通

38、用性硬件独立性硬件独立性软件独立性软件独立性通信共用性通信共用性数据共用性数据共用性可使用性可使用性正确性正确性可靠性可靠性效率效率完整性完整性可维护性可维护性灵活性灵活性可测试性可测试性可移植性可移植性复用性复用性互连性互连性产品运行产品运行产品修正产品修正产品转移产品转移图图13.3 McCall质量度量模型质量度量模型质量因素质量因素主要用途主要用途软件属性(评价准则)软件属性(评价准则) 度量度量三、三、ISO质量度量模型质量度量模型 1985年,国际标准化组织(年,国际标准化组织(ISO)提出建议,提出建议,软件质量度量模型由三层组成:软件质量度量模型由三层组成: 1)高层是软件)高

39、层是软件质量需求评价准则质量需求评价准则(SQRC) 2)中层是软件)中层是软件质量设计评价准则质量设计评价准则(SQDC) 3)底层是软件)底层是软件质量度量评价准则质量度量评价准则(SQMC) ISO的三层结构来源于的三层结构来源于McCall的模型,其的模型,其高层、中层、底层分别与高层、中层、底层分别与McCall模型的质模型的质量因素、评价准则、度量相对应。量因素、评价准则、度量相对应。 其中其中SQRC由由8个质量因素组成,个质量因素组成,SQDC选用了选用了23个评价准则。个评价准则。 ISO认为,高层和认为,高层和中层应建立国际标准,中层应建立国际标准,以便在国际范围内推以便在

40、国际范围内推广应用广应用SQM技术。技术。 而底层而底层SQMC则可以则可以由各使用单位根据实由各使用单位根据实际情况制定。际情况制定。 图图13.4 ISO建建议的质议的质量度量量度量模型模型可跟踪性可跟踪性完整性完整性一致性一致性准确性准确性容错性容错性简洁性简洁性模块性模块性通用性通用性可扩充性可扩充性工具性工具性自描述性自描述性简明性简明性执行效率执行效率存储效率存储效率存取控制存取控制存取审查存取审查可操作性可操作性可训练性可训练性通信性通信性软件独立性软件独立性硬件独立性硬件独立性通信共用性通信共用性数据共用性数据共用性正确性正确性可靠性可靠性可维护性可维护性适应性适应性效率效率安

41、全性安全性可用性可用性连接性连接性SQRCSQDCSQMC由 各 使 用 单由 各 使 用 单位 根 据 实 际位 根 据 实 际情况制定情况制定 1991年年ISO发布的发布的ISO/IEC 9126质量特性质量特性国际标准中国际标准中: SQRC(高层)改称为高层)改称为“质量特性质量特性”; SQDC(中层)称为中层)称为“质量子特性质量子特性”; SQMC(底层)称为底层)称为“度量度量”。 高层质量特性降为高层质量特性降为6个,分别是:个,分别是: 1)功能性功能性; 2)可靠性可靠性; 3)可维护性可维护性; 4)效率效率; 5)可使用性可使用性; 6)可移植性可移植性。 中层子特

42、性推荐使用中层子特性推荐使用21个。个。 软件的各种质量因素之间相互存在有利和软件的各种质量因素之间相互存在有利和不利的影响,所以没有一种软件的设计能同不利的影响,所以没有一种软件的设计能同时使所有的质量因素都是最佳的。时使所有的质量因素都是最佳的。 在实际中,应根据软件的不同类型和不同在实际中,应根据软件的不同类型和不同要求,对不同的评价准则给出不同的权重。要求,对不同的评价准则给出不同的权重。 软件质量度量(软件质量度量(SQM)技术,仍然处于发技术,仍然处于发展和完善阶段。展和完善阶段。 关于软件质量因素的选用,有面向用户的,关于软件质量因素的选用,有面向用户的,有面向软件开发人员的,有

43、面向管理人员的。有面向软件开发人员的,有面向管理人员的。 根据根据ISO今年来讨论的趋势,逐渐向面向用今年来讨论的趋势,逐渐向面向用户靠拢。因为,软件质量因素是在软件需求分户靠拢。因为,软件质量因素是在软件需求分析和定义阶段,由用户根据需要提出来的要求。析和定义阶段,由用户根据需要提出来的要求。13.3 软件工程管理软件工程管理 软件工程管理就是指对整个软件开发运行过软件工程管理就是指对整个软件开发运行过程,包括分析、设计、编码、测试及维护各个程,包括分析、设计、编码、测试及维护各个阶段的一切活动进行有效的管理和控制。阶段的一切活动进行有效的管理和控制。 它主要包括开发人员、组织机构、用户、文

44、它主要包括开发人员、组织机构、用户、文档资料、计划进度、经费开支等方面的管理。档资料、计划进度、经费开支等方面的管理。一、组织机构一、组织机构 软件开发没有统一的模式,但是一个好的软件开发软件开发没有统一的模式,但是一个好的软件开发组织应该具有好的组织机构、合理的人员分工、有效组织应该具有好的组织机构、合理的人员分工、有效的通讯。的通讯。软件经理软件经理项目经理项目经理1项目经理项目经理2项目经理项目经理n程序小组程序小组程序小组程序小组程序小组程序小组程序小组程序小组程序小组程序小组程序小组程序小组审查小组审查小组图图13.5 大型软件开发组织结构大型软件开发组织结构 13.3.1 组织机构

45、与人员管理组织机构与人员管理 在大型软件开发组织结构中,软件经理负责管理软在大型软件开发组织结构中,软件经理负责管理软件开发部门,在各个项目间分配和协调各种资源。项件开发部门,在各个项目间分配和协调各种资源。项目经理领导目经理领导1到到6个程序小组,管理一个具体项目的各个程序小组,管理一个具体项目的各个方面(包括计划、进度、审查、复审等)。个方面(包括计划、进度、审查、复审等)。软件经理软件经理项目经理项目经理1项目经理项目经理2项目经理项目经理n程序小组程序小组程序小组程序小组程序小组程序小组程序小组程序小组程序小组程序小组程序小组程序小组审查小组审查小组图图13.5 大型软件开发组织结构大

46、型软件开发组织结构 每个程序小组负责项目的一部分开发工作。审查每个程序小组负责项目的一部分开发工作。审查小组从事质量保证活动,在项目开发每个阶段结束小组从事质量保证活动,在项目开发每个阶段结束之前进行技术审查和管理复审。之前进行技术审查和管理复审。 软件经理软件经理项目经理项目经理1项目经理项目经理2项目经理项目经理n程序小组程序小组程序小组程序小组程序小组程序小组程序小组程序小组程序小组程序小组程序小组程序小组审查小组审查小组图图13.5 大型软件开发组织结构大型软件开发组织结构二、主程序员组二、主程序员组 主程序员组由主程序员组由IBM公司在公司在70年代初期提出,它年代初期提出,它是一种

47、程序小组的较为流行的组织形式。是一种程序小组的较为流行的组织形式。 高级工程师高级工程师(主程序员)(主程序员)后备工程师后备工程师技术人员技术人员专家专家资料员资料员辅助人员辅助人员图图13.6 主程序员组主程序员组 主程序员组中选用经验丰富、技术好的程序员担任主程序员组中选用经验丰富、技术好的程序员担任主主程序员程序员。他负责主持计划、协调和复审该程序小组中的。他负责主持计划、协调和复审该程序小组中的全部技术活动。全部技术活动。技术人员技术人员一般由一般由2到到5人组成,负责软件人组成,负责软件分析和开发活动。分析和开发活动。后备工程师后备工程师支持高级工程师(主程序支持高级工程师(主程序

48、员)的工作,必要时代替主程序员工作。员)的工作,必要时代替主程序员工作。高级工程师高级工程师(主程序员)(主程序员)后备工程师后备工程师技术人员技术人员专家专家资料员资料员辅助人员辅助人员图图12.6 主程序员组主程序员组 根据应用的规模和类型,程序小组可能还需要临时根据应用的规模和类型,程序小组可能还需要临时或长期地增加一些具体领域的或长期地增加一些具体领域的专家专家、辅助人员辅助人员(初级(初级程序设计员、秘书、打字员等)、程序设计员、秘书、打字员等)、资料管理员资料管理员。 高级工程师高级工程师(主程序员)(主程序员)后备工程师后备工程师技术人员技术人员专家专家资料员资料员辅助人员辅助人

49、员图图12.6 主程序员组主程序员组三、用户三、用户 用户是应用软件开发中一个重要的,不可用户是应用软件开发中一个重要的,不可忽视的因素。忽视的因素。 在软件开发过程中必须得到用户的密切配合在软件开发过程中必须得到用户的密切配合与支持。项目负责人必须特别留意与用户保持与支持。项目负责人必须特别留意与用户保持联系,掌握用户的心理和动态,防止来自用户联系,掌握用户的心理和动态,防止来自用户的一些干扰。的一些干扰。用户的干扰,如:用户的干扰,如:1)不配合不配合。这种表现来自于对软件持怀疑态。这种表现来自于对软件持怀疑态度或抵触心理的用户。度或抵触心理的用户。2)急于求成急于求成。3)变化无常变化无

50、常。这种表现来自于个别用户不假。这种表现来自于个别用户不假思索,不断改变原有的需求,提出新的要思索,不断改变原有的需求,提出新的要求和修改意见。求和修改意见。 为了保证软件开发能按预定的时间表进行,为了保证软件开发能按预定的时间表进行,必须对软件开发过程加以控制:必须对软件开发过程加以控制:1)进度控制进度控制 项目进度的制定应在软件定义与分析阶段完项目进度的制定应在软件定义与分析阶段完成,一旦制定,要严格执行,不要随意更改。成,一旦制定,要严格执行,不要随意更改。13.3.2 软件工程控制软件工程控制2)人员控制人员控制 人员的频繁变动或流动将会大大增加软件人员的频繁变动或流动将会大大增加软

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

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(软件工程601-705.ppt)为本站会员(罗嗣辉)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|