备案 控制台
开发者社区 数据库 文章 正文

CMMI流程之系统设计

简介: CMMI流程之系统设计

系统设计(System Design, SD)是指设计软件系统的体系结构、用户界面、数据库、模块等,从而在需求与代码之间建立桥梁,指导开发人员去实现能满足用户需求的软件产品。

系统设计过程域是SPP模型的重要组成部分。本规范阐述了系统设计过程域的四个主要规程:

  • 体系结构设计 [SPP-PROC-SD-ARCHITECTURE]
  • 用户界面设计 [SPP-PROC-RM-UI]
  • 数据库设计 [SPP-PROC-RM-DATABASE]
  • 模块设计 [SPP-PROC-RM-MODULE]

上述每个规程的“目标”、“角色与职责”、“启动准则”、“输入”、“主要步骤”、“输出”、“完成准则”和“度量”均已定义。

本规范适用于国内IT企业的软件研发项目。建议用户根据自身情况(如商业目标、研发实力等)适当地修改本规范,然后推广使用。

11.1介绍

系统设计过程域分为两个阶段:高层设计阶段和详细设计阶段。

高层设计阶段的重点是软件系统的体系结构设计。详细设计阶段的重点是用户界面设计、数据库设计和模块设计,如图11-1所示。

图11-1 系统设计过程域示意图

系统设计过程域产生的主要文档有:

  • 《体系结构设计报告》,模板见[SPP-TEMP-SD-ARCHITECTURE]
  • 《用户界面设计报告》,模板见[SPP-TEMP-SD-UI]
  • 《数据库设计报告》,模板见[SPP-TEMP-SD-DATABASE]
  • 《模块设计报告》,模板见[SPP-TEMP-SD-MODULE]

11.2 体系结构设计

11.2.1 目的

  • 分析与设计软件的体系结构。通过系统分解,确定子系统的功能和子系统之间的关系,以及模块的功能和模块之间的关系,产生《体系结构设计报告》。

11.2.2 角色与职责

  • 项目经理指定若干名开发人员从事体系结构设计(以下称为体系结构设计人员)。

11.2.3 启动准则

  • 体系结构设计人员已经确定。

11.2.4 输入

  • 需求文档如《产品需求规格说明书》

11.2.5 主要步骤

       体系结构设计流程如图11-2所示。

图11-2 体系结构设计流程

[Step1] 设计准备

  • 项目经理或者技术负责人分配系统设计任务,包括体系结构设计、模块设计、用户界面设计、数据库设计等。本活动可能产生一份阶段性的开发计划,如《系统设计计划》,视工作量而定。
  • 体系结构设计人员阅读需求文档,明确设计任务。
  • 体系结构设计人员准备相关的设计工具(如Rational Rose)和资料。

[Step2] 确定影响系统设计的约束因素

  • 需求约束。体系结构设计人员从需求文档如《软件需求规格说明书》中提取需求约束,例如:
  • 本系统应当遵循的标准或规范
  • 软件、硬件环境(包括运行环境和开发环境)的约束
  • 接口/协议的约束
  • 用户界面的约束
  • 软件质量的约束,如正确性、健壮性、可靠性、效率(性能)、易用性、清晰性、安全性、可扩展性、兼容性、可移植性等等。
  • 隐含约束。有一些假设或依赖并没有在需求文档中明确指出,但可能会对系统设计产生影响,设计人员应当尽可能地在此处说明。例如对用户教育程度、计算机技能的一些假设或依赖,对支撑本系统的软件硬件的假设或依赖等。

[Step3] 确定设计策略

  • 体系结构设计人员根据产品的需求与发展战略,确定设计策略(Design Strategy)。例如:
  • 扩展策略。说明为了方便本系统在将来扩展功能,现在有什么措施。
  • 复用策略。说明本系统在当前以及将来的复用策略。
  • 折衷策略。说明当两个目标难以同时优化时如何折衷,例如“时-空”效率折衷,复杂性与实用性折衷。

[Step4] 系统分解与设计

  • 体系结构设计人员:
  • 将系统分解为若干子系统,确定每个子系统的功能以及子系统之间的关系。
  • 将子系统分解为若干模块,确定每个模块的功能以及模块之间的关系。
  • 确定系统开发、测试、运行所需的软硬件环境。

