北京大学研究生课程软件工程课件_第1页
北京大学研究生课程软件工程课件_第2页
北京大学研究生课程软件工程课件_第3页
北京大学研究生课程软件工程课件_第4页
北京大学研究生课程软件工程课件_第5页
已阅读5页,还剩324页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北京大学研究生课程北京大学研究生课程软件工程软件工程教材:软件工程 第二版王立福,麻志毅,张世琨编著 北京大学出版社出版 辅助教材:agile software development:principle,patterns,and practices 2003年版 robert c. martin期末成绩: 平时 30% 笔试 70%课程内容:课程内容:n1、软件工程概念、软件工程概念n2、软件开发模型、软件开发模型n3、系统建模技术、系统建模技术-结构化方法结构化方法n4、系统建模技术、系统建模技术-面向对象方法面向对象方法n5、软件测试、软件测试n6、软件过程与、软件过程与cmm简介简介n

2、7、敏捷软件开发、敏捷软件开发为屏蔽计算机为屏蔽计算机硬件的异构性,硬件的异构性,发展了操作系发展了操作系统统.net/comweb servicesj2ee/ejb操作系统操作系统unixwindowslinuxc/c+语言语言java语言语言支撑软件支撑软件中间件中间件为屏蔽操作系统为屏蔽操作系统和编程语言的异和编程语言的异构性,发展了支构性,发展了支撑软件和中间件撑软件和中间件为了屏蔽中间件之间的异为了屏蔽中间件之间的异构性,出现了构性,出现了web技术。技术。fortran语言语言为了祢补应用为了祢补应用软件与现实计软件与现实计算环境之间的算环境之间的距离距离应用系统应用系统 网网 络

3、络 层层 综观综观 软件技术软件技术 的发展的发展软件开发的本质软件开发的本质 应用系统应用系统概念不同,逻辑不同。概念不同,逻辑不同。解决问题的思维逻辑解决问题的思维逻辑不同。不同。 -“距离距离”语语 言言网络网络 异构异构vb、vc -程序设计环境程序设计环境中间件技术与产品中间件技术与产品面向领域的软面向领域的软件体系结构件体系结构应用框架应用框架领域软件生产线领域软件生产线系统建模系统建模运行平台运行平台开发平台开发平台软件工程学科所要解决的问题软件工程学科所要解决的问题软件开发的本质软件开发的本质 可概括为:可概括为: 第一点:第一点: 问题空间的概念问题空间的概念 与与 解空间的

4、模型化概念解空间的模型化概念 之间的映射之间的映射 例如:对象例如:对象 = f= f(张山)(张山) (模型化概念模型化概念) (问题空间的概念问题空间的概念) 其中,其中, 对应的过程:需求分析对应的过程:需求分析 使用的技术:面向对象使用的技术:面向对象 使用的原理:数据抽象使用的原理:数据抽象 目的:作为计算的客体。目的:作为计算的客体。 第二点:第二点:问题空间的处理逻辑问题空间的处理逻辑 与与 解空间处理逻辑解空间处理逻辑 之间的映射之间的映射 例如例如1: 加工加工1(及相关的数据流)(及相关的数据流)=f(计算学生成绩)(计算学生成绩) 其中:使用的方法:结构化方法;其中:使用

5、的方法:结构化方法; 对应的过程:需求分析对应的过程:需求分析 使用的原理:过程抽象使用的原理:过程抽象 加工加工1计算学生平均成绩计算学生平均成绩科目科目+年级年级/班班学生成绩文件学生成绩文件学生平均成绩学生平均成绩规约后的处理逻辑规约后的处理逻辑例如例如2: 交互图交互图1=h(计算学生成绩)(计算学生成绩) 其中:对应的过程:需求分析其中:对应的过程:需求分析 使用的方法:面向对象使用的方法:面向对象 使用的原理:行为结构抽象(简称使用的原理:行为结构抽象(简称行为抽象行为抽象) 作用:实现计算作用:实现计算:教务员:教务员:教员:教员递交a科学生成绩表a科学生成绩表:教学主任:教学主

6、任求a科平均a科平均由于以上两个映射是由由于以上两个映射是由“人人”完成的,因此完成的,因此 就软件开发而言,需要解决两个方面的问题:就软件开发而言,需要解决两个方面的问题: 1:管理:管理 2:技术:技术 进一步说,技术问题主要是指软件开发过程通常需进一步说,技术问题主要是指软件开发过程通常需要遵循的要遵循的途径途径和和方向方向 其中,其中,过程方向过程方向 确定用于创建问题模型和设计解的确定用于创建问题模型和设计解的 特定的抽象层次特定的抽象层次 例如,需求、设计、实现、部署等例如,需求、设计、实现、部署等第一章、软件工程及软件工程框架第一章、软件工程及软件工程框架 软件软件计算机系统中的

7、程序及其文档。程序是计算任务计算机系统中的程序及其文档。程序是计算任务的处理对象和处理规则的描述;文档是为了便于了解程序的处理对象和处理规则的描述;文档是为了便于了解程序所需的阐明性资料。所需的阐明性资料。 工程工程将理论和所学的知识应用于实践的科学。将理论和所学的知识应用于实践的科学。 软件工程软件工程应用计算机科学、数学及管理科学等原理,应用计算机科学、数学及管理科学等原理,开发软件的工程。它借鉴传统工程的原则、方法,以提高开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。其中,计算机科学、数学用于构质量,降低成本为目的。其中,计算机科学、数学用于构造模型与算法,工程

8、科学用于制定规范、设计范型、评估造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量、成本成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。等管理。 软件工程是一门交叉性学科。软件工程是一门交叉性学科。软件工程框架软件工程框架 工工程程目目标标 正正 可可 合合 确确 用用 算算 确确 支支 工工 设设 实实 程程 需需 认认 持持 原原 计计 现现 则则 求求 动动 活活采采用用合合适适的的开开发发范范型型使使用用好好的的设设计计方方法法提提供供高高质质量量的的工工程程支支持持实实施施有有效效的的工工程程管管理理软件工程目标软件工程目标 生产

9、具有正确性、可用性和开销合宜的产品生产具有正确性、可用性和开销合宜的产品。正确性是指软件产品达到预期功能的程度。可用性是指软。正确性是指软件产品达到预期功能的程度。可用性是指软件基本结构、实现以及文档为用户可用的程度。开销合宜是件基本结构、实现以及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。指软件开发、运行的整个开销满足用户要求的程度。软件开发活动软件开发活动 生产一个最终满足需求且达到工程目标的软生产一个最终满足需求且达到工程目标的软件产品所需要的活动。软件开发的基本活动包括:需求分析件产品所需要的活动。软件开发的基本活动包括:需求分析(requiremen

10、t analysis),设计(),设计(design),实现(),实现(implementation),验证),验证/确认(确认(verification/validation)和维)和维护(护(maintenance)。)。(1)需求分析)需求分析 是在一个抽象层上建立系统模型的活动。产生是在一个抽象层上建立系统模型的活动。产生需求规约,作为开发人员和客户间契约的基础,并作为以后开需求规约,作为开发人员和客户间契约的基础,并作为以后开发阶段的输入。发阶段的输入。(2)设计)设计 定义了实现需求规约所需的结构。包括软件体系结定义了实现需求规约所需的结构。包括软件体系结构(数据和程序结构),以及

11、详细的处理算法,即所谓设计规构(数据和程序结构),以及详细的处理算法,即所谓设计规约,给出了实现软件需求的软件解决方案。约,给出了实现软件需求的软件解决方案。(3)实现)实现 是由设计规约到代码的转换。是由设计规约到代码的转换。(4)验证)验证/确认是一评估活动,其中主要包括需求规约、设计确认是一评估活动,其中主要包括需求规约、设计规约以及实现代码的评估。验证规约以及实现代码的评估。验证/确认这一评估可以是动态的确认这一评估可以是动态的,或是静态的。在动态分析中,以选定的输入来执行程序或程,或是静态的。在动态分析中,以选定的输入来执行程序或程序段,并与预期结果进行比较。静态分析是不执行程序的分

12、析序段,并与预期结果进行比较。静态分析是不执行程序的分析,例如模型评审、代码,例如模型评审、代码“走查走查”以及程序的形式化验证等。以及程序的形式化验证等。( 5 ) 维 护 是 在 软 件 发 布 之 后 所 进 行 的 开 发 或 修 改 () 维 护 是 在 软 件 发 布 之 后 所 进 行 的 开 发 或 修 改 (modification),包括对发现错误的修正以及对环境的变化所),包括对发现错误的修正以及对环境的变化所进行的必要调整等。进行的必要调整等。软件工程原则软件工程原则 围绕软件开发,提出了以下基本原则。围绕软件开发,提出了以下基本原则。第一:选取适宜的开发范型第一:选取

13、适宜的开发范型 在系统设计中,经常需要权衡在系统设计中,经常需要权衡软件需求、硬件需求以及其它因素之间的相互制约和影响,软件需求、硬件需求以及其它因素之间的相互制约和影响,适应需求的易变性。选用适宜的开发范型,以保证软件开发适应需求的易变性。选用适宜的开发范型,以保证软件开发的可持续性,并使最终的软件产品满足客户的要求。的可持续性,并使最终的软件产品满足客户的要求。第二:采用好的设计方法第二:采用好的设计方法 在软件设计中,通常需要考虑软件在软件设计中,通常需要考虑软件的模块化、信息隐蔽、局部化、一致性以及适应性等问题。的模块化、信息隐蔽、局部化、一致性以及适应性等问题。采用合适的设计方法,支

14、持这些问题的解决和实现。采用合适的设计方法,支持这些问题的解决和实现。第三条:提供高质量的工程支持第三条:提供高质量的工程支持 如其它工程一样,需要提供如其它工程一样,需要提供高质量的工程支持,例如配置管理、质量保证等,才能按期高质量的工程支持,例如配置管理、质量保证等,才能按期交付高质量的软件产品。交付高质量的软件产品。第四条原则:有效的软件工程管理第四条原则:有效的软件工程管理 软件工程的管理,直接软件工程的管理,直接影响可用资源的有效利用,提高软件组织的生产能力。仅当影响可用资源的有效利用,提高软件组织的生产能力。仅当对软件过程实施有效管理时,才能实现有效的软件工程。对软件过程实施有效管

