1、软件设计过软件设计过程程软件设计元素软件设计元素数据结构算法用户人机界面软件体系结构构件构件接口其他 软硬件软件交互设计系统总体设计模块设计与实现系统总体设计系统总体设计系统总体设计是在需求分析的基础上定义系统的设计目标,将整个系统划分成若干 子系统或模块,建立整个系统的体系结构,并选择合适的系统设计策略。明确系统设计目标确定子系统或模块选择系统部署方案定义设计方案评审系统设计方案一个平面规划的例一个平面规划的例子子住宅设计的约束条件:适合一对夫妻与一个孩子共同生活 有单独学习和会客的空间 住户每天行走的路程要求最短 卧室的白天采光量要求达到最大假设:住户的大部分时间集中在客厅/餐厅和主卧室的
2、区域内活动如何给出满足上述约束的平面规划方案一个平面规划的例一个平面规划的例子子客厅/餐厅走廊楼梯盥洗室厨房书房大门主卧室卧室2Version 1卧室2客厅/餐厅走廊楼梯盥洗室厨房书房大门主卧室楼梯大门书房盥洗室卧室2厨房走廊客厅/餐厅主卧室Version 2Version 3一个平面规划的例一个平面规划的例子子建筑结构概念软件工程概念构件房间子系统或模块接口门服务非功能需求生活区响应时间功能需求住房用例(或用户故事)返工代价移动墙壁改变子系统或模块的接口与软件工程概念的映射系统设计目标系统设计目标性能准则:响应时间:系统响应用户请求的时间吞吐量:在一个固定时间内系统完成的任务量存储量:系统运
3、行需要的存储空间可靠性准则:健壮性:系统承受用户无效输入的能力可靠性:指定操作与所观察行为之间的差别可用性:系统用于完成正常任务的时间容错性:在错误条件下系统的运行能力安全性:系统抵御恶意攻击的能力预防性:在出现错误和故障时系统避免威胁人类生命的能力系统设计目标系统设计目标维护准则:可扩展性:增加系统功能或新类的难易程度可修改性:更改系统功能的难易程度适应性:将系统应用到不同应用域的难易程度可移植性:系统移植到不同平台的难易程度可读性:通过阅读代码理解系统的难易程度需求可追踪性:将代码映射到特定需求的难易程度最终用户准则:效用:系统对用户工作的支持程度易用性:用户使用系统的难易程度系统设计目标
4、系统设计目标成本准则:开发成本:开发初始系统的成本部署成本:安装系统和培训用户的成本升级成本:从原有系统导出数据的成本维护成本:修复错误和增强系统的成本管理成本:对系统进行管理的成本说明:设计目标定义了系统应该重点考虑的质量要求性能、可靠性和最终用户准则通常可以从非功能需求或应用领域中推断出来,维护 和成本准则需要由用户和开发人员识别。权衡设计目标权衡设计目标空间与速度:如果响应时间或吞吐量不满足需求,怎么办?如果软件不满足存储空间的限制,怎么办?交付时间与功能:如果开发进度发生落后,可能采取什么策略?合同软件通常更强调功能性,成品软件更侧重于交付时间。交付时间与质量:如果测试落后于进度,可能
5、采取什么策略?交付时间与人员:如果开发进度发生落后,可能采取什么策略?确定子系统或模确定子系统或模块块12策略5:将人机接口与 实现模型分离软件分解策略策略2:独立配置数据策略3:独立出特有 的硬件构件策略1:功能分解策略4:独立出时间 至上的构件确定子系统或模确定子系统或模块块体系结构风格(Architectural Styles)描述特定系统组织方式的 惯用范例,强调软件系统 中通用的组织结构选择系统部署方选择系统部署方案案系统部署方案是描述系统运行期间构件和硬件节点之间的关系,在系统设计阶段 处理软件/硬件的映射问题,可能会增加新的子系统或模块的定义。数据库服务器微信服务器抢票应用服务器
6、微信/微信内嵌浏览器PC端浏览器定义定义设计方案数据文件关系数据库NoSQL数据库内存数据库数据文件是由操作系统提供的存储形式,应用系统将数据按照字节 顺序存储,并定义如何以及何时检索数据。采用关系模型作为数据组织方式的数据库,数据是以行和列组成的 二维表的形式进行集中存储、控制和管理。一种非关系型的分布式数据库管理系统,常用的是Key-Value存储 数据库,其他还有文档型数据库、列存储数据库、图形数据库等。它是将数据直接放在内存中进行操作的数据库,可分成关系型内存 数据库和键值型内存数据库两种类型。定义定义设计方案确定访问控制策略:哪些对象在参与者中共享?如何对参与者进行访问控制?系统如何
7、识别参与者的身份?如何对系统中选定的数据进行加密?识别用户身份:用户名密码:一个用户对应一个用户名和密码的组合,系统在存储和传输密 码之前对其进行加密。智能卡:配合密码同时使用。生物特征:指纹、虹膜等。定义定义设计方案设计全局控制流:控制流是系统中动作的先后次序。控制流问题需要在设计阶段考虑,其决策取 决于操作者或随时间推移所产生的外部事件。控制流机制:过程驱动:在需要来自参与者的数据时,操作等待输入。事件驱动:主循环等待外部事件,在外部事件到达时,系统根据与事件相关的 信息将其分配给适当的对象。线程:系统创建任意数目的线程,每个线程对应不同的事件。如果某个线程需 要额外的数据,就等待参与者的输入。定义定义设计方案识别边界条件:系统何时启动、初始化、关闭?如何处理主要故障(如软件错误、断电、断网等)?边界用例:系统管理:对于不在普通用例中创建或销毁的对象,增加一个系统管理员调用 的用例进行管理。启动与关闭:启动、关闭和配置构件。异常处理:通过对需求获取中识别的一般用例进行扩展而得到,需要考虑用户 错误、硬件故障、软件故障等因素。