计算机技术发展,设计问题空间广阔,程序语言无法担任描述问题的重任,解决问题的关键不再是如何构建系统,而是如何理解系统问题的本质和如何准确地描述。
越来越多的公司转向面向对象技术。 面向对象思想表示现实世界是由类(对象)及其关系所组成,都具有结构和行为两个特征。
类是最最基本实体,设计时静态逻辑实体。
对象是类的实例,运行时的动态实体。
实体的3种行为:简单、连续、状态。
简单:没有记忆比如数学公式
连续:依赖于过去的连续行为,比如pid.
状态:依据触发事件改变状态,通过状态机实现。也称反应式系统比如嵌入式和用户交互(GUI)。
子系统和组件:中间部分,更具逻辑意义。(类元:描述事物的离散概念)有多个类元组成,类元之间通过各种关系进行协作和交互。
协作通常反应结构关系,交互反应类元实例(对象)的动态行为。结构关系通过协作图/类图描述,行为关系通过顺序/通信图描述。
系统:常用功能说明。黑盒/用户视角描述。避免传统系统需求通过文本描述,考虑主观性等缺陷,加大需求分析比重,通过使用UML工具建模而使问题早期发现,通过迭代增量式开发兼容需求变更,通过用例来准确捕获系统需求。
抽象:更高逻辑层面提取问题的本质特征。相同属性和行为的对象对象被分组为一个类。
继承:公共特征提取组成父类叫泛化,继承父类添加自己属性/操作叫特化。
封装:相互作用紧密实体绑定为一个整体,整体之外隐藏必要的实现细节,例如显示器对CPU.
多态:相同操作不同的动作。
模式:已验证的通用问题的解决方案。分析、架构、设计和实现都存在,一般用在设计阶段,分为结构/行为模式。
复用:已存在制品的使用 。减少开发时间、节约开发成本、增加系统稳定性和可靠性。可以是一个函数、类、设计模式、分析模型等。
架构:软件系统的组织。实体、接口、协作的组合风格。全局性和策略性。体系结构:嵌入式系统范围内机械、电子和软件组成的系统构成。
框架:构建完整应用的一种程序结构。UML2.0中是包的构造型,某一领域中的应用提供可扩展的模板。部分完整的应用。
用例驱动:沿着一个从用例开始的工作流程进行的。反映了系统外部参与者与系统之间交互顺序的规格说明。目的是定义应用系统中表示某个实体的一个完整行为。
模型驱动:作用于软件周期中,作为特定目标的实施依据。是从一个特定的视角对应用系统进行的完整抽象。采用结构和行为视角并通过类模型、交互模型、状态模型形成的框架对应用系统建模描述。
迭代式开发:给系统构建带来灵活性。首先开发基点,然后逐步扩大系统范围,添加属性/行为。会交织不同的阶段。
职责分配:对多对象系统职能分配时根据不同的优化要求所采取的原则。就近解决、低耦合、高内聚、Liskov替换、开闭准则。
模型是集成的、相互关联的抽象集合,准确地描述了要实现的系统。模型有语义和语义的用户视图两部分组成。语义是含义的正式说明。视图是语义在某个特定视角的可见表示法中的投影。
模型的结构主要是识别建立系统的各个事物以及它们间的关系。模型的行为定义了系统执行时结构类元是如何工作和交互的,从整体外部功能和内部观察协作两个视角完成。外部功能可通过用例、状态、活动图,内部协作可通过顺序、协作、活动图。
通常系统分析中首先从功能入手,转化成用例图来对系统行为建模。系统作为整体行为用状态图来建模,二作为某个具体功能侧面交互可用场景的顺序图来建模。
子系统级别的结构描述成为框架。结构维度用类图或者协作图建模。行为维度通过顺序图。
建模最底层是个体的类和对象,结构维度通过属性,行为维度通过操作。状态图对整个类/对象行为建模,活动图对算法建模。
静态事物:用雷表达应用系统中的概念。类是一组对象。多个类可泛化,子类可继承。
设计构造:结构化类元扩展了类,表现为一组通过关系连接在一起的类的集合。
布置构造:节点,定义了物理位置。工件被布置在节点上。
动态行为:与外界交互;相关对象通信;不同活动的演变。
孤立对象:状态机。
交互:结构化类元/协作,各部分之间传递的消息流。交互用序列/通信图。
活动:一段计算过程的执行,用一组活动节点表示,各节点用控制流和数据流连接起来。
用例视图:对搜友行为视图起指导作用。序列图和文本。
模型组织:大型系统,建模信息必须划分成连贯的部分。对于小型系统,也要求将整个模型组成大小适当的具有依赖关系的包。
特性描述:构造型是一种新的模型元素,附加了约束,具有新的解释和图标。
三种构造块:事物;关系;图。事物是模型中最具代表成分的抽象。关系把事物结合在一起;图是相关事物的集合。
结构事物:名词元素,通常是静态部分,描述概念和物理实体。7种:类、接口、协作、用例、主动类、组件和接点。
类:
接口:获得的服务申明。目的是将实现和具体类元的依赖种分离出来。
协作:完整的交互,描述了结构。
用例:一组动作序列的描述。包括常规主线行为和常规顺序的变化,比如可选顺序、异常行为和错误处理。
主动类:进程/线程,拥有控制任务,与其他主动类对象并发。
组件:一个逻辑/物理的可替代的模块化组件。
节点:运行时存在的物理实体。表示一种可计算的资源,通常至少有一些记忆能力和处理能力,比如显示器和处理器。组件可驻留在一个节点内,一般在布置图中出现。
行为事物:动词,描述了跨越时间和空间的行为。2种:交互和状态。
交互:消息在对象间交换。
状态:单一对象(类元)生命周期中满足满足特定条件,执行某些活动/等待时间的一种行为状况。状态分简单、复合、子状态机。
分组事物:UML模型的组织部分,主要是包。
包:组织实体的常规工具,拥有自己的内容并可定义命名空间。一种通用的名称空间,恶意拥有任何类型的模型元素。包存粹是概念上的(仅在设计开发时存在),组件(在设计和运行时都存在)。
注释事物:描述、说明和标注任何事物。在模型级别对模型实体的说明,有重要影响,如对实体的约束。系统的非功能性(实时性、资源限制)建模主要通过约束实现。
UML构造事物将单词通过关系构成了UML句子,一个以上的句子在一起构成了UML图。图就是模型。
1.UML中的关系:依赖;关联;泛化、实现。
2.UML中的图:模型元素集。
类图是系统结构方面的最重要的视图,动态特征在其他视图比如状态/通信。分析中概念的建模,设计中协作的建模以及各类模式都是通过类图实现。
对象图
内部结构图
协作图
组件图
用例图
状态图
活动图
顺序图
通信图
布置图
包图
时间图
UML是一种语言,句子是事物和关系,段落是多个句子也叫图,每一种图构成描述事物的一个侧面视图,文章是所描述事物的模型,也就是说多个视图组成。
UML中,各种图都可以归结到结构和行为或者静态和动态两个方面。
实例:
用例图和顺序图描述各级别需求;
类图和协作图确定系统和子系统级的静态和交互结构,顺序图捕获系统和子系统级别的交互行为;
状态图确立每一个活动对象(任务,进程)的全景行为;
活动图设计状态内部或对象方法的算法;
布置图适合多控制器系统。
狗窝->平房->别墅->大厦
建模是对所要认识的事物进行抽象的过程,也就是透过现象看本质的过程。欧姆定律简单电阻对象建模,微分对pid建模;状态机对离散状态行为建模;状态内又可以递归上述过程。