15、理时,才能实现有效的软件工程。小结:小结: 1)软件工程框架:目标,原则,活动)软件工程框架:目标,原则,活动 给出了软件所涉及软件工程的工程要素给出了软件所涉及软件工程的工程要素 给出了各要素之间的关系给出了各要素之间的关系 给出了软件工程学科所研究的主要内容给出了软件工程学科所研究的主要内容 2)研究内容主要包括:)研究内容主要包括: 软件开发过程软件开发过程 软件开发方法软件开发方法 软件工程管理与支持软件工程管理与支持 软件质量特征软件质量特征 软件过程度量以及软件过程度量以及case工具、环境等。工具、环境等。 第二章、软件开发模型第二章、软件开发模型 1 1、软件开发模型、软件开发

16、模型 软件过程、活动、任务的结构框架。软件过程、活动、任务的结构框架。 瀑布模型瀑布模型 演化模型演化模型 增量模型增量模型 螺旋模型螺旋模型 喷泉模型喷泉模型 外征:软件开发活动的组织外征:软件开发活动的组织 内涵:求解软件的计算逻辑内涵:求解软件的计算逻辑 分分 析析编编 码码(1)瀑布模型)瀑布模型50年代末:二级模型年代末:二级模型 “做什么做什么” “编程编程-实现实现”需求分析需求分析设设 计计编编 码码测测 试试运运 行行瀑布模型雏型瀑布模型雏型系统需求系统需求软件需求软件需求需求分析需求分析设设 计计编编 码码测测 试试运运 行行1970年,年,w.royce将雏型进一步精化将

17、雏型进一步精化其中:每一阶段具其中:每一阶段具有以下特征:有以下特征: 从上一阶段接受工从上一阶段接受工作对象,即输入;作对象,即输入; 对这一输入实施本对这一输入实施本阶段的工作阶段的工作 给出本阶段的结果给出本阶段的结果作为输出。作为输出。系统需求系统需求软件需求软件需求需求分析需求分析设设 计计编编 码码测测 试试运运 行行瀑布模型瀑布模型 活动如瀑布流水式活动如瀑布流水式的组织的组织 规定每一活动的工规定每一活动的工作对象和输出作对象和输出 评审、确认和反馈评审、确认和反馈问题:无法通过开发活动澄清问题:无法通过开发活动澄清 本来不确切的软件需求本来不确切的软件需求 维护、甚至返工的代

18、价维护、甚至返工的代价需求需求设计设计编码编码测试测试集成集成需求需求设计设计编码编码测试测试集成集成开开发发反反馈馈开开发发反反馈馈.核核 心心 系系 统统 开开 发发第第 二二 次次 迭迭 代代(2)演化模型)演化模型 针对事先不能完整地定义需求针对事先不能完整地定义需求 针对用户的核心需求针对用户的核心需求, ,开发核心系统开发核心系统 根据用户的反馈根据用户的反馈, ,实施活动的迭代实施活动的迭代13259101167121384增量增量1 1 1,2,5,9 1,2,5,9 增量增量2 2 3 3,6,7,4,10,11 ,6,7,4,10,11 增量增量3 3 8 8,12,13

19、,12,13 管理管理增量规约增量规约增量设计增量设计纠错性分析纠错性分析增量实现增量实现增量1增量2增量3(3)增量模型)增量模型微软微软“同步同步- -稳定的产品开发模型稳定的产品开发模型” 将项目分为若干个里程碑阶段将项目分为若干个里程碑阶段 定义稳定、灵活的体系结构,并为构件定义稳定、灵活的体系结构,并为构件 和子系统的开发提供统一的接口和子系统的开发提供统一的接口 开发构件,维持一个可发布的系统版本开发构件,维持一个可发布的系统版本 可以准确把握项目进展情况可以准确把握项目进展情况 增强开发人员的信心和成就感增强开发人员的信心和成就感 可以随时根据市场情况及时作出调整可以随时根据市场

20、情况及时作出调整演化演化维护维护确认确认实现实现设计设计分析分析喷泉模型喷泉模型 特征:迭代特征:迭代 无缝无缝 与面向对象技术与面向对象技术 的关系的关系 第三章第三章 系统建模技术系统建模技术-结构化方法结构化方法 (一)结构化分析方法(一)结构化分析方法 要回答:如何定义问题?要回答:如何定义问题? 就如何定义问题而言,如何获得需求就如何定义问题而言,如何获得需求 如何规约需求如何规约需求 如何验证需求如何验证需求 1、关于需求获取、关于需求获取 需求面临的挑战需求面临的挑战 问题空间理解问题空间理解 人与人之间的通信人与人之间的通信 需求的不断变化需求的不断变化 重要性之一重要性之一

21、软件需求工程直接关系到软件需求工程直接关系到“成本、质量和按时交付成本、质量和按时交付”等问题等问题- -它们是项目成败的关键因素。它们是项目成败的关键因素。 项目的五维:进度,特性,质量,成本,人员。项目的五维:进度,特性,质量,成本,人员。重要性之二重要性之二 软件需求工程软件需求工程- -这种发生在软件生命周期的初始阶段这种发生在软件生命周期的初始阶段的错误是非常难于改正,并且是代价极高的。的错误是非常难于改正,并且是代价极高的。 最新的研究兴趣聚焦于最新的研究兴趣聚焦于“需求引出需求引出”, 因为它涉及到因为它涉及到软件开发人员与非软件专业人员合作的问题。软件开发人员与非软件专业人员合

