本人初学者,所写都为自己领悟,以方便以后参考;若有不对之处,还请各位大佬指出:
软件设计可分为八个大的步骤:
1, 确认项目工作方式 :
项目有大有小,大的如:淘宝、京东这样的电商网站;小的如:淘宝系统中某一个功能模块,如登录,都可以认为是一个项目;那么很明显淘宝和登录有不一样的工作方式,在这一个步骤时,就是要确认项目的整体工作流程,并以此为基础进行分解,最后确认项目结构和软件机构;
如淘宝,整体的工作方式就是:浏览器发起一个连接,这个连接对应淘宝提供的应用服务,淘宝处理这个服务,并返回;
2, 分解项目 :
剔除项目整个流程中不需要关注的部分,只留下需要做的项目;或者将项目分成几个或多个子项目,如游戏项目的开发,需要开发客户端和服务器端等多个项目;
3, 确认应用提供服务:
根据项目需要,确认该项目或系统需要向用户提供的服务;
如一个web项目,可能需要提供一下服务:
登录服务、用户信息管理服务、会员服务、好友服务、聊天服务等....
4, 分解应用服务需要的支撑功能:
将提供的应用服务分解到程序阶段,即:程序需要提供怎么样的功能,才能支撑起那样一个应用的服务;
5, 确认应用服务具体流程
确定一个应用服务具体的流程;
6, 提取所有应用服务中所有相同功能
将所有应用服务中相同的程序功能提取出来,封装到一起;
7, 确认软件系统整体结构
将之前的应用服务提取的公共功能组装在一起,组合成系统的整体结构;
8, 确认项目整体结构
依据系统的整体结构和项目的整体工作方式,将项目分解为不同的功能层级,即可完成项目整体结构图;
每一个步骤具体实现,示例:
1, 首先确定系统和外部用户整体的交流方式;
如一个网站系统用户交流流程:
2, 分解系统为服务端和客户端为两个系统,如上述网页浏览,或该项目,则客户端系统是已存在或不需要再设计和重做的;这样就只需要关注服务端系统;
3, 分解项目需求,确认系统提供的应用服务;
如一个web项目基本功能服务:
4, 分解每一个应用服务对应支持功能:
如用户登录服务:
5, 应用服务功能支持的流程图设计:
如登录服务的流程图:
接收数据 ---- 解密数据 ----- 解码数据 ----- 登录请求 -----返回登录页面 ---- 登录提交 ----- 检验码检测 ------- 用户登录数据异常过滤 ------ 用户判断密码判断 -------- 登录成功管理业务服务 ------ 日志记录 ------ 登录返回,进入主页;
6, 应用服务支持功能相同功能提取;
如web服务中,数据的接收加解密、编解码等功能,可以使用现有的服务框架,如tomcat、nginx、jboss等;
如日志记录功能:是否可以使用spring 或者aspectj的面向切面设计,进行统一的处理等,当然这是可行的;
7, 系统整体结构组装,即将每一个应用服务相同部分提取,设计为相同部分,将不同部分封装到各种应用的内部;
如上述web服务:
8 , 提取软件结构图公共部分,绘制项目结构图;
如上述web项目: