自考资料:软件工程 课件.ppt_第1页
自考资料:软件工程 课件.ppt_第2页
自考资料:软件工程 课件.ppt_第3页
自考资料:软件工程 课件.ppt_第4页
自考资料:软件工程 课件.ppt_第5页
已阅读5页,还剩481页未读 继续免费阅读

下载本文档

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

文档简介

软 件 工 程 2002年6月,1、软件工程概念 2、软件开发模型 3、系统建模技术-结构化方法 系统建模技术-面向对象方法 4、软件测试 5、软件过程 iso9000-3与cmm简介 6、软件工具、平台与环境,第一章、软件工程及软件工程框架 软件计算机系统中的程序及其文档。程序是计算任务的处理对象和处理规则的描述;文档是为了便于了解程序所需的阐明性资料。细言之, 工程将理论和所学的知识应用于实践的科学。 软件工程应用计算机科学、数学及管理科学等原理,开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于用于计划、资源、质量、成本等管理。 软件工程是一门交叉性学科。,软件工程框架,软件工程可定义为三元组: 目标,原则,活动 给出了软件工程所涉及的工程要素 给出了各要素之间的关系 给出了软件工程学科所研究的主要内容,软件工程的基本活动 1)、需求 定义问题,即建立系统模型 主要任务包括: 1需求获取 需求定义 系统功能的一个正确的陈述 2需求规约系统需求规格说明 主要成分:系统模型 系统功能的一个精确、系统的描述 3需求验证,2)、设计 在需求分析的基础上,给出系统的软件解决方案。 1总体设计 系统的软件体系结构 c/s结构 以数据库为中心的结构 管道结构 面向对象的结构 2详细设计 针对总体设计结果,给出每一构件的详 细描述,3)、实现 选择可用的构件;或 以一种选定的语言,对每一构件进行编码 4)、确认 贯穿软件开发的整个过程 主要任务是:软件测试 5)、支持 完善性维护 纠错性维护,第二章、软件开发模型 1、软件开发模型 软件过程、活动、任务的结构框架。 瀑布模型 演化模型 增量模型 螺旋模型 喷泉模型 外征:软件开发活动的组织 内涵:求解软件的计算逻辑,分 析,编 码,(1)瀑布模型 50年代末:二级模型 “做什么” “编程-实现”,需求分析,设 计,编 码,测 试,运 行,瀑布模型雏型,系统需求,软件需求,需求分析,设 计,编 码,测 试,运 行,1970年,w.royce 将雏型进一步精化 其中:每一阶段具有以下特征: 从上一阶段接受工作对象,即输入; 对这一输入实施本阶段的工作 给出本阶段的结果作为输出。,系统需求,软件需求,需求分析,设 计,编 码,测 试,运 行,归纳逻辑: p q pq,瀑布模型 活动如瀑布流水式的组织 规定每一活动的工作对象和输出 评审、确认和反馈,问题:无法通过开发活动 澄清本来不确切的软件需求 维护、甚至返工的代价,需求,设计,编码,测试,集成,需求,设计,编码,测试,集成,开 发,反 馈,开 发,反 馈,.,核 心 系 统 开 发,第 二 次 迭 代,(2)演化模型 针对事先不能完整地定义需求 针对用户的核心需求,开发核心系统 根据用户的反馈,实施活动的迭代,1,3,2,5,9,10,11,6,7,12,13,8,4,增量1 1,2,5,9 增量2 3,6,7,4,10,11 增量3 8,12,13 ,管理,增量规约,增量设计,纠错性分析,增量实现,增量1,增量2,增量3,(3)增量模型,微软“同步-稳定的产品开发模型” 将项目分为若干个里程碑阶段 定义稳定、灵活的体系结构,并为构件 和子系统的开发提供统一的接口 开发构件,维持一个可发布的系统版本 可以准确把握项目进展情况 增强开发人员的信心和成就感 可以随时根据市场情况及时作出调整,演化,维护,确认,实现,设计,分析,喷泉模型 特征:迭代 无缝 与面向对象技术 的关系,第三章 系统建模技术-结构化方法 (一)结构化分析方法 要回答:如何定义问题? 涉及: 如何获得需求 如何规约需求 如何验证需求 1、关于需求获取 1)需求的目标:简洁而精确地说明所要解决的问题。 2)需求面临的挑战 问题空间理解 人与人之间的通信 需求的不断变化,3)需求的重要性 standish-group对350家公司的8000个软件项目作过一次调查 其中,31%的项目的结局是被取消。 引致这些项目失败的原因是: 13.1% 不完整的产品要求; 12.4% 缺乏用户的参与; 10.6% 缺少资源(人力、财力); 9.9% 不现实的期望; 9.3% 高层领导支持不足; 8.7% 产品要求与指标的改变; 8.1% 没有订计划; 7.5% 不再需耍该开发中的系统。 其中,与产品需求有关的(1,2,4,和6项)占了44.1%。这些数据突出地显示了软件产品需求在软件开发中的重要性。,重要性之一 软件需求工程直接关系到“成本、质量和按时交付” 等问题-它们是项目成败的关键因素。 项目的五维:进度,特性,质量,成本,人员。 重要性之二 软件需求-这种发生在软件生命周期的初始阶段 的错误是非常难于改正,并且是代价极高的。 最新的研究兴趣聚焦于“需求引出”, 因为它涉及到 软件开发人员与非软件专业人员合作的问题。,4)需求的原则 分析问题和需求的能力取决于分析人员的思维和经验。 其中:好的思维包括: 抽象:捕获问题空间的“一般/特殊”关系 是认识 、构造问题的一般途径。 划分:捕获问题空间的“整体/部分”关系 是降低问题复杂性的基本途径之一 投影:捕获问题空间的多维“视图” 是描述问题的基本手段之一 ,好的思维来源于: 严谨、逻辑和“活跃”的思考习惯。 严谨要求思考的对象应该是不放过任何一个“小” 问题 逻辑要求思考的过程应该是一种符合规则的 推导过程 活跃思维要求思考的方式应该是并行的,即 不是仅一个角度,而是多个角度来思考问题 经验来源于: 开发了一些软件并善于总结-创新与教训 跟踪最新技术。,5)需求获取技术特征 由上可见,需求获取技术特征: 方便通讯(使用易于理解的语言) 提供定义系统边界的方法 提供划分、抽象、投影等方法 允许采用多种可供选择的设计方法 适应需求的变化 支持使用问题空间的术语,思考问题和编制文档 ,需求获取技术示例- use case (ivar jacobson,1994) 1)、引言 use case主要用于促进和用户的交流、沟通。为此使用了一种用户和开发人员都能理解方式描述系统功能和行为。 use case可以划分系统与外部实体的界限,是系统开发的起点,而最终应该落实到类和实现代码上。 use case既然是对系统行为的动态描述,因此它是类、对象、操作的来源,是系统分析和设计阶段的输入之一,是分析和设计,制定开发计划,测试计划,设计测试用例的依据之一。 use case model是系统需求分析阶段的成果之一。 use case不但有助于帮助分析员理清思路;验证用户需求。而且,也是开发人员之间进行交流的重要手段。,2)、语义与表示 use case语义 一个use case是系统或其它语义实体(例如子系统或一个类)所提供的一块(unit)高内聚的功能,显露该系统和一个或多个外部的交互者(称为操作者)交替出现的消息序列,以及该系统所执行的动作。 可见,一个use case捕获了参与交互的各方关于其行为的一个约定。通过这一约定,描述了该语义实体在不同条件下的行为对参与者一个要求的响应,以实现某一目的。不同的行为序列,依赖于所给出的特定要求以及与这些要求相关的条件。, 表示与描述 use case通常被表示为: use case包含一组操作和属性,这些操作和属性 规约了该use case的实例所执行的那个动作序列。动作 包含状态的改变以及该use case与其环境的通讯。 为了表明use case所包含的具体内容,还应给出它 的正文描述。即:,use case 中包含的信息 名称(name) 标识(identifier) 描述(description) 角色(actor) 状态(status) 活动及时序 频度(frequency) 注:具体例子请参见p16-17。,3)、操作者语义与表示 一个操作者定义了一组高内聚的角色,当用户与该 实体交互时,用户可以扮演这一角色。 对于每一use case,一个操作者有一种角色,即每 一use case与具有一种角色的操作者进行通讯。 通常,一个操作者被表示为:,4)、use case获取 仿真法(simulation) 掌握用户的所有输入与输出的数据种类,通过仿真的方法,找出它们之间的对应关系,与及相应的数据处理过程。包括任何计划中将要新增加的数据类型与处理过程。 原型法(prototyping) 从用户处取得一组基本的use case产品要求之后, 立即建造use case产品的原型(这个原型可以是实际可运行的软件(外壳),或是一个用描述来表达的产品),然后让用户去模拟使用这个原型,提出修改的意见。其中,值得注意的是,不要忽略将要新增加的数据类型与处理过程。 场景法(scenario generation) 让用户穷举他们现有的所有的数据处理实践以及任何计划中将要新增加的数据类型与处理过程。 从以上三中方法中可以看出,use case 的功能划分均要以角色为主体,行为是角色触发的。,5)、关系 在use case之间,或在操作者与use case之间,存在一些标准的关系: 关联:参与关系,即操作者参与一个use case。例如,操作者的实例与use case实例相互通讯。关联是操作者和use case之间的唯一关系。 扩展:use case a到use case b的一个扩展关系,指出了use case b的一个实例可以由a说明的行为予以扩展(根据该扩展所说明的特定条件),并依据该扩展点定义的位置,a说明的行为被插入到b中。 包含:use case a到use case b的一个包含,指出a的一个实例将包含b说明的行为,即这一行为将包含在a定义的那部分中。 泛化:use case a到use case b的泛化,指出a是b的特殊情况。,1 *, the salesperson asks for the catalog,place order extension points additional requests: after creation of the order,supply customer data,order produck,arrange payment,request catalog,salesperson,例:use case 关系 actor 关系,supervisor,establish credit,1 *,6)、use case图 use case图给出了操作者和use case以及它们之间的关系。即图中给出了一些操作者、一组关系、一些接口和这些元素之间的关系。 (关系是操作者和use case之间的关联 是操作者之间的泛化 是use case之间的泛化、扩展和包含) 可以将一些use case用一矩形括起,以表示所包括的那个系统或其它语义实体的边界。,check status,place order,fill order,establish credit,telephone catalog,salesperson,shipping clerck,supervisor,customer,例:use case图,7)、使用use case图的建模类型 使用use case图所建造的类型,可以从两个层面上进行分类,它们是“整体/部分”关系 系统建模(system modeling ) 系统建模用于描述软件系统的结构和行为 业务建模(business modeling) 业务建模用于企业或组织过程的优化和再工程(process re-engineering) 业务建模的图形元素不仅包括普通的actor和use case,还包括worker、artifact,business 过程描述时还应结合时序图(sequence diagram)和任务图(activity diagram),2、关于需求规约 需求规约的主要目标: 依据需求陈述(作为输入),解决其中的歧义、不一致等问题,以系统化的形式表达用户的需求,即给出问题的定义(建立模型),形成需求规格说明书。为了实现这一目标, (一)结构化分析方法 1提出的概念有: 数据流: 加工: 数据存储: 数据源: 数据潭: 概念是完备的。,2建模过程 (1)建立系统的功能模型 -使用的工具为数据流图dfd 首先:建立系统环境图,确定系统边界 继之:自顶向下,逐层分解 (2)建立数据字典 定义数据流 定义数据存储 定义数据项 (3)给出加工小说明 -使用的工具可以为判定表 判定树,(1)建立系统的功能模型 -使用的工具为数据流图dfd 数据流图:是一种描述数据变换的图形工具。例如:,旅行社,订票单,预定 机票,准备 机票,记帐,费用,航班,帐单,机票,记帐文件,航班目录,旅行社,数据流图由四个基本成分组成: 数据流 加工 数据存储 数据源和数据潭,其中:1 各成分的定义 2 数据流、数据存储-支持数据抽象 加工-支持过程/功能的抽象 3 关于命名问题,问题陈述:建立一个简化的商业自动化系统。 其中: 售货员 负责录入销售的商品(商品名,编号,单价,数 量),有时要根据特定情况对销售的商品进行修 改或删除。 收款员 负责收取现金,并将多交的付款退还用户。 销售经理 需要随时查询整个部门的销售情况(时间,商品 编号,销售金额),并在日结时,统计各类商品 销售金额。,简化的商业自动化系统,营业员,收款员,经 理,销售的商品,现金额,现金余额,销售情况,日销售额,查询要求,首先:建立系统环境图,确定系统边界 -顶层dfd,其中:1 数据流为:销售的商品,日销售额等 3个输入流,3个输出流 数据源为:营业员,经理,收款员 数据潭为:经理,收款员 2 加工名为:要建立的系统名字,录入、修改或 删除商品信息,录入、修改 现金额, 并计算余额,查询商品销售情况 计算日销售额,1,2,3,继之:自顶向下,逐层分解 a、按人或部门的功能要求,将加工“打碎”,形成:,注:需给每一加工编号;,b、”分派”数据流,形成:,录入、修改或 删除商品信息,2 录入、修改 现金额, 并计算余额,查询商品销售情况 计算日销售额,销售的商品,现金额,现金余额,查询要求,销售情况,日销售额,1,3,其中:要根据特定的加工要求进行分派; 保持与顶层数据流的一致; 可以不引入数据源和数据潭。,录入、修改或 删除商品信息,录入、修改 现金额, 并计算余额,查询商品销售情况 计算日销售额,销售的商品,现金额,现金余额,查询要求,销售情况,日销售额,销售文件,1,2,3,c、引入文件,使之形成一个有机整体系统:,注:到一个文件,既有输入流,又有输出流,则可简化为 ,并可不给出标识。 至此,体现精化,形成0层数据流图。,查询商品销售情况 计算日销售额,查询要求,销售情况,日销售额,销售文件,3,继续a、b、c:自顶向下,逐层分解。例如:加工3,可分解为:,判定要求,查询要求,3。1 统计销售情况,3。2 计算日销售额,销售文件,查询要求2,查询要求1,销售情况,日销售额,加工3:,*其中为什么要引入 加工“判定要求”?,(2)建立数据字典 定义数据流 定义数据存储 定义数据项 引入:结构符 | 用于定义数据结构,a,a,a,b,c,b0,c0,b*,数据字典: 1、数据流: 销售的商品=商品名+商品编号+单价+数量+日期 现金额 = 余额 =非负实数 查询要求=商品编号|日期 查询要求1=商品编号 查询要求2=日期 销售情况=商品名+商品编号+金额 日销售额= 类名+现金额 2、数据存贮: 销售文件=销售的商品 3、数据项,(3)给出加工小说明 -使用的工具可以为判定表 判定树 判断表 条件类别 条件组合 操作 操作执行 例如: 考试总分 =620 =620 620 单科成绩 有满分 有不及格 有满分 发升级通知书 y y n 发留级通知书 n n y 发重修通知书 n y n,3建模中注意的问题 (1)模型平衡规则 父图和子图必须平衡 每个数据流和数据存储必须在数据字典中予以定义 “叶”加工(最低层)必须给出加工小说明 小说明和数据流图的图形表示必须一致,例如: 在小说明中,必须说明“输入数据流”如何使用,必须 说明如何产生“输出数据流”,必须说明如何选取、使用、 修改“数据存储”,(2)控制复杂性规则 上层数据可以“打包” 上、下数据流对应关系在数据字典中给出,但包内 数据流的性质(输入、输出)必须一致。 一幅图中的图元个数应控制在7+/-2以内 与每一加工相关的数据流的数目应适中 (与层次有关) 分析数据内容,确定是否所有的输入信息都用于 产生输出信息; 分析加工,确定一个加工所产生的输出,是否都 能由该加工的输入信息导出,实例讲解:图书管理系统问题陈述见p35。 根据问题陈述,在一定的层次上,可以把该系统分为两“大块”,即:借还书等事务的处理,以及咨询事务处理。 -进行功能抽象。 (注:不同的功能抽象将导致不同的结果!但应该是等价的。) 于是,可以根据这一抽象,可以识别: 1)顶层数据流:借还书等事务处理要求 咨询事务要求 以及相关的数据流 2)数据源和数据潭为:图书管理人员,读者以及时钟。,基于以上分析,可形成该系统的环境图:,图书管理系统,图书管理员,图书管理要求,查询要求,图书统计表,图书情况,读者情况,读者,系统时钟,当前日期,罚款单,其中:3个输入流:图书管理要求,查询要求,系统时钟 图书管理要求=入库单 借书单 还书单 注销单 查询要求=读者情况 图书情况 图书统计表 4个输出流:图书统计表,图书情况,读者情况,通过“打碎”、“分派”,可形成如下0层dfd:,1 处理借还 书等事务,2 处理咨询 事务,图书管理要求,查询要求,当前日期,目录文件,借书文件,读者文件,罚款单,读者情况,图书情况,图书统计表,其中:保持输入与输出的一致; 引入三个文件,对顶层dfd进行细化。 (注:存在数据库设计问题),以同样方式,对加工1进行分解,形成:,1。1 入库新书,1。2 借书,1。3 还 书,1。4 注销图书,图书管理要求,处理图书管理要求,目录文件,罚款单,当前日期,借书文件,读者文件,入库单,借书单,注销单,还书单,其中:注意平衡问题;平面化问题。当然,还可以继续细化,1。2 借书,目录文件,借书文件,例如:借书,读者文件,借书单,1。2。1 检查读者的有效性,读者文件,1。2。2 检查读者的资格,1。2。3 办理借书,1。2。4 检查图书库存,借书单,无效读者,有效读者借书单,借书超限,核准后的借书单,该书已借完,借书记录,借书文件,目录文件,注意:其中粗线数据流!,图书管理系统的use case模型(基本思路):,借书,还书,新书入库,注销图书,图书管理员,读 者,请:1、在这一思路的基础上,建立该系统的use case模型;并给出每一use case的描述。 2、对该系统的两种模型进行比较。(在哪些方法进行?),3、关于需求验证 有关srs内容方面: (1)正确性:指的是srs中陈述的每个需求是否都表达了 系统的某个要求。 (2)无二义性:指的是srs中陈述的每个需求是否都只有 一种解释。 (3)完整性: 未来系统所做的任何事情都包含在srs的陈述中; 未来系统响应所有可能的输入(包括有效和无效); srs中没有被标识为“待定”的内容。,(4)可验证性:srs中陈述的每个需求都是可验证的- 即当且仅当存在一个有限代价的过程(人工或机器) 可以检查构造的软件产品是否符合用户的需求。 (5)一致性: srs中陈述的需求没有与以前的文档发生冲突; srs中陈述的各个需求之间没有发生冲突。 (6)可理解性:,有关srs格式与风格方面 (7)可修改性:指的是srs的结构和风格使任何对需求的 必要修改都易于完整、一致的进行。 (8)可被跟踪性:指的是srs中的每个需求的出处都是清 楚的,这意味着srs中包含对前期支持文档的引用表。 (9)可跟踪性:指的是srs的书写方式有助于对其中陈述 的每个需求进行引用。 (10)设计无关性:指的是srs不暗示特定的软件结构和 算法。,第四章 结构化设计 要回答如何解决问题 即给出软件解决方案 1总体设计的任务:如何将dfd转化为msd 分二步实现: 第一步:如何将dfd转化为初始的msd 分类:变换型数据流图 事务型数据流图 变换设计 事务设计,数据流图分类 变换型: 事务型,1,2,3,4,5,6,7,8,a,b,c,d,e,f,h,g,y,x,z,1,2,3,5,4,6,a,b,c,d,e,f,g,y,变换设计,xx系统,变换模块,get e,put h,put g,get c,get d,c,d-e,e-f,f-g,h,h-y,put y,g-x,put x,x-z,put z,get a,get b,b-d,a-c,e,e,g,h,h,g,z,z,x,x,g,y,y,h,d,b,c,a,c,d,e,e,f,g,h,f,x,a,b,事务设计,事务中心,输入模块,路径1,路径2,输出模块,a,y,c,g,b,f,c-e,c,e,e-g,e,g,b-d,b,d,d-f,d,f,3,4,6,8,2,5,7,9,a2,c,b,d,e,f,g,i,h,m,k,n,1,10,a1,x,一个系统的dfd,通常是变换型数据流图和事务型数据流 图的组合。如下所示:,第二步:如何将初始的msd转化为最终可供详 细设计使用的msd 概念:模块 模块化 模块化度量:内聚 耦合 设计规则经验规则 精化初始的msd 体现设计人员的创造,1)耦合:不同模块之间相互依赖程度的度量。 耦合类型: (1)内容耦合: (2)公共耦合:两个以上的模块共同引用一个全局数据项。 (3)控制耦合:一个模块向另一模块传递一个控制信号, 接受信号的模块将依据该信号值进行必要的活动。 (4)标记耦合:两个模块至少有一个通过界面传递的公共 有结构的参数。 (5)数据耦合:模块间通过参数传递基本类型的数据。,2)内聚:一个模块之内各成分之间相互依赖程度的度量。 内聚类型: (1)偶然内聚:一个模块之内各成分之间没有任何关系。 (2)逻辑内聚:几个逻辑上相关的功能放在同一模块中。 (3)时间内聚:一个模块完成的功能必须在同一时间内完成,而 这些功能只是因为时间因素关联在一起。 (4)过程内聚:处理成分必须以特定的次序执行。 (5)通信内聚:各成分都操作在同一数据集或生成同一数据集。 (6)顺序内聚:各成分与一个功能相关,且一个成分的输出作为 另一成分的输入。 (7)功能内聚:模块的所有成分对完成单一功能是最基本的,且 该模块对完成这一功能而言是充分必要的。,启发性规则-经验的总结 (1)改进软件结构,提高模块独立性; (2)模块规模适中-每页60行语句; (3)深度、宽度、扇入和扇出适中; (4)模块的作用域力争在控制域之内; (5)降低模块接口的复杂性; (6)模块功能应该可以预测。,示例:数字仪表板系统的精化,读旋转信号,收集并 求平均,转换成 转/分,计算 gph,读并 校核,确定 加速/减速,计算里程,计算mph 和超速值,计算 燃料消耗,产生 加速/减速显示,产生 里程显示,发出 铃声,产生 mph显示,产生 mpg显示,旋转信号,信号/秒,(sps),sps,燃烧流 传感器信号,燃烧流,gph,sps,rpm,rpm,箭头指示,上箭头,下箭头,水平线,英里,超速值,mph,mpg,mpg显示,mph显示,铃声,里程显示,输入部分,get gph,get rpm,get sps,get 燃料流,变换燃料流为 ghp,get 燃转信号,变换燃转信 号为燃料流,变换sps为 rpm,get sps,get sps,转换为 sps,get 转速信号,变换为sps,变换为 sps,1、 数字仪表板系统输入部分的精化 输入部分的初始模块结构图,转速信号,转速信号,燃料流,燃料流,燃料流,gph,sps,sps,rpm,sps,rpm,gph,sps,sps,sps,sps,sps,sps,sps,转速信号,转速信号,输入部分,计算gph,计算rpm,计算 sps,读燃转信号,采集sps,读转速信号,使用启发式规则1,并考虑其它规则, 可以将输入部分的模块结构图精化为:,其中:sps为转速的每秒信号量;sps 为sps的平均值; sps为sps的瞬时 变化值;rpm为每分钟转速;mph为每小时英里数;gph为每小时燃烧 的燃料加仑数;rpm为行进里程。,输出部分,put mpg,put mph,put里程,put 加/减速,put 超速量,显示,显示,显示,2、 数字仪表板系统输出部分的精化 输出部分的初始模块结构图,显示,对于这一初始的模块结构图,一般情况下应: 把相同或类似的物理输出合并为一个模块,以减少模块之间的关联。就本例而言: 左边前三个“显示”,基本上属于相似的物理输出,因此可以把它们合并为一个显示模块。而将“put mpg”模块和相关的“生成显示的模块合并为一个模块;同样地,应把“put mph”模块、“put里程”各自与相关的生成显示的模块合并为一个模块,参见下图。 其它求精的规则,与输入部分类同。例如,可以将“put 加/减速”模块与其下属的两个模块合并为一个模块,将“put 超速量”模块与其下属的两个模块合并为一个模块 。,输出模块,生成mpg 显示,生成mph 显示,生成里程 显示,生成加/减速显示,生成蜂鸣,显示,通过以上求精之后,可得如下的模块结构图,变换模块,计算mpg,计算mph,计算里程,计算加/减速,3、变换部分的精化 1)首先,应该了解:对于变换部分的求精,是一项具有挑战性的工作。其中主要是根据设计准则,并要通过实践,不断地总结经验,才能设计出合理的模块结构。 2)就给定的数字仪表板系统而言,如果把“确定加/减速”的模块放在“计算速度mph”模块下面,则可以减少模块之间的关联,提高模块的独立性。 通过这一求精,可以得到如下的模块结构图:,通过以上讨论,可以看出:在总体设计中 (1)将一个给定的dfd转换为初始的模块结构图基本 上是一个 “机械”的过程,一般体现不了设计人员的创 造力; (2)优化设计-将一个初始的模块结构图转换为最终 的模块结构图,对设计人员将是一种挑战,其结果将 直接影响软件系统开发的质量。,总体设计小结: 1、总体设计的目标和任务; 2、总体设计的表示:层次图,hipo图,模块结构图; 3、基本概念:模块,以及由此产生的“鸿沟”; 4、总体设计的基本思想与步骤: 通过:变换设计和事务设计 dfd-初始的msd (几乎可“机械”地进行) 使用:启发式规则 初始的msd-msd (体现设计人员的创造),2详细设计的任务:定义每一模块 结构化程序设计 三种控制结构:顺序 begin s1;s2;sn end; 选择 if 条件表达式 then s1 else s2; 循环 while 条件表达式 do s ;,几种表示工具 流程图、pad、ns图、伪码等 1)框图,s1,s2,s1,s2,. . .,s,2)伪码 伪码是一种混合语言。外部采用形式语言的 控制结构,内部使用自然语言。 begin 输入一元二次方程的系数a,b,c; if b2-4aco then 计算两实根 else 输出无实根; end.,3)pad图,s1,s2,s3,s1,s2,x5 x5,s,顺序: 选择 : 循环:,注:支持逐步求精设计,3)n-s图,支持逐步求精设计举例,顺序: 选择 : 循环:,条件,f,t,s1,s2,循环条件,循环体,n:=110,x5,t,f,f,t,s1,s2,s3,s4,s5,s6,s8,s7,s9,s10,x10&y3,结构化方法小结: 1、结构化方法是一种比较系统的软件开发方法学。 包括:结构化分析和结构化设计 2、紧紧围绕“过程抽象”和“数据抽象”, 给出了 完备的符号体系 -概念与表示 可操作的过程 -步骤与准则 易理解的表示工具 提供了 控制信息组织复杂性的机制,例如 逐层分解,数据打包等,3、问题:捕获的“过程”和“数据” 恰恰是客观事物的易变性质, 解的结构也不保持原系统的结构, 从而:造成 维护,验证上的困难。,a,b1,b2,b3,b4,c2,c3,c4,c5,c1,dn,dm,数据结构1,数据结构2,4、软件方法学 软件方法学 是以软件方法为研究对象的学科。主要 涉及指导软件设计的原理和原则,以及基于这些原理、 原则的方法和技术。 狭义的软件方法学也指某种特定的软件设计指导原 则和方法体系。 关键字:软件设计的原理和原则 以及相关的方法和技术。,5、学习、掌握、运用系统建模技术的基本“技巧”: 1)知识 知识=概念+关系+条件/过程 2)建模 建模=(实际事物概念)+表示(形式化或半形式化符号) 抽象:关注一个事物的重要的或主要方面,而忽略或去掉不重 要的或没意义的细节。 其中,就软件开发而言, 根据当前情况和需要,应以细节的不同层次来观察问题; 控制复杂性,并考虑正确性、可维护性、可复用性和可理解性等。 模型:any abstraction that includes all essential capabilities, properties,or aspects of what is being modeled without any extraneous details.firesmith,henderson-sellers 3) 实践,第五章 面向对象方法 一、引言 1、构造模块的四种基本观点 1)以“过程”或“函数”为基点,使每一模块实现一项功能; 2)以一个“数据结构”为基点,使每一模块实现该数据结构 上的操作能; 3)以“事件驱动”为基点,使每一模块识别一个事件并对该 事件作出响应; 4)以“问题域中的一个成分”为基点,使每一模块对应现实 世界中的一个事物。,2、oo方法基于的“世界观”: 世界是由对象构成的; 对象有其自己的属性和内部运动规律; 对象之间的相互作用,构成了大千世界的 各式各样的不同系统。,3、oo方法的两种学派: 一种:以“方法(method )”驱动的方法学。 基本思想:在给出符号体系的基础上,明确规定 进行的“步骤”,并在每一步中给出 “实现策略”。 代表:p.coad的“ooa(1990)”, “ ood(91)” 优缺点分析: 优点:容易学习和掌握。 缺点:不够灵活,可能对出现的新问题就没有 办法处理。,4、oo方法的两种学派: 第二种:以“模型(model )”驱动的方法学。 基本思想:给出模型化概念,即符号体系以及目标 模型;而不明确规定实现目标的“步骤”, 但给出一些必要的指导。 代表:rumbaugh 的“omt(1991)”等 优缺点分析: 优点:比较灵活;。 缺点:与ooa相比,不易学习和掌握。,二、osa简介 提供了一组模型化概念,以及三种osa模型,即: 对象关系模型; 对象行为模型; 对象相互作用模型。 如何进行系统分析: 以模型化概念为指导 以模型构造为驱动 -产生对系统的询问,捕获系统的知识 最终建立系统的osa模型,1、osa的对象关系模型(orm) 1)模型化概念 为了建造orm,提供了 5个模型化概念: 对象,关系,对象类,关系集合,约束 (1)对象 一个单一的、可标识的实体或概念。 (一个对象可以与其它对象发生联系;可以由其它对象组成。) -any abstraction that models a single thing. coad,coleman,omg -any person ,place,or thing. embley,-any identifiable,encapsulated entity that provides one or more services that can be requested by a client. jacobson, omg -any encapsulation of properties(e.g.,data, state) and behavior(e.g., operations). booch,coad,firesmith,jacobson omg. 对象的表示: 例如: 北京大学 李 四 张三的毕业证 茶杯 72(度) 提示:在自然语言中,名词或名词短语通常表示着 对象。 三大特征:自治性 封闭性 通信性,(2)关系 关系是对象之间的一种逻辑连接。例如: 张三是李四的经理 说到底,这里的“关系”,就是数学中关系的一个偶对。 关系的表示: 例如: 张三是李四的经理 is manager of 1。75 m(身高) 28岁(年龄) 李四 男(性别),(3)对象类 按某一逻辑理由,将一些对象分成若干个对象集合,这 样得到的每一集合成为一个对象类。 对象类的表示:,人,交通工具,教课书,注:osa鼓励分类; 不限定分类规则。,(4)关系集合 一个关系集合是一组关系,其中每一关系具有相同的结构和相同的语义。即: 每一关系所涉及的对象数目相同; 每一关系所涉及的对象属同一对象类; 每一关系中对象名在关系中的位置相同; 一个关系集合所对应的结构可以看作一个模板,如下所示:,人,交通工具,拥有,公司,员 工,雇佣,人,人,娶,关系集合的表示:,人,交通工具,拥有,人,交通工具,人拥有交通工具,有效工作日,人,人按工作日 领取工资,工资,注:对于二元关系,可省略其中“菱形”。,(5)约束(constraints) -用于对对象类和关系集合的语义进行进一步的描述。 参与约束 给定一个关系集合,参与约束定义了对象类中的一个对象可以参与该关系集合的数目。例如:,人,交通工具,拥有,1:*,0:1,参与约束的基本形式:min:max 其中:min为非负整数; *表示该类的一个对象可参与该关系的最大数目。,c1,c2,c3,c4,c5,c6,c7,p1,p3,p2,p4,p5,拥有关系:,, , , ,模型化为,12 01,拥有,关系集合与参与约束 解析, 并发约束 在一个多元关系集合中,并发约束定义了一个对象类中有多少个不同的对象可以与其它对象类中的特定的对象(一个或多个)一起出现。例如:,student,1:*,5:*,grade,course,semester,并发约束,student course semester grade,course semester student,0:12,student semester course,注意:关系集合 的有效性, 基本约束 定义了一个对象类中对象的数目。例如:,25:37 student,50 state in the usa,注意:当没有给出基本约束时,则为0:*, 一般约束 一般约束是一陈述语句,用于进一步说明orm中对象、对象类、关系、关系集合的性质。,(6)特殊的关系集合 -为了支持“抽象”,并有效地控制信息组织,osa引入了3种特殊的关系集合: is a 关系 意指:一个对象类中的一个对象是另一对象类中的对象,人,学生,超类/一般类,特殊类,计算机,大型机,pc机,笔记本, is part of 关系 意指:一个对象,称之为“聚合”,该对象是由一些称之为成分的对象构成的。例如:,“聚合”类,“成分1”类,“成分1”类, ,p1:q1,i1:j1,pn:qn,in:jn,计算机,显示器,主机,键盘,注意:聚合还可有在分析中常用的一种情况:组合。, is member of 关系 意指:由对象构成的集合,并把这样的集合作为一个对象。例如:,学生,学生俱乐部,成员类,集合类/ 联合,0 :*,*,5 :*,这种关系的读法:学生是学生俱乐部的成员。,(7)特殊对象类、资格条件、注释 特殊对象类 单一对象类为了解决概念上的问题。 关系对象类该类中的每一对象是一个关系 资格条件 为了确定一个对象是否属于一个对象类 确定一个关系是否属于一个关系集合 所施加的条件。 qualifier:any attribute of an object that distinguishes it from other object, thereby acting as a relationship cardinality constraint. firesmith,rumbaugh, 注 释 为使orm具有更多的信息所给出的图示或解释。 注意:注释不能形成对对象类、关系集合的“限制” 2)关于orm的小结 orm是一种源于er模型的语义数据模型,用于捕获一个系统 的说明性信息 其中: 为了描述实体,给出了“对象”和“对象类”的模型化概念; 为了描述实体之间的联系,给出了“关系”、“关系集合”, 以及“一般/特殊”、“整体/部分”、“联合/成员”; 为了增强语义信息,提供了完备的“约束”; 提供了“注释”和“资格条件”。,由osa关于“对象”的定义可知,没有把“属性”作为orm 的基本构造,既不主张在分析阶段标识属性,并认为 这是软件设计的工作。理由是: 属性定义比较困难,属性和对象很难区分; 避免导致不必要的复杂构造-例如复合属性、重值 属性等. -对于这一观点,在学界是有争议的。,2、osa的对象行为模型 1)行为的分类准则 (1)具有相同或相似的状态变迁的集合; (2)具有相同或相似的状态演化历史; (3)具有相同或相似的功能。 根据这一分类准则,行为具有3要素,即: 状态,状态变迁集,功能,2)模型化概念 状态:由对象一组确定的属性值定义的。表达了一 个对象的外征(status)、 阶段(phase)、 活动 (activity)。例如:,信件,信件,信件,“编码”,“邮递”,“阅读”,(1)信件的属性:收发地址、收信人、邮戳、启封、。 (2)改变“阶段”的操作:投递、分装、拆启 (3)每阶段可进行的操作:编码、盖戳、分装、运送。,states may be used to model a nondiscrete or long-running activity,or a continuous activity that must be interrupted to allow a response to events or conditions that affect an object. , 触发与转换 对象状态变化的过程成为转换。 促使状态转换的事件或/和条件成为触发。 动作(action) 活动(activity):实现功能的基本操作。 -是可中断的。 动作(action):实现状态转换的基本操作。 -是不可中断的。 注:有的活动可以充当实现状态转换的动作。,状态1,状态2,状态3,状态4,条件1,条件2,条件3,条件4,操作1,操作2,操作3,操作4,操作5,操作6,操作7,操作8,蕴含,蕴含,蕴含,对象状态与操作之间的关系,osa有关对象行为的概念之表示: 状态,呆 闲,驶向卡车,驶向粮库,搬运粮袋,机器人叉车, 转换,驶向粮库,搬运粮袋,到达粮库,发动机熄火 应用轮闸 激活臂手,触发 (1)基于条件的触发 条件是有关当前状态、系统环境当前状态、对象存不存在、对象之间关系存在不存在等的一个逻辑陈述。 在osa中,可以形式化或非形式化的给出触发的条件。 (2)基于事件的触发 事件是对象可观察的并要响应的一个系统变化,例如接受一个命令,放送一条消息等。 事件监

温馨提示

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

评论

0/150

提交评论