22、作的问题。 分析问题和需求的能力取决于分析人员的分析问题和需求的能力取决于分析人员的思维思维和和经验经验。思维来源于思维来源于: 严谨、逻辑和严谨、逻辑和“活跃活跃”的思考习惯。的思考习惯。 (1)严谨要求严谨要求思考的对象思考的对象应该是不放过任何一个应该是不放过任何一个“小小” 问题问题 (2)逻辑要求逻辑要求思思考的过程应该是一种符合规则的考的过程应该是一种符合规则的 推导过程推导过程 (3)活跃思维要求活跃思维要求思考的方式思考的方式应该是并行的,即应该是并行的,即 不是仅一个角度,而是多个角度来思考问题不是仅一个角度,而是多个角度来思考问题经验来源于:经验来源于: (1)开发了一些软

23、件并善于总结开发了一些软件并善于总结-创新与教训创新与教训 (2)跟踪最新技术。跟踪最新技术。4 4)需求获取技术特征)需求获取技术特征由上可见,需求获取技术特征:由上可见,需求获取技术特征: 方便通讯(使用易于理解的语言)方便通讯(使用易于理解的语言) 提供定义系统边界的方法提供定义系统边界的方法 提供划分、抽象、投影等方法提供划分、抽象、投影等方法 允许采用多种可供选择的设计方法允许采用多种可供选择的设计方法 适应需求的变化适应需求的变化 支持使用问题空间的术语,思考问题和编制文档支持使用问题空间的术语,思考问题和编制文档 2)语义与表示)语义与表示 一般地说,一般地说,use case是

24、用户为了达到某一目标和系统是用户为了达到某一目标和系统进行的典型交互。例如:进行的典型交互。例如: “做一次拼写检查做一次拼写检查” “对一个文档建立索引对一个文档建立索引” 对一个用况而言,关键要素是:对一个用况而言,关键要素是:表示一种用户可以理解表示一种用户可以理解并对该用户有价值的功能。并对该用户有价值的功能。 用况提供了客户和开发人员在制订项目计划中进行交流用况提供了客户和开发人员在制订项目计划中进行交流的主要成分。的主要成分。(1) use case语义语义 一个一个use caseuse case是系统或其它语义实体(例如子系统或一个是系统或其它语义实体(例如子系统或一个类)所提

25、供的一块类)所提供的一块(unit)(unit)高内聚的功能,显露该系统和一个高内聚的功能,显露该系统和一个或多个外部的交互者(称为操作者)交替出现的消息序列,或多个外部的交互者(称为操作者)交替出现的消息序列,以及该系统所执行的动作。以及该系统所执行的动作。 可见,一个可见,一个use caseuse case捕获了参与交互的各方关于其行为捕获了参与交互的各方关于其行为的一个约定。通过这一约定,描述了该语义实体在不同条件的一个约定。通过这一约定,描述了该语义实体在不同条件下的行为对参与者一个要求的响应,以实现某一目的。不同下的行为对参与者一个要求的响应,以实现某一目的。不同的行为序列,依赖于

26、所给出的特定要求以及与这些要求相关的行为序列,依赖于所给出的特定要求以及与这些要求相关的条件。的条件。 (2)表示与描述表示与描述 use caseuse case通常被表示为:通常被表示为: use caseuse case包含一组操作和属性,这些操作和属性包含一组操作和属性,这些操作和属性规约了该规约了该use caseuse case的实例所执行的那个动作序列。动作的实例所执行的那个动作序列。动作包含状态的改变以及该包含状态的改变以及该use caseuse case与其环境的通讯。与其环境的通讯。 为了表明为了表明use caseuse case所包含的具体内容,还应给出它所包含的具体

27、内容,还应给出它的正文描述。即:的正文描述。即:use case 中包含的信息中包含的信息名称名称(name)(name)标识标识(identifier)(identifier)描述描述(description)(description)角色角色(actor)(actor)状态状态(status)(status)活动及时序活动及时序频度频度(frequency)(frequency)注:具体例子请参见注:具体例子请参见p16-17p16-17。3)操作者语义与表示操作者语义与表示 一个操作者定义了一组高内聚的角色,当用户与该一个操作者定义了一组高内聚的角色,当用户与该实体交互时,用户可以扮演这

28、一角色。实体交互时,用户可以扮演这一角色。 对于每一对于每一use caseuse case,一个操作者有一种角色,即每,一个操作者有一种角色,即每一一use caseuse case与具有一种角色的操作者进行通讯。与具有一种角色的操作者进行通讯。 通常,一个操作者被表示为:通常,一个操作者被表示为: 5)关系)关系 在在use caseuse case之间,或在操作者与之间,或在操作者与use caseuse case之间,存在一之间,存在一些标准的关系:些标准的关系: 关联:参与关系,即操作者参与一个关联:参与关系,即操作者参与一个use caseuse case。例如,操作者的实例与例如

29、,操作者的实例与use caseuse case实例相互通讯。实例相互通讯。关联是操关联是操作者和作者和use caseuse case之间的唯一关系。之间的唯一关系。 扩展:扩展:use case ause case a到到use case buse case b的一个扩展关系,的一个扩展关系,指出了指出了use case buse case b的一个实例可以由的一个实例可以由a a说明的行为予以扩说明的行为予以扩展(根据该扩展所说明的特定条件),并依据该扩展点定展(根据该扩展所说明的特定条件),并依据该扩展点定义的位置,义的位置,a a说明的行为被插入到说明的行为被插入到b b中。中。 包

