第一章1软件生产率、软件质和量远远满足不了社会发展的需求,成为社会、经济发展的制约因素,人们通常把这一现象称为软件危机2软件工程定义:软件工程是应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度实现满足用户要求的软件产品工程,或以此为研究对象的学科3软件开发的本质概括为:不同抽象层术语之间的“映射”,以及不同抽象层处理逻辑之间的“映射”两大类技术:过程方向、过程途径。基本途径:系统建模4所谓模型,是待建系统的任意抽象,其中包括所有的基本能力、特性或其他一些方面,而没有任何冗余的细节。进一步说,模型是在特定意图下所确定的角度和抽象层次上对物理系统的描述,通常包含对该系统边界的描述、对系统内各模型元素以及它们之间关系的语义描述5系统模型分为软件模型、概念模型软件模型分为设计模型、部署模型、实现模型第二章软件需求与软件需求规约6一个需求是有关一个“要与构造”的陈述,描述了待开发产品、系统功能上的能力、性能或者其他性质7需求性质:必要的、无歧义的、可测的、可跟踪的、可测量的8需求分类:功能需求、非功能需求(性能、外部接口、设计约束、质量属性需求)9功能需求规约了系统或系统构建必须执行的功能功能需求是整个需求的主体10接口需求分为:用户接口、硬件接口、软件接口、通信接口、内存约束、运行、地点需求11质量属性:可靠性存活性可维护性用户友好性12需求发现技术:自悟交谈观察小组会提炼13需求规约定义,是一个软件项/产品/系统所有需求陈述的正式文档,它表达了一个软件产品/系统概念模型性质:重要性和稳定性程度可修改的完整的一致的14需求规约的作用:需求规约是软件开发组和用户之间一份事实上的技术合同书,是产品功能及其环境的体现对于项目的其余大多数工作,需求规约是一个管理控制点对于产品/系统的设计,需求规约是一个正式的、受控的起始点需求规约是创建产品验收测试计划和用户指南的基础,是基于需求规约一般还会产生另外两个文档(初始测试计划和用户系统操作描述)第三章结构化方法15需求工作挑战:问题空间理解人与人之间的通信需求的变化性16好的需求技术具备特征:提供方便的通信机制鼓励需求分析人员使用问题空间的术语思考问题,编写文档提供定义系统边界的方法提供支持抽象的基本机制为需求分析人员提供多重可供选择的方案提供天特定的技术化、适应需求变化17结构化方法:结构化分析方法结构化设计方案机构化程序设计方法18数据流加工数据存储数据源和数据潭19需求分析的首要任务是建立系统功能模型工具:数据流图DFD图是一种描述数据变化的图形工具20建模过程:建立系统环境图,确定系统语境自顶向下逐步求精,建立系统层次数据流图定义数据字典描述加工(结构化自然语言判定表判定树)21需求阶段的主要任务是完整地定义问题,确定系统的功能和能力22需求验证验证需求规格说明书的每一单一需求是否满足5个性质(必要性无歧义性可测性可跟踪型可测量性),需求沿着我难过规格说明属否满足4个性质(重要性和稳定性程度可修改型完整性一致性)23结构化设计的主要任务是在需求分析的基础上,定义满足需求所需要的结构,即针对给定的问题,给出该问题的软件解决方案,确定“怎么做”的问题24结构化设计分为总体设计(目标,建立系统的模块结构)和详细设计25模块指软件中具有特定标识的独立成分模块调用指模块之间的一种使用关系26总体设计阶段的基本任务是把系统的功能需求分配到一个特定的软件体系结构中工具(Yourdon模块结构图层次图HIPO图)步骤:将系统的DFD图转化为初始的模块结构图,再基于高内聚低耦合的原则,通过模块化,将初始的模块结构图转化为最终的、可供详细设计使用的模块结构图MSD27模块化模块是执行一个特殊任务的一个过程以及相关的数据结构。由两部分组成:接口、模块体28耦合:不同模块之间相互依赖程度的度量(强到弱内容耦合(直接操作修改另一模块数据)、公共耦合(共用一个全局数据项)、控制耦合(控制信号)、标记耦合(A向BC传递一个公共参数)、数据耦合(通过参数传递数据))29内聚:一个模块内部成分之间的相互关联程度的度量(偶然内聚、逻辑内聚(逻辑相关的功能放一块)、时间内聚(同一时间内执行)、过程内聚(特定次序执行)、通信内聚(操作同一数据集)、顺序内聚(一个成分的输出为另一个成分的输入)、功能内聚)30启发式规则:1改进软件结构,提高模块独立性2力求模块规模适中3力求深度宽度扇入扇出适中4尽力使模块的作用域在其控制域之内5尽力降低模块接口的复杂度6力求模块功能可以预测31详细设计的目标是将总体设计阶段所产生的系统高层结构映射为以这些术语所表达的低层结构,也是系统的最终结构32详细设计工具:程序流程图N-S图PAD图PDL伪码33所谓模块化,是指按照高内聚低耦合的设计原则,形成一个相互独立又有较少联系的模块结构的过程,使每个模块具有相对独立的功能/过程34逐步求精是指把要解决问题的过程分解为多个步骤或阶段,每一步是对上一步结果的精化,以接近问题的揭发。是人类解决复杂问题的基本途径之一35变换性数据流图:具有较明显的输入部分和变换部分之间的界面、变换部分和输出部分之间的数据流图36事物型数据流图:数据到达一个加工T,该加工根据输入数据的值在气候的若干动作序列中选一个来执行第四章面向对象方法UML37UML是一种可视化语言,可用于规约系统的制品、构造系统的制品、建立系统制品文档38事物之间的相互依赖饿相互作用,构成了显存的各式各样的系统39UML8个术语类与对象、接口、协作、用况、主动类、构件、制品和节点4个关系术语关联、泛化、实现和依赖40类是一组具有相同属性、操作、关系语义的对象的描述41引入可见性的目的是为了支持信息隐蔽这一软件设计原则。所谓信息隐蔽是指在每个模块中所包含的信息不允许其他不需要这些信息的模块访问42类在建模中的主要用途:模型化问题域中的概念建立系统的职责分布模型模型化建模中使用的基本类型43接口只可以被其他的类目使用,而其本身不能访问其他类目。接口描述类的外部可见操作,通常是该类的一个特定有限行为。可以使用可见性、并发性、标记值和约束来修饰。接口不描述其中操作的实现,也没有属性和状态。接口之间没有关联、泛化、实现和依赖44协作是一个交互,涉及的三要素:交互各方、交互方式、交互内容45用况是对一组动作序列的描述,系统执行这些动作应产生对特定参与者有值的、可以观察的结果46主动类是一种至少有一个进程或线程的类47构件是系统设计中的一种模块化部件,通过外部接口隐蔽了它的内部实现。48制品是系统中包含物理信息的、可替代的物理部件。49节点是在运行时存在的物理元素。通常表示一种具有记忆能力和处理能力的计算机资源50关联是类目之间的一种结构关系,是对一组具有相同结构、相同链的描述。链是对象之间具有特定语义关系的抽象,实现之后的链通常称为对象之间的连接51泛化是一般性类目(父类超类)和它的较为特殊类目(子类)之间一种关系泛化的4个约束:完整不完整互斥重叠52细化是类目之间的语义关系,其中一个类目规约了保证另一个类目执行的契约53依赖是一种使用关系,用于描述一个类目使用另一个类目的信息和服务54四个术语可以模型化一下关系:结构关系(2种驱动方式以数据驱动以行为驱动)、继承关系、精化关系、依赖关系55为了控制信息组织的复杂性,UML提供了组织信息的一种通用机制—包,支持形成一些可以管理的部分。包可以作为模块化和构件化的一种机制。包是模型元素的一个分组。一个包本身可以被嵌套在其他包中,并且可以含有子包和其他种类的模型元素(实现:访问、引入)56UML图形化工具分为两类:结构图(静态模型结构)行为图(动态模型结构)57类图状态图用况图顺序图58为了表达概念模型和软件模型,UML提供了13种图形化工具:类图、对象图、构件图、包图、部署图、组合结构图、以及USECASE图、状态图、顺序图、通信图、活动图、交互概念图、定序图。前6种静态结构后6动态结构第五章面向对象方法RUP59一种软件开发方法至少由3部分组成,一用于表达基本信息的术语二用于组织基本信息的表达格式三是在不同抽象之间进行映射的过程指导60RUP是基于UML的一种过程框架,为软件开发,即为进行不同抽象层之间映射安排其开发活动的次序,指定任务和需要开发的制品,提供了指导;并对项目中的制品和活动进行监控与度量,提供了相应的准则。换而言之,RUP比较完整的定义了将用户需求转换成产品所需要的活动集,并提供了活动指南以及对产生相关文档的要求。61RUP的特点是一种以用况为驱动的、以体系结构为中心的迭代、增量式开发62RUP的迭代、增量式开发是烟花模型的一个变体、4个阶段:初始、精化构造、移交63在RUP的每次迭代中都要经历一个核心工作流即需求获取,分析,设计,实现和测试64RUP采用USECASE来获取需求做的工作:列出候选需求理解系统语境捕获功能需求捕获非功能需求65RUP特点:使用了一种公共的思想来思考设计,并使设计可视化给出了有关子系统、设计类和接口的需求支持对实现工作的分解,使之成为一些可以由不同开发组尽可能同时处理、可管理的部分;捕获了软件生存周期中早期的子系统之间的主要接口66RUP设计方法组成:给出用于表达设计模型中基本成分的4个术语(包括子系统、设计类、接口和用况细化)规约了设计模型的语法,知道模型的表达给出了创建设计模型的过程以及相应的指导67RUP的设计模型。主要结构是系统的设计模型68RUP的部署模型。包括节点主动类第六章软件测试