[Step5] 撰写体系结构设计文档

  • 体系结构设计人员根据指定的模板撰写《体系结构设计报告》,主要内容包括:
  • 软件系统概述
  • 影响设计的约束因素
  • 设计策略
  • 系统总体结构
  • 子系统的结构与模块功能
  • 开发、测试、运行所需的软硬件环境

[Step6] 体系结构设计评审

  • 体系结构设计人员邀请同行专家、开发人员对体系结构进行正式技术评审,评审流程请参考 [SPP-PROC-TR-FTR]。
  • 体系结构评审的重点不是“对还是错”,而是“好还是差”。主要评审要素包括:
  • 合适性。考察该体系结构是否适合于产品需求,是否可在预定计划内实现。
  • 系统的综合能力(Capability)。例如“时-空”效率(性能,容量等),可扩展性,可管理性(可维护性),可复用性,安全性等等,视产品特征而定。

[后续活动]

  • 体系结构设计完成后进入详细设计阶段(用户界面设计、数据库设计、模块设计等)。

11.2.6 输出

  • 《体系结构设计报告》

11.2.7 结束准则

  • 《体系结构设计报告》已经完成,并且通过了技术评审。

11.2.8 度量

  • 体系结构设计人员统计工作量以及文档的规模,汇报给项目经理。

11.3 用户界面设计

11.3.1 目的

  • 设计软件的用户界面,产生《用户界面设计报告》。
  • 制作用户界面的资源如图像、图标或者界面专用组件等。

11.3.2 角色与职责

  • 项目经理指定若干名开发人员从事用户界面设计(以下称为界面设计人员)。
  • 如果可能的话,邀请用户或美工人员协助设计用户界面。

11.3.3 启动准则

  • 需求文档已经完成。
  • 体系结构设计已经完成。

11.3.4 输入

  • 需求文档
  • 体系结构设计文档

11.3.5 主要步骤

       用户界面设计流程如图11-3所示。

图11-3 体系结构设计流程

[Step1] 设计准备

  • 界面设计人员阅读需求文档和体系结构设计文档,明确界面设计任务。
  • 界面设计人员与用户交流,了解用户的工作习惯和他们对界面的看法。
  • 界面设计人员准备相关的设计工具和资料,收集或创作基本的界面资源如图像、图标以及通用的组件。
  • 界面设计人员确定本软件的用户界面设计规则(或指南),主要包括:
  • 优秀界面的特征或通用的设计原则;
  • 软件主界面(如主窗口、主页面)的设计规则;
  • 软件子界面(如子窗口、子页面)的设计规则;
  • 标准控件的使用规则;
  • 美学设计规则。

[Step2] 用户界面设计

用户界面设计一般要经历“原型创作—>原型评估->细化”等步骤,通常迭代进行。

  • [Step2.1] 原型创作

界面设计人员创作界面原型:

  • 先徒手画,或者用Visio 等工具绘制界面的视图;
  • 再用软件开发工具实现可以运行的原型。
  • [Step2.2] 原型评估
  • 界面设计人员邀请用户和同行们评估界面的原型,汇集意见,及时改进。
  • [Step2.3] 细化
  • 界面设计人员细化界面原型,例如美工处理,添加细节等。

补充说明:开发人员在本阶段不必关心界面原型的代码质量,因为界面原型可能不断地被修改甚至被抛弃。

[Step3] 撰写用户界面设计文档

  • 用户界面定型之后,界面设计人员根据指定的模板撰写《用户界面设计报告》,主要内容包括:
  • 应当遵循的界面设计规范;
  • 界面的关系图和工作流程图;
  • 主界面的视图、功能说明、操作方式;
  • 子界面的视图、功能说明、操作方式;
  • 美学设计说明。

[Step4] 用户界面设计评审

  • 界面设计人员邀请用户和同行们对定型后的界面进行正式技术评审,尽最大努力使界面变得更加美观、易用。评审流程请参考 [SPP-PROC-TR-FTR]。
  • 用户界面的主要评审要素包括:
  • 合适性
  • 简洁易用
  • 一致性
  • 美观
  • 动态反馈
  • 功能屏蔽和出错处理
  • 用户控制
  • 国际化(兼容性和可移植性)
  • 适应性(针对各种用户)

[后续活动]

  • 在系统设计工作结束之后,开发人员编写界面的代码,并和用户一起通过各种途径测试界面,从而不断地完善用户界面。(请参考有关测试的文档)
  • 界面设计人员总结经验教训,不断地完善适用于本机构的“用户界面设计指南”。