30、含:包含:use case ause case a到到use case buse case b的一个包含,指的一个包含,指出出a a的一个实例将包含的一个实例将包含b b说明的行为,即这一行为将包含在说明的行为,即这一行为将包含在a a定义的那部分中。定义的那部分中。 泛化:泛化:use case ause case a到到use case buse case b的泛化,指出的泛化,指出a a是是b b的特殊情况。的特殊情况。 1 * the salesperson asks for the catalog place orderextension pointsadditional reque

31、sts:after creation of the order supplycustomer data order produck arrange payment request catalogsalesperson 例:例:use case use case 关系关系 actor actor 关系关系supervisor establish credit 1 *6)、)、use case图图 use caseuse case图给出了操作者和图给出了操作者和use caseuse case以及它们之间以及它们之间的关系。即图中给出了一些操作者、一组关系、一些的关系。即图中给出了一些操作者、一组

32、关系、一些接口和这些元素之间的关系。接口和这些元素之间的关系。 ( (关系是操作者和关系是操作者和use caseuse case之间的关联之间的关联 是操作者之间的泛化是操作者之间的泛化 是是use caseuse case之间的泛化、扩展和包含之间的泛化、扩展和包含) ) 可以将一些可以将一些use caseuse case用一矩形括起,以表示所包括用一矩形括起,以表示所包括的那个系统或其它语义实体的边界。的那个系统或其它语义实体的边界。check statusplace orderfill order establish credit telephone catalogsalespers

33、onshipping clercksupervisorcustomer例:例:use caseuse case图图2、关于需求规约、关于需求规约需求规约的主要目标:需求规约的主要目标: 依据需求陈述(作为输入),解决其中的歧义、不依据需求陈述(作为输入),解决其中的歧义、不一致等问题,以系统化的形式表达用户的需求,即给出一致等问题,以系统化的形式表达用户的需求,即给出问题的形式化或半形式化的描述(建立模型),形成需问题的形式化或半形式化的描述(建立模型),形成需求规格说明书。为了实现这一目标,求规格说明书。为了实现这一目标,(一)结构化分析方法(一)结构化分析方法 1 1提出的概念有:提出的概

34、念有: 数据流:数据流: 加工:加工: 数据存储:数据存储: 数据源:数据源: 数据潭:数据潭: 概念是完备的概念是完备的。 2 2建模过程建模过程 (1)(1)建立系统的功能模型建立系统的功能模型 -使用的工具为数据流图使用的工具为数据流图dfddfd 首先:建立系统环境图,确定系统边界首先:建立系统环境图,确定系统边界 继之:自顶向下,逐层分解继之:自顶向下,逐层分解 (2)建立数据字典建立数据字典 定义数据流定义数据流 定义数据存储定义数据存储 定义数据项定义数据项 (3)(3)给出加工小说明给出加工小说明 -使用的工具可以为判定表使用的工具可以为判定表 判定树判定树 (1)(1)建立系

35、统的功能模型建立系统的功能模型 -使用的工具为数据流图使用的工具为数据流图dfddfd 数据流图:是一种描述数据变换的图形工具。例如:数据流图:是一种描述数据变换的图形工具。例如:旅行社旅行社订票单订票单预定预定机票机票准备准备机票机票记帐记帐费用费用航班航班帐单帐单机票机票记帐文件记帐文件航班目录航班目录旅行社旅行社数据流图由四个基本成分组成:数据流图由四个基本成分组成: 数据流数据流 加工加工 数据存储数据存储 数据源和数据潭数据源和数据潭其中:其中:1 1 各成分的定义各成分的定义 2 2 数据流、数据存储数据流、数据存储-支持数据抽象支持数据抽象 加工加工-支持过程支持过程/ /功能的

36、抽象功能的抽象 3 3 关于命名问题关于命名问题简化的商业自动化系统简化的商业自动化系统营业员收款员经 理销售的商品销售的商品现金额现金额现金余额现金余额销售情况销售情况日销售额日销售额查询要求查询要求首先:建立系统环境图,确定系统边界首先:建立系统环境图,确定系统边界 -顶层顶层dfddfd其中:其中:1 1 数据流为:销售的商品,日销售额等数据流为:销售的商品,日销售额等 3 3个输入流,个输入流,3 3个输出流个输出流 数据源为:营业员,经理,收款员数据源为:营业员,经理,收款员 数据潭为:经理,收款员数据潭为:经理,收款员 2 2 加工名为:要建立的系统名字加工名为:要建立的系统名字录

37、入、修改或删除商品信息录入、修改 现金额,并计算余额查询商品销售情况 计算日销售额123继之:自顶向下,逐层分解继之:自顶向下,逐层分解a a、按人或部门的功能要求,将加工、按人或部门的功能要求,将加工“打碎打碎”,形成:形成:注:需给每一加工编号;注:需给每一加工编号;b b、”分派分派”数据流,形成:数据流,形成:录入、修改或删除商品信息 2录入、修改 现金额,并计算余额查询商品销售情况 计算日销售额销售的商品销售的商品现金额现金额现金余额现金余额查询要求查询要求销售情况销售情况日销售额日销售额13其中:要根据特定的加工要求进行分派;其中:要根据特定的加工要求进行分派; 保持与顶层数据流的

