preparation may quicken the process
概要设计
什么是概要设计
确定软件系统的总体布局,各个子模块的功能和模块间的关系,与外部系统的关系,选择的技术路线。有一些研究与论证性的内容。并输出《软件概要设计说明书》。搞清楚“总体实现方案”。概要设计是用来评价软件整体设计可行性的重要支撑标准,由于每个模块这个阶段已经开始确定,可以很好的检查已有的模块是否已经足够完整,还可以用于评估工作量以及知道下一步的主要计划,它是一个纲领。
注意要点
- 用来评价总体设计的可行性。
- 用来检查设计的模块是否完整,保证每一个功能都有对应的模块来实现。
- 用来评估开发工作量、指导开发计划(在不写详细设计的情况下)。
- 概要设计阶段过于重视业务流程是个误区。
文档结构
1 引言
1.1 编写目的
本阶段完成系统的大致设计并明确系统的数据结构与软件结构。本概要设计说明书的目的就是进一步细化软件设计阶段得出的软件概貌,把它加工成在程序细节上非常接近与源程序开发的软件表示。
1.2 预期读者
开发人员、测试人员、分析人员
1.3 项目背景
1.3.1 相关单位
- 任务提出者:xxx人员
- 开发者:xxx
- 使用者:
1.4 定义
列出本文档中所用到的专门术语的定义和缩写词的原意
1.5 参考资料
2 总体设计
2.1 设计前提和约束条件
- 系统用户登陆通过与认证系统实名认证;
- 有合理的通知功能;
- 遵循项目开发文档所制定的规范;
- 符合系统权限要求。
2.2 基本设计思想
写出软件的基本设计思路,突出软件的优点,一个例子如下:
1 | 建设项目信息管理涉及业主方、设计单位、施工单位、运营管理单位、政府部门等众多参与方,信息量巨大,信息交换复杂。而传统的信息管理方式凌乱无序,信息利用率低。 |
2.3 总体结构及概要
概述软件总体结构,或者放一个业务流程图,并做简要介绍
2.4 功能分配
表明各项功能与程序结构及模块的关系
3 模块概要设计
模块设计,可以写以下内容:
- 模块描述:说明哪些模块实现了哪些功能;
- 模块层次结构:可以使用某个视角的软件框架图来表达;
- 模块间的关系:模块间依赖关系的描述,通信机制描述;
- 处理方式设计:说一些满足功能和性能的算法;
3.1 模块描述
模块名称 | 功能 | 备注 |
---|---|---|
xxx模块 | 实现自动路径规划算法 | |
3.2 模块层次结构及关系
4 接口设计
4.1 外部接口
包括软件接口及硬件接口。其中用户界面应当给出总体设计框图及开发框架;软件接口应当给出一些输入输出及通信接口,例如采用Visual C#提供与SQL Server2000连接进行访问数据库的操作等;硬件接口应给出输入/输出所需的软硬件环境等。
4.2 内部接口
模块之间的接口,确定模块间的连接是怎样的,同时确定模块间信息传递方式,例如采用函数调用、参数传递、返回值的方式。具体参数的结构将在数据结构设计的内容中说明。接口传递的信息将是以数据结构封装了的数据,以参数传递或返回值的形式在各模块间传输。
4.3 用户接口
用户接口是系统与用户进行信息交换的媒介,一般指软件接口,包括命令接口、程序接口和图形接口
5 运行设计
在运行设计中,我们主要考虑运行时模块的组合、控制以及时间
5.1 运行模块组合
在用户选择
范例——软件注册机程序
引言
编写目的
本概要设计说明书的目的就是进一步细化软件注册机程序设计阶段得出的软件概貌,把它加工成在程序细节上非常接近与源程序开发的软件表示。
预期读者
开发人员、测试人员、分析人员
项目背景
相关单位
- 任务提出者:xxx人员
- 开发者:xxx
- 使用者:
定义
参考资料
总体设计
总体结构及概要
本系统采用三层架构进行设计,层与层之间采用C++接口进行衔接,降低了模块耦合度,并使用工厂模式实现对不同需求对应接口的不同实现,并在每一层功能完成后进行相应层的单元测试,对开发过程中避免了很多不必要的麻烦,节约了开发时间。本系统在开发过程中实现了国际化框架,可以识别不同的浏览器语言相应的显示对应语言的内容,由于开发时间限制,语言包只提供了缺省的中文语言包。
表示层:该系统具有产品注册和注册码生成两个会话界面,对用户输入的注册信息进行了验证,能够有效约束不符合条件的验证信息,及时在屏幕上反馈给用户,只对符合要求的注册信息提交给下层业务处理层,保证了业务处理层接收到的表单信息的纯净性。
业务逻辑层:对本系统需要提供的功能进行封装和分类,分成RegisterService和RegisterCodeService两个字系统。
数据访问层:数据访问层对PC的注册表进行访问,从而实现注册功能。
模块设计
模块描述
模块名称 | 功能 | 备注 |
---|---|---|
UI模块 | 负责与用户进行交互,根据用户输入的功能,调用不同的模块完成不同的业务逻辑,包括产品注册码生成、产品注册以及软件试用模块 | |
产品注册模块 | 负责实现软件注册功能,通过用户提供的注册码,调用注册表管理模块,实现注册表注册 | |
注册码生成模块 | 根据用户输入的用户名,生成有效的注册码 | |
注册表管理模块 | 负责用户注册表的生成及管理功能 | |
软件试用管理模块 | 负责软件试用的管理 |
接口设计
外部接口
软件接口
系统使用Qt库中的QSetting实现对注册表的访问
硬件接口
输入:采用键盘、鼠标及Qt/C++中标准输入进行输入处理。
输出:采用Qt/C++中标准输出或其他输出设备对输出进行处理
内部接口
UI模块
产品注册模块
接口名称 | 输入及输入格式 | 输出及输出格式 | 功能 | 属性 |
---|---|---|---|---|
GetCPUID() | null | CPU ID:string | 获得CPU ID号码 | public |
GetDiskID() | null | Disk ID:string | 获得磁盘 ID号码 | public |
注册码生成模块
用户接口
用户图形界面
用户图形界面总体设计,用户图形界面使用Qt Quick实现UI设计
运行设计
客户在注册码生成器UI模块中输入用户名,由注册码生成模块产生相应的注册码,并写入注册码文件中。
用户在注册UI模块中选择注册或试用产品,如选择注册,则调用产品注册模块,通过用户提供的注册码,调用注册表管理模块,实现注册功能;如选择试用,则调用软件试用模块,软件试用模块调用注册表管理模块,根据注册表中的剩余使用次数,决定是否允许用户试用。