概要设计思路
来源:互联网 发布:浙大软件学院研究生 编辑:程序博客网 时间:2024/04/27 13:05
概要设计文档:文档内的每个结构是对同一事物的不通侧重
基本流程:实现的流程
整体框图:划分为多少模块,模块间如何协作
时序图:不通类协作的时机与方法
1. 确定要实现哪些功能,一个一个列出;
有功能点才有目标,不然乱作一通
2. 搜集资料,分析实现这些功能的方法,给出流程,给出方案,分析可行性
较详细的原理和可行性分析
3. 确定方案对外提供的接口
接口方便同步开发,多人团队可以有接口可用
1)完成任务,是否需要外部数据,也就是是否要输入参数
2) 该操作能否保证成功,能保证成功就不用返回值了,搞个void
3)是否需要返回数据给调用方
4)肯定成功,不需要参数,那给函数取个名字就行
3.1接口的定义
提供接口给外部使用
内部实现需要的关键函数接口,内部使用
3.2 接口直接的关系
接口需要发送处理后的信息,因此需要提供错误值,入参
4. 模块内部的设计
1)设计内部交互的数据格式
2)设计自己用的关键函数
a)C++
完成模块间交互信息的要求,对类的内部进行设计,需要哪些成员函数来实现.
b)C
设计函数接口,或函数指针接口
4)画出序列图,搭好整个框架,以此框架为模板,编码(函数实现放空)
5)实现内部函数
举例:
完成自动登陆
1) 如果不知道怎么做,或者思路到一半卡壳了,甚至完全没思路就要做分析了。
2) 首先,明确要完成的功能——完成用户名密码自动登陆。
3) 然后,需要用到的资源、数据、信息——用户名,密码
简单讲,就是完成登陆的函数是否需要输入参数 int done_work(int num, void *data);
4) 能否在同一个进程或线程内完成操作,如果完成登陆操作不在同一个进程或线程,那就涉及到多进程或多线程。
单进程或单线程则结束。
5) 那需要传递数据了,使用共享内存或者管道之类的。
6) 同步:传递数据的时候是否需要同步,不然接收方都不知道数据来了没,发送方也不知道发送方不知道何时可以发送数据
7) 比如需要继承系统给的接口完成类,并做成DLL,那就实现该类。
a) DLL可能被系统加载,你还是可以跟DLL通信的
b)实现类的时候,并不是只实现接口函数,完全可以定义私有函数完成诸如a)的功能
end)
8) 多程通信
设置事件等同步异步方式, 不能只考虑通信的双方都存在的情况,
要是其中一方不存在,启动后是否会受影响
A B
A =
= B
=============================================
TIPS
=============================================
5.
需求时刻在变!!!你不能够把所有的情况都考虑到,但是你能够考虑到基本的情况,也就是必须提供的
设计的时候,并不能一次性定下所有的策略,比如加密用RC4或RSA等,但是基础的数据大部分是可以确定的。
6. 模块间的设计原则
1)做架构设计时,只关注模块的输入与输出,至于模块内部如何处理,不用理会
2)确定模块间的通信方式,TCP或者IPC
7. 针对IP,端口等默认的消息,
设计成由一个配置中心统一管理且可配置,需要数据则从该配置中心获取
8. 消息的规则
8.1.数据接收方定义信息的内容。
8.2. 消息应是一个问题,或者一个命令,但不能两者皆有。
1)问题类消息:要求对象提供一些信息,所以总是有回应。问题类消息不改变对象的属性。
例子:现在几点?你有几个孩子?
2)命令类消息:告诉对象执行某个操作,不需要回应。命令改变对象的属性
例子:电脑关机
//待讨论
3)通知:消息给对象,对象不返回数据也不执行操作。
4)问题类消息不能是多个问题的集合,或者多个命令的集合,或者问题和命令的集合,或1个命令
5) 合并多余的消息
认证请求->认证响应(成功或失败)->端口请求->端口响应(port)
认证请求->认证响应(成功+有效port 或 失败+无效port)
8.3协作过程中(通过socket)传递命令和数据
结构体转为字节流
9. 图表
软件结构体,展现系统或模块内由哪些组件组成
序列图,组件是交互的顺序与操作
10.一个工作无法直接做完,需要分步完成,则引入状态state
比如更新后,需要重启完成更新,最后校验:UPDATE_BEGIN, UPDATE_REBOOT_CHECK,UPDATE_FINISH
11. 设计交互协议时,不能够使用宽字节
基本流程:实现的流程
整体框图:划分为多少模块,模块间如何协作
时序图:不通类协作的时机与方法
1. 确定要实现哪些功能,一个一个列出;
有功能点才有目标,不然乱作一通
2. 搜集资料,分析实现这些功能的方法,给出流程,给出方案,分析可行性
较详细的原理和可行性分析
3. 确定方案对外提供的接口
接口方便同步开发,多人团队可以有接口可用
1)完成任务,是否需要外部数据,也就是是否要输入参数
- void done_work(int num)
- void done_work(int num)
- void done_work(int num, int *out)
- void done_work()
3.1接口的定义
提供接口给外部使用
内部实现需要的关键函数接口,内部使用
3.2 接口直接的关系
接口需要发送处理后的信息,因此需要提供错误值,入参
- void send_result(int result);
4. 模块内部的设计
1)设计内部交互的数据格式
2)设计自己用的关键函数
a)C++
完成模块间交互信息的要求,对类的内部进行设计,需要哪些成员函数来实现.
b)C
设计函数接口,或函数指针接口
4)画出序列图,搭好整个框架,以此框架为模板,编码(函数实现放空)
5)实现内部函数
举例:
完成自动登陆
1) 如果不知道怎么做,或者思路到一半卡壳了,甚至完全没思路就要做分析了。
2) 首先,明确要完成的功能——完成用户名密码自动登陆。
3) 然后,需要用到的资源、数据、信息——用户名,密码
简单讲,就是完成登陆的函数是否需要输入参数 int done_work(int num, void *data);
4) 能否在同一个进程或线程内完成操作,如果完成登陆操作不在同一个进程或线程,那就涉及到多进程或多线程。
单进程或单线程则结束。
5) 那需要传递数据了,使用共享内存或者管道之类的。
6) 同步:传递数据的时候是否需要同步,不然接收方都不知道数据来了没,发送方也不知道发送方不知道何时可以发送数据
- 发送方 接收方
- ———— ————
- - <- 准备好了
- 发送数据 -> -
- - 处理好了
- - <- 发送结果
a) DLL可能被系统加载,你还是可以跟DLL通信的
b)实现类的时候,并不是只实现接口函数,完全可以定义私有函数完成诸如a)的功能
end)
8) 多程通信
设置事件等同步异步方式, 不能只考虑通信的双方都存在的情况,
要是其中一方不存在,启动后是否会受影响
A B
A =
= B
=============================================
TIPS
=============================================
5.
需求时刻在变!!!你不能够把所有的情况都考虑到,但是你能够考虑到基本的情况,也就是必须提供的
设计的时候,并不能一次性定下所有的策略,比如加密用RC4或RSA等,但是基础的数据大部分是可以确定的。
- 1. 加密数据及认证的时候,可以保留字段
- struct client_managercenter_datastu {
- int magic;
- int length;
- void *data;
- int reverse[4]; //保留字段,用于认证加密
- }
1)做架构设计时,只关注模块的输入与输出,至于模块内部如何处理,不用理会
2)确定模块间的通信方式,TCP或者IPC
7. 针对IP,端口等默认的消息,
设计成由一个配置中心统一管理且可配置,需要数据则从该配置中心获取
8. 消息的规则
8.1.数据接收方定义信息的内容。
8.2. 消息应是一个问题,或者一个命令,但不能两者皆有。
1)问题类消息:要求对象提供一些信息,所以总是有回应。问题类消息不改变对象的属性。
例子:现在几点?你有几个孩子?
2)命令类消息:告诉对象执行某个操作,不需要回应。命令改变对象的属性
例子:电脑关机
//待讨论
3)通知:消息给对象,对象不返回数据也不执行操作。
4)问题类消息不能是多个问题的集合,或者多个命令的集合,或者问题和命令的集合,或1个命令
5) 合并多余的消息
认证请求->认证响应(成功或失败)->端口请求->端口响应(port)
认证请求->认证响应(成功+有效port 或 失败+无效port)
8.3协作过程中(通过socket)传递命令和数据
结构体转为字节流
9. 图表
软件结构体,展现系统或模块内由哪些组件组成
序列图,组件是交互的顺序与操作
10.一个工作无法直接做完,需要分步完成,则引入状态state
比如更新后,需要重启完成更新,最后校验:UPDATE_BEGIN, UPDATE_REBOOT_CHECK,UPDATE_FINISH
11. 设计交互协议时,不能够使用宽字节
- struct protocol {
- WCHAR magic[32];//error
- int major;
- int minor;
- }
0
上一篇:windows编程的偏门概念: 会话(Session), 窗口站(Window Station), 桌面
下一篇:彻底了解Windows XP操作系统登录类型
相关热门文章
- MyBatis 入门(四)--链表查询...
- APP开发流程,你知道多少...
- app开发需要多少钱
- iredmail迁移纪实
- 欧雷蒙智能车衣靓丽如新...
- socket中的短连接与长连接,心...
- Haproxy、Keepalived双主高可...
- Tomcat的性能与最大并发(1000)...
- Nginx深入详解之日志
- socket编程的同步、异步与阻塞...
- linux dhcp peizhi roc
- 关于Unix文件的软链接
- 求教这个命令什么意思,我是新...
- sed -e "/grep/d" 是什么意思...
- 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
0 0
- 概要设计思路
- 概要设计
- 概要设计
- 概要设计
- 概要设计
- 概要设计
- 概要设计
- 概要设计
- 概要设计
- 设计概要
- 概要设计
- 概要设计说明书
- 概要设计要求
- 设计模式概要
- 概要设计说明书
- 概要设计模版
- 概要设计说明书
- 概要设计说明书模板
- 轻量级分布式RPC框架实现(续)
- HashMap集合
- 成功通过http代理来使用github
- linux命令源码的查看
- [记录]stack(栈)和heap(堆)的不同
- 概要设计思路
- 爱自己
- 工作小结
- Dianping CAT 安装说明文档
- 解决问题模板
- 分享一个好用的android新手引导
- 设计模式之原型模式
- 根据店铺号取利润中心和成本中心 050-080
- 单片机的模块化编程
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
鱼山到海丰客轮时刻表
松花江客轮与运沙船相撞
北海至海口客轮时刻及票价
花下客by灯边拥
宣宣影视
宣
演员就位再宣阵容
宣组词
张赫宣
宣璐
尹晓楠景易宣全文免费
宣威银集赛鸽中心
宣宣影视2018
宣拼音
宣仪
宣伟油漆
宣伟
宣伟涂料有限公司
宣伟涂料怎么样
宣伟漆
宣传海报
消防宣传日
宣传标语
宣传
戒烟宣传
消防宣传
宣传稿
宪法宣传日
法制宣传日
法制宣传
宣传稿格式
宪法宣传
宣传条例
宣传稿范文
宣传方式
宣传英语
宣传 英语
宣传英文
宣传方法
宣传活动
宣传图片