38、一致;保持与顶层数据流的一致; 可以不引入数据源和数据潭。可以不引入数据源和数据潭。录入、修改或删除商品信息录入、修改 现金额,并计算余额查询商品销售情况 计算日销售额销售的商品销售的商品现金额现金额现金余额现金余额查询要求查询要求销售情况销售情况日销售额日销售额销售文件销售文件123c c、引入文件,使之形成一个有机整体、引入文件,使之形成一个有机整体系统:系统:注:到一个文件,既有输入流,又有输出流,则可简化为注:到一个文件,既有输入流,又有输出流,则可简化为 ,并可不给出标识。,并可不给出标识。至此,体现精化,形成至此,体现精化,形成0 0层数据流图。层数据流图。 查询商品销售情况 计算

39、日销售额查询要求查询要求销售情况销售情况日销售额日销售额销售文件销售文件3继续继续a a、b b、c c:自顶向下,逐层分解。:自顶向下,逐层分解。例如:加工例如:加工3 3可分解为:可分解为:判定要求查询要求查询要求 3。1统计销售情况 3。2计算日销售额销售文件销售文件查询要求查询要求2查询要求查询要求1销售情况销售情况日销售额日销售额加工3:* *其中为什么要引入其中为什么要引入加工加工“判定要求判定要求”?(2)建立数据字典建立数据字典 定义数据流定义数据流 定义数据存储定义数据存储 定义数据项定义数据项 引入:结构符引入:结构符 | | 用于定义数据结构用于定义数据结构 a a a

40、b c b0 c0 b*数据字典数据字典:1、数据流、数据流:销售的商品=商品名+商品编号+单价+数量+日期现金额 = 余额 =日销售额=非负实数查询要求=商品编号|日期查询要求1=商品编号查询要求2=日期销售情况=商品名+商品编号+金额2、数据存贮、数据存贮:销售文件=销售的商品3、数据项 (3)(3)给出加工小说明给出加工小说明 -使用的工具可以为判定表使用的工具可以为判定表 判定树判定树 判断表判断表 条件类别条件类别 条件组合条件组合 操作操作 操作执行操作执行 例如:例如: 考试总分考试总分 =620 =620 =620 =620 ee-ff-g,hh-yput yg-xput xx

41、-zput zget aget bb-da-ceeg,hhgzzxxgyyhdbcacdeefg,hfxab事务设计事务中心输入模块路径1路径2输出模块aycgbfc-ecee-gegb-dbdd-fdf34682579a2cbdefgihmkn110a1x 一个系统的dfd,通常是变换型数据流图和事务型数据流图的组合。如下所示: 第二步:如何将初始的msd转化为最终可供详 细设计使用的msd 概念:模块 模块化 模块化度量:内聚 耦合 设计规则经验规则 精化初始的msd 体现设计人员的创造 1)耦合:不同模块之间相互依赖程度的度量。 耦合类型: (1)内容耦合: (2)公共耦合:两个以上的模

42、块共同引用一个全局数据项。 (3)控制耦合:一个模块向另一模块传递一个控制信号, 接受信号的模块将依据该信号值进行必要的活动。 (4)标记耦合:两个模块至少有一个通过界面传递的公共 有结构的参数。 (5)数据耦合:模块间通过参数传递基本类型的数据。2)内聚:一个模块之内各成分之间相互依赖程度的度量。 内聚类型: (1)偶然内聚:一个模块之内各成分之间没有任何关系。 (2)逻辑内聚:几个逻辑上相关的功能放在同一模块中。 (3)时间内聚:一个模块完成的功能必须在同一时间内完成,而 这些功能只是因为时间因素关联在一起。 (4)过程内聚:处理成分必须以特定的次序执行。 (5)通信内聚:各成分都操作在同

43、一数据集或生成同一数据集。 (6)顺序内聚:各成分与一个功能相关,且一个成分的输出作为 另一成分的输入。 (7)功能内聚:模块的所有成分对完成单一功能是最基本的,且 该模块对完成这一功能而言是充分必要的。启发性规则-经验的总结(1)改进软件结构,提高模块独立性;(2)模块规模适中-每页60行语句;(3)深度、宽度、扇入和扇出适中;(4)模块的作用域力争在控制域之内;(5)降低模块接口的复杂性;(6)模块功能应该可以预测。示例:数字仪表板系统的精化读旋转信号收集并求平均转换成转/分计算gph读并校核 确定加速/减速计算里程计算mph和超速值 计算燃料消耗 产生加速/减速显示 产生里程显示发出铃声

44、 产生mph显示 产生mpg显示 旋转信号 信号/秒 (sps) sps 燃烧流传感器信号 燃烧流gph sps rpm rpm 箭头指示 上箭头 下箭头 水平线 英里 超速值 mph mpgmpg显示 mph显示 铃声里程显示输入部分get gphget rpmget spsget 燃料流变换燃料流为 ghp get 燃转信号变换燃转信号为燃料流变换sps为rpmget spsget sps转换为 sps get转速信号变换为sps变换为 sps 1、 数字仪表板系统输入部分的精化 输入部分的初始模块结构图转速信号燃料流燃料流燃料流gphspsspsrpm spsrpm gphspsspss