11.3.6 输出

  • 《用户界面设计报告》

11.3.7 结束准则

  • 《用户界面设计报告》已经完成,界面原型已经通过评审。

11.3.8 度量

  • 界面设计人员统计工作量以及文档的规模,汇报给项目经理。

11.4 数据库设计

11.4.1 目的

  • 设计软件的数据库,产生《数据库设计报告》。

11.4.2 角色与职责

  • 项目经理指定若干名开发人员从事数据库设计(以下称为数据库设计人员)。

11.4.3 启动准则

  • 需求文档已经完成。
  • 体系结构设计已经完成。

11.4.4 输入

  • 需求文档
  • 体系结构设计文档

11.4.5 主要步骤

       数据库设计流程如图11-4所示。

图11-4 数据库设计流程

[Step1] 设计准备

  • 数据库设计人员阅读需求文档和体系结构设计文档,明确数据库设计任务。
  • 数据库设计人员准备相关的设计工具和资料。
  • 数据库设计人员确定本软件的数据库设计规则(或指南),主要包括:
  • 数据库命名规则
  • 逻辑设计规则(或指南)
  • 物理设计规则(或指南)
  • 安全性设计规则(或指南)
  • 优化规则(或指南)
  • 数据库管理与维护规则(或指南)

[Step2] 数据库设计

       数据库设计一般要经历“逻辑设计—>物理设计->安全性设计->优化”等步骤,通常要迭代进行。

  • [Step2.1] 逻辑设计
  • 数据库设计人员根据需求文档,创建与数据库相关的那部分实体关系图(ERD)。如果采用面向对象方法(OOAD),这里实体相当于(class)。
  • [Step2.2] 物理设计
  • 设计表结构。一般地,实体对应于表,实体的属性对应于表的列,实体之间的关系成为表的约束。逻辑设计中的实体大部分可以转换成物理设计中的表,但是它们并不一定是一一对应的。数据库表的参考格式如表11-1所示。
  • 对表结构进行规范化处理(第三范式)。

表11-1 数据库表的参考格式

  • [Step2.3] 安全性设计

提高软件系统的安全性应当从“管理”和“设计”两方面着手。这里仅考虑数据库的安全性设计。

  • 用户只能用帐号登陆到应用软件,通过应用软件访问数据库,而没有其它途径可以操作数据库。
  • 用户帐号的密码进行加密处理,确保在任何地方都不会出现密码的明文。
  • 确定每个角色对数据库表的操作权限,如创建、检索、更新、删除等。每个角色拥有刚好能够完成任务的权限,不多也不少。在应用时再为用户分配角色,则每个用户的权限等于他所兼角色的权限之和。
  • [Step2.4] 优化

分析并优化数据库的“时-空”效率,尽可能地“提高处理速度”并且“降低数据占用的空间”。

  • 分析“时-空”效率的瓶颈,找出优化对象(目标),并确定优先级。
  • 当优化对象(目标)之间存在对抗时,给出折衷方案。
  • 给出优化的具体措施,例如优化数据库环境参数,对表格进行反规范化处理等。

[Step3] 撰写数据库设计文档

  • 数据库设计人员根据指定的模板撰写《数据库设计报告》,主要内容包括:
  • 数据库环境说明
  • 数据库的命名规则
  • 逻辑设计
  • 物理设计
  • 安全性设计
  • 优化
  • 数据库管理与维护说明

[Step4] 数据库设计评审

  • 数据库设计人员邀请同行们对数据库进行正式技术评审,评审流程请参考[SPP-PROC-TR-FTR]。
  • 数据库的主要评审要素包括:
  • 正确性、完整性、一致性
  • 安全性
  • “时-空”效率

[后续活动]

  • 在系统设计工作结束之后,开发人员将编写与数据库相关的代码,并和用户一起通过各种途径测试数据库,从而不断地完善数据库。(请参考有关测试的文档)
  • 数据库设计人员总结经验教训,不断地完善适用于本机构的《数据库设计指南》。
  • 软件交付给用户后,由用户管理与维护数据库。

11.4.6 输出

  • 《数据库设计报告》

11.4.7 结束准则

  • 《数据库设计报告》已经完成,并且通过了技术评审。

