软件设计---软件开发新手应该需要了解的内容
可以借鉴的设计文档 https://wenku.baidu.com/view/0b7d31c78bd63186bcebbcbf.html?rec_flag=default
要养成职业化能力的意识。
软件开发阶段一般是包括需求分析、总体分析、概要和详细设计、编码、测试、安装及维护。
每一个人对每一个阶段的理解不同以及做法不同。
一、关注三阶段、五视图概念
一定要理解三阶段、五视图,尽管在实际开发中并不会全部使用到,也要有对应的概念。
五视图:需求、逻辑、开发、部署、数据
二、软件设计基础
技术观点上来看软件设计应该包括 结构设计(模块之间的关系)、数据设计(实体关系设计)、接口设计(软件内部、软件与其他的软件如何通信)、过程设计(功能流程图)
1. 结构设计: 可以画系统功能图、模块图、用例图 (概要设计中)
2. 数据设计: 数据库表的创建,表之间的完整性约束、表的索引、视图等创建(详细设计)
3. 接口设计:入参、出参(可以为概要设计也可以为详细设计?但是需要画出什么图呢)
4. 过程设计:业务流程图,针对模块的过程设计,也可以针对功能级的过程设计,主要绘制复杂的重要的模块和功能。
在完成概要设计文档之后,应该需要对其进行评审。
三、 概要设计
我现在理解的概要设计是简单明了地对这个系统进行简单解说,可以从不同的维度来说明。给项目经理或者给客户看的文档,说我们大概做了啥,有什么功能等。
1)系统的部署环境
2)系统所使用到的相关技术
3)系统需要和什么第三方系统进行集成
4)系统的功能结构图(对于功能结构图,需要有深度、广度、扇出、扇入)的概念
这里的功能也就是模块,在模块划分的时候要确保可以做到高内聚低耦合,团队可以对这个模块进行独立开发
以及总体的流程图
如下图所示
5)系统的模块之间的数据交换
四、详细设计
我觉得在这一步,应该针对与模块进行设计,也就是xx模块详细设计 然后又xx模块和xx模块交互详细设计等文档的生成。
主要的话应该是类图的设计、我觉得做到类图的设计这一步就很ok了,接口的设计、类图的设计、以及接口的入参和出参,接口的功能的描述。
这些类图可以使用设计模式等设计,应可能地设计更加容易扩展的程序。
1) 数据库设计(包括index设计)
2) 类图接口交互设计
3) 模块之间交互设计
4)模块时序图 模块之间的类的交互图,也就是行为模型sequence图
5)系统包流程图
有些模式是可以独立,有些模式是需要交互的
可以的话,在类图设计的时候,可以让对应模块编码开发人员给出对应类图的属性,画图类图的属性也是非常好的。
在类图设计中,应该还需要写类图的流程图
在开发阶段中,是否应该也需要一些文档的产生,或者说是不是有其他的高效的方式呢?
在设计完成之后,我觉得应该对非功能性要求在做一些设计和思考,思考我们是否可以做好安全性(如数据库冗余操作),如并发安全等。
提高开发效率,提高软件质量是步入职业化的第一步,也是最重要的一步。
其中还是有很多具体的细节要求,如数据库设计,应该要设计出数据字典,索引等问题
应该在系统上涉及到的一些词汇,可以生成一个词汇表信息。