45、psspssps spssps转速信号转速信号输入部分计算gph计算rpm计算 sps读燃转信号采集sps读转速信号 使用启发式规则1,并考虑其它规则, 可以将输入部分的模块结构图精化为:其中:sps为转速的每秒信号量;sps 为sps的平均值; sps为sps的瞬时变化值;rpm为每分钟转速;mph为每小时英里数;gph为每小时燃烧的燃料加仑数;rpm为行进里程。输出部分put mpgput mphput里程put 加/减速put 超速量显示显示显示2、 数字仪表板系统输出部分的精化 输出部分的初始模块结构图 显示显示变换变换变换变换变换对于这一初始的模块结构图,一般情况下应: 把相同或类似

46、的物理输出合并为一个模块,以减少模块之间的关联。就本例而言:左边前三个“显示”,基本上属于相似的物理输出,因此可以把它们合并为一个显示模块。而将“put mpg”模块和相关的“生成显示的模块合并为一个模块;同样地,应把“put mph”模块、“put里程”各自与相关的生成显示的模块合并为一个模块,参见下图。 其它求精的规则,与输入部分类同。例如,可以将“put 加/减速”模块与其下属的两个模块合并为一个模块,将“put 超速量”模块与其下属的两个模块合并为一个模块 。 输出模块生成mpg显示生成mph显示生成里程显示生成加/减速显示生成蜂鸣显示 通过以上求精之后,可得如下的模块结构图 变换模块

47、计算mpg计算mph计算里程计算加/减速 3、变换部分的精化1)首先,应该了解:对于变换部分的求精,是一项具有挑战性的工作。其中主要是根据设计准则,并要通过实践,不断地总结经验,才能设计出合理的模块结构。2)就给定的数字仪表板系统而言,如果把“确定加/减速”的模块放在“计算速度mph”模块下面,则可以减少模块之间的关联,提高模块的独立性。通过这一求精,可以得到如下的模块结构图: 通过以上讨论,可以看出:在总体设计中(1)将一个给定的dfd转换为初始的模块结构图基本上是一个 “机械”的过程,一般体现不了设计人员的创造力;(2)优化设计-将一个初始的模块结构图转换为最终的模块结构图,对设计人员将是

48、一种挑战,其结果将直接影响软件系统开发的质量。 总体设计小结: 1、总体设计的目标和任务; 2、总体设计的表示:层次图,hipo图,模块结构图; 3、基本概念:模块,以及由此产生的“鸿沟”; 4、总体设计的基本思想与步骤: 通过:变换设计和事务设计 dfd-初始的msd (几乎可“机械”地进行) 使用:启发式规则 初始的msd-msd (体现设计人员的创造)2详细设计的任务:定义每一模块 结构化程序设计 三种控制结构:顺序 begin s1;s2;sn end; 选择 if 条件表达式 then s1 else s2; 循环 while 条件表达式 do s ;几种表示工具 流程图、pad、n

49、s图、伪码等 1)框图s1s2s1s2.s2)伪码 伪码是一种混合语言。外部采用形式语言的控制结构,内部使用自然语言。 begin 输入一元二次方程的系数a,b,c; if b2-4aco then 计算两实根 else 输出无实根; end.3)pad图s1s2s3s1s2x5x5tffts1s2s3s4s5s6s8s7s9s10 x10&y31、结构化方法是一种比较系统的软件开发方法学。 包括:结构化分析和结构化设计2、紧紧围绕“过程抽象”和“数据抽象”, 给出了 完备的符号体系 -概念与表示 可操作的过程 -步骤与准则 易理解的表示工具 提供了 控制信息组织复杂性的机制,例如 逐

50、层分解,数据打包等 结构化方法小结3、问题:捕获的“过程”和“数据” 恰恰是客观事物的易变性质, 解的结构也不保持原系统的结构, 从而:造成 维护,验证上的困难。 a b1 b2 b3 b4 c2 c3 c4 c5 c1 dn dm数据结构1数据结构2 概念 软件方法学以软件方法为研究对象的学科。主要涉及指导软件设计的原理和原则,以及基于这些原理、原则的方法和技术。狭义的也指某种特定的软件设计指导原则和方法体系。 从构造的角度,软件开发方法学主要由三部分组成 notation process tools从能力的角度,软件开发方法学应能表达: 系统的说明性信息 系统的行为信息 系统的功能信息,并

51、要给出以下机制: 控制信息组织复杂性 控制文档组织复杂性5、学习、掌握、运用系统建模技术的基本“技巧”: 1)知识 知识=概念+关系+条件/过程 2)建模 建模=(实际事物概念)+表示(形式化或半形式化符号) 抽象:关注一个事物的重要的或主要方面,而忽略或去掉不重 要的或没意义的细节。 其中,就软件开发而言, 根据当前情况和需要,应以细节的不同层次来观察问题; 控制复杂性,并考虑正确性、可维护性、可复用性和可理解性等。 模型:any abstraction that includes all essential capabilities, properties,or aspects of wh