11.4.8 度量

  • 数据库设计人员统计工作量以及文档的规模,汇报给项目经理。

11.5 模块设计

11.5.1 目的

  • 设计软件所有模块的主要接口与属性、数据结构和算法,产生《模块设计报告》。

11.5.2 角色与职责

  • 项目经理指定若干名开发人员从事模块的设计(以下称为模块设计人员),模块设计人员将在实现阶段编写这些模块的代码。

11.5.3 启动准则

  • 需求文档已经完成。
  • 体系结构设计已经完成。

11.5.4 输入

  • 需求文档
  • 体系结构设计文档

11.5.5 主要步骤

       模块设计流程如图11-5所示。

图11-5 模块设计流程

[Step1] 设计准备

  • 模块设计人员阅读需求文档和体系结构设计文档,明确模块设计任务。
  • 模块设计人员准备相关的设计工具和资料。
  • 模块设计人员确定本软件的编程规范,确保模块设计文档的风格与代码的风格保持一致。

[Step2] 模块设计

       模块设计一般要经历“接口与属性设计—>数据结构与算法设计”等步骤,并且通常需要反复迭代。

建议:由于现代的软件开发工具越来越先进,模块的详细设计和编程可以很好地融合一起,而且效率相当高,有些工具甚至具有代码自动生成功能。所以在系统设计阶段,模块设计究竟要详细到什么地步,应当视问题复杂性以及所采用的开发工具而定。一般地,只要确定了每个模块的主要接口、数据结构与算法,能够清楚地指导模块编程即可。总之,不必花太多时间用于设计模块的细节。

  • [Step2.1] 接口与属性设计
  • 模块设计人员设计每个模块的主要接口与属性。如果采用面向对象方法(OOAD),相当于设计类的函数和成员变量。
  • [Step2.2] 数据结构与算法设计
  • 模块设计人员设计每个模块的数据结构与算法(如果存在的话)。

[Step3] 撰写模块设计文档

  • 模块设计人员根据指定的模板撰写《模块设计报告》,主要内容包括:
  • 模块汇总
  • 每个模块的主要接口与属性
  • 每个模块的数据结构与算法(如果存在的话)

[Step4] 模块设计评审

  • 模块设计人员邀请同行们对模块设计文档进行正式技术评审或者非正式技术评审(由技术负责人决定采用何种评审方式),评审流程请参考 [SPP-PROC-TR]。
  • 模块的主要评审要素包括:
  • 信息隐藏(独立性)
  • 强内聚、低耦合
  • 数据结构与算法的效率

[后续活动]

  • 模块的代码实现可以与模块设计同步进行,也可以在模块设计完成之后进行。

11.5.6 输出

  • 《模块设计报告》

11.5.7 结束准则

  • 《模块设计报告》已经完成,并且通过了技术评审。

11.5.8 度量

  • 模块设计人员统计工作量以及文档的规模,汇报给项目经理。

11.6 实施建议

  • 先对系统设计人员进行“专题”培训,让他们掌握必要的系统设计技能。
  • 由于国内绝大多数的大学不开设“用户界面设计课程”,这导致大部分软件开发人员不善于设计用户界面。项目开发小组应当设法邀请用户界面设计专家参与(或指导)本软件的界面设计。
  • 系统设计人员可以根据产品的特征,适当地修改《体系结构设计报告》、《用户界面设计报告》、《数据库设计报告》和《模块设计报告》的模板。
  • 对系统设计过程中产生的所有有价值的文档进行配置管理。






📢文章下方有交流学习区!一起学习进步!也可以前往官网,加入官方微信交流群💪💪💪

📢创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒

📢你的支持和鼓励是我创作的动力❗❗❗  

官网: Doker 多克;官方旗舰店 官方旗舰店  全品优惠

