1. 软件设计的任务与目标
根据《软件需求规格说明书》提出的系统目标,设计出软件系 统的体系结构、接口、数据结构和处理流程,形成软件的具体实现方案,并撰写《软件设计说明书》。
软件设计是把许多事物和问题抽象起来,并且抽象它们不同的层次和角度。将问题或事物分解并模块化使得解决问题变得容易,分解的越细模块数量也就越多,它的副作用就是使得设计者考虑更多的模块之间耦合度的情况。
2. 软件体系结构的内涵与主要类型;
软件体系结构的内涵:软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组合连接起来。这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本上得到保持。
软件体系结构的主要类型:结构模型 框架模型 动态模型 过程模型 功能模型
3. 软件设计的流程、内容与主要的技术
设计流程:
1.需求
2.功能定义
3.交互设计:生成产品原型的线框图
4.视觉设计:生成产品模型
5.DEMO:生成产品DEMO
6.实现:实现产品(最终阶段)
软件设计的内容及技术:
软件设计的描述与建模:
类图:类图表示系统中类及类和类之间的关系,用于对系统的静态结构进行描述。类用来表示系统中需要处理的事物;类之间的关系包括关联、依赖、泛化或打包(Package)等。类之间的关系体现在类的内部结构中,通过类的属性和操作进行反映。一个典型的系统中通有若干个类图,一个类图不一定包含系统中所有的类,一个类还可以添加到多个类图。
图由类及类与类之间的关系组成,类与类之间通常有:
1)关联:关联表示两个类的对象之间存在某种语义上的联系。
2)聚集:聚集也称为聚合,关联的特例。聚集表示类与类之间的关系是整体与部分的关系。
3)泛化(继承):UML中的泛化关系就是通常所说的继承关系,它是通用元素和具体元素之间的一种分类关系。
4)依赖和细化。
关联的图形符号:
普通关联 关联的角色 限定关联 关联类
聚合: 共享聚集 组合聚集
泛化:
1普通泛化
2泛化受限: 多重继承 不相交继承 完全继承 不完全继承
依赖和细化
状态图:状态图是一个类对象所可能经历的所有历程的模型图。状态机由对象的各个态和连接这些状态的转换组成。
包:(Package)是UML为复杂系统建模所提供的模型元素组织与管理的通用机制。包用于定义一个名字空包用于定义一个名字空间或容器间或容器(Container),通过包可以把类、用例、组件等语义联系紧密元素聚在一起,从而实现从不同抽象层次、不同角度对系统或子系统进行建模描述,将对包中的元素作为一个整体对待对包中的元素作为一个整体对待,并且控制它们的并且控制它们的可视性和存取。
构件图:构件图用来描述代码构件的物理结构及各个构件之间的物理关系。代码组件可以是源代码、动态链接库、子程序、独立线程或可执行文件组件。使用构件图有助于分析和理解构件之间的相互影响程度。构件是定义了良好接口的物理实现单元,它是系统中可替换的部分。每构件体现了系统设计中特定类的实现。良好定义的构件不直接依赖于其他构件而依赖于构件所支持的接口。
部署视图:部署视图描述位于节点实例上的运行构件实例的安排。节点是一组运行资如计算机、设备或存储器。这个视图允许评估分配结果和资源分配。
体系结构设计:根据软件设计开发经验总结出来,且命名的,针对某一类型软件软件具有通用性和推广价值的设计方案。 UML “4+1”视图 逻辑架构 进程架构 开发架构 物理架构
软件逻辑架构: 整体/模块化结构 分层架构 MVC架构 三层架构
软件物理架构:
C/S架构 :特点:信息共享;人机交互性好;系统效率高;维护升级困难;胖客户端瘦服务器;数据安全性差。
B/S架构:安装维护便利;平台无关;交互性较差
处理流程: 浏览器 web服务器 数据库服务器
C/S与B/S混合架构
软件物理架构: OMG的组件定义:系统中一种一种物理的、可部署的、可替代的部件、他封装了实现并提供一系列可用的接口。
组件优点:
标准化:遵循组件模型标准;
独立性:可单独部署、不依赖于其他组件;
可组合性:通过公开接口,可进行组合;
平台无关系:开发语言、“OS无关”;
关联的uml表示法
设计模式:是一套反复被使用,多数人知晓,经过分类编目的、系统设计经验的总结
方面控制器 用例控制器
问题与解决: 接口层不处理系统事件 UI与领域层不好耦合设计
低耦合概念: 耦合是对一个元素与其他元素的连接,拥有知识,依赖等关系的强烈程度的度量
高内聚:是一个元素的责任之间的关系是否密切相关和集中的度量
4软件设计说明书的用途和主要内容。
用途:
主要从软件开发(程序员)角度描述软件需要实现功能,如何划分这些功能模块,各个功能模块的关系,软件的业务流程等。设计软件结构的具体任务是将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。 此软件设计说明书是为了说明整个系统的体系架构,以及需求用例的各个功能点在架构中的体现,为系统的详细设计人员进行详细设计师的输入参考文档。
主要内容:
1 引言
1.1 目的
介绍编写本文档的目的,主要内容及读者。
1.2 需求概述
描述所要实现的功能和性能等。
1.3 名词及缩略语
列出文档中所用到的专门术语的定义和缩写词的原文。
1.4 参考资料
a. 项目经核准的计划任务书、合同或上级机关的批文;
b. 项目开发计划;
c. 需求规格说明书;
d. 文档所引用的资料、标准和规范。列出这些资料的作者、标题、编号、发表日期、出版单位或资料来源
2 软件概述
介绍软件的应用场合,开发和运行的背景、设计约束等等。
2.1 系统概况
描述软件的主要功能,以及本模块和子系统在系统中所处的位置和作用。
2.2 运行环境
描述软件运行的软硬件环境。
2.3 设计约束
列出进行本软件开发工作的假定和约束,如所采用的语言、开发工具、开发平台、中间件、数据库、外部接口,以及遵循的编码和测试规范等。
3 总体结构设计
3.1 软件结构
用框图的形式说明本系统的系统元素(各层模块、子程序、公用程序等)的划分,扼要说明每个系统元素的标识符和功能,分层次地给出各元素之间的控制与被控制关系。
3.2 设计思想
结合上图阐述本系统的基本设计思想和理念。
3.3 尚未解决的问题
说明在概要设计过程中尚未解决而设计者认为在系统完成之前必须解决的各个问题。
4 模块设计
在此以列表形式说明各模块的名称、功能、接口、发布形式等信息。
4.1 模块1
详细描述各功能模块的功能、接口及内部实现。
4.1.1 功能描述
可以以图表方式说明本功能区域的内部结构,与其他功能模块的详细数据接口流。
4.1.2 接口描述
消息、函数等
4.1.3 数据结构描述
本功能区域使用的数据结构。
4.1.4 类和对象描述
采用类图和对象图描述。
4.1.5 处理流程
画出模块各项功能的实现流程。
4.1.6 编译和链接说明
对模块的编译和链接提出要求,如静态链接、动态链接,生成obj、lib、DLL、bin、hex等。
4.2 模块2
……
5 运行设计
以列表方式描述系统的任务、线程、进程的设置,包括类型、功能、优先级、管理方法等。
6 功能实现流程
以用例图、顺序图、SDL图等方式,详细描述各项功能的实现流程。
7 系统性能分析
列出系统关键性能指标,并且对影响系统性能的功能点进行分析。
8 数据库及数据结构设计
8.1 数据库及数据表
描述所使用的数据库系统,及数据库和数据表设计。
8.2 数据结构设计
给出本系统内所使用的每个数据结构的名称、标识符以及它们之中每个数据项、记录、文卷和系的标识、定义、长度及它们之间的层次的或表格的相互关系。
8.3 数据存储设计
给出本系统内所使用的每个数据结构中的每个数据项的存储要求,访问方法、存取单位、存取的物理关系(索引、设备、存储区域)、设计考虑和保密条件。
9 定时器设计
列表描述所有定时器的类型、用途、范围、默认值、启动、停止、扫描、超时处理等。
10 外部接口设计
说明本系统同外界的所有接口的安排包括软件与硬件之间的接口、与各支持软件之间的接口、与网管之间的接口等。
10.1 用户界面设计
参见《UI设计说明书》。
10.2 硬件接口
描述需要访问的硬件接口的类型、控制方式,:如中断、寄存器等。
10.3 软件接口
描述与其他模块及子系统的接口。
11 兼容性设计
列出与前后版本,以及其他模块、系统、子系统间可能存在的兼容性问题,以及对策。
12 系统维护设计
12.1 安装和升级
描述软件安装和使用方面的考虑。
描述软件升级的方式,以及升级时的兼容性和数据迁移方面的考虑。
12.2 系统配置
列出系统各种配置项的内容。
12.3 日常维护
如果有日常维护的需要,给出具体的实现方法。
13 系统测试设计
从代码的静态测试,到运行时的动态测试等方面详细描述实现方法。
14 安全和可靠设计
14.1 系统安全
- 系统安全控制和物理保护措施
- 用户身份鉴别机制
- 用户对系统的访问权限和范围
14.2 数据安全
说明在数据库的设计中,将如何通过区分不同的访问者、不同的访问类型和不同的数据对象,进行分别对待而获得的数据库安全保密的设计考虑,如: - 数据用户身份鉴别
- 访问时的控制策略和实现方法
- 数据加密方法
14.3 可靠性设计
14.3.1 故障模式及影响分析(FMEA)
列表分析各种可能的故障模式,以及相应的对策。
14.3.2 避错和容错设计
列举所采取的避错和容错设计措施,降低系统故障概率。
14.3.3 冗余设计
如采取系统冗余、 数据冗余等措施。
14.3.4 故障检测和恢复机制
可以采用watchdog、守护进程、异常处理等机制检测系统故障,并且进行局部或全局重启动机制,恢复系统运行。
对于数据的恢复,可以从冗余或备份数据中恢复。
15 日志和错误处理
15.1 日志记录机制
用一览表的方式说明每种可能的日志(如运行日志、操作日志、故障日志)如何进行记录,记录那些内容。
15.2 错误信息及输出机制