软件工程
2025-06-10 10:13:28 1 举报
软件工程
作者其他创作
大纲/内容
细化(接口):细化是类目之间的语义关系,其中一个类目规约了保证另一个类目执行的契约,用在接口和实现它们的类和构件之间;用况和实现它们的协作之间。
需求规约的4个基本性质
7.制品
五.概要设计和详细设计规约
偶然内聚,功能内聚最低
1.适用于输入数据和输出数据之间的逻辑关系比较简单的情况。介于形式语言和自然语言之间;2.结构化自然语言的语法有内、外两层;外层语法描述操作的控制结构,如顺序、选择、循环等;内层语法没有什么限制,一般使用自然语言描述。
模式特点:获取数据,变换数据,输出数据
类语义的进一步表达:除了类的名字、属性、操作之外,再给出如下信息:1.详细叙述类的职责;2.通过类的注解和操作的注解;3.通过类的注解或操作的注解;4.详述类的状态机5.详述类的内部结构6.类与其他类的协作
第二节:结构化设计方法
主动类是一种至少具有一个进程或线程的类。能够启动系统的控制活动。
模型
2
4.用况
构件是系统设计中的一种模块化部件,通过外部接口隐藏了它的内部实现
1
1.类和对象
描述了一组对象为了完成某个特定任务而进行的交互和合作方式。它定义了这些对象之间的消息传递和协作关系,强调对象之间的动态交互过程
1.数据流:数据流动方向2.加工:数据变换单元,输入/输出3.数据存储:数据的静态结构4.数据源:数据流的起点,可以是人/物/服务器资源5.数据谭:数据流的归宿地,可以是人/物/服务器资源
初始阶段1.变换设计2.事务设计
详细设计的任务:以总体设计为输入,将模块结构图的每一个模块具体描述,给出给出实现模块功能的实施机制,包括一组例程和数据结构,从而精确地定义了满足需求规约的结构。详细设计的目标:将总体设计阶段产生的系统高层结构映射为以这些术语所表达的低层结构,即系统的最终结构。
三。UML的模型表达格式
通过掌握的知识,通过抽象,给出一个该系统的结构模型
层次图(1)描绘软件的层次结构(2)适合自顶向下设计软件
产品
1.需求分析的首要任务是建立系统功能模型2.结构化分析方法给出一种能表达功能模型的工具,即数据流图(DFD图)3.DFD图是一种描述数据变换的图形化工具,是一种表达待建系统功能模型的工具
6
1.如何将需求分析阶段的DFD图映射为设计层面上的模块及模块调用?2.结构化设计方法基于“自顶向下,功能分解”的基本原则。3.两种数据流图:变换型数据流图、事务型数据流图。4.两种映射:变换设计、事务设计。5.步骤:1)把需求分析的DFD图转化为初始的模块结构图2)基于“高内聚低耦合”原理,转化为可供详细设计阶段使用的模块结构图
第一节:结构化分析方法
随着软件开发的发展,其中出现的软件质量低下,软件费用过高,开发周期过长的一系列的问题,影响软件经济发展的问题称为软件危机
4
一.非形式化的需求规约:用自然语言表达,适合规模小,复杂程度不高的小型项目二.半形式化的需求规约:半形式化的符号体系,如数据流图,UML图等来表达需求,适合中大型项目三.形式化的需求规约:数学概念的符号来表达需求,针对质量要求比较高的系统
1.结构化程序设计:是一种基于结构的编程方法,采用顺序结构、选择结构以及重复结构进行编程,每一结构只允许一个入口和一个出口
程序:是对计算机任务的处理对象以及处理规则的描述
创建类图的步骤:1.模型化待建系统中的概念,形成类图中的基本元素;用“类”来描述系统中各组成部分、包括系统环境。2. 模型化待建系统中的各种关系,形成该系统的初始类图;例如:关联、泛化。3. 模型化系统中的协作,给出该系统的最终类图;4.模型化逻辑数据库模式。
给出每一加工的小说明;对DFD图中每一加工给出加工的输入数据和输出数据间的关系1.结构化自然语言2.判定表3.判定树
概念
一个加工必须有输入输出,准确定义数据流图和数据存储,准确描述一个加工必须说明输入和输出的逻辑关系模型平衡问题复杂性控制问题
需求五个基本性质
3
四.应用中注意的问题
总体设计的3个阶段:1.初始设计:将数据流图转化为模块结构图(变换设计,事务设计)2.精细化设计:高内聚低耦合,精细化模块结构图,设计数据结构和接口3.复审阶段(对高层软件结构进行复审)
自顶向下,功能分解1.建立系统环境图2.自顶向下,逐步求精,建立系统的层次数据流图3.定义数据字典4.描述加工
定义数据流图包含的所有数据流和数据存储的数据结构,直到给出构成以上数据的各数据项的基本数据类型。1.顺序结构:=+2.选择结构(0):|3.重复结构(*):{}
二.总体设计的步骤
1.必要的:该需求是用户要求的2.无歧义的:该需求是没有歧义的3.可测的:该需求是可进行测试的4.可跟踪的:该需求可从一个开发阶段跟踪到另一个阶段5.可测量的:该需求是可进行测量的
了解
代表了系统中的物理设备或计算资源,如服务器、客户端计算机、打印机等
内聚:一个模块内部各成分之间相互关联程度的度量高内聚:一个模块中各部分之间存在着很强的依赖低内聚:一个模块中各部分之间存在较少的依赖
关联:1)关联名(Name):用于描述关联的一定“内涵2)限定符(Qualifier):关联字段,外键3)导航 :对于一个给定的类目,可以找到与之关联的另一个类目,称为导航4)聚合(Aggregation)5)角色(Role):角色是关联一端的类目对另一段的类目的一种呈现6)组合(Composition)7)可见性(Role)8)关联类:关系表9)多重性(Multiplicity) 多重性用于描述关联两端的对象数量关系10)约束
一般指计算机系统的程序及其文档
1.模块结构图2.层次图3.HIPO图
泛化(继承):一个类可以有0个或者多个父类。• 没有父类,且最少有一个子类的类称为根类或者基类。• 没有子类的类称为叶子类。
详细设计目标:描述每个模块的细节
软件开发的本质
文档:是为了理解程序所需阐述型材料
为解决软件危机问题,运用计算机科学理论与技术结合工程管理的原则和方法,按照预算或者进度实现满足用户需求的软件产品的研究学科
类的属性:引入“可见性”的目的是为了支持信息隐蔽这一软件设计原则。所谓信息隐蔽是指在每个模块中所包含的信息(数据和处理过程)不允许其他不需要这些信息的模块发访问。是实现低耦合的一种有效途径。如果一个模块中所有的信息都不可见,该模块是“绝对”信息隐蔽的,这样的模块无意义。
软件开发涉及的两个问题
软件开发的两大技术
HIPO图 = H图+IPO图(1)层次图+输入/处理/输出(2)H图中的每个方框、应有一张IPO图
泛化是一般性类目(称为超类或父类)和它的较为特殊性类目(称为子类)之间的一种关系,有时称为“is-a-kind-of”关系。如果两个类具有泛化关系,那么① 子类可继承父类的属性和操作,并可有更多的属性和操作;② 子类可以替换父类的声明;③ 若子类一个操作的实现覆盖了父类同一个操作的实现,这种情况被称为操作多态性,但两个操作必须具有相同的名字和参数;④ 可以在其他类目之间创建泛化,例如在节点之间、类和接口之间等。
类图
UML模型
需求规约的表达
1.结构化方法
软件需求定义
顺序图
类程序设计语言PDL(伪码)(1)借用某种结构化程序设计语言的关键字作为语法框架,用于定义控制结构和数据结构;(2)使用某种自然语言的词汇,表示实际操作和判定条件。
相关概念
计算机软件
一.20世纪60年代末到80年代初->特征:前期关注实现技术,后期关注软件质量和软件工程管理 ->如瀑布模型,开发了过程语言,开发方法,一些支持工具(1)提出瀑布模型;(2)开发了诸多过程式语言(如C语言、Pascal语言);(3)开发方法(如Jackson方法、结构化方法);(4)开发了一些支持工具(调试工具、测试工具、计划工具、配置管理工具)。二.20世纪80年代以后->特征:软件生成技术,特别是软件复用和软件生产管理->(1)提出《软件生存周期过程》一系列工程标准;(2)开展计算机辅助工程(CASE);(3)面向对象语言(如Smalltalk、C++);(4)提出面向对象软件开发方法等;(5)开展了一系列过程改进项目。
程序流程图符号:顺序结构、选择结构、循环结构。特点:(1)不是逐步求精的工具,较早的考虑程序的控制流程,而不是程序的全局结构。(2)表达的控制流不受约束,可随意转移,会影响甚至破坏好的系统结构设计。(3)不易表示数据结构
二.表达关系的术语
二.基本术语
第二章 软件需求与软件需求规约
实现高内聚低耦合的启发式规则:✓ 改进软件结构,提高模块独立性。✓ 力求模块规模适中。(不超过60行)✓ 力求深度、宽度、扇出和扇入适中。(扇出3或4 )✓ 尽力使模块的作用域在其控制域之内。✓ 尽力降低模块接口复杂度。✓ 力求模块功能可以预测。
一.总体设计目标及表示1.目标:将软件系统分解成多个模块,并且确定模块之间的关系,形成良好的结构模型
类图:1.类图是可视化地表达系统静态结构模型的工具,通常包含类、接口、关联、泛化和依赖关系等。必要时可包含子系统、实例、约束、注解。2.类图给出说明性的信息,包括功能需求(系统对最终用户所提供的服务)。是构件图和部署图的基础
结构图(静态)
模式特点:集中-发散1.接收输入数据2..(T)分析并确定事务3.选取与该事务对应的一条活动路径
序幕
1.需求获取2.需求分析
耦合强度(强->低)• 内容耦合:一个模块直接修改或操作另一个模块的数据。 耦合程度最高,尽量避免使用。• 公共耦合:两个或两个以上的模块共同引用一个全局数据项。• 控制耦合:一个模块通过接口向另一个模块传递一个控制信号(如开关、标志),接收信号的模块根据信号值进行适当的动作。• 标记耦合:模块A通过接口向两个模块B和C传递一个公共参数,称模块B和C间存在一个标记耦合。• 数据耦合:模块之间通过参数来传递数据。 耦合程度最低,存在普遍。
1.概念模型:描述了系统是什么2.软件模型:描述了软件系统的解决方案1.设计模型:2.实现模型:3.部署模型:
定义
需求分类
发展
完成软件设计后,应产生设计规约(输出文档)1、概要设计(总体设计)规约指明高层软件软件体系结构1)系统环境:硬件、软件接口、人机界面、外部定义的数据库,限定条件。2)软件模块结构:模块间接口、数据流、主要数据结构。3)模块描述:模块接口定义、处理逻辑、必要注释。4)文件结构和全局数据文件逻辑结构:记录描述、访问方式等。5)测试需求等概要设计规约面向软件开发者类
四.详细设计
需求分析:1.目标:在系统用况模型的基础上,创建系统分析模型及在该分析模型视角下的体系结构描述,分析模型是系统的一种概念模型,解决系统用况模型中存在的二义性和不一致性等问题,以一种系统化的形式准确表达用户需求2.需求分析中的基本术语:1)分析类(概念层面的大粒度术语)2)用况细化:一个协作。针对一个用况,其行为用多个分析类间相互作用来细化,记为用况细化[分析]。3)分析包3.分析模型表达4.分析的主要活动5.用况模型与分析模型的比较6.分析模对以后工作的影响
分类
1.结构化分析方法(需求分析)2.结构化设计方法(总体设计)3.结构化程序设计方法(详细设计)
即软件开发就是弥补问题域与运行平台间的距离,形成映射
1.对顶层的加工进行分解,在顶层数据流图基础上,按功能分解的设计思想,进行“自顶向下,逐步求精“2.叶加工,自顶向下地画出各层数据流图,直到底层的加工足够简单,功能清晰
5.主动类
一.软件开发方法1.结构化方法2.面向数据结构方法3.面向对象方法
一个需求描述了一个产品应该具有的功能,性能,参数或者其他性质
1.结构化方法通过系统顶层数据流图定义系统环境图2.对于顶层的大加工,其标识一般采用代建系统名字
系统建模
2.接口
五.需求验证
1.总体设计的目标:建立系统模块结构,讲系统分解成多个模块(黑盒子)2.总体设计的工具:模块结构图(数据流图?),层次图,HIPO图3.总体设计的基本任务:把需求分析阶段的功能需求建立成系统的模块结构
需求规约表达的是一个产品/项目/系统的所有需求的陈述型文档,他表达了产品/项目/系统的概念模型
1.自悟2.交谈3.观察4.提炼5.小组会
接口是操作的一个集合,其中每个操作描述了类、构件或子系统的一个服务
1.求解软件的开发逻辑(过程方法)2.求解软件的开发方法(过程途径)
1.可靠性2.存活型3.可维护性4.用户友好性
5
模块结构图:(1)结构图是一种描述软件“宏观”结构的图形化工具(2)较高层级:控制(或管理)模块、复杂抽象(3)较低层级:从属模块、简单具体
用况图
对行为进行抽象,给出行为结构,给出系统的动态性描述
状态图
描述单个类在他的生存周期内内部的状态变化,由一个状态转化到了另一个状态
描述一组对象进行交互的图,发送消息(同步/异步)
需求规约
1.UML:一种图形化建模语言,给出表达客体、客体关系的术语以及表达模型的工具。 2.面向对象技术的发展中的一个重要里程碑:UML(Unified Modeling Language) 3.引入8个术语,表达客观事物:类与对象、接口、协作、用况、主动类、构件、制品、节点 4.为了表达各类事物间的关系,UML给出4个术语:关联、泛化、细化、依赖
三.模块化及启发式规则
实践中,一个大型的软件系统一般是变换型流图和事务型流图的✓ 在软件总体设计中,通常以变换设计为主,事务设计为辅,进行结构设计;✓ 先利用变换设计,把软件系统分为输入、中心变换和输出3个部分,设计上层模块;✓ 再根据各部分DFD图的结构特点,适当地利用变换设计和事务设计进行细化,得到初始模块结构图;✓ 最后按高内聚低耦合的原则,对初始的模块结构图进行精化,得到最终模块结构图
是软件开发过程中产生的各种物理文件或信息实体,包括源代码文件、可执行文件、文档、数据文件等。制品是软件开发过程的产物,它们记录了软件系统的设计、实现、测试等各个阶段的信息
1.将问题域中的概念映射为运行平台上的概念(变量)2.讲问题域中的处理逻辑映射为运行平台上的处理逻辑(方法,顺序,选择,循环)
一.UML术语
实现问题域中的概念和处理逻辑映射到运行平台上的概念和处理逻辑
需求发现技术
盒图(N-S图):是一种矩形结构,支持“自顶向下逐步求精”a) 顺序b) IF-THEN-ELSE型c) CASE型d) 循环e) 调用子程序
类:一组具有相同属性、操作、关系和语义的对象的描述。对象:类的一个实例。类用于抽象客观世界中的事物,有一组属性和操作
3.协作
UML(RUL)
第一章 绪论
1.模块化的目标:基于高内聚低耦合原则,提高模块独立性2.模块独立性衡量指标:耦合与内聚3.耦合:不同模块之间相互依赖程度的度量4.内聚:一个模块内部各成分之间相互关联程度的度量
第三章 结构化的方法
实现这一映射的基本途径
用况图:1.用况图是一种表达系统功能模型的图形化工具。2.一个用况图通常包含6个模型元素:1)主题:(大方框)主题是由一组用况所描述的一个类,通常是一个系统或子系统。2)用况(用例):(椭圆)外延上,用况表达了参与者使用系统的一种方式;内涵上,一个用况规约了系统可以执行的一个动作3)参与者:(小人)可以是人,硬件。节点4)关联,泛化,依赖:3.用况图的作用:1)系统建模,描述软件系统行为的功能结构2)业务建模,描述企业或组织的业务过程结构4.业务模型与系统模型的关系:整体/部分关系,业务是整体,系统模型是业务模型的一个模块
1.主要任务:在需求分析的基础上。确定怎么做问题2.结构化设计分为:总体设计和详细设计
UML泛化的四个约束:① 完整(Complete):表明已经在模型中给出了泛化中的所有子类,尽管在表达的图形中有所省略,但也不允许增加新的子类。② 不完整(Incomplete):表明在模型中没有给出泛化中的所有子类,因此可以增加新的子类。③ 互斥(Disjoint):表明父类的对象最多允许该泛化中的一个子类作为它的类型。④ 重叠(Overlapping):表明父类的对象可能具有该泛化中的多个子类作为它的类型。
软件危机
变换设计:将变换型数据流图 映射为 初始模块结构图✓设计准备——复审并精化系统模型✓ 确定输入、变换、输出这三部分之间的边界✓ 第一级分解——系统模块结构图顶层和第一层的设计✓ 第二级分解——自顶向下,逐步求精
1.如何映射2.如何管理
第四章 面向对象的结构设计
8、节点(Node)
6.构件
质量属性
设计:请看第二个文件
需求分析阶段的主要任务:需求发现,需求分析,需求验证,最终形成系统的软件需求规格说明书需求验证-单一需求:是否满足5个性质:必要性,无歧义性,可测性,可跟踪性,可测量性 需求验证-软件规格说明书:是否满足4个性质:重要性和稳定性程度,可修改性,完整性,一致性
事务设计:将事务型数据流图映射为模块结构图✓ 设计准备——复审并精化系统模型✓ 确定事务处理中心✓ 第一级分解——系统模块结构图顶层和第一层的设计✓ 第二级分解——自顶向下,逐步求精
1.需求规约实际上是开发者与用户约定的技术合同书,他规约了项目的功能需求以及环境说明等2.需求规约对象项目开发来说,是一份正式的,受控制的起始点3.需求规约是对于项目开发的其他环节来讲,是一个管理控制点4.需求规约是后期系统测试和用户指南说明书的基础,即基于需求规约一般还会产生另外两个文档——初始测试计划和用户系统操作描述
1.如何结合UML术语形成各种模型2.UML的图形化工具分为两类1)结构图:用于表达系统的静态结构:系统的成分信息2)行为图:用于表达系统的动态结构,系统的行为信息
一.功能需求:规约了系统或者系统构建必须执行的功能二.非功能需求:1.性能需求:必须具备的性能要求2.外部接口需求:必须提供给第三方的必要接口,或者对接第三方接口能力3.设计约束需求:限制了软件系统或者系统构建的设计范围,比如不要搞违法的内容等4.质量属性需求:必须达到的一个质量水平
需求规约的作用
详细设计规约描述软件各成分内部属性1)各处理过程的算法。2)算法说涉及的数据结构的描述。详细设计规约作为软件设计人员与程序员之间交流的媒体。
需求
一.RUP的特点1.软件统一过程RUP是Rational软件公司(Rational公司被IBM并购)创造的软件工程方法2.RUP是一种基于UML的一种过程框架。RUP较完整的定义了将用户需求转换成产品所需要的活动集,并提供了活动指南以及对生产相关文档的要求3.RUP(Rational Unified Process)的突出特点:1)以一种用况(Use Case)为驱动的、2)以体系结构为中心的迭代、增量式开发。
软件开发
行为图(动态)
类的操作:对一个类中所有对象要做的事情的抽象
1.完整的:没有遗漏的需求2.重要性和稳定性程度:按需求的重要性和稳定性对需求进行分级,如基本需求,可选需求和期望需求3.可修改的:不过多影响其他需求的前提下,可以容易的修改一个单一的需求4.一致的:不存在互斥矛盾的需求
高内聚低耦合合的启发式规则中相关的概念1.深度:控制的层数,粗略标志一个系统的规模和复杂程度。2.宽度:同一个层次上模块总数的最大值(受扇出影响)。3.扇入:表明有多少个上级模块直接调用它。4.扇出:一个模块直接调用的下级模块数目5.控制域:模块本身以及所有直接或间接从属于它的模块合。6.作用域:受该模块内一个判定所影响的所有模块的集合
软件开发的目标
如何映射
用于描述系统的功能需求,它代表了系统的一个特定的功能或行为,是从用户的角度来描述系统如何与外部参与者进行交互以实现某个目标。例如,在一个图书馆管理系统中,“借阅图书”“归还图书”“查询图书” 等都是用况,每个用况都描述了用户(如读者、管理员)与系统之间的一系列交互步骤。
软件工程
PAD图:二维树形结构图;自上而下、从左向右a) 顺序b) 选择c) CASE型多分支d) WHILE型循环e) UNTIL型循环f) 语句标号g) 定
以用况图为基础,创建系统结构中心,迭代增量式开发
三.建立模型过程
1.关联2.泛化3.细化4.依赖
2.详细设计的工具:✓ 程序流程图(程序框图)✓ 盒图(N-S图)✓ PAD问题分析图✓ 类程序设计语言PD(伪代码)
过程途径
类在建模中的主要用途:1.模型化问题域中的概念2.建立系统的职责分布模型3.模型化建模中使用的基本类型
状态图:1.状态图是显示一个状态机的图,其中强度了从一个状态到另一个状态的控制流,一个状态机是一种行为,描述了一个对象在其生存期间因响应事件并作出响应而经历的状态。1)状态:初态,终态,正常状态2)事件: a.内部事件:系统内对象之间传送的事件,如溢出异常 b.外部事件:系统与参与者之间传送的异常,如按钮,对传感器中断 c.信号:信号是消息的一个类目,是一个消息类型,与类一样。可以有属性,操作和泛化 d.调用:调用表示对象接收到一个操作的请求 e.时间事件:时间事件是表示推移一段时间的事件,通过事件表达式来规约,如after 2 seconds f.变化事件:表示状态变化2.状态转移(->):指一个对象在执行动作后,当满足事件的条件,进入到第二个状态3.状态图的作用:1)创建一个系统的动态模型,包括类型对象,各种系统结构的以事件序列为序的行为2)创建一个场景模型,主要途径是用况图给出的状态图
1.变换型数据流图2.事务性数据流图
依赖:依赖是一种使用关系,用于描述一个类目使用另一类目的信息和服务。例如,一个类使用另一个类的操作,显然在这种情况下,如果被使用的类发生变化,那么另一个类的操作也会受到一定影响。
第五章 面向对象方法-RUP
0 条评论
下一页