DOKER
目录
相关文章
产品人卫朋
|
7月前
|
智能硬件
IPD体系进阶|需求管理篇之需求实现过程
需求实现
产品人卫朋
166 0
以山向海
|
18天前
|
UED
产品服务需求分析与概念设计阶段
产品服务需求分析与概念设计阶段
以山向海
35 3
DOKER
|
12月前
|
测试技术 开发者
CMMI之需求管理流程
CMMI之需求管理流程
DOKER
219 0
DOKER
|
12月前
|
项目管理
CMMI流程-培训管理
CMMI流程-培训管理
DOKER
87 0
DOKER
|
12月前
|
程序员 开发者
CMMI-技术评审管理方案
CMMI-技术评审管理方案
DOKER
159 0
韩曙亮
|
项目管理
【软件工程】CMMI 能力成熟度模型集成 ( CMMI 过程管理过程域 | CMMI 项目管理过程域 ) ★
【软件工程】CMMI 能力成熟度模型集成 ( CMMI 过程管理过程域 | CMMI 项目管理过程域 ) ★
韩曙亮
196 0
韩曙亮
【软件工程】CMMI 能力成熟度模型集成 ( CMMI 工程过程域 | CMMI 支持过程域 ) ★
【软件工程】CMMI 能力成熟度模型集成 ( CMMI 工程过程域 | CMMI 支持过程域 ) ★
韩曙亮
125 0
老朱教授
论:CMMI需求管理方法(REQM)
老朱教授
1298 0
技术小甜
|
测试技术 uml 程序员
TDD开发的全过程之分析建模
技术小甜
1303 0
最美的回忆
产品开发人员开发实用流程图
最美的回忆
1214 0

热门文章

最新文章

  • 1
    阿里巴巴宣布 Sentinel 开源,进一步完善 Dubbo 生态(附PPT和视频)
  • 2
    DataV,让拖拖拽拽就可以打造可视化应用
  • 3
    MongoDB World 2016参会全记录
  • 4
    什么才是这个时代最需要的BI人员? —— 阿里云MVP赵玮主题分享【1】
  • 5
    1.9. A fast, light-weight proxy for memcached and redis
  • 6
    linux screen 的基本使用
  • 7
    36句经典英文格言
  • 8
    算法训练 未名湖边的烦恼
  • 9
    Java反射机制的作用
  • 10
    Swift 柯里化(Currying)
  • 1
    ClickHouse(11)ClickHouse合并树MergeTree家族表引擎之SummingMergeTree详细解析
    16
  • 2
    基于IoTDB 平台的学习和研究
    17
  • 3
    BERTopic(三)update topics
    12
  • 4
    Postman工具介绍
    27
  • 5
    关于API安全设计5A原则
    15
  • 6
    JSP 教程 之 JSP 服务器响应 3
    10
  • 7
    JSP 教程 之 JSP 服务器响应 3
    11
  • 8
    JSP 教程 之 JSP 服务器响应 2
    10
  • 9
    JSP 教程 之 JSP 服务器响应 1
    10
  • 10
    父(Super)POM
    10
  • 相关课程

    更多
  • 企业运维监控平台架构设计与实现
  • 大数据分析之企业级网站流量运营分析系统开发实战(第二阶段)
  • 大数据分析之企业级网站流量运营分析系统开发实战(第四阶段)
  • 联邦学习长期教学赛
  • 微服务架构与混沌工程介绍
  • Serverless 架构在软件研发工程实践方面的价值
  • 相关电子书

    更多
  • 团队和工程管理取舍
  • 团队和工程管理的取舍
  • 研发过程中的那些反模式
  • 相关实验场景

    更多
  • 配置流程编排实现根据天气情况播放歌曲
  • 快速开发光伏电站数字孪生运维系统
  • 【企业数据中台交付】数据回刷实验
  • 高效敏捷开发体验
  • 这样做,项目管理简单高效
  • 汽车产线生产管控实操
  • 下一篇
    2024年阿里云免费云服务器及学生云服务器申请教程参考

    深圳SEO优化公司阜阳网站设计模板推荐沈阳设计公司网站佛山至尊标王多少钱邯郸网站搜索优化诸城SEO按效果付费公司大理关键词排名报价无锡百度关键词包年推广多少钱大芬百度网站优化排名报价昌吉企业网站建设公司飞来峡seo哪家好眉山百姓网标王推广公司咸宁百姓网标王推荐宁波如何制作网站哪家好襄樊百度网站优化公司衢州百度竞价包年推广多少钱鄂州网站设计模板哪家好临汾英文网站建设公司思茅网站优化按天计费推荐黄山营销网站多少钱合肥seo哪家好南平百度网站优化排名价格福州网站制作设计报价海南至尊标王价格长春优秀网站设计公司陇南百度网站优化报价营口网站优化排名多少钱信阳百度网站优化排名公司盐城百姓网标王推广朔州seo优化推荐太原企业网站设计多少钱歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

    深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化