建立在系统化、规范化、数量化等工程原则和方法上的,关于软件开发各阶段的定义、任务和作用的工程学科。p1包括软件开发技术、软件项目管理两方面内容。
对现实的简化,提供系统的蓝图,包含架构[总体]设计和组件[详细]设计;包含重要的因素忽略不相干的细节;一个系统可以从不同视角使用不同模型进行描述;模型可以是架构的[侧重于组织]、也可以关注行为[系统的动作] p3
现实世界中具有静态特征和动态特征的某个具体的实际事物。P6
把属性和操作封在一个对象里,不允许外界直接存取和使用。包含属性与行为的结合和信息屏蔽两层含义。P7
向对象发出的[服务]请求,包括服务的对象标识、服务标识、输入信息和回答信息等。P7定义对象之间单路通信,是从发送方到接收方的控制流,激发某操作、唤醒信号或导致对象的创建或撤消。P164用箭头表示,符号见表10-1
派生类或子类自动拥有基类或父类的全部属性和操作的类创建方法。P8
同一操作作用于不同对象,有不同解释或不同的执行结果。P9两种——编译时、运行时;3实现方式——接口、继承、抽象类。
一种功能强大的、面向对象的可视化系统分析的建模语言p23
[对面向对象系统进行可视化、详述、构造和文档化的工具,已成为软件建模的工业标准。]
从某个方面或角度出发描述系统,或表达系统某个方面特征的一个或多个图。p63
时间、空间上的动作,模型的动词;最基本的是交互与状态机p69
一组对象在特定上下文、为达到特定目的进行一系列消息交换组成的动作,要列出每个操作的消息、动作次序、连接关系。p69
描述属性和操作是否可被其他类引用p95
对象被占用以完成某任务,用矩形条表示。P165
对对象或交互在其生命周期中所满足的条件、执行某些动作或等待某些事件的抽象。P47
两种状态之间的关联描述,指特定事件发生且满足某种条件时由前一状态进入后一状态,也称为激活迁移,由“源状态”转换到“目标状态”。P50
动作P134一组最小的可执行行为,耗时与外界历时比可忽略
原子的不可中断的行为状态。
由输入集、输出集、状态集及其映射关系集构成的、记录给定时刻或状态下事物根据不同输入所引起的变化而改变状态或引发动作。
针对问题进行软件需求与系统分析、设计、编程、测试和维护的求解过程,主要活动有两个:认识和描述问题、解决问题。
抽象描述系统产生对特定参与者有价值而且可观测的结果而执行的一组动作。P69系统与特定角色交互执行的一系列动作。
其对象有一个或多个进程或线程的类
从事物的本质特点出发来看待事物、分析事物及其相互的内在关系的方法论。
具有相同属性与服务的一组对象的集合。
定义用于描述模型的体系结构和语言,是元元模型的实例。
对客观存在的研究对象或将要建立的系统构成与行为的抽象描述,有赖于抽象方法和观察视角或层次。
类所代表的事物特性,3种可见性
一类对象能做事务的抽象,相当于服务的实现,由返回类型、名称和参数表构成的签名完整描述。4类可见性:包内公有“~”
—类或其它元素的契约或义务,是特征属性和行为操作的较高层次集合命名
特定事件发生或某条件满足时对象完成一定动作而从源状态转变到目标状态,分4种:内、外、完成、复合。
P132包括5部分信息:源、目标、触发事件、监护条件、动作
触发转换必须满足的条件,是一个布尔表达式。
将动作、状态及动作按负责的对象用垂直线进行分组的活动图p146。
对对象或交互在其生命周期中所满足的条件、执行某些动作或等待某些事件的抽象。
p185:是系统中定义良好接口的、可替换的物理实现单元;可以是源代码、二进制或可执行的组件。
——运行时计算资源的物理要素,具有内存和运算能力、位置
双向工程
优秀的程序除了功能正确、性能优良以外,还应该易读、易用、易维护p1
软件工程包括两方面内容:软件开发技术和软件项目管理。软件开发技术包括软件开发方法学、软件工具和软件工程环境;软件项目管理包括软件度量、项目估算、进度控制、人员组织、配置管理和项目计划等
经典的软件工程思想将软件开发分成5个阶段:需求分析阶段(Requirements Capture)、系统分析与设计(System Analysis and Design)阶段、系统实现(Implementation)阶段、测试(Testing)阶段和维护(Maintenance)阶段
A、结构化开发过程 B、用例驱动、架构为中心、增量迭代
C、模型驱动的软件开发过程 D、面向对象开发过程
A.命名 B.范围 C.可见性 D.扩展机制 E完整性 F执行
A、元元模型 B、原模型 C、模型 D、用户对象
A、词汇 B、职责分布 C、非软件事物 D、动态行为
A.规格说明 B.修饰 C.通用划分 D.命名 E扩展机制
A、状态图 B、活动图 C、顺序图 D、协作图
A、状态图 B、活动图 C、顺序图 D、用例图
A、状态图 B、活动图 C、交互图 D、用例图
A、有用性 B、独立性 C、适应性 D、易用性
E、商业性 F、递归性 G、接口标准化 H、多态性
A、对象 B、系统总体行为 C、实体的行为 D、用例或协作
1、D 2、B 3、C 4、A
1、A 2、B 3、C 4、B
1、
2、
3、
A 触发状态 B 并发分支符号
C 停止状态 D 并发汇合符号
共享、统一语义[个性化理解];更好地规划、更快开发;减少复杂性影响
选择合适、准确的模型
多角度、多方式表达
以切合实际需要、表达重要细节为准
独立模型的关联才能很好地表现系统
对象的分类关系:一般/特殊结构
对象之间的组成关系:整体/部分结构
对象属性之间的静态联系:实例连接
对象行为之间的动态联系:消息连接
引入各种独立于语言的符号;
用对象模型、动态模型、功能模型和用例模型,共同完成对整个系统的建模;
定义的概念和符号,可用于软件开发的分析、设计和实现的全过程
面向用例,引入外部角色描述用例;
用例贯穿始终,包括系统测试与验证;
适合于业务过程和需求分析。
分析、设计、代码生成、测试、文档编制与生成、逆向工程等p13
使设计与构建变得更直观、更容易理解和修改
类与对象层、属性层、服务层、结构层和主题层,分别对应建立对象模型的5项主要活动:发现对象、定义类、定义属性、定义服务、识别结构。
用例视图Use Case View、逻辑视图Logical View、组件视图Component View、配置视图Deployment View
用例视图:包括系统的所有参与者、用例和用例图,还可包括用例的局部视图——时序图和协作图;与实现无关,只关注高层功能
逻辑视图:关注系统如何实现用例表达的功能,描述组件之间的关联,包括组件的细节因素如特定类、类图和状态图等
组件视图:说明组件及其各自构成要素如模型代码库、可执行文件、运行库等,是代码的实际模块
配置视图:关注系统的实际配置[可不同于逻辑结构];还说明系统性能及处理措施如容错、网络带宽、故障恢复与响应时间等p49
视图、图、模型元素、通用机制p63
p64用例、逻辑、组件、并发、配置
用例视图:强调系统的外部参与者看到的或需要的系统功能
描述系统应该具备的功能;直接驱动其他视图的开发;是测试依据——验证标准
使用者:
逻辑视图:从系统的静态结构和动态行为角度显示如何实现系统功能
系统内部结构与动态协作关系
使用者:设计、开发者
并发视图:显示系统的并发性,解决并发系统存在的通信与同步问题
资源有效利用、代码并行执行及系统异步事件或消息处理,线程之间的通信与同步
使用者:开发、集成
组件视图:显示代码组件的组织结构
使用者:开发
配置视图:显示系统的具体配置,即计算机和设备组成的物理结构
节点上运行实例的部署、各节点设备连接
使用者:开发、集成、测试;评估成果与资源分配
5种视图组合成UML的完整模型。
1.用例图:显示谁是相关的用户,用户希望系统提供什么服务,用户需要为系统提供的服务,以便使系统的用户更容易地理解这些元素的用途,也便于软件开发人员最终实现这些元素,它最常用来描述系统以及子系统。
多个参与者与系统用例之间的连接
2.类图:描述类,接口,协作以及它们之间关系的图,用来显示系统中各个类的静态结构。
描述应用领域概念,类、关联
3.对象图:描述的是参与交互的各个对象在交互过程中某一时刻的状态.对象可以看作是类图在某一时刻的实例
多个类实例——对象之间的关联,系统运行的快照——某时间可能呈现的状况
4.状态图:是系统分析的一种常用的工具,它通过建立类对象的生存周期模型来描述随时变化的动态行为,系统分析员在对系统建模时,最先考虑的不是基于活动之间的控制流,而是基于状态之间的控制流,因为系统中对象的状态变化最易发现和理解
补充说明类,其对象可能具有的所有状态及其转换事件
5.时序图:是以时间为序的表示方法,主要用来描述对象的时间顺序
多个对象之间的动态协作,实现一个用例或事件处理功能
6.协作图:描述对象及其间的链
强调与[上下文]环境的关联
7.活动图:是某件事情正在进行的状态,即可以是现实生活中正在进行的某一项工作,也可以是软件系统某个对象的一个操作,活动在状态机表现为由一系列动作组成的非原子的执行过程协作图:描述的是和对象结构相关的信息 它的用途是表示类操作的实现。它可以说明类操作用到的参数,局部变量以及操作中永久链。
描述执行算法的工作流程涉及的活动,控制的流转、决策和条件
8.组件图:是系统实现视图的图形表示,而其中的一个组件图只能表示系统实现视图的一部分,也就是说任何一个组件图都不能描述系统实现的所有方面,只能系统中组件组合起来才能表示完整的系统实现视图,组件中可以包涵注释和约束,也可以包涵或子系统它们都可以将系统中的模型元素组织成较大的组块。
代码物理结构
9.配置图:显示实际的计算机和设备已经它们之间的必要连接,也可以显示连接的类型,还有可以显示配置和配置之间的依赖的关系。不过每个配置必须存在于某些节点上。
系统的软硬件物理结构
10.包图:是维护和控制系统总体结构的重要建模工具.对复杂系统进行建模,经常需要处理大量的类 ,接口,组件.节点和图,这时就有必要将这些元素进行分组,即把语义相近并倾向于同一个变化的元素组织起来加入同一个包中,以方便理解和处理整个模型
P68结构、动作、分组、注释
P68类、接口、协作、用例、活动类、组件和节点。
p73构造型、标记值、约束
p74
系统词汇、简单协作、逻辑数据库模式p94
p101是名称、角色、多重性、聚合、组合和导航性。
状态、转换、事件、活动和动作。p124
3条,对象活动顺序与规则体现的系统行为而非处理过程[控制结构——顺序、分支、循环];并发表示与否;面向对象或面向过程。p145
规定责任、支持消息、衡量工具p175
交互映射——链;有效时间——激活p176
配置、工作产品、执行
元元模型、元模型、模型、运行实例[应用、方案]层p206
事物、关系和图。P9
结构事物、行为事物、分组事物、注释事物p68
执行者或主角、用例和关系;用例间的4种关系是关联、泛化、扩展和包含。
基本构造块、规则和公共机制。
关联、依赖、泛化、实现、聚合p70
用例图、协作图、顺序图、活动图和状态图。
对象(Object)、生命线(Lifeline)、消息(Message)、激活(Activation) p163
P237横轴表示项目的时间维,是过程展开的生命周期特征,描述术语包括周期(Cycle)、阶段(Phase)、迭代(Iteration)、里程碑(Milestone);纵轴以自然的逻辑内容[核心工作流]来组织,术语包括活动(Activity)、产物(Artifact)、工作者(Worker)和工作流(Workflow),如图16-5所示。
模型元素的扩展与调整、UML简单化p209-210
与传统的瀑布模型相比较,迭代过程具有以下优点
1)降低在一个增量上的开支风险
开发人员重复某个迭代,只损失这一个有误开发迭代的花费
2)降低产品无法按照既定进度进入市场的风险
尽早确定风险,可尽早解决问题而不至于在开发后期匆匆忙忙
3)加快整个开发工作的进度
清楚问题的焦点所在,开发人员的工作会更有效率
迭代过程模式更容易适应需求的变化
用户需求通常是在后续阶段中不断细化的
制品、工作人员、工作流