52、at is being modeled without any extraneous details.firesmith,henderson-sellers 3) 实践一、引言1、构造模块的四种基本观点1)以“过程”或“函数”为基点,使每一模块实现一项功能;2)以一个“数据结构”为基点,使每一模块实现该数据结构 上的操作功能;3)以“事件驱动”为基点,使每一模块识别一个事件并对该 事件作出响应;4)以“问题域中的一个成分”为基点,使每一模块对应现实世界中的一个事物。 第五章 面向对象方法-概念与表示2、oo方法基于的“世界观”: 世界是由对象构成的; 对象有其自己的属性和内部运动规律; 对象之

53、间的相互作用,构成了大千世界的 各式各样的不同系统。 3、oo方法的两种学派: 一种:以“方法(method )”驱动的方法学。 基本思想:在给出符号体系的基础上,明确规定 进行的“步骤”,并在每一步中给出 “实现策略”。 代表:p.coad的“ooa(1990)”, “ ood(91)” 优缺点分析: 优点:容易学习和掌握。 缺点:不够灵活,可能对出现的新问题就没有 办法处理。3、oo方法的两种学派: 第二种:以“模型(model )”驱动的方法学。 基本思想:给出模型化概念,即符号体系以及目标 模型;而不明确规定实现目标的“步骤” 但给出一些必要的指导。 代表:rumbaugh 的“omt

54、(1991)”等 优缺点分析: 优点:比较灵活; 缺点:与ooa相比,不易学习和掌握。如以前所述,建模方法主要包括:建模语言和过程. 建模语言(modeling language)是用以表述设计方法的表示法(主要是图形的); 过程(process)是对设计中所应采取的步骤的意见. 在建模语言方面,“uml已成为一种绘制面向对象设计图的标准工具,并已传播到非面向对象领域.面向对象以前的主要方法已经消逝.uml登场了,并且稳居宝座.” 摘自序,徐家福译 面向对象建模技术uml的创建历程 (1)95年,grade booch 、jim rumbaugh在oopsa会议上公布了他们的统一方法(0.8版

55、); (2)96年, g.booch 、j.rumbaugh以及ivar jacobson “三友”,将他们的统一建模语言命名为uml; (3)97年,rational公司发布了uml文档1.0版,作为omg的建议方案; (4)98年,在合并不同建议的基础上,omg以其结果1.1版作为一个正式的标准。从此以后,gris kobryn领导一个修订工作组(revision task force rtf)进行渐进的修订; (5)1999年,rtf发布了1.3版,作为omg的下一个正式版本。1、类图1)类 根据oo的世界观,对象有其自己的属性和内部运动规律,并与其他对象相互作用。因此,可以在结构上把对

56、象抽象为两个主要部分: 数据和操作 其中,数据用于表达对象的状态,而操作表达在特定状态对外提供的服务(功能)。 于是,现在可以从二个层面来理解“对象”: 概念层:对象是可标识的、可触摸的和可感知 的一切事物。 结构层:对象是数据和操作(或谓属性和行为) 的封装通信单位.数据表示对象的属性 状态,操作(或称方法)决定了对象的 行为和与其它对象进行通信的接口。 库 帐 品名: 入库 出库 日结 查询 年报属性操作例如:为了控制信息组织的复杂性,引入了类的概念: (2)语义 类是具有相同结构、行为和关系的一组对象的描述符。 表示正被建模系统的一个概念。 就描述问题的方法而言,一般采用“二分法”;例如

57、:类,实例 类型,值 type array1.5 of integer; 主语,特定的名词或名词短语 一个类作为一个元模型,是一组对象的描述,这组对象具有同样的属性,操作,方法,关系与语义。 一个类可以使用一组接口,用于指明该类为环境提供的操作。一个类的完整定义必需包括实现接口的每一个操作。 尽管有的类可以是抽象类(没有实例的类),class定义了对象的数据结构。 每一类的实例包括一组对应于behavioral feature或类范围的属性,一个类的所有对象共享该类中的behavioral feature,并且它们都访问为每一类空间的属性所存储的单一值。综上, 类是一组具有共同特征的相似对象的

58、抽象描述。 类是面向对象语言的基本成分; 类是面向对象程序的唯一构造单位; 类是抽象数据类型的具体实现; 类是对象的生成模板。 any uniquely-identified abstraction(i.e.,model)of a set of logically-related instances that share the same or similar characteristics.firesmith,lorenz,rumbaugh any concept that has members .henderson-sellers 例如: 抽象类 基类,超类 聚合类: collectio

59、n(to hold component objects of a single type and its subtypes.firesmith ) container(to hold unrelated component objects of multiple unrelated types.booch,firesmith,rumbaugh ) structure(class)(component objects of which are interrelated.firesmith )composite class:any class that composed of other clas

60、ses. wirfs-brock(3)类的表示:名字栏属性栏操作栏注:还可以有其它栏,但要给出栏名,并放在栏的中间。(a)关于类名 deposittime:date time:timeamount:currency:cash bank:checkaccount(b)属性、操作性质的描述 使用:性质串,可以作为一个列表元素 例如: aquery b c性质串的作用域(4)风格指导 类名使用黑体字,位于分栏中央; 类名以大写字母开始; 属性和服务用普通格式,左对齐; 属性和服务以小写字母开始; 抽象类或者抽象操作的特征标记以斜体字表示。示例2)属性(1)语义 表示对象状态的一组值。 any named p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论