还剩21页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
软件工程概论
1、软件危机1)、软件工程的目的倡导以工程的原理、原则和方法进行软件开发,以解决当时出现的软件危机2)、软件危机指在计算机软件开发和维护过程中所遇到的一系列问题A、如何开发软件以满足对软件日益增长的需求B、如何维护数量不断增长的已有软件3)、软件危机的主要表现形式A、软件开发成本高,研制进度无法准确估计,用户不满意B、软件产品的可靠性得不到保证C、软件产品难以维护D、软件发展跟不上硬件的发展和用户的要求,硬件成本逐年下降,软件成本越来越昂贵
2、软件工程概念1)、软件计算机系统中的程序及其文档程序是计算任务的处理对象和处理规则的描述;文档是为了便于理解程序所需的阐明性资料细言之,软件有三层含义A、个体含义即指计算机系统中的程序及其文档B、整体含义即指在特定计算机系统中所有上述个体含义下的软件的总称C、学科含义即指在研究、开发、维护以及使用前述含义下的软件所涉及的理论、方法、技术所构成的学科2)、工程将理论和所学的知识应用于实践的科学3)、软件工程应用计算机科学、数学及管理科学等原理,开发软件的工程它借鉴传统工程的原则、方法,以提高质量,降低成本为目的其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理
3、软件工程框架(参见附图软件工程框架示意图)1)、软件工程目标生产具有正确性、可用性和开销合宜的产品A、正确性是指软件产品达到预期功能的程度B、可用性是指软件基本结构、实现以及文档为用户可用的程度C、开销合宜是指软件开发、运行的整个开销满足用户要求的程度2)、软件开发活动生产一个最终满足需求且达到工程目标的软件产品所需要的活动软件开发的基本活动包括需求、设计、实现、确认、和支持A、需求就是定义问题B、设计在需求的基础上,给出被建系统的软件设计方案C、实现在软件设计的基础上,编码被建系统软件体系结构中的每一模块或构件D、确认需求复审、设计复审及程序测试E、支持为系统的运行提供纠错性维护和完善性维护3)、软件工程原则围绕软件开发,提出了以下基本原则A、选取适宜的开发范型在系统设计中,经常需要权衡软件需求、硬件需求以及其它因素之间的相互制约和影响,适应需求的易变性选用适宜的开发范型,以保证软件开发的可持续性,并使最终的软件产品满足客户的要求B、采用好的设计方法在软件设计中,通常需要考虑软件的模块化、信息隐蔽、局部化、
9、软件方法学是以软件方法为研究对象的学科主要涉及指导软件设计的原理和原则,以及基于这些原理、原则的方法和技术狭义的软件方法学也指某种特定的软件设计指导原则和方法体系面向对象方法
1、构造模块的四种基本观点1)、以〃过程〃或〃函数〃为基点,使每一模块实现一项功能;2)、以一个〃数据结构〃为基点,使每一模块实现该数据结构上的操作功能;3)、以〃事件驱动〃为基点,使每一模块识别一个事件并对该事件作出响应;4)、以〃问题域中的一个成分〃为基点,使每一模块对应现实世界中的一个事物
2、用况图1)、概述就是由参与者、用况以及它们之间的关系所构成的图作用主要用来明确需求;用来辅助分析;用来辅助设计,特别是用户界面的设计;用来指导测试2)、概念A、系统边界一个系统所包含的所有系统成分与系统以外各种事物的分界线B、参与者在系统边界以外,与系统进行交互的事物-人员、设备、外系统一个参与者定义了一组功能上密切相关的角色,当一个事物与系统交互时,该事物可以扮演这样的角色C、用况对参与者使用系统的一项功能时所进行的交互过程的描述3)、关系A、参与者之间的关系
①泛化(继承)如果一组参与者具有共同的性质,可以把这些性质抽取出来放在另一个参与者中,它们再从中继承B、用况之间的关系
①泛化(继承)子用况继承父用况的行为和含义;子用况可以增加或覆盖父用况的行为;子用况可以出现在父用况出现的任何位置
②扩展从用况A到用况B的扩展关系是指,用况B的实例是可以被用况A指定的行为扩充(服从于在扩展中指定的特定条件),行为被插入到由B中的扩展点定义的位置
③包含从用况A到用况B的包含关系表明,用况A的一个实例也包含了用况B所指定的行为,在用况A中定义的位置包含该行为
④扩展与包含的异同同都是不完整的;都离不开基本用况;都可实现为子程序异方向不同;1对多选包含关系;多对1选扩展;包含处理一般的情况;扩展处理特殊的情况C、参与者与用况之间的关系
①关联连接参与者与用况之间的线段,表示参与者实例与用况实例之间的交互4)、实例(参见用况图实例)
3、类图1)、概述类图用以表示模型的静态结构,即表示静态元素及其之间各种静态关系为了控制信息组织的复杂性,可以把类图组织成包,但这并不表示对构成模型的基本元素的划分2)、概念A、类是具有相同结构、行为和关系的一组对象的描述符B、属性是一些有着确定值的、用于描述对象状态信息的数据C、服务为了完成某一任务,一个对象所提供的、并体现其责任的操作D、对象在系统分析和系统构造中,对象是对客观世界事物的一种抽象,是由数据(属性)和其上操作(行为)组成的封装体,是类的一个实例对象的特点自治性,对象具有一定的独立计算能力;封闭性,对象具有信息隐蔽的能力;通信性,对象具有与其他对象通信的能力E、接口是指描述类中提供给另一个类使用的一组操作总结上述五个概念围绕一个问题,即如何描述客观事物,对象〃展开的如何抽象对象的〃结构〃属性,操作;如何描述一组具有相似性质的对象类;如何抽象并描述在特定环境中对象的功能接口F、关联把对一组具有相同结构特性、行为特性和语义的链的描述称为关联G、聚合是一种特殊的关联,表示整体类和部分类之间的〃整体-部分〃关系,其中的整体类称为聚集H、组合是一种关联,是聚合的一种形式,其部分和整体之间具有很强的〃属于〃关系,并且他们的生存期是一致的这种聚集称为组成I、链是对象引用的元组(列表),是关联的一个实例J、泛化是一般元素(父亲)和特殊元素(儿子)之间的一种分类关系,其中特殊元素的结构完全与一般元素一致,并附加了一些信息K、依赖一个依赖规约了两个模型元素(或两个模型元素集合)之间的一种语义关系,即:对目标元素的改变可能需要改变该依赖中的源元素总结给出了表达客观事物之间关系的基本概念链;给出了关联的语义;还给出了一些特定的关联(分类),主要包括二元关联与N元关联、聚合与组合、泛化、依赖L、包模型元素的一个分组M、访问依赖目标包的内容可以被客户包引用,或被递归嵌套在客户包中的其它包引用N、引入依赖一个引入依赖获得访问,并将目标名字空间中的那些具有合适可见性的名字引入到客户包(即对它们的引用可不需要一个路径名)总结包是控制文档组织复杂性的机制;包也可以作为〃模块化〃、〃构件化〃机制;包之间(在包的层次上)存在两种依赖访问和引入
0、注释是一个符号项,用以表示某一语义元素的一些文本信息3)、表示法A、类(参见类的表示法)B、属性可见性名称[多重性]:类型表达式=初始值{性质串}C、服务可见性名字(参数列表)返回类型表达式{性质字符串}D、对象(参见对象的表示法)E、接口(参见接口的表示法)F、关联
①二元关联(参见二元关联的表示法)
②N元关联(参见N元关联的表示法)G、聚合(参见聚合的表示法)H、组合(参见组合的表示法)I、链(参见链的表示法)J、泛化(参见泛化的表示法)K、依赖(参见依赖的表示法)L、包(参见包的表示法)
4、顺序图1)、概述是一种表达对象间交互的图,由一组对象(参与者)以及其间顺序发送的消息组成2)、概念和表示法A、对象生命线在顺序图中,对象生命线表示扮演特定角色的对象〃对象生命线〃表示为垂直虚线B、激活(控制焦点)表示一个对象直接或者通过从属例程执行一个行为的时期它既表示了行为执行的持续时间,也表示了活动和它的调用者之间的控制关系用一个窄长的矩形表示激活(活化)C、消息是两个对象间的通讯,这样的通讯用于传输将产生的动作所需要的信息一个消息会引起一个被调用的操作,产生一个信号,或者引起一个对象被创建或者被消除在顺序图中,把消息表示为从一个对象生命线到另一个对象生命线的一个水平实线箭头D、转换时间消息可以指定几个不同的时间(例如,发出时间和接受时间)这些时间可以用在约束表达式中用户可以按需要为特定的目的给出时间表达,如elapsedTime(占用时间)和startExecutionTime(开始执行时间)可以在约束中使用这些表达式,以给消息指派有效的具体时间约束可以赋予消息一个名字把时间约束写成为一个基于消息名字的表达式例如,如果消息的名字是stim,用stim.sendTime()表示发送时间,用stim.receiveTime()表达接收时间可以把时间约束表示在与箭头对齐的图的左边上,也可以通过把布尔表达式(可能包括时间表达式)放在括号中表示约束3)、实例(参见顺序图实例)
5、状态图1)、概述通过描述对事件实例接收的响应,状态图描述了具有动态行为能力的实体之行为通常用状态图描述类的行为,也可以用它描述其它模型实体(如用况、参与者、子系统、操作或方法)的行为2)、概念与表示法A、状态一个状态是对象(类)生命期的一个阶段,在该阶段中该对象要满足一些特定的条件,并可从事特定的活动把一个状态表示成一个四角均为圆角的矩形B、事件是指可以引发状态转换的所发生的事情事件有信号事件、调用事件、时间事件、条件事件C、转换是两个状态之间的关系,表示当一个特定事件出现时,如果满足一定的条件,对象就从第一个状态进入第二个状态,并执行一定的动作把转换表示成从源状态出发并在目标状态上终止的带箭头的实线3)、举例(参见状态图实例)
6、面对对象方法1)、派别A、〃方法驱动的方法〃在给出符号体系的基础上,明确规定进行的〃步骤〃,并在每一步中给出“实现策略〃如Coad-Yourdon方法B、〃模型驱动的方法〃给出模型化概念,即符号体系以及目标模型;而不明确规定实现目标的〃步骤〃,但给出一些必要的指导如的OSA方法和J.Rumbaugh的OMT方法2)、同结构化方法的比较A、结构化方法强调过程抽象和模块化,将现实世界映射为数据流和加工,加工之间通过数据流进行通信,数据作为被动的实体被主动地操作所加工,是以过程(或操作)为中心来构造系统和设计程序的B、面向对象方法把世界看成是独立对象的集合,对象将数据和操作封装在一起,提供有限的接口,其内部的实现细节、数据结构及对它们的操作是外部不可见的能较好的适应复杂大系统不断发展和变化的要求优点更好的刻画问题域,减少映射误差,控制变化性,便于同用户交流,消除或减少了软件开发各个阶段的鸿沟,便于复用
7、Coad-Yourdon方法1)、概述该方法认为,人类在认识和理解现实世界的过程中,普遍运用着下面三个构造法则区分对象及其属性;区分整体对象及其组成部分;不同对象类的形成及区分2)、00A利用五个层次和活动定义和记录系统行为,输入和输出A、发现类及对象描述如何发现类及对象从应用领域开始识别类及对象,形成整个应用的基础,然后,据此分析系统的责任两层矩形表示类及对象内层矩形表示类,分为三部分,类名、属性名、服务名,外层矩形表示该类的对象B、识别结构该阶段分为两个步骤第一,识别一般/特殊结构,该结构捕获了识别出的类的层次结构;第二,识别整体/部分结构,该结构用来表示一个对象如何成为另一个对象的一部分,以及多个对象如何组装成更大的对象C、定义主题主题由一组类及对象组成,用于将类及对象模型划分为更大的单位,便于理解精炼主题可以从问题域和接口复杂性入手D、定义属性其中包括定义类的实例(对象)之间的实例连接可以从四方面标识属性原子概念,规范化,标识机制,保持一个可导出的属性E、定义服务其中包括定义对象之间的消息连接总结在面向对象分析阶段,经过五个层次的活动后的结果是一个分成五个层次的问题域模型,包括主题、类及对象、结构、属性和服务五个层次,由类及对象图表示五个层次活动的顺序并不重要3)、00D面向对象设计模型需要进一步区分以下四个部分A、问题域部分(PDC)面向对象分析的结果直接放入该部分B、人机交互部分(HIC)这部分的活动包括对用户分类,描述人机交互的脚本,设计命令层次结构,设计详细的交互,生成用户界面的原型,定义HIC类C、任务管理部分(TMC)这部分的活动包括识别任务(进程)、任务所提供的服务、任务的优先级、进程是事件驱动还是时钟驱动、以及任务与其它进程和外界如何通信D、数据管理部分(DMC)这一部分依赖于存储技术,是文件系统,还是关系数据库管理系统,还是面向对象数据库管理系统
8、OSA方法1)、OSA模型A、对象关系模型对象、关系、对象类、关系集合、约束B、对象行为模型状态、触发与转换、动作C、对象相互作用模型2)、特殊的关系集合A、一般关系(isa)一个对象类中的每一个对象是另一对象类的一个对象B、聚合关系(is partof)由一些称之为成分的对象构成称之为聚合的对象C、联合关系(is memberof)该关系用于生成一个由对象构成的集合,并把该集合看作是一个对象
9、UML1)、UML简介UML是一种通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统的文档UML融合了许多面向对象开发方法的基本概念和优点,具有一致的图形表示法和语义,同时也出现了许多UML工具,能够很好地支持软件开发,例如UML的开发工具Rational Rose提供了面向对象的分析和设计(OOA和00D)到面向对象编程(OOP)的平滑过渡机制,完整地体现了面向对象的软件工程思想2)、UML的静态建模机制和动态建模机制静态结构定义了系统中重要对象的属性和操作以及这些对象之间的相互关系;动态行为定义了对象的时间特性和对象为完成目标任务而相互进行通信的机制UML定义了9种图用于系统建模,分为两类静态结构图和动态行为图A、静态结构图可用于对系统的静态方面进行可视化、详述、构造和文档化可以把系统的静态方面看作是对系统的相对稳定的骨架的表示,它由类、接口、协作、构件和节点等事物的布局组成结构图包括类图Class diagram描述系统中类的静态结构,它定义了系统中类的内部结构以及类之间的联系,用来捕获信息和事件中的对象;对象图Object diagram是类的实例化图;构件图Componentdiagram描述程序代码的物理结构;部署图Deployment diagram描述系统中软、硬件的物理体系结构,用于捕获系统硬件和软件构件的部署关系B、动态行为图用于对系统的动态方面进行可视化、详述、构造和文档化可以把系统的动态方面看作是对系统变化部分的表示,它由诸如随时间变化的信息流和在网络上构件的物理运动之类的事物组成行为图包括用例图Use Casediagram从用户的角度描述系统的功能,并指出各功能的执行者,说明执行者与提供的用例之间的某种联系;顺序图Sequence diagram描述几个对象之间的动作协作关系;协作图Collaboration diagram从另一个角度展示对象之间的动作协作关系它可以和顺序图相互转换在Rational Rose中可以由顺序图生成协作图;状态图State diagram描述一类对象具有的所有可能的状态以及状态转移关系;活动图Active diagram描述系统中各种活动的执行顺序
10、RUP参见RUP示意图
1、概述RUP,即Rational统一过程,是一种适应UML的软件生命周期方法,是一个通用的过程框架,可用于各种不同类型的软件系统、各种不同的应用领域、各种不同类型的组织、各种不同的功能级别以及各种不同的项目规模它是Use Case驱动的、以体系结构为中心的、迭代、增量的开发
2、阶段初始、细化、构造、移交
3、核心工作流捕获需求、分析、设计、实现、测试软件测试
1、软件测试
1、软件产品与其他产品不同,其最大的成本是检测软件错误、修正错误的成本,以及为了发现这些错误所进行的设计测试程序和运行测试程序的成本
2、软件测试可定义为按照特定规程,发现软件错误的过程
3、软件测试的目标一是预防错误;二是发现错误
2、软件测试和软件调试的区别
1、测试从一个侧面证明程序员的〃失败〃,而调试是为了证明程序员的正确
2、测试以已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的仅是程序是否通过测试调试一般是以不可知的内部条件开始,除统计性调试外,结果是不可预见的
3、测试是有计划的,并要进行测试设计,而调试是不受时间约束的
4、测试是一个发现错误、改正借误、重新测试的过程,而调试是一个推理过程
5、测试的执行是有规程的,而调试的执行往往要求程序员进行必要推理以至知觉的〃飞跃〃
6、测试经常是由独立的测试组在不了解软件设计的条件下完成的,而调试必须由了解详细设计的程序员完成
7、大多数测试的执行和设计可由工具支持,而调试时,程序员能利用的工具主要是调试器
3、测试过程模型(参见测试过程模型示意图)1)、程序环境包括支持其运行的硬件、固件和软件一般来说,程序环境经过了生产厂家的严格测试,出现错误的概率比较小,软件可靠性较好因此,对环境的抽象一一环境模型,只考虑计算机指令系统、操作系统宏指令、操作系统命令以及高级语言语句等2)、另外,为了测试,必须简化程序概念,形成被测试对象的简化版本,即程序模型不同测试技术,对同一被测对象一一程序,可产生不同的程序模型这一简化或着重于程序的控制结构,或着重于处理过程,于是形成了所谓的〃白盒〃测试和黑盒〃测试如果程序的简单模型不能解释未料到的行为,则必须修改程序模型,使其包含更多的事实问题,则要考虑是否修改程序和细节如果还有且各有各的侧重面,因此,他们对〃什么3)、由于参与软件开发的人员众多,认是错误〃往往在必须定义什么是错误〃,即给出〃错误模识上是不一致的为了统一认识,型〃4)、在建立了环境模型、程序模型、较以及错误模型的基础上,才能执行测试及测试结果的比就要如果预料结果与实际结果不符,的问考虑是否是环境模型、程序、程序模型和错误模型题
4、软件测试技术1)、软件测试技术大体上可分为两大类一类是白盒测试技术,典型的是路径测试技术;一类是黑盒测试技术,又称为功能测试技术,包括事务处理流程技术、状态测试技术、定义域测试技术等2)、白盒测试技术依据的是程序的逻辑结构,而黑盒测试技术依据的是软件行为的描述3)、软件错误可分为结构错误、数据错误、编程错误和接口错误4)、测试用例指的是为了发现程序中的故障而专门设计的一组或多组数据
5、路径测试技术1)、基本概念A、控制流程图是程序控制结构的图形表示,其基本元素是过程块、结点、判定过程块是既不能由判定,也不能由结点分开的一组程序语句,其基本属性是如果过程块中的某个语句被执行,那么块中的所有语句都被执行判定是一个程序点,此处控制流可以分叉结点是程序中的一个点,此处控制流可以结合控制流程图与程序流程图之间的差异是在控制流程图中,不显示过程块的细节,而在程序流程图中,着重于过程属性的描述B、路径是一串指令或语句它在一个入口、结点、判定处开始,在另一入口(或同一入口)、结点、判定或出口处结束显然一条路径可一次或多次地穿过几个结点、过程块或判定2)、基本策略A、路径测试(PX)和100%路径覆盖率执行所有可能的穿过程序的控制流程路径该策略最强,但一般不可实现B、语句测试(P1)和100%语句覆盖率(C1)至少执行程序中所有语句一次最弱的逻辑覆盖准则C、分支测试(P2)和100%分支覆盖率(C2)至少执行程序中每一分支一次D、条件组合测试设计足够的用例,使每个判定的所有可能的条件取值组合至少执行一次3)、路径测试的目标执行足够的测试,以确保最小的C1+C2覆盖率4)、路径选取的一般规则A、选择最简单的、具有一定功能含义的入口/出口路径;B、对已选的路径进行演化,选取无循环的路径;选取短路径、简单路径;C、选取没有明显功能含义的路径,此时要研究这样的路径为什么存在,为什么没有通过功能上合理的路径得到覆盖5)、对于循环的路径选取A、单循环
①最小循环次数为3最大次数为N,且无〃跳跃〃值选取〃旁通循环〃(零次循环)的路径;对循环控制变量指定为负数;一次通过循环;典型的重复次数;重复次数为N-1;重复次数为N;重复次数为N+1
②非零最小循环次数,且无〃跳跃〃值重复次数为最小次数减1;重复次数为最小次数;重复次数为最小次数加1;一次通过循环,除非已覆盖;二次通过循环,除非已覆盖;典型的重复次数;重复次数为最大次数减1;重复次数为最大次数;重复次数为最大次数加1
③具有跳跃的单循环除把每〃跳跃〃边界,按〃最小循环次数〃和〃最大循环次数〃处理外,其他均同前两种循环的路径选取规则B、嵌套循环
①在最深层的循环开始,设定所有外层循环取它的最小值;
②测试最小值,最小值加1,典型值,最大值减1,最大值,与此同时,测试最小值减1,最大值加1以及〃跳跃值〃边界;
③设定内循环在典型值处,按
②测试处层循环,直到覆盖所有循环C、级联循环如果在退出某个循环以后,到达另一个循环,且还在同一入口/出口路径上,则称这两个循环是级联的其中,如果在退出某个循环以后,到达另一个循环,且循环的重复值与另一个循环的重复值相关,该循环还在同一入口/出口路径上,则可认为是嵌套循环如果两个循环不在同一入口/出口路径上,则可认为它们是单循环6)、举例例如以下为一个程序流程图(参见程序流程图实例),其中该例子中有两个判断,每个判断都包含复合条件的逻辑表达式其控制流程图为(参见控制流程图实例)A、路径测试该控制流程图有4条不同的路径4条路径可表示为:LI afc—e简写ace、L2a―b玲d简写abdL3a—b—e简写abe、L4a^c-d简写acd要想实现路径覆盖,可选择以下一组测试用例(规定测试用例的设计格式为【输入的(A,测试用例覆盖路径[2,0,4,2,0,3]L11,1,1]L2[1,1,1,[1,1,1,3]L31,2,【3,0,3,B、语句测试P13,0,1]L4B,X,输出的A,B,X]【2,0,4,2,0,31LIC、分支测试P2如果选择路径LI和L2,就可得到实现分支覆盖的测试用例:[2,0,4,2,0,3]L1[1,1,1,1,1,11L2如果选择路径L3和L4,还可得另一组可用的测试用例:【2,1,1,2,1,21L3[3,0,3,3,1,11L4D、条件组合测试1A1,B=0,A=2,X1,可标记为Tl、T
2、T
3、T4;X1,2A1,B=0,A=2,可标记为Tl、T
2、T
3、F4;X1,可标3A1,B=0,Ar2,记为Tl、T
2、F
3、T4X1,可标记为Tl4A1,B=0,AA2,T
2、F
3、F4o X1,可标记为Tl、F
2、5A1,A=2,T
3、T4;X1,可标记为Tl、F
2、T
3、BHO,6A1,BHO,A=2,F4;X1,可标记为Tl、F
2、F
3、T4;7A1,BwO,Aw2,X1,可标记为Tl F
2、F
3、F4o8A1,BHO,Ax2,9A1,B=0,A=2,X1,可标记为Fl、T
2、T
3、T4;10A1,B=0,A=2,X1,可标记为Fl、T
2、T
3、F4;11A1,B=0,AH2,X1,可标记为Fl、T
2、F
3、T4;X1,12A1,B=0,Aw2,可标记为Fl、T
2、F
3、F4o X1,可标记13A1,BM,A=2,为FK F
2、T
3、T4;X1,可标记为Fl、14A1,A=2,F
2、T
3、F4;BHO,15A1,BAO,AH2,X1,可标记为Fl、F
2、F
3、T4;X1,16A1,BHO,AN2,可标记为Fl、F
2、F
3、F4o要满足条件组合覆盖,设计的测试用例必须满足以下16种条件组合:测试用例覆盖条件覆盖组合号通过路径可以采用以下四组测试数据,从而实现条件组合覆盖:[2,0,4,2,0,3]T1T2T3T
41、5L1【2,1,1,2,1,2】T1F2T3F
42、6L3[1,0,3,1,0,4]F1T2F3T
43、7L3[1,1,1,1,1,1]F1F2F3F
44、
86、事务处理流程L2测试技术
1、基本概念A、事务是从系统用户的角度出发所见到的一个工作单元B、事务处理流程是系统行为的一种表示方法,为功能测试建立了程序的动作模式C、事务处理流程图一个系统的行为表现为多个事务的执行,这一行为可抽象为事务处理流程图
2、事务处理流程图与控制流程图的异同A、相同之处两者使用了相同的概念成分,例如处理对应于过程块、分支、结点B、不同之处事务流程图是一种数据流程图,即从操作应用的历史,观察数据对象;事务流程图中的判定〃抽象〃了一个复杂的过程;事务流程图存在〃中断〃,把一个过程等价地变换为具有繁多出口的链支3)、测试步骤A、获取事务流程图,即建立被测对象模型;B、浏览与复审,主要对事务进行分类,为设计用例奠定基础;B、用例设计4)、要解决的问题路径选取;激活;测试设备;测试数据库
7、其他功能测试技术1)、等价类划分A、等价类划分是把所有可能的输入数据即程序的输入域划分成若干(即若干等价类),然后从每一部分中选取数据作为测试用例B、有效等价类指对于程序的规格说明来说,是合理的、有意义的输入数据构成的集合;无效等价类指对于程序规格说明来说,是不合理的、无意义的输入数据构成的集合C、测试步骤首先划分等价类,然后确定测试用例D、确定等价类的参考原则
①如果某个输入条件规定了输入数据的取值范围,则可以确立一个有效等价类和两个无效等价类;
②如果某个输入条件规定了输入数据的个数,则可划分一个有效等价类和两个无效等价类
③如果输入条件规定了输入数据的一组可能取的值,而且程序可以对每个输入值分别进行处理,则可为每一个输入值确立一个有效等价类,而针对这组值确定一个无效等价类
④如果输入条件是一个布尔量,则可以确立一个有效等价类和一个无效等价类
⑤如果某个输入条件规定了必须符合的条件,则可划分一个有效等价类和一个无效等价类
⑥若在已划分的某一等价类中各元素在程序中的处理方式不同,则应将此等价类进一步划分为更小的等价类E、确立测试用例
①为每一个等价类规定一个惟一的编号;
②设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;
③设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止2)、边界值分析A、主要思想经验表明,大量的错误经常发生在输入或输出范围的边界上因此,使用等于、小于或大于边界值的数据对程序进行测试,发现错误的概率较大B、测试原则
①如果某个输入条件规定了输入值的范围,则应选择正好等于边界值的数据,以及刚刚超过边界值的数据作为测试数据
②如果某个输入条件规定了值的个数,则可用最大个数、最小个数、比最大个数多
1、比最小个数少1的数作为测试数据
③根据规格说明的每个输出条件,使用前面的原则
①④根据规格说明的每个输出条件,使用前面的原则
②⑤如果程序的规格说明中,输入域或输出域是有序集合,则选取集合的第一个元素,最后一个元素以及典型元素作为测试用例
⑥如果程序中使用了内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用一致性以及适应性等问题采用合适的设计方法,支持这些问题的解决和实现C、提供高质量的工程支持如其它工程一样,需要提供高质量的工程支持,例如配置管理、质量保证等,才能按期交付高质量的软件产品D、有效的软件工程管理软件工程的管理,直接影响可用资源的有效利用,提高软件组织的生产能力仅当对软件过程实施有效管理时,才能实现有效的软件工程4)、软件工程学科研究的内容软件开发模型、软件开发方法、软件过程、软件工具、软件开发环境、计算机辅助软件工程以及软件经济学等5)、软件开发方法学是一种已定义好的技术集和符号表示习惯,来组织软件开发的过程,一般表示为一系列步骤,包括结构化方法、面向对象方法、Jackson方法、Warnier方法、PAM方法、可视化方法等软件开发模型
1、软件开发模型软件开发全部过程、活动、任务的结构框架
2、软件生存周期软件产品从定义开始,经过开发、使用和维护,直到最后被淘汰的整个过程
3、软件过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤
4、瀑布模型(参见瀑布模型示意图)1)、概述将软件生存周期的各项活动规定为依固定顺序连接的若干阶段工作,形如瀑布流水,最终得到软件产品,是一种线性模型2)、各阶段活动提出系统需求、提出软件需求、需求分析、设计、编码、测试和运行3)、每一阶段的特征A、从上一阶段接受本阶段工作的对象,作为输入B、对上述输入实施本阶段的活动C、给出本阶段的工作成果,作为输出传入下一阶段D、对本阶段工作进行评审,若本阶段工作得到确认,则继续下阶段工作;否则返回前一阶段,甚至更前阶段4)、优缺点A、优点在支持结构化软件开发、控制软件开发的复杂性、促进软件开发工程化等方面起着显著作用B、缺点缺乏灵活性,无法通过开发活动澄清本来不够确切的软件需求
5、演化模型(参见演化模型示意图)1)、概述演化模型主要针对事先不能完整定义需求的软件开发2)、开发过程首先开发核心系统,当核心系统投入运行后,开发人员根据用户的反馈,实施开发的迭代过程每一迭代过程均由需求、设计、编码、测试、集成等阶段组成,直到软件开发结束3)、优点一定程度上减少了软件开发活动的盲目性例
⑦分析规格说明,找出其他可能的边界条件3)、因果图是设计测试用例的一种工具,它着重检查各种输入条件的组合
8、软件测试步骤1)、合理的测试序列单元测试、集成测试、有效性测试和系统测试2)、单元测试主要检验软件设计的最小单位一一模块一般采用白盒测试技术在单元测试期间,通常考虑模块的四个特征模块接口;局部数据结构;〃重要的〃执行路径;错误执行路径单元测试步骤分四部分首先测试穿过模块接口的数据流;继之进行数据结构的测试;还要进行执行路径的选择测试;边界测试是单元测试中的最后工作,也是最重要的工作3)、集成测试是软件组装的一个系统化技术,其目标是发现与接口有关的错误,将经过单元测试的模块构成一个满足设计要求的软件结构分为自顶向下的集成测试和自底向上的集成测试4)、有效性测试目标是发现软件实现的功能与需求规格说明书不一致的错误,有效性测试通常采取黑盒测试技术软件过程与改善
1、软件过程1)、软件过程是软件生存周期中的一系列相关过程,又称为软件生存周期过程过程是活动的集合,活动是任务的集合,任务是将输入变换为输出的操作活动的执行可以是顺序的,可以是重复的,可以是并行的,也可以是嵌套的2)、按照不同人员的工作内容来分,软件过程可分为三类基本过程、支持过程和组织过程
2、基本过程1)、指那些与软件生产直接相关的过程,包括获取过程、供应过程、开发过程、运行过程和维护过程2)、获取过程是获取者为了得到一个软件系统或软件产品所进行的一系列活动它从确定获取该系统或软件产品的需求定义开始,经过招标准备,合同的准备和修改,对供应方的监督,直到验收完成方告结束3)、供应过程是供应者为获取者提供软件产品的一系列活动它从理解系统或软件产品的需求开始,经过投标准备,签订合同,制定计划,实施和控制,评审和评价等活动,直到交付完成4)、开发过程是软件开发者所从事的一系列活动,其目的是依据合同成功地开发并交付软件包括的活动有需求分析、设计、编码、集成、测试、安装以及验收支持等5)、运行过程是用户和操作人员在用户的业务运行环境中为了使系统或软件产品投入运行所进行的一系列活动目的是在软件开发过程完成后,将该系统从开发的环境转移到用户的业务运行环境中运行;在运行时对用户的要求提供帮助和咨询;并对运行效果作出评价6)、维护过程是软件维护人员所从事的一系列活动,其目的是在保持软件整体性能的同时修改它,使它达到某一需求,直到其退役才告终止从维护方式上讲有三种维护改正性维护(诊断并校正一个或多个错误)、适应性维护(适应变化的环境)、完善性维护(增加新的能力或改进现有功能)
3、支持过程1)、是有关各方按他们的支持目标所从事的一系列相关活动包括文档过程、配置管理过程、质量保证过程、验证过程、确认过程、联合评审过程、审计过程、问题解决过程2)、文档过程是一个记录由某一过程或活动所产生的信息的过程作用是设计、开发、制作、编辑、发行和维护各类文档3)、配置管理过程是一个应用管理和技术步骤来完成下列工作的过程确定、定义一个系统中的软件配置项和基线;控制配置项的修改与交付;记录和报告配置项的完成情况和修改请求;保证配置项的完整性、相容性和正确性;以及控制配置项的存储、处理和提交4)、质量保证过程是一个为使软件过程和软件产品符合所规定的需求,并按所制定的计划完成提供适当保证的过程5)、验证过程目的是确定一个系统或软件的需求是否完备和正确,以及每一阶段的软件产品是否达到了前面各阶段对它提出的要求或条件6)、确认过程是确定需求和最终建成的系统或软件是否满足原计划特定应用的过程7)、联合评审过程是评价项目的某个活动或阶段的执行情况和产品是否合适的过程它可以由任意两个合作伙伴所使用,由其中的一方评审另一方8)、审计过程目的是确定遵照需求、计划合同的程序审计可由任何两个合作伙伴使用,由其中一方审计另一方的软件产品或活动9)、问题解决过程是一个用于分析和排除在开发、运行、维护或其他过程中发现的问题或不一致(不管其性质和来源)的过程
4、组织过程1)、是指那些与软件生产组织有关的过程包括管理过程、基础设施过程、改进过程和培训过程2)、管理过程是软件生存周期过程中管理者所从事的一系列活动目的是在一定的时间和预算范围内,有效地利用人力、资源、技术和工具,完成预定的系统或软件产品,实现预定的功能和其他质量目标3)、基础设施过程是建立、维护任何其他过程所需的基础设施的过程4)、改进过程是建立、评估、度量、控制和改进软件生存周期过程的过程5)、培训过程是为系统或软件产品提供人员培训的过程
5、剪裁过程为了有效地实施软件过程,应针对特定领域的软件工程,对选定的过程模型和标准进行剪裁,以形成这一工程的模型及标准,形成该工程的各个软件过程和活动
6、过程建模技术1)、软件过程主要性质分工协作性、易变性、动态性、逐步细化性、不可完全形式化2)、软件过程建模是对实际的软件过程的再工程,即在简化的实际过程基础上对软件过程进行抽象描述过程建模活动是软件过程中最主要的活动,所有其他工程活动都是基于建模活动的结果来进行的3)、过程建模技术包括四方面内容建模目的、建模方法、建模语言和软件过程与过程模型的度量其中建模目的决定了建模活动的范围;建模方法和建模语言是对建模目的的支持和过程模型形式化的手段,并决定了过程模型的质量;对过程模型的度量与评估是修改和演化过程模型的基础,以便使过程模型更好地与软件过程相吻合,并充分反映一个组织的过程成熟度
7、质量体系在制造及传递某种合乎特定质量标准的产品时,必须配合适当的管理及技术作业程序,这些程序所组成的结构,称之为质量体系
8、能力成熟度模型(CMM CapabilityMaturity Model)1)、基本概念A、软件过程能力描述(开发组织或项目组)通过其软件过程能够实现预期结果的程度B、软件过程性能表示(开发组织或项目组)遵循其软件过程所得到的实际结果.C、软件过程成熟度一个特定软件过程被明确和有效地定义、管理.、测量和控制的程度D、软件能力成熟度等级软件开发组织在走向成熟的过程中,几个具有明确定义的、可以表征其软件过程能力成熟程度的平台〃E、关键过程域互相关联的若干软件实践活动和有关基础设施的集合,称为一个过程域每个软件过程成熟度等级包含若干个对该成熟度等级至关重要的过程域,它们的实施对达到该成熟度等级的目标起保证作用这些过程域被称为该成熟度等级的关键过程域F、关键实践对关键过程域的实施起关键作用的方针、规程、措施、活动以及相关的基础设施的建立2)、CMM级别及其关键过程域(参见CMM示意图)3)、成熟度等级的内部结构(参见成熟度等级内部结构示意图)CMM的每个等级是通过三个层次加以定义的关键过程域、关键实践类、关键实践每个等级由几个关键过程域组成,它们共同形成一定的过程能力每个关键过程域都有一些特定的目标,为实现这些目标,将实现目标的关键实践组织为四个关键实践类每个关键实践类规定了相应部门或有关责任者应实施的一些关键实践当关键过程域的这些关键实践都得到实施时,就能够实现该关键过程域的目标第八章软件开发工具与环境1CASE(Computer-Aided SoftwareEngineering)1)、简单的说,CASE=软件工程+自动化工具2)、狭义的说,CASE是一组工具和方法的集合,可以辅助软件生存周期各个阶段的软件开发3)、广义地说,CASE是辅助软件开发的任何计算机技术,其中主要包含两个含义一是在软件开发和维护过程中提供计算机辅助支持;二是在软件开发和维护过程中引入工程化方法
2、软件工具1)、用于辅助计算机软件开发、运行、维护、管理、支持等过程中的活动或任务的一类软件2)、软件工具发展的特点趋于工具集成;重视用户界面设计;采用最新理论和技术
3、CASE分类1)按功能分为支持软件开发过程本身的技术和支持软件开发过程管理的技术2)按支持的活动分为需求分析、概要设计、详细设计、编码、测试、维护和理解、配置管理等工具3)按支持的范围分为工具(支持单个任务)、工作台(支持某一软件过程或一个过程中的某些活动)和环境(支持某些软件过程以及相关的大部分活动)
4、CASE工作台1)、程序设计工作台、分析和设计工作台、测试工作台、交叉工发工作台、配置管理工作台、文档工作台、项目管理工作台2)程序设计工作台语言编译器、结构化编辑器、连接器、加载器、交叉引用、按格式打印、静态分析器、动态分析器、交互式调试器3)、分析和设计工作台图表编辑器、设计分析和核实工具、仓库查询语言、数据字典、报告定义和生成工具、移入/移出设施、代码生成器4)、测试工作台测试管理器、测试数据生成器、预测器、报告生成器、文件比较器、动态分析器、模拟器5)、工具集成方式共享文件、共享数据结构或共享仓库
5、软件开发环境(SDE)1)、支持软件系统/产品开发的软件系统它由软件工具和环境集成机制构成,前者用于支持软件开发的相关过程、活动和任务,后者为工具的集成和软件的开发、维护及管理提供统一的支持2)、Wasserman五级模型平台集成;数据集成;表示集成;控制集成;过程集成
6、软件工程环境(SEE)1)、软件和硬件的集合,软硬件集成在一起支持整个或绝大多数软件过程活动,包括规约到测试和系统发布等2)、一个SEE不用于CASE工作台的关键特性是环境设施是集成的,环境是小组使用,而不是个体开发,提供支持所有活动的配置管理
6、螺旋模型(参见螺旋模型示意图)1)、概述在瀑布模型和演化模型的基础上,加入两者所忽略的风险分析所建立的一种软件开发模型2)、特点沿螺旋模型顺时针方向,依次表达了四个方面的活动,制定计划、风险分析、实施工程、客户评估
7、喷泉模型它体现了软件创建所固有的迭代和无间隙特征主要用于面向对象开发过程(参见喷泉模型示意图)
8、增量模型在设计了软件系统整体体系结构之后,首先完整的开发系统的一个初始子集,继之,根据这一子集,建造一个更加精细的版本,如些不断地进行系统的增量开发(参见增量模型示意图)
9、各种模型之间的区别与联系1)、瀑布模型、演化模型、螺旋模型之间的异同A、相同点都分为多个阶段B、不同点瀑布模型一次完成软件;演化模型分为多次完成,每次迭代完成软件的一个部分;螺旋模型也分为多次完成,每次完成软件的一个新原型,并考虑风险分析2)、演化模型和增量模型的区别A、演化模型首先开发核心系统,每次迭代为系统增加一个子集,整个系统是增量开发和增量提交B、增量模型首先完整的开发系统的一个初始子集,然后不断的建造更精细的版本3)、需要完整定义需求的模型瀑布模型、增量模型4)、属于迭代风范的模型演化模型、增量模型、喷泉模型、螺旋模型第三章结构化需求分析
1、需求分析1)、基本任务准确定义未来系统的目标,确定为了满足用户的需要系统必须做什么2)、承担者系统分析员3)、两个阶段需求获取和需求规约
2、需求获取1)、目的清楚地理解所要解决的问题,完整地获取用户需求2)、主要活动通过学习、请教领域专家、向用户提问等3)、三大挑战问题空间理解;人与人之间的通信;需求的不断变化4)、分类及内容A、功能性需求定义系统做什么B、非功能性需求定义系统工作时的特性5)、原则A、划分捕获问题空间的“整体/部分”关系B、抽象捕获问题空间的“一般/特殊”或“特例”关系C、投影捕获问题空间的多维“视图”6)、技术A、一种好的需求获取技术应具备的基本特征
①提供方便的通信;
②提供定义系统边界的方法;
③提供支持抽象的基本机制;
④鼓励分析员使用问题空间的术语思考问题,编写文档;
⑤为分析员提供多种可供选择的设计方案;
⑥适应需求的变化B、Jacobson提出的用况法基本符合以上特征,详见“第五章面向对象方法”的“用况图”
3、需求规约对需求陈述进行分析,解决其中存在的二义性和不一致性,并以一种系统化的形式准确地表达用户的需求,形成所谓的需求规格说明书
4、结构化方法是一种系统化开发软件的方法,该方法基于模块化的思想,采用“自顶向下,逐步求精”的技术对系统进行划分,分解和抽象是它的两个基本手段,结构化方法是结构化分析、结构化设计和结构化编程的总称
6、结构化分析1)、基本步骤A、通过对现实系统的了解和分析,或基于需求陈述,建立该系统的数据流图;B、基于得到的数据流图,建立该系统的数据字典;C、基于得到的数据流图,对最低层的加工给出其控制结构描述;D、依据需求,建立人机接口和其他性能描述;E、通过分析和验证,建立系统完整的需求规约2)、结构化分析模型数据流图(DFD)是一种描述数据变换的图形工具,是结构化分析方法最普遍采用的表示手段,数据字典和小说明为数据流图提供了补充,并用以验证图形表示的正确性、一致性和完整性,以上三者构成了结构化分析的模型A、数据流图是一种描述数据变换的图形工具,系统接受输入的数据,经过一系列的变换(或称加工),最后输出结果数据包括加工、数据流、数据存储、数据源和数据潭
①加工是对数据进行处理的单元;用圆圈表示;顶层的加工名就是软件系统的名字,加工的名字最好使用动宾词组(eg计算费用),也可用主谓词组(e.g.费用计算),不要使用意义空洞的动词作为加工名(eg计算)
②数据流表示数据(由一组数据项组成)和数据流向(三种流向从加工流向加工;从数据源流向加工或从加工流向数据潭;从加工流向数据存储或从数据存储流向加工两个加工之间可以有多个数据流,这些数据流之间没有任何联系,数据流图不表明它们的先后次序);用箭头表示;用名词或名词词组命名,尽量选用现实系统中已有的名字
③数据存储表示信息的静态存储;用两条平行线表示;其命名方法同数据流
④数据源数据的来源;用矩形表示;
⑤数据潭数据的最终目的地;用矩形表示B、数据字典以一种准确的和无二义的方式定义所有被加工引用的数据流和数据存储包括数据流条目、数据存储条目、数据项条目常用逻辑操作符等价于(定义为)、“+”与(顺序结构)、“{}”重复(循环结构)、或(选择结构)、“()”任选、界域C、小说明用于描述底层加工,集中描述一个加工的输入数据和输出数据的逻辑关系,即加工逻辑,并不描述具体的加工过程一般用自然语言、结构化自然语言、判定表和判定树等描述
①结构化自然语言分为内外两层,外层语法描述操作的控制结构,内层语法用自然语言描述如在飞机票预订系统中在旅游旺季的79,12月〜如果订票超过20张优惠票价的15%如果订票20张以下优惠票价的5%在旅游淡季的16,10,11月份〜如果订票超过20张优惠30%如果订票20张以下优惠20%
②判定表分四个区,一区列出所有的条件类别,二区列出所有的条件组合,三区列出所有的操作,四区列出在相应的组合条件下某个操作是否执行或执行情况如旅游时间79,12月16,10,11月〜〜订票量二2020二20201折扣量5%15%20%30%n
③判定树用图形形式描述加工逻辑3)、建立结构化分析模型的步骤(附实例)A、确定系统边界,画出系统环境图(参见系统环境示意图)B、自顶向下,画出各层数据流图
①功能分解(参见功能分解示意图)
②数据流的分派(参见数据流分派示意图)
③文件引入与精化(参见精化示意图)
④如果有必要,从
①开始对分解后的加工再次进行分解,建立更下一层的数据流图C、定义数据字典D、定义小说明E、汇总前面各步骤的结果4)、注意事项A、模型平衡原则
①数据流图中所有的图形元素必须根据它们的用法规则正确使用;
②每个数据流和数据存储都要在数据字典中有定义,数据字典将包括各层数据流图中数据元素的定义;
③数据字典中的定义使用合法的逻辑构造符号;
④数据流图中最底层的加工必须在小说明中有定义;
⑤父图和子图必须平衡,即父图中某加工的输入输出(数据流)和分解这个加工的子图的输入输出(数据流)必须完全一致;
⑥小说明和数据流图的图形表示必须一致B、控制复杂性的一些规则
①上层数据流可以打包,上、下层数据流的对应关系用数据字典描述,同层的数据流也可编号对应在,包内流的性质(输入/输出)必须一致;
②为便于理解,一幅图中的图元个数控制在7±2以内;
③检查同每个加工相关的数据流,并寻找是否有其他可降低界面复杂性的划分方法;
④分析数据内容,确定是否所有输入信息都用于产生输出信息;相应地,由一个加工产生的所有信息是否都能由进入该加工的信息导出
7、需求验证就是对软件需求规格说明书(SRS)加以验证,需要从以下方面进行正确性,无二义性,完整性,可验证性,一致性,可理解性,可修改性,可被跟踪性,可跟踪性,设计无关性,注释
8、需求规格说明书1)、概述是需求分析阶段产生的一份最重要的文档,它以一种一致的、无二义的方式准确的表达用户的需求2)、作用A、作为软件开发机构和用户之间一份事实上的技术合同书;B、作为软件开发机构下一步进行设计和编码的基础;C、作为测试和验收目标系统的依据3)、基本结构引言、概述、数据流图与数据字典、接口、性能需求、属性、其他需求
9、需求分析阶段的另外两份文档初步测试计划和用户系统描述结构化设计
1、软件设计阶段需求分析阶段的主要任务是确定系统必须〃做什么〃,形成软件的需求规格说明书,软件设计阶段主要任务是确定系统〃怎么做〃,从软件需求规格说明书出发,形成软件的具体设计方案,软件设计可以采用多种方法,如结构化设计方法、面向数据结构的设计方法、面向对象的设计方法等,结构化软件设计可以分为总体设计和详细设计两个阶段
2、数据流图的类型1)、变换型数据流图具有较明显的输入、变换、输出界面的数据流图(参见变换型数据流图示意图)2)、事务型数据流图当数据到达一个处理T后,该处理T根据输入数据的类型或数据值,在其后的若干动作序列(称为一个事务)中选出一个来执行(参见事务型数据流图示意图)
3、设计类型(以上面两图为实例)1)、变换设计对应于变换型数据流图其步骤如下A、确定输入、变换、输出的边界逻辑输入就是离物理输入端最远的,但仍被看作是系统输入的数据流;逻辑输出就是离物理输出端最远的,但仍被看作是系统输出的数据流B、〃第一级分解〃-系统模块结构图顶层和第一层的设计主模块位于最顶层,一般以所建系统的名字命名;输入模块部分,一般有几个不同的逻辑输入,就设计几个输入模块;变换模块部分;输出模块部分,一般有几个不同的逻辑输出,就设计几个输出模块(参见变换设计之第一级分解示意图)C、〃第二级分解〃-自顶向下,逐步求精输入模块部分,通常可分解为两个下属模块一个是接收数据模块,另一个是把接收的数据变换成它的上级模块所需的数据的模块,继之,对下属的输入模块以同样方式进行分解,直到一个输入模块为物理输入为止;输出模块部分,通常也可分解为两个下属模块一个将得到的数据向输出形式转换的模块,另一个将转换后的数据输出,对下属的模块以同样方式进行分解,直到一个输出模块为物理输出为止;中心变换模块,通常依据数据流图的具体情况,并以功能分解的原则,考虑如何对中心变换模块进行分解这样就得到了初始模块结构图(参见变换设计之第二级分解示意图)D、使用设计度量和启发式规则,对初始模块结构图进行精化(参见变换设计之精化示意图)2)、事务设计对应于事务型数据流图,其步骤如下A、确定事务处理中心B、〃第一级分解〃-系统模块结构图顶层和第一层的设计首先为事务中心设计一个主模块;然后,为每一条活动路径设计一个事务处理模块;一般来说,事务型数据流图都有输入部分,对其输入部分设计一个输入模块;如果一个事务型数据流图的各活动路径又集中于一个加工,则为此设计一个输出模块;如果各活动路径是发散的,则在第一层设计中就不必为其设计输出模块(参见事务设计之第一级分解示意图)C、〃第二级分解〃-自顶向下,逐步求精关于输入模块、输出模块的细化,如同变换设计对输入模块、输出模块的细化关于各条活动路径的细化,则要根据具体情况进行D、使用设计度量和启发式规则,对初始的模块结构图进行精化
4、设计评价准则1)、模块化把一个待开发的软件分解成若干简单的模块,即为模块化2)、信息隐蔽在自顶向下逐步求精时,其较低层的设计细节都被〃隐蔽〃起来,只给出模块的接口,这样不仅使功能的执行机制被隐蔽起来,而且控制流程的细节和一些数据也被隐蔽起来3)、模块是执行一个特殊任务或实现一个特殊的抽象数据类型的一组例程和数据结构通常由两部分组成接口和实现模块功能的执行机制4)、评价软件设计的基本准则是〃高内聚〃、〃低耦合〃5)、耦合是对不同模块之间相互依赖程度的度量紧密耦合是指两个模块之间存在着很强的依赖关系;松散耦合是指两个模块之间存在一些依赖关系,但它们之间的连接比较弱;无耦合是指模块之间根本没有任何连接A、耦合的强度依赖的因素
①一个模块对另一个模块的引用
②一个模块向另一个模块传递的数据量
③一个模块施加到另一个模块的控制的数量
④模块之间接口的复杂程度B、耦合从强到弱分类
①内容耦合一个模块直接修改或操作另一个模块的数据,就发生了内容耦合,被修改的模块完全依赖于修改它的模块
②公共耦合两个以上的模块共同引用一个全局数据项就称为公共耦合,对全局数据项的修改作用于所有访问该数据项的模块,所以模块间的依赖关系依旧存在
③控制耦合一个模块在界面上传递一个信号控制另一个模块,接收信号的模块的动作根据信号值进行调整,称为控制耦合
④标记耦合:若两个模块至少有一个通过界面传递的公共参数包含内部结构,则为标记耦合
⑤数据耦合模块间通过参数传递基本类型的数据C、原则如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,坚决避免使用内容耦合6)、内聚度量的是一个模块内部各成分之间相互关联的强度A、从低到高分类
①偶然内聚一个模块的各成分之间毫无关系
②逻辑内聚几个逻辑上相关的功能被放在同一模块中
③时间内聚如果一个模块完成的功能必须在同一时间内执行(如初始化系统或一组变量),但这些功能只是因为时间因素关联在一起
④过程内聚如果一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序进行
⑤通信内聚如果一个模块的所有成分都操作同一数据集或生成同一数据集
⑥顺序内聚如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚
⑦功能内聚模块的所有成分对于完成单一的功能都是基本的
5、启发式规则1)、改进软件结构提高模块独立性2)、模块规模应该适中3)、深度、宽度、扇出和扇入应适中A、深度表示软件结构中控制的层数B、宽度软件结构同一个层次上的模块总数的最大值C、扇出一个模块直接控制(调用)的下级模块数目D、扇入表明有多少个上级模块直接调用它4)、模块的作用域应该在控制域之内A、作用域受该模块内一个判定影响的所有模块的集合B、控制域这个模块本身以及所有直接或间接从属于它的模块的集合5)、力争降低模块接口的复杂性6)、模块功能应该可以预测
6、总体设计1)、主要任务把系统的功能需求分配给软件结构,形成软件的模块结构图(MSD)2)、表示工具A、层次图用来描绘软件的层次结构,很适合于在自顶向下设计软件的过程中使用B、HIPO图由H图(层次图)和IPO图(输入/处理/输出图)两部分组成C、结构图通常用带注释的箭头表示模块调用过程中来回传递的信息,尾部是空心圆表示传递的是数据,实心圆表示传递的是控制信息3)、方法首先对需求规约所产生的DFD分类,然后将不同类型的DFD,采用不同方法进行映射,将DFD转换为初始模块结构图,再根据基本的模块化设计原则-〃高内聚,低耦合〃,精化初始模块结构图,使之成为最终可供详细设计使用的模块结构图
7、结构化程序设计结构化程序设计技术采用自顶向下逐步求精的设计方法和单入口单出口的控制结构,并且只包含顺序、选择和循环三种结构,结构化程序设计的目标之一是使程序的控制流程线性化,即程序的动态执行顺序符合静态书写结构,结构化程序设计的观点是要求设计好结构的程序
8、详细设计1)、目标确定怎样具体实现所要求的系统2)、详细设计包含实现对应的总体设计的模块所需要的处理逻辑,主要有,详细的算法;数据表示和数据结构,实施的功能和使用的数据之间的关系3)、工具A、程序流程图(程序框图,参见程序流程图不意图)B、盒图(N-S图,参见盒图示意图)C、PAD图(参见PAD图示意图)D、类程序设计语言(PDL)(伪码)。
个人认证
优秀文档
获得点赞 0