软件工程 第10章
《软件工程》第10章 软件维护
北京大学远程教育课程
Software Engineering_Chapter10-2
问题定义
计划 时期 可行性论证 及软件计划
需求分析
概要设计 开发 时期
详细设计Байду номын сангаас
编码
测试 运行时期 运行/维护
北京大学远程教育课程
Software Engineering_Chapter10-3
本章主要内容
• 10.1 软件维护的定义,目标与任务 • 10.2 软件维护的类型 • 10.3 软件的可维护性
北京大学远程教育课程
Software Engineering_Chapter10-13
10.2.1 改正性维护(续)
• 实践表明,软件测试和排错不可能完全暴露并改正一个大 型软件系统中的所有错误。 • 经过统计分析,在典型的市场销售的软件包中,还有缺陷 的代码行约占代码总行数的3%。正式投入使用的软件中 含有错误是不足为奇的,即使是已运行多年的软件。 • 改正性维护举例:
北京大学远程教育课程
Software Engineering_Chapter10-6
10.1.3 软件维护的任务
• 一个软件开发机构60%的精力用在维护现有的软件上。随 着产品的增加,这个比例还将不断提高。不仅当前的软件 版本要维护,仍在使用的旧版本和即将投入使用的新版本 也将需要维护。 • 在软件整个运行周期中,不仅要解决原有问题,还要解决 修改过程中产生的新问题。因此软件维护是一个无穷尽的 过程。
Software Engineering_Chapter10-18
10.2.4 预防性维护
• 维护人员不要单纯等待用户提出维护的请求,而应该选择 那些还能使用数年、目前虽能运行,但不久就须作重大修 改或加强的软件,进行预先的维护。预防性维护可以改善 软件的可维护性,减少今后对它们维护时所需要的工作量。
软件工程导论第10章面向对象分析
易于理解,同时减少了代码冗余和重复,提高了开发效率和代码质量。
03
提高软件的可重用性
面向对象分析鼓励使用抽象和封装技术,使得软件组件更加模块化和可
重用,减少了重复开发的工作量,提高了软件开发的效率。
02
面向对象分析的主要步骤
问题识别
总结词
明确问题的本质和范围
详细描述
在面向对象分析中,问题识别是首要步骤,它要求对问题进行深入理解和明确, 包括确定问题的范围、目标、限制条件等,以便为后续的分析和设计工作提供 清晰的方向。
面向对象分析的优势与不足
过度抽象
面向对象分析有时会过度抽象,导致 系统过于复杂,难以理解和实现。
缺乏对系统流程的关注
面向对象分析更关注静态结构,可能 忽略系统流程和动态行为。
面向对象分析与传统分析方法的结合使用
在实际软件开发中,可以结合 面向对象分析和传统分析方法, 取长补短,提高软件开发的效
率和成功率。
05
面向对象分析与传统分析方法的 比较
传统分析方法的问题与挑战
缺乏对系统整体结构的考虑
传统分析方法往往只关注单个功能或模块,忽略了系统整体的结 构和关系。
难以处理复杂系统
对于复杂系统,传统分析方法难以有效地进行抽象和建模。
难以维护和扩展
由于缺乏整体结构和面向对象的思维,传统分析方法构建的系统往 往难以维护和扩展。
对象是指系统中具有明确边界和状态 的结构,它可以包含数据和操作,并 且具有封装性、继承性和多态性等特 征。
面向对象的基本特征
封装
封装是将对象的属性和操作封装 在一起,形成一个独立的实体, 对外隐藏内部实现细节,只通过 接口与外界交互。
继承
继承是指子类可以继承父类的属 性和方法,并且可以扩展或修改 它们,从而实现代码的重用和扩 展。
[软件工程]CH10
1.传统的项目管理
传统的项目管理主要是从生产大型、高费用、进度 要求严的复杂系统的需要中发展起来的。 美国在60年代只有航空、航天、国防和建筑工业才 愿意采用项目管理。 70年代项目管理在新产品开发领域中扩展到了复杂 性略低、变化迅速、环境比较稳定的中型企业中。 到70年代后期和80年代,愈来愈多的中小企业也开 始注目项目管理,将其灵活地运用于企业活动的管 理中,项目管理技术及其方法本身也在此过程中逐 步发展和完善 到80年代,项目管理已经被公认为是一种有生命力 并能实现复杂的企业目标的良好方法。
PMBOK和ISO10006
国际标准化组织还以美国项目管理学会(PMI)的项 目管理知识体系(PMBOK)指南等文件为框架,制 订了ISO10006这一关于现代项目管理的标准。
3.软件项目管理
软件项目管理是为了完成一个既定的软件
开发目标,在规定的时间内,通过特殊形 式的临时性组织运行机制,通过有效的计 划、组织、领导与控制,在明确的可利用 的资源范围内完成软件开发。 软件项目管理是一般化的现代工程项目管 理理论和方法在软件工程领域的特殊化。 软件项目管理的对象是软件项目。
软件信息域中的计数
(1) 用户输入数 (2) 用户输出数 (3) 用户查询数 (4) 文件数 (5) 外部接口数
软件复杂性估计的经验关 系式
10.2.4 面向特征点的度量
功能点度量本来是为了商用信息系统应用而设计 的。 特征点是对功能点度量的扩充,使这种度量可以 被用于系统和工程软件应用。特征点度量适合于 算法复杂性高的应用
软件工程
软件工程
软件工程
刘迎春
第10章软件项目管理
概述 10.2 软件度量 10.3 软件开发成本估算 10.4 进度安排 10.5 软件文档管理
计算机科学与技术专业课课件_软件工程SE_Chapter10
拥有银行账户的储户有权申请领取现金兑换卡。使用现金兑换卡可以通过 ATM访问自己的账户。目前仅限于用现金兑换卡在ATM上提取现金(即取 款),或查询有关自己账户的信息(例如,某个指定账户上的余额)。将 来可能还要求使用ATM办理转账、存款等事务。
2013-8-31
上海大学计算机学院
7
ATM系统的需求陈述
择事务类型(取款、查询等)。当用户选择取款时,ATM请求用户输 入取款额。最后,ATM从现金出口吐出现金,并且打印出账单交给用 户。
2013-8-31
上海大学计算机学院
8
建立对象模型
◆面向对象分析首要的工作,是建立问题域的对象 模型。 ◆对象模型描述了现实世界中的“类-&-对象”以 及它们之间的关系,表示了目标系统的静态数据 结构。
上海大学计算机学院
12
候选类—&—对象
银行,自动取款机(ATM),系统,中央计算机,分行计算机, 柜员终端,网络,总行,市,街道,分行,营业厅,储蓄所, 软件,成本,柜员,储户,现金,支票, 账户, 事务,现金兑 换卡,余额,磁卡,分行代码,卡号,副本,访问,用户,信息, 密码,类型,取款额,账单。
●找出所有候选的类-&-对象; ●筛选候选的类-&-对象。
2013-8-31
上海大学计算机学院
11
找出候选的类-&-对象
◆ 非正式分析方法
● 以用自然语言书写的需求陈述为依据,把陈述中的
1) 名词作为类-&-对象的候选者, 2) 形容词作为确定属性的线索, 3) 动词作为服务(操作)的候选者。
2013-8-31
去除冗余
银行,ATM,中央计算机,分行计算机,柜员终端,网络,总行, 市,街道,分行,营业厅,储蓄所,软件,成本,柜员,储户,现 金,支票, 账户,事务,现金兑换卡,余额,分行代码,卡号, 访问,信息, 密码,类型,取款额,账单,通信链路,事务 日志。
软件工程第十章形式化方法优秀课件
所谓集合,乃是有某些可以相互区分的如何对象, 如数、变量、函数、字母、数字、图、语言、程序、 事件等,或者没有任何对象,汇集在一起所组成的 整体。
➢ 例10--2:一个包含4个元素的自然数集合: {1,3,5,7}
➢ 例10--3:包含五种程序设计语言的名字的集合: {C ,C++, Pascal, Basic, FORTRAN }
形式化规约语言的语法域通常基于从标准集合 论符号和谓词演算导出的语法。
10.2有限状态机(FSM)
很多实时系统,特别是实时控制系统,其整个 分析机制与系统的状态有相当大的关系。有限 状态机由有限的状态和相互之间的转移构成, 在任何时候只能处于给定数目的状态中的一个。
当接收到一个输入事件时,状态机产生一个输 出,同时也可能伴随着状态的转移。主要有两 种方法来建立有限状态机,一种是"状态转移 图",另一种是"状态转移表",分别用图形方式 和表格方式建立有限状态机。
软件工程第十章形式化 方法
第十章 形式化方法
形式化方法提供了规约环境的基础,它使得所 生成的分析模型比用传统的或面向对象的方法 生成的模型更完整、一致和无二义性。集合论 和逻辑符号的描述设施使得我们可以创建清晰 的关于事实的陈述。
支配形式化方法的基本概念是:数据不变式、 状态、离散数学、序列相关联的符号体系、形 式化规约语言。
4.没有队列元素包含相同的块号。 5.已用块和未用块的集合将是组成文件的块的 总集。
6.在已用块集合中没有重复的块号。
10.1.4 形式化规约语言 形式化规约语言通常由三个主要的成分构成:
(1)语法,定义用于表示规约的特定符号; (2)语义,帮助定义用于描述系统的“对象的全 域(universe of objects)”; (3)一组关系,定义确定出哪个对象真正满足规 约的规则。
软件工程 第10章 软件开发环境
软件工程第10章软件开发环境在软件工程的领域中,软件开发环境是一个至关重要的概念。
它就像是一个为软件开发团队提供各种工具和资源的“大工具箱”,旨在提高开发效率、保证软件质量,并促进团队之间的协作。
软件开发环境并不仅仅是指一堆硬件设备和软件工具的简单组合,它涵盖了从开发过程中所使用的编程语言、编译器、调试器,到项目管理工具、版本控制系统,以及团队协作平台等多个方面。
一个良好的软件开发环境能够为开发者提供舒适、高效的工作空间,让他们能够将更多的精力集中在解决业务问题和实现软件功能上。
首先,让我们来谈谈编程语言和编译器。
不同的编程语言适用于不同的应用场景,比如 Python 在数据科学和机器学习领域表现出色,Java 在企业级应用开发中占据重要地位,C++则常用于对性能要求较高的系统编程。
而编译器则负责将开发者编写的源代码转换为可执行的机器代码。
一个优秀的编译器能够优化代码,提高程序的运行效率,同时还能提供丰富的错误提示和警告信息,帮助开发者及时发现和纠正代码中的问题。
调试器也是软件开发环境中不可或缺的一部分。
当程序出现错误时,调试器能够帮助开发者逐行执行代码,查看变量的值,设置断点,从而快速定位并解决问题。
现代的调试器通常具有强大的功能,如条件断点、内存查看、线程调试等,大大提高了调试的效率和准确性。
除了这些基础的工具,项目管理工具在软件开发中也起着举足轻重的作用。
它们可以帮助项目经理制定项目计划、分配任务、跟踪进度、评估风险等。
常见的项目管理工具如 Jira、Trello 等,提供了直观的界面和丰富的功能,使得团队成员能够清晰地了解项目的整体情况和自己的职责,有效地提高了项目的管理水平和执行效率。
版本控制系统则是保障软件开发过程中代码一致性和可追溯性的重要手段。
通过版本控制系统,开发者可以方便地对代码进行修改、提交、回滚等操作,同时还能够与团队成员共享代码,协同开发。
Git 作为目前最流行的版本控制系统之一,具有分布式、高效、灵活等优点,已经成为了软件开发领域的标配。
实用软件工程(第5版)课件 (10)[50页]
▪ 这种努力的条件是:研发人员对企业的内部管理了如指 掌,对数据库设计的理论和技巧十分精通。如今,这种 努力已获初步成功,小型ERP产品开始普及。目前,它 已经由第三类产品,变成了第二类产品。
▪ 4.需要重新做业务流程规范和需求规格定义的 软件产品
▪ 第三类软件产品的客户化工作量大,工期也较长,例如: 分行业的管理信息系统MIS、分行业的企业资源规划系统 ERP等。
▪ 严格地讲,第三类软件产品实质上不算一种真正意义的 软件产品,只算一种行业应用软件框架,或行业应用软 件解决方案。
▪ 有了这种软件框架或软件解决方案后,软件厂商就能通 过快速原型法,在较短的时间内完成客户化工作。随着 软件厂商经验和技术的日积月累,尤其是分行业的类库、 构件库和中间件的日积月累,以及企业内部管理规范化 的发展趋势,第三类软件产品的实施周期也会日益缩短。
▪ 项目和产品既有显著的不同,又有紧密的关系。这种关 系是:做软件项目是手段,做软件产品是目的,软件项 目做多了,软件项目就慢慢地变成了软件产品。正如一 位名人所说:路,其实地上本没有路,走的人多了,才 成了路。
10.1 软件产品分类
▪ 软件产品是指不局限于特定业务领域、能被广大用户直 接使用的软件系统,如操作系统、编译系统、工具系统、 通用财务系统等。
▪ 软件项目是指针对特定业务领域、需要提供业务流程重 组与优化的软件系统,如MIS, ERP, 电子商务、自动跟踪 控制系统等,它们一般叫做软件项目,最多也只能叫做 “需要客户化的软件产品”。
▪ 3.只需要少量客户化工作的软件产品
▪ 第二类是只需要少量客户化工作的软件产品,如财务系 统、保险系统、金融证券系统、税务系统、海关系统、 政府办公系统、公检法系统、电力控制系统、电信计费 系统等。
软件工程 第10章 面向对象的方法
第10章例题分析与解答作者:不详来源:2006年9月4日发表评论进入社区一、填空题1.面向对象方法认为系统是由应用域的___对象___组成。
2.对象具有状态,描述对象的状态用它的_属性值_____。
3.对象的抽象是_类_____。
4.类之间有两种结构关系,它们是分类关系和__组装____关系。
5.面向对象程序设计语言与其他程序设计语言的最主要差别是它具有_继承性_____。
6.动态模型描述了系统的__动态行为____。
二、选择题1.火车是一种陆上交通工具,火车和陆上交通工具之间的关系是( D)关系。
A.组装B.整体成员C.has aD.一般具体2.面向对象分析阶段建立的三个模型中,核心的模型是( C )模型。
A.功能B.动态C.对象D.分析3.对象模型的描述工具是( C)。
A.状态图B.数据流图C.对象图D.结构图4.在有多重继承的类层次结构中,它的类层次结构是(B )层次结构。
A.树型B.网状型C.环型D.星型5.描述类中对象的行为,反映了状态与事件关系的是( B )。
A.对象图B.状态图C.流程图D.结构图6.在确定属性时,所有( C)是候选的属性。
A.动词B.名词C.修饰性名词词组D.词组三、应用题1.建立窗口系统的对象模型。
问题陈述如下:窗口分为对话窗、图形窗、滚动窗三种;对话窗中有若干对话项,由唯一的项名字来确定,对话项分为按钮、选择项、正文项三种,选择项中有若干对话项入口;图形窗中有若干形状元素,形状元素分为一维形状和二维形状,一维形状又分为直线、圆弧、折线;二维形状分为圆、椭圆、矩形、多边形,其中多边形和折线由若干有序顶点组成,正文窗是滚动窗的一种,而图形滚动窗既是一种图形窗又是一种滚动窗。
2.在学校教学管理系统中,学生查询成绩就是系统中的一次交互,请用状态图来描述这种查询的交互行为。
答案:一、填空题1.对象2.属性值3.类4.组装5.继承性6.动态行为二、选择题1.D2.C3.C4.B5.B6.C三、应用题1.2.第10章自测题及参考答案作者:不详来源:2006年9月1日发表评论进入社区一、名词解释1.对象2.类3.属性4.操作5.消息6.消息传递7.方法8.关系9.关联10.一般具体关系 11.整体部分关系12.继承13.单重继承 14.多重继承15.多态性 16.角色17.受限关联 18.封装19.对象模型20.动态模型21.功能模型 22.事件23.状态24.事件追踪25.状态图26.动作27.活动28.处理29.数据流30.动作对象31.数据存储对象 32.重用性二、填空题1.对象具有封装性,实现了__数据与操作____的结合。
第10章软件工程标准化及软件
软件工程标准化
1、软件工程功能标准框架
⑥数据:包括判定表规范、文档编制符号和约定、程序结构 和约定及其表示、计算机系统配置图符号和约定、软件状态转换 的人际通信的表示、基于计算机的应用系统的文档编制指南、软 件生存周期过程信息产品的内容指南、软件工程数据定义和交换 及高级Petri网等。
2、基于软件生存周期过程的软件工程路径框架
(11)开发进度月报
(6)详细设计说明书
(12)项目开发总结报告
(13)维护修改建议
软件文档
4、软件文档的编制要求
高质量的文档应当体现在以下几个方面: 准确、简明、完整、 灵活、有针对性、可追溯性。 为了能够编写出高质量的文档,应注意以下一些问题:
(1)应根据具体的软件开发项目,决定编制的文档种类。 (2)当所开发的软件系统非常大时,一种文档可以分成几卷编写。 (3)应根据任务的规模、复杂性,确定文档的详细程度。 (4)对国标中所建议的所有条款都可以扩展,以适应需要。 (5)程序的设计可采用多种表现形式。 (6) 文档的表现可以使用自然语言、也可以使用形式化的语言。 (7)当可以建立一些特殊的文档种类要求。
④技术:技术标准的框架以及相关国际标准如图10-7。包括 软件产品评价、软件过程评估、软件可信性、科技系统功能安全 的风险分析、功能人员和材料资源:包括TR15504-6:《软件过程评估第6 部分:评估员资格指南》和《计划中的对于知识软件工程体指南 的快速批准》。
(4) 质量保证标准(ISO9001~ISO9003)之间及其 与质量管理标准(ISO9004-1)的关系
①ISO9001、9002、9003质量保证标准之间的关系 从用途上看,它们各自独立,但它们内在有着紧密的关
系。ISO9003是最终检验和试验质量保证模式,含16项体系 要素,是三者中要求提供证据最少的质量保证模式; ISO9002是生产、安装和服务的质量保证模式,含19项体系 要素,ISO9002包容了ISO9003的要素;ISO9001是设计、 开发、生产、安装和服务的质量保证模式,含20项体系要 素,ISO9001包容了ISO9002的要素。
软件工程 第10章 软件开发环境
软件工程第10章软件开发环境在当今数字化的时代,软件已经成为了推动社会发展和变革的重要力量。
而软件开发环境则是软件工程师们施展才华、创造优秀软件产品的关键舞台。
软件开发环境是什么呢?简单来说,它是一组集成的工具、设施和流程,旨在支持软件开发的整个生命周期,从需求分析、设计、编码、测试到维护。
一个良好的软件开发环境能够极大地提高开发效率和软件质量。
想象一下,如果开发者们在一个混乱、缺乏有效工具和协作机制的环境中工作,就如同在黑暗中摸索,不仅进展缓慢,还容易出错。
而拥有了合适的开发环境,就像是有了明亮的灯塔指引,能够让开发工作更加顺畅、高效。
首先,软件开发环境包含了各种开发工具。
这些工具涵盖了多个方面,比如代码编辑器,它为开发者提供了一个舒适、便捷的编写代码的界面,具备语法高亮、自动补全等功能,帮助开发者更轻松地写出准确无误的代码。
还有版本控制系统,它能够记录代码的变更历史,让团队成员可以方便地协同工作,并且在出现问题时能够快速回滚到之前的稳定版本。
编译器和解释器也是必不可少的工具。
它们将开发者编写的源代码转换为可执行的程序,确保代码能够在目标平台上正确运行。
此外,调试工具能够帮助开发者找出代码中的错误和问题,提高程序的稳定性和可靠性。
除了工具,软件开发环境还包括了开发框架和库。
开发框架为软件开发提供了一种结构化的方式,规定了代码的组织方式、模块之间的交互方式等,使得开发者能够更快速地搭建起软件的架构。
库则是预先编写好的代码模块,提供了各种常见的功能,如数据处理、图形显示、网络通信等,开发者可以直接调用这些库,避免重复造轮子,从而节省开发时间。
软件开发环境中的集成开发环境(IDE)也是一个重要的组成部分。
IDE 通常将多种开发工具集成在一起,提供了一个统一的界面,让开发者能够在一个地方完成代码编写、调试、编译、版本控制等一系列操作。
常见的 IDE 有 Visual Studio、Eclipse、IntelliJ IDEA 等,它们都具有强大的功能和友好的用户界面,深受开发者的喜爱。
《软件工程与项目管理》第10章-软件项目管理
项目收尾过程
要点一
验收项目成果
组织相关干系人对项目成果进行验收,确保项目目标已实 现。
要点二
总结经验教训
对项目执行过程中的经验教训进行总结,为今后的项目提 供借鉴和改进依据。
04
软件项目管理工具与技术
项目管理软件工具
微软Project
Trello
一款功能强大的项目管理软件,提供 项目计划制定、任务分配、进度跟踪 等功能。
进度与Hale Waihona Puke 本的控制进度与成本控制挑战
软件开发过程中,进度延误和成本超 支是常见问题。
解决方案
制定详细的项目计划,合理分配资源 ,加强项目监控和调整,确保项目按 计划进行并控制成本。
质量保证与测试
质量保证与测试挑战
软件质量是软件项目的核心要求之一,但质量保证与测试过程中可能存在疏漏 和不足。
解决方案
Extreme Programming
一种敏捷开发方法,强调编程实践和持续集成,适合需求变化频繁 的项目。
统一过程方法
统一建模语言(UML)
一种用于软件工程的标准化建模语言,支持从需求分析 到系统设计的全过程。
统一过程(UP)
一种结构化的软件开发过程,包括初始阶段、细化阶段 、构建阶段和交付阶段。
保证按时交付
降低风险
通过有效的进度管理和时间安排,可以确 保软件按时交付给客户。
项目管理有助于识别和评估软件开发过程 中可能出现的风险,并采取相应的措施来 降低或消除这些风险。
软件项目管理的历史与发展
20世纪60年代
软件工程的概念开始出现, 人们开始意识到软件开发需 要系统化的管理方法。
20世纪80年代
预测完成项目所需的总成本。
计算机科学导论:第十章-软件工程
十软件工程软件工程是建立在这样一个基础上,即利用合理的工程方法和原则来获得在真实机器上工作的可靠软件10.1 软件的生命周期软件最初由开发者小组开发。
通常,在它需要修改之前会使用一段时间。
由于软件中会发现错误、设计改变规则或公司本身发生变化,这些都导致需要经常修改软件。
为长久使用考虑软件应该被修改。
使用和修改,这两个步骤一直进行下去直到软件过时。
“过时”意味着因效率低下、语言过时、用户需求的重大变化或其他因素而导致软件失去它的有效性。
开发过程模型开发过程包括4个阶段:分析、设计、实现和测试最常见的两种开发过程模型1.瀑布模型: 开发过程只有一个方向的流动,这意味着前一个阶段不结束,后一个阶段不能开始优缺点–优点:在下一个阶段开始前每个阶段已经完成–缺点:如果过程中一部分有问题,必须检查整个过程1.增量模型(迭代模型): 软件的开发要经历一系列步骤。
开发者首先完成整个系统的一个简化版本,这个版本表示了整个系统,但不包括具体的细节10.2 分析阶段整个开发过程始于分析阶段,这个阶段生成规格说明文档,这个文档说了软件要做什么,而没有说明如何去做分析阶段的两种独立方法•面向过程分析:依赖于实现阶段使用过程编程语言•面向对象分析:依赖于实现阶段使用面向对象编程语言面向过程分析如果实现阶段使用过程式语言,那么面向过程分析(也称为结构化分析或经典分析)就是分析阶段使用的方法。
这种情况下的规格说明有使用多种建模工具•数据流图: 数据流图显示了系统中数据的流动。
•实体关系图: 用于数据库设计•状态图: 它通常用于当系统中的实体状态在响应事件时将会改变的情况下面向对象分析如果实现阶段使用面向对象语言,那么面向对象分析就是分析阶段使用的方法。
规格说明文档至少使用下列几个工具,•用例图: 给出了系统的用户视图:它显示了用户与系统间的交互。
4种组件–系统、用例、动作者和关系。
•系统(用矩形表示)执行功能。
•系统中的行动由用例(圆角的矩形)显示•动作者(线条人物)是使用系统的某人或某事。
精品文档-软件技术基础(鲍有文)-第10章
第10章 面向对象软件工程
2) 建立对象之间的联系 各个对象在系统中并非独立存在,只有定义和描述了对象 类之间的关系,各个对象类才能构成一个完整的系统模型。 对象模型图中,对象及类间的关系主要有4种:一般/特殊 关系、整体/部分关系、实例关联和消息连接。
第10章 面向对象软件工程 (1) 一般/特殊关系。识别类之间的一般/特殊关系要考虑
第10章 面向对象软件工程
把众多的事物归纳并划分为不同的类是人类在认识客观世 界时经常采用的思维方法,分类的原则是抽象,从那些与当前 目标有关的本质特征中找出事物的共性,并将具有共同性质的 事物划分成一类,得出一个抽象的概念。例如,学生、教师、 学校等都是一些抽象的概念。类的概念使我们能对属于该类的 全部个体事物进行统一的描述,“学生具有学号、姓名、性别、 年龄,能够入学注册、选课等”,这个描述适合所有学生,而 不必对每一个具体的学生进行描述。
在一般/特殊关系中,可以将共同的属性放在上层,将特 有的属性放在下层,将共同的方法放在上层,而将特有的方法 放到下层,如图10-4所示。
第10章 面向对象软件工程 图 10-4 一般/特殊关系举例
第10章 面向对象软件工程
第10章 面向对象软件工程 2) 类 类(Class)是具有相同属性和服务的一组对象的集合,它
为属于该类的全部对象提供了统一的抽象描述,其内部包括属 性和服务两个主要部分。类好比是一个对象模板,用它可以产 生多个对象。类所代表的是一个抽象的概念或事物,在客观世 界中实际存在的是类的实例,即对象。例如,在学校教学管理 系统中,“学生”是一个类,其属性具有学号、姓名、 性别 等,可以完成的操作有“入学注册”、“ 选课”等。学生 “王平”是一个具体的对象, 也是“学生”类的一个实例。
《软件工程实用教程》第10章_软件工程标准与文档
第10章 軟體工程標準與文檔
10.2.4 軟體文檔的品質要求 (1)針對性 (2)精確性 (3)清晰性 (4)完整性 (5)靈活性 (6)可追溯性
第10章 軟體工程標準與文檔
本章學習內容: 1.掌握軟體工程標準的層次、類型 等概念 2.明確軟體文檔的編寫要求 3.熟悉軟體文檔的主要內容 4.理解軟體文檔的重要作用
第10章 軟體工程標準與文檔
10.1 軟體工程標準
10.1.1 軟體工程標準 專業基礎標準(軟體工程術語,流程圖,系統配置圖 軟體開發與文檔編制(軟體生存期過程,軟體生存期過 程使用指南,配置管理,維護) 軟體品質保證(軟體品質保證計畫,軟體品質特性,內 部度量,外部度量) 軟體產品評價(ISO/IEC 14598系列標準) 軟體過程評估(ISO/IEC 15504系列標準) 軟體品質體系與認證(ISO9000系列標準) 軟體能力評估(軟體能力成熟度模型,關鍵慣例,過程 剪裁和軟體能力成熟度模型,成熟度模型評估框架) CASE工具
第10章 軟體工程標準與文檔
10.1.2 軟體工程標準的層次 1.國際標準 2.國家標準 3.行業標準 4.企業規範 5.專案規範
第10章 軟體工程標準與文檔
10.1.3 軟體工程國家標準 GB/T16260-1996 資訊技術 軟體產品評價 品質特性 及其使用指南 GB/T17544-1998 資訊技術 軟體包 品質要求和測試 GB/T8567-1988 電腦軟體產品開發檔編制指南 GB/T9385-1988 電腦軟體需求說明編制指南 GB/T9386-1988 電腦軟體測試檔編制規範 GB/T11457-1995 軟體工程術語 GB/T12504-1990 電腦軟體品質保證計畫規範 GB/T12505-1990 電腦軟體配置管理計畫規範 GB/T13423-1992 工業控制用軟體評定準則 GB/T13502-1992 資訊處理 程式構造及其表示的約定 GB/T13702-1992 電腦軟體分類與代碼
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图10.2 ATM系统
10.3 建立对象模型
面向对象分析首要的工作,是建立问题域的对象模 型。 模型描述了现实世界中的“类与对象”以及它们之 间的关系,表示了目标系统的静态数据结构。
如前所述,对象模型通常有5个层次。典型的工作 步骤是: 首先确定对象类和关联(因为它们影响系 统整体结构和解决问题的方法),对于大型复杂问 题还要进一步划分出若干个主题;然后给类和关联 增添属性,以进一步描述它们;接下来利用适当的 继承关系进一步合并和组织类。而对类中操作的最 后确定,则需等到建立了动态模型和功能模型之后, 因为这两个子模型更准确地描述了对类中提供的服 务的需求。
10.3.1 确定类与对象
类与对象是在问题域中客观存在的,系统分析员的 主要任务就是通过分析找出这些类与对象。首先找 出所有候选的类与对象,然后从候选的类与对象中 筛选掉不正确的或不必要的。 1. 找出候选的类与对象 对象是对问题域中有意义的事物的抽象,它们既可 能是物理实体,也可能是抽象概念。
2. 筛选出正确的类与对象 筛选时主要依据以下标准,删除不正确或不必要的 类与对象: (1) 冗余 (2) 无关 (3) 笼统 (4) 属性 (5) 操作 (6) 实现
在ATM系统的例子中,经过初步筛选,剩下下列 类与对象:ATM、中央计算机、分行计算机、柜 员终端、总行、分行、柜员、储户、账户、事务、 现金兑换卡。
10.3.2 确定关联
多数人习惯于在初步分析确定了问题域中的类与对 象之后,接下来就分析确定类与对象之间存在的关 联关系。当然,这样的工作顺序并不是绝对必要的。 由于在整个开发过程中面向对象概念和表示符号的 一致性,分析员在选取自己习惯的工作方式时拥有 相当大的灵活性。
10.1 面向对象分析的基本过程
10.1.1 概述
面向对象分析,就是抽取和整理用户需求并建立问 题域精确模型的过程。
10.1.2 3个子模型与5个层次
面向对象建模得到的模型包含系统的3个要素, 静态结构(对象模型)、 交互次序(动态模型) 数据变换(功能模型)。
对应的5项工作:
识别主题,
找出类与对象,
10.3.6 反复修改
仅仅经过一次建模过程很难得到完全正确的对象模 型。事实上,软件开发过程就是一个多次反复修改、 逐步完善的过程。在建模的任何一个步骤中,如果 发现了模型的缺陷,都必须返回到前期阶段进行修 改。由于面向对象的概念和符号在整个开发过程中 都是一致的,因此远比使用结构分析、设计技术更 容易实现反复修改、逐步完善的过程。 实际上,有些细化工作(例如,定义服务)是在建立 了动态模型和功能模型之后才进行的。
3. 与数据流图中处理框对应的操作 数据流图中的每个处理框都与一个对象(也可能是 若干个对象)上的操作相对应。应该仔细对照状态 图和数据流图,以便更正确地确定对象应该提供的 服务。例如,在ATM系统中,从状态图上看出分 行对象应该提供“验证卡号”服务,而在数据流图 上与之对应的处理框是“验卡”,根据实际应该完 成的功能看,该对象提供的这个服务应该是“验 卡”。
确定了类中应该定义的属性之后,就可以利用继承 机制共享公共性质,并对系统中众多的类加以组织。
一般说来,可以使用两种方式建立继承(即泛化)关 系: (1) 自底向上: 抽象出现有类的共同性质泛化出父 类,这个过程实质上模拟了人类归纳思维过程。
(2) 自顶向下: 把现有类细化成更具体的子类,这 模拟了人类的演绎思维过程。从应用域中常常能明 显看出应该做的自顶向下的具体化工作。例如,带 有形容词修饰的名词词组往往暗示了一些具体类。 但是,在分析阶段应该避免过度细化。 利用多重继承可以提高共享程度,但是同时也增加 了概念上以及实现时的复杂程度。使用多重继承机 制时,通常应该指定一个主要父类,从它继承大部 分属性和行为;次要父类只补充一些属性和行为。
UML 包图
订单获取 界面
邮件发送 清单界面
AWT
• 单击此处编辑母版副标题样式
订单获取 应用
邮件发送 清单应用
订单
顾客
UML 包图
何时使用包图:
• 在大项目中,包图是一种重要工具(有专家建议,只要你 不能将整个系统的类图压缩到一张A4纸上,你就应该使 • 单击此处编辑母版副标题样式 用包图); • 依赖产生耦合,应该尽量将依赖性减少到最低程度; • 包的概念对测试也是特别有用的。
10.4.5 审查动态模型
各个类的状态图通过共享事件合并起来,构成了系 统的动态模型。 在完成了每个具有重要交互行为的类的状态图之后, 应该检查系统级的完整性和一致性。一般说来,每 个事件都应该既有发送对象又有接受对象,当然, 有时发送者和接受者是同一个对象。对于没有前驱 或没有后继的状态应该着重审查,如果这个状态既 不是交互序列的起点也不是终点,则发现了一个错 误。
UML模型图(5类,10种): • 用例图 • 静态图(类图,对象图,包图) • 单击此处编辑母版副标题样式 行为图(状态图,活动图) • 交互图(顺序图,协作图) • 实现图(部件图,配置图)
UML 包图
• 包是类的集合。 • 包图所显示的是类的包以及这些包之间的依赖关 • 单击此处编辑母版副标题样式 系。 • 如果两个包中的任意两个类之间存在依赖关系, 则这两个包之间存在依赖关系。 • 包的依赖是不传递的。
大多数分析模型都不是一次完成的,为了理解问题 域的全部含义,必须反复多次地进行分析。因此, 分析工作不可能严格地按照预定顺序进行;分析工 作也不是机械地把需求陈述转变为分析模型的过程。 分析员必须与用户及领域专家反复交流、多次磋商, 及时纠正错误认识并补充缺少的信息。 分析模型是同用户及领域专家交流时有效的通信手 段。最终的模型必须得到用户和领域专家的确认。 在交流和确认的过程中,原型往往能起很大的促进 作用。
大多数交互行为都可以分为应用逻辑和用户界面两 部分。通常,系统分析员首先集中精力考虑系统的 信息流和控制流,而不是首先考虑用户界面。事实 上,采用不同界面(例如,命令行或图形用户界面), 可以实现同样的程序逻辑。应用逻辑是内在的、本 质的内容,用户界面是外在的表现形式。动态模型 着重表示应用系统的控制逻辑。
10.4.1 编写脚本
脚本是指系统在某一执行期间内出现的一系列事件。 脚本描述用户(或其他外部设备)与目标系统之间的 一个或多个典型的交互过程,以便对目标系统的行 为有更具体的认识。编写脚本的目的,是保证不遗 漏重要的交互步骤,它有助于确保整个交互过程的 正确性的和清晰性。
10.4.2 设想用户界面
10.4 建立动态模型
对于仅存储静态数据的系统(例如数据库)来说,动 态模型并没有什么意义。 然而在开发交互式系统时,动态模型却起着很重 要的作用。如果收集输入信息பைடு நூலகம்目标系统的一项主 要工作,则在开发这类应用系统时建立正确的动态 模型是至关重要的。
建立动态模型的步骤: 第一步,是编写典型交互行为的脚本。 第二步,从脚本中提取出事件,确定触发每个事件 的动作对象以及接受事件的目标对象。 第三步,排列事件发生的次序,确定每个对象可能 有的状态及状态间的转换关系,并用状态图描绘它 们。 最后,比较各个对象的状态图,检查它们之间的一 致性,确保事件之间的匹配。
两个或多个对象之间的相互依赖、相互作用的关系 就是关联。 聚集是一种特殊的关联,是关联的一个特例。
1. 初步确定关联 2. 筛选 3. 进一步完善
10.3.3 划分主题
为了降低复杂程度,把系统再进一步划分成几个不 同的主题。 在概念上把系统包含的内容分解成若干个范畴。
应该按问题领域而不是用功能分解方法来确定主题。 应该按照使不同主题内的对象相互间依赖和交互最 少的原则来确定主题。
4. 利用继承减少冗余操作 应该尽量利用继承机制以减少所需定义的服务数目。 只要不违背领域知识和常识,就尽量抽取出相似类 的公共属性和操作,以建立这些类的新父类,并在 类等级的不同层次中正确地定义各个服务。
10.7 小结
分析就是提取系统需求并建立问题域精确模型的过 程,它包括理解、表达和验证等3项主要工作内容。 面向对象分析的关键工作,是分析、确定问题域中 的对象及对象间的关系,并建立起问题域的对象模 型。 大型、复杂系统的对象模型通常由下述5个层次组 成:主题层、类与对象层、结构层、属性层和服务 层。它们对应着在建立对象模型的过程中所应完成 的5项工作。
一个好的分析模型应该正确完整地反映问题的本质 属性,且不包含与问题无关的内容。分析的目标是 全面深入地理解问题域,其中不应该涉及具体实现 的考虑。但是,在实际的分析过程中完全不受与实 现有关的影响也是不现实的。虽然分析的目的是用 分析模型取代需求陈述,并把分析模型作为设计的 基础,但是事实上,在分析与设计之间并不存在绝 对的界线。
识别结构,
定义属性,
定义服务。
图10.1 复杂问题的对象模型的5个层次
完全没有必要顺序完成,也无须彻底完成一项工作以后再 开始另外一项工作。
10.2 需求陈述
10.2.1 书写要点
通常,需求陈述的内容包括:问题范围,功能需求, 性能需求,应用环境及假设条件等。总之,需求陈 述应该阐明“做什么”而不是“怎样做”。 它应该描述用户的需求而不是提出解决问题的方法。 应该指出哪些是系统必要的性质,哪些是任选的性 质。
1. 常规行为 在分析阶段可以认为,类中定义的每个属性都是可 以访问的,也就是说,假设在每个类中都定义了读、 写该类每个属性的操作。但是,通常无需在类图中 显式表示这些常规操作。
2. 从事件导出的操作 状态图中发往对象的事件也就是该对象接收到的消 息,因此该对象必须有由消息选择符指定的操作, 这个操作修改对象状态(即属性值)并启动相应的服 务。例如,在ATM系统中,发往ATM对象的事件 “中止”,启动该对象的服务“打印账单”;发行 分行的事件“请分行验卡”启动该对象的服务“验 证卡号”;而事件“处理分行事务”启动分行对象 的服务“更新账户”。可以看出,所启动的这些服 务通常就是接受事件的对象在相应状态的行为。