UML图
UML基础知识
UML是面向对像软件的标准化建模语言,由三个要素组成
- UML基本构造块
- 支配这些构造快如何放置在一起的规则
- 运用与整个语言的一些公共机制
UML词汇表包含三种构造快:
- 事务:事务是对模型中最具有代表性的成分的抽像
- 关系:关系把事务结合在一起 (依赖、关联、泛化、实现) 口诀:一贯剧组方式(依赖,关联,聚合,组成,泛化,实现)连线线先虚后实
- 图:图聚了相关的事务
- 依赖(Dependency):俩个事务间的语义关系,其中一个事务(独立事务)发生变化会影响到另一个事务(依赖事务)的语义
- 关联(Association):是一种结构关系,描述了一组链,链是对象之间的连接
- 泛化(Generalization):是一种特殊/一般关系,特殊元素(子元素)的对象可代替一般元素(父元素)的对象,用这种方法,子元素共享了父元素的结构和行为。
- 实现(Realization):类之间的语义关系,其中一个类指定了由另一个类元保证执行的契约
UML图
- 类图(class Diagram):展现了一组对象,接口,协作和它们之间的关系。静态设计图。
- 对象图(Object Diagram):展现了某一时刻一组对象以及它们之间的关系。对象图描述了在类图中所建立的事务的实例的静态快照,给出系统的静态设计视图或静态进程视图。
- 用例图(Use Case Diagram):展现了一组用例,参与者(Actor)以及它们之间的关系。
- 交互图:表现的是一个交互,由一组对象和它们之间的关系组成,包含它们之间可能传递的消息。
- 序列图:强调消息时间顺序的交互图
- 通信图:强调接收和发送消息的对象的结构组织
- 交互概览图:强调控制流的交互图
- 时序图(Timing Diagram):关注沿着线性时间轴、生命线内部和生命线之间的条件改变
- 部署图(Deployment Diagram):用来对面向对象系统的物理方面建模的方法,展现了运行时处理结点以及其中构建的配置
- 组件图(Component Diagram):展现了一组组件之间的组织和依赖
计算机组成
Cache工作时,需要拷贝主存信息到Cache中,就需要建立主存地址和Cache地址的映射关系。Cache的地址映射方法主要有三种。
- 全相联映像:主存的任意一块可以映像到Cache中的任意一块,其特点时块冲突率低,Cache空间利用率高,但是相联目录表容量大导致成本高、查表速度慢。
- 直接映像:指主存的每一块只能映像到Cache的每一个特定的块中,整各Cache地址与主存地址的低位部分完全相同,其特点是硬件简单,不需要相联存储器,访问速度快(无需地址交换),但是Cache块冲突概率高导致Cache空间利用率低
- 组相联映像:对上述俩种方法的折中处理,对Cache分组,实现组间直接映射,组内全相联,从而获得较低的块冲突概率,较高的块利用率,同时得到较快的速度和较低的成本
软件工程概述
一.软件设计的任务是基于需求分析的结果建立各种设计模型,给出问题的解决方案。从工程管理的角度,可以将软件设计分为俩个阶段
- 概要设计
- 详细设计
1.结构化设计方法中,概要设计阶段进行软件体系结构的设计、数据设计和接口设计。
2.详细设计阶段进行数据结构和算法设计。
3.面向对象设计方法中概要设计阶段进行体系结构设计、初步的类设计,数据设计,结构设计
4.详细设计阶段进行构件设计
结构化设计和面向对象设计师俩种不同的设计方法
- 结构化设计:根据系统的数据流图进行设计,模块体现为函数、过程、子程序
- 面向对象设计:基于面向对象的基本概念进行,模块体现为类对象和构件等
二.软件过程模型
- 瀑布模型:将软件生存周期各个活动规定为线性顺序连接的若干阶段的模型,规定了由前向后,相互衔接的固定次序,如同瀑布流水,逐级下落。这种方法是一种理想的开发模式,缺乏灵活性,特别是无法解决需求不明确或者不准确的问题
- 原型模型:从初始的原型逐步演化成最终的软件产品,特别适用于软件需求缺乏准确认识的情况。
- 增量开发:把软件产品作为一系列增量构建来设计、编码、集成、测试,可以在增量开发过程中逐步理解需求。
- 螺旋瀑布模型:将瀑布模型与原型模型集合,并且加入俩个模型都忽略的风险分析,适用于复杂的大型软件。
三.开发方法
敏捷开发:个人和交互胜过过程和工具,可以运行的软件胜过面面俱到的文档,与客户合作胜过合同谈判,对变化的反应胜过遵循计划。
- 极限编程XP:激发开发人员的创作性,使得管理负担最小的一组技术。
- 水晶法Crystal:每一个不同的项目都需要一套不同的策略,约定,方法论。
- 并联争球法:使用迭代的方法,把每30天的一次迭代称为一种冲刺,并按需求的优先级来实现产品多个自组织和自治小组并行的递增实现产品,协调是通过简短的日常情况会议进行。
自适应软件开发(ASD)六个基本原则:
- 在自适应软件开发中,有一个使命作为指导,他设立了项目的目标,但不描述如何达到这个目标
- 特征被视为客户键值的关键,因此项目是围绕着构造的构建来组织并实现特征
- 过程中的迭代是很重要的,因此重做与做同样重要,变化也包含其中。
- 变化不视为一种更正,而是对软件开发实际情况的调整
- 确定的交付时间迫使开发人员认真考虑每一个生产版本的关键需求
- 风险也包含其中,它使开发人员首先跟踪最艰难的问题
四.软件开发项目管理
软件配置管理(SCM)用于整各软件工程过程,其主要目标是标识变更,控制变更,确保变更正确的实现,报告变更。
主要内容:
- 版本管理
- 配置支持
- 变更支持
- 过程支持
- 团队支持
- 变化报告
- 审计支持
系统设计知识
模块独立性是创建良好设计的一个重要原则,一般采用模块间的耦合和模块的内聚俩个准则来进行度量。耦合长度越低内聚程度越高,则模块的独立性越好。
存在多种模块内聚类型,从高到低以此为
- 功能
- 通信
- 顺序
- 过程
- 时间
- 逻辑
- 偶然内聚
- 一个模块的几个操作是相关的,而且必须以特定的次序执行,则模块的内聚类型为过程内聚
- 模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行,则该模式的内聚类型为时间内聚
- 若一个模块的各个部分只是通过代码的逻辑结构相关联,则该模块的内聚类型为逻辑内聚。
- 把访问或操作在同一个数据结构的操作放在一个模块中,则该模块的内聚类型为通信内聚
软件质量管理
软件评审的内容包括软件设计质量评审,程序质量评审,运行环境接口评审。目的是为了发展软件的错误
面向对象程序设计
采用面向对象技术开发系统时,主要步骤有:
- 面向对象分析
- 面向对象设计
- 面向对象程序设计
- 面向对象测试
面向对象分析:
- 认定对象
- 组织对象
- 描述对象间的相互作用
- 定义对象的操作
- 确定对象的内部信息
面向对象程序设计:
- 选择合适的面向对象程序语言
- 将程序组织为相互协作的对象组合
- 对每个对象表示某个类的实例,
- 类通过继承等关系进行组织
面向对象测试:
- 尽可能早的开始进行系统测试,以发现系统可能存在的错误并进行修复,进而保证系统的质量
汇编、编译、解释系统
用某高级语言或汇编语言编写的程序为源程序,源程序不能直接在计算机上执行,汇编语言源程序需要用一个汇编程序将其翻译成目标程序后才能执行。
汇编语言源程序需要一汇编程序将其翻译成目标程序后才能执行
高级语言源程序则需要对应的解释程序或编译程序对其进行翻译,然后在机器上运行
解释程序也称为解释器,他活着直接解释执行源程序,或者将源程序翻译成某种中间代码后在执行
编译程序(编译器)则是将源程序翻译成目标语言程序,然后在计算机上运行目标程序。
这俩种语言处理程序的根本区别是:
在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不在参加与目标程序的执行过程,
再解释方式下,解释程序和源程序要参与到程序的运行过程中,运行程序的控制权在解释程序,简单的说,在解释器方式下,翻译员程序是不生成独立的目标程序,二编译器则将源程序翻译成独立保存的目标程序
线性结构
对空条件:front == rear
对满条件 (rear+1)%N
队列长度 front == (N+rear-front)%N
二叉树
- 完全二叉树:除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点
- 平衡二叉树(AVL):他或者是一颗空二叉树,或者具有他的左子树和右子树的深度之差的绝对值不超过1,且他的左子树和右子树都是一颗平衡二叉树
- 最优二叉树:哈夫曼树
- 满二叉树:每一层结点数达到最大值
Internet 应用
- DHCP协议的功能是自动分配IP地址
- FTP协议的作用是文件传输,使用的传输层协议是TCP