第一章 概念
软件危机:软件生产率,软件质量远远满足不了社会发展的需求,成为社会,经济发展的制约因素。
软件工程概念提出的目的:倡导以工程的原理,原则和方法进行软件开发。
软件工程师应用计算机科学理论和技术以及工程管理原则和方法。
20世纪60年代–80年代 主要成果:提出了瀑布模型。
20世纪80年代:CASE产品。
软件是指计算机系统中的程序及文档。
程序是指计算机任务处理对象的和处理规则的描述;文档是为了理解程序所需的阐述性资料。
软件开发的本质:不同抽象层术语之间的“映射”,以及不同抽象层处理逻辑之间的“映射”。
软件系统模型大体分为:概念模型和软件模型。
概念模型是对客观事物系统的抽象 描述了系统是什么。
软件模型依据所在的抽象层进一步划分为:设计模型,实现模型,部署模型。 描述了实现概念模型的软件解决方案。
软件开发的目标是将问题域中的概念映射为运行平台层面上的概念,把问题域中的处理逻辑映射为运行平台层面上的处理逻辑。
软件开发就是要弥补问题域与运行平台之间的距离,从而二者之间直接进行映射。
第二章 需求
需求必须满足5个基本性质:必要的,无歧义的,可测的,可测量的,可跟踪的。
需求分为:功能需求,非功能需求,主体功能需求。
非功能需求:性能需求,外部接口需求,设计约束,质量属性需求。
功能需求:系统应对所有已销售的应纳税产品计算销售税。 产生月销售报表。
性能需求:5min内计算给定季度的总销售税。 系统应支持100个工作站的并行访问。
数据A是一种“持久性”的数据。功能“信息对比”的误报率。
外部接口需求:对构建的账户接收系统,必须为月财务状况系统提供更新信息。
对要构建的引擎控制系统,必须要 。
设计约束:系统必须采用C++语言。 任取1s内 一个特定。
质量属性:可靠性;存活性;可维护性;用户友好性;
初始发现需求的常用技术:自悟;交谈;观察;小组会;提炼;
提炼:复审技术文档(有关需要的陈述,功能和性能目标的陈述,系统规约接口标准,硬件设计文档等)
需求规约是一个软件项/产品/系统所有需求陈述的正式文档,他表达了一个软件产品/系统的概念模型。
需求规约的4个基本性质:重要性和稳定性;可修改的;完整的;一致的;
非形式化的需求规约:以一种自然语言来表达需求规约。
非形式化需求规约一般适用于规模较小的,复杂程度不大高的小型软件项目,或在获取RSR时使用。
半形式化规约:使用半形式化符号体系来表达需求规约。
形式化的需求规约:基于良构数学概念的符号体系来编址需求规约,一般往往伴有解释性注释的支持。
需求规约的作用:
1:需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能以及其环境的体现。
2:对于项目的其余大多数工作,需求规约是一个管理控制点。
3:对于产品、系统的设计,需求规约是一个正式的、受控的起始点。
4:是创建产品验收测试计划的用户指南的基础,即基于需求规约一般还会产生另外两个文档:初始测试计划和用户系统操作描述。
第三章结构化方法
数据流是数据的流动;加工是数据的变换单元;数据存储是数据的静态结构;
数据源是数据流的起点;数据谭是数据流的归宿地。
结构化分析方法给出了一种表达功能模型的工具,数据流图(DFD图)。
结构化设计的主要任务是在需求分析的基础上,确定怎么做的问题。
描述加工的3种表达工具:结构化自然语言;判定表(描述加工的一种工具);判定树;
建模过程:
1:建立系统环境图,确定系统语境。
2:自顶向下,逐步求精,建立系统的层次数据流图。
3:定义数据字典。r
4:描述加工。
数据字典:定义其中包含的所有数据流和数据存储的数据结构,指导给出构成以上的各数据项的基本数据类型的工具。
总体设计分为3个阶段:初始;精化;复审。
变换设计: 1:设计准备----复审并精化系统模型
2:确定输入、变换、输出这三部分之间的边界。
3:系统模块结构图顶层和第一层的设计
4:自顶向下,逐步求精。
变换设计的目的是将变换型数据流图映射为模块结构图,他由3部分组成:获取数据、变换数据和输出数据,其中变换数据是核心。为了协调这些模块的有序工作,还应设计一个主控模块来协调和控制其他模块。变换设计比较机械。
事务设计的目的是将事务型数据流图转换为模块结构图,事务设计都有一个明显的事务处理中心,事务中心需完成3个任务:接受输入数据、分析并确定对应的事务和选取与该事务对应的一条活动路径。
在总体设计中,通常以变换设计为主,事务设计为辅进行结构设计。
事务设计: 1:设计准备------复审并精化系统模型
2:确定事务处理中心。
3:“第一级分解”----系统模块结构图顶层和第一层的设计。
4:“第二级分解” ----自顶向下,逐步求精。
信息隐藏:指每个模块中所包含的信息不允许其他不需要这些信息的模块访问。
他是实现低耦合的一种有效途径。但是如果信息绝对隐藏那么对系统是没有意义的。
耦合:指不同模块之间的相互依赖程度的度量。
内容耦合:当一个模块直接修改或操作另一个模块的数据
公共耦合:两个或两个以上的模块共同引用一个全局数据项。
控制耦合:一个模块通过接口向另一个模块传递一个控制信号。
标记耦合:传递一个公共参数。
数据耦合:模块之间通过参数来传递数据。
数据耦合是最低的一种耦合形式。 尽量使用数据耦合,少用控制耦合,限制公共耦合的范围。
内聚:是指一个模块内部各成分之间的相互关联程度的度量。
偶然内聚:如果一个模块的个成分之间基本不存在任何关系。
逻辑内聚:几个逻辑上相关的功能被放在同一模块
时间内聚:如果一个模块完成的功能必须在同一时间内执行。
过程内聚:如果一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行。
通信内聚:一个模块的所有成分都操作同一数据集或生成同一数据集
顺序内聚:如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另个成分的输入
功能内聚:最理想的内聚,模块的所有成分对于完成单一的功能都是基本的
争取高内聚,低耦合。
模块化是指按照“高内聚低耦合”的设计原则,形成一个相对独立但又有较少联系的模块结构过程,使每个模块具有相对独立的功能。
模块深度往往能粗略标志一个系统的规模和复杂程度。
宽度是指同一个层次上模块总数的最大值
模块扇出是指一个模块之间控制的下级模块数目
模块扇入表面有多少个上级模块之间调用他
高内聚,低耦合:
1:改进软件结构,提高模块独立性。
2:力求模块规模适中
3:力求深度 宽度,扇出 扇入 适中。
4:尽量使模块的作用域在控制域。
模块控制域:指一个模块本身以及所有直接或间接属于他的模块的集合。
模块作用域:指受该模块内一个判定所影响的所有模块的集合。
5:力求功能模块可以预测。
详细设计工具:程序流程图,盒图,PAD(问题分析)图,类程序设计语言。
可作为总体设计工具的是模块结构图
控制流程图是一种表示程序控制结构的图形化工具。基本元素:过程快,结点,判定。
与程序流程图的差异是,在控制流程图中不显示过程快的细节,而在程序流程图中着重于过程属性的描述。
程序流程图主要优点是对控制流程的描述很直观,便于初学者掌握;
缺点:不是一种逐步求精的工具。
不易表示数据结构,
所表达的控制流,往往不受任何约束可随意转移,从而影响甚至破坏好的系统结构设计。
1、在软件总体设计中,通常以变换设计为主,事务设计为辅进行结构设计。
2、首先利用变换设计,把软件系统分为输入、中心变换和输出3个部分,设计上层模块。
3、然后根据各本分数据流图的结构特点,适当的利用变换设计和事物设计进行细化,得到初始的模块结构图。
4、再按照‘高内聚低耦合’的原则,对初始的模块结构图进行精化,得到最终的模块结构图。
第四章 UML
面向对象方法是一种根据客体之间的关系来建造系统模型的系统化方法。
UML的8个术语:
1: 类:是一组具有相同属性,操作,关系和语义的对象的描述。
2: 接口:接口是操作的一个集合,其中每个操作描述了类,构件或者字系统的一个服务。
3: 协作
4: 用况
5: 主动类
6: 构件
7: 制品
8: 节点
表达关系的术语
1:关联 :关联是类目之间的一种结构关系,是一组具有相同结构、相同链的描述。
关联名: 关联可以有个名字,用于描述该关联的一定内涵。
导航:对于一个给定的类目可以找到与之关联的另一个类目
角色:关联一端的类目对另一端的类目的一种呈现。
可见性:通过导航可以找到另一类目的实例。
多重性:类中对象参与一个关联的数目。
限定符:一个关联的属性或者属性表
聚合:一个类是另一个类的一部分。
组合:聚合的一种特殊形式。
关联类:一种具有关联和类特性的模型元素。
2:泛化 :一般性类目和它的较为特殊性类目之间的关系。
泛化的4个约束:完整;不完整;互斥;重叠;
3:细化 :类之间的关系,一个类目规约了保证另一个类执行的契约。
4:依赖 :一种使用关系,用于描述一个类使用另一个类的信息和服务。
UML表达关系的术语中,关联是一类特定的依赖
结构关系: 关联规约。
继承关系:泛化
精化关系:细化
依赖关系:依赖
UML给出了两种依赖,访问和引入。
UML图形化工具分为2类:
结构图:用于表达系统和系统成分的静态结构模型,给出系统或系统成分的一些说明性信息;
行为图:用于表达系统或系统成分的动态结构模型,给出系统或系统成分的一些行为信息。
详细设计工具:程序流程图,盒图(N—S图),PAD图(问题分析图),类程序设计语言
4中建模工具:类图,use case图,状态图,顺序图。
顺序图可以用于创建有关系统的交互模型
状态图可以用于创建有关系统的动态模型
类图可以创建系统的结构模型,表达系统各成分之间的静态关系。
用况图可以为系统建模,描述软件系统行为的功能结构。
作为一种软件开发方法学,为了支持软件开发活动,至少包括3方面的内容
1:给出定义不同抽象层的术语。
2:应给出各抽象层的模型表达工具。
3:应给出如何把各层模型映射为下一个抽象层的模型,即过程指导。
UML仅包括前两方面的内容。
RUP和UML构成了一种特定的软件开发方法学
UML作为一种可视化建模语言,给出了表达事物和事物之间关系的基本术语,给出了多种模型的表达工具。
RUP利用这些术语定义了需求获取层、系统分析层、设计层、实现层,并给出了实现各层模型之间映射的基本活动以及相关的指导。
第五章 RUP
RUP突出特点是一种用用况为驱动,以体系结构为中心的迭代,增量式开发。
RUP利用UML提供的术语定义了需求获取层,系统分析层,设计层,实现层。
迭代、增量式开发,是指通过开发活动的迭代,不断的产生想应的增量。
RUP中规定了4个开发阶段:初始阶段,精化阶段,构造阶段,移交阶段。
RUP在的每次迭代中都要经历一个核心工作流,即需求获取,分析,设计,实现和测试。
在RUP中,一个系统的分析模型是优一个“分析系统”定义的,改分析系统包含一组具有层次结构的包,每个包中可包含一些分析类和用况细化,并且一些分析类和用况细化还可单独的出现在分析模型中,以凸显他们在系统体系结构方面的作用。
创建系统的分析模型,一般进行体系结构分析,用况分析,类的分析,包的分析。
RUP的分析类:边界类,实体类,控制类。
RUP的设计模型:RUP设计的主要结果是系统的设计模型,它尽量保持改系统具有分析模型的结构,并作为系统实现的输入。它包括以下的元素:
1:设计子系统和服务子系统。
2:设计类
3:用况细化
4:设计模型视角下的体系结构描述
RUP采用Use Case技术来获取需求。
第六章 测试
软件测试是一个有程序的过程,包括测试设计,测试执行以及测试结果比较等。
软件测试技术分为两大类:
白盒测试技术(结构测试技术):典型的是路径测试技术
黑盒测试技术(供测试技术):包括事务处理流程技术、状态测试技术。
白盒依据的是程序的逻辑结构,黑盒依据的是软件的行为描述。
测试序列:单元测试,集成测试,有效性测试,系统测试。
单元测试主要检验软件设计的最小单元-----模块。往往采用白盒测试技术。
该测试以详细设计文档为指导,测试模块内的重要路径。
通常考虑模块的4个特性:模块接口,局部数据结构,重要的执行路径,错误的执行路径。
在单元测试中,由于模块不是一个独立的程序,必须为每个模块单元测试开发驱动模块和承接模块。
希望确定软件实现的功能是否与需求规格说明书一致,需进行有效性测试
集成测试是以主控模块作为测试驱动模块。
集成测试是软件组装的一个系统化技术,其目标是发现与接口有关的错误,一般以主控模块作为测试驱动模块。
因果图设计测试用例:
1:通过软件说明书的分析,找出一个模块的原因,并给每个原因和结果赋予一个标识符。
2:分析原因和结果直接以及原因和原因之间的对应的关系,并画出因果图。
3:在因果图上标识出一些特定的约束或限制条件。
4:把因果图转换成判定表,
5:把判定表的每一列作为依据,设计测试用例。
有效性测试通常采用黑盒测试技术。
第七章 软件周期
软件生存周期过程分为三类:
1:基本过程 :包括 获取过程,供应过程,开发过程,运行过程,维护过程。
2:支持过程
3:组织过程 管理过程、基础设施过程、培训过程、改进过程。
在软件生存周期模型中,不适应变化需求的软件开发模型是瀑布模型
瀑布模型规定了各开发阶段的活动:系统需求,软件需求,需求分析,设计,编码,测试和运行。
增量模型:有个前提 可结构化,比较适用于技术驱动的软件产品开发。减少用户需求变更的软件开发模型
演化模型:
螺旋模型:增加了风险。
喷泉模型:对象概念的引入,是分析,设计,实现之间的表达没有明显间隙。
对于一个项目而言,过程管理计划是项目管理计划的主体,一般还可能存在一些对支持生存周期过程具有重要作用的其他计划,列如:软件工程管理计划、软件配置管理计划,软件质量保证计划,软件验证和确认计划,软件度量计划,
软件验证:证实一个过程或项目的每一软件工作产品/服务是否正确的反映了所规约的需求。
软件确认:证实所期望使用的软件工作产品是否满足其需求;
过程管理包括过程建立、过程评估和过程改进
软件生存周期模型(SLCM)的步骤
1:标识开发项目可用的SLCM
2:标识那些会影响SLCM选择的属性
3:标识为选择SLCM所需要的任何约束
4:评估所选择的SLCM
5:选择最能满足项目属性和约束的SLCM
软件生存周期过程回答软件开发需要做哪些工作;
模型回答软件开发活动或任务如何组织。
过程管理回答软件过程如何管理。
软件生存周期过程是软件生存周期模型和软件项目过程管理的基础。
软件生存周期模型为软件过程管理计划提供支持。
第八章 CMM
软件CMM,产品集成开发CMM,系统工程CMM。
能力等级:
0:未完成级
1:已执行
2:已管理
3:已定义
4:已定量管理
5:持续优化
3个质量支撑点:人员,规程和方法,以及工具。
过程管理包括过程建立、过程评估和过程改进。
CMMI模型基于过程路径思想。
CMMI引入了两种类型的等级:一个称为能力等级,一个称为成熟度等级。
能力等级:一种过程改善路径。使组织针对单一过程域不断改善该过程域。
成熟度等级:也是一种过程改善路径。组织通过关注一组过程域不断改善一组相关的过程域。是由预先定义的一组过程域集以及其相关的一些专用实践和共用实践组成的。
CMMI模型基于过程途径思想,通过过程把软件质量3个支撑点:受训的人员、规程和方法、工具和设备进行集成,以开发所期望的系统/产品。
单一过程域中已达到的过程改善就是能力等级
CMMI中,遵循一个过程可达到的预期结果的程度是指过程能力。
拓展UML图知识点在下一篇
网友评论