背景
你的履历上有参与过完整的项目,那么不管以后走项目管理或者技术路线相信工作中能少很多坑。如果你已经准备向项目管理方向发起挑战,希望能有一点帮助,大家一起共勉。
完整的项目周期从销售+售前拿下项目,再到产品进行项目的需求调研、原型设计,再到开发介入后的概要设计、详细设计、开发阶段,最后再到上线前交付验证。这中间资源协调、人员管理、架构选型等等等我只是看客,因为我还不是项目经理,只是这条路上刷经验的小白。所以我只能分享我具体参与的部分。
概要设计的那些坑如何避免
概要设计也称总体设计,其基本目标是能够针对软件需求分析中提出的一系列软件问题, 概要地回答问题如何解决。例如,软件系统将采用什么样的体系构架、需要创建哪些功能模块、 模块之间的关系如何、数据结构如何?软件系统需要什么样的网络环境提供支持、需要采用什 么类型的后台数据库等。 应该说,软件概要设计是软件开发过程中一个非常重要的阶段。
概要设计基本过程如图 5-1 所示,它主要包括三个方面的设计。首先是系统构架设计,用 于定义组成系统的子系统,以及对子系统的控制、子系统之间的通信和数据环境等;然后是软 件结构和数据结构的设计,用于定义构造子系统的功能模块、模块接口、模块之间的调用与返 回关系,以及数据结构、数据库结构等。
制定规范
具有一定规模的软件项目总是需要通过团队形式实施开发,所以制定在设计时应该共同遵守的规范,以便协调与规范团队内各成员的工作。不然后期形成的文档格式五花八门,再去修改格式将是痛苦的过程,也显得不专业。
概要设计时需要制定的规范或标准包括:
a.需要采用的管理规则,例如操作流程、交流方式、工作纪律等。
b.设计文档的编制标准,包括文档体系、文档格式、图表样式等。
c.信息编码形式,硬件、操作系统的接口规约,命名规则等。
d.设计目标、设计原则。
系统构架设计
系统构架设计就是根据系统的需求框架,确定系统的基本结构,以获得有关系统创建的总 体方案。其主要设计内容包括:
a.根据系统业务需求,将系统分解成诸多具有独立任务的子系统。
b.分析子系统之间的通信,确定子系统的外部接口。
c.分析系统的应用特点、技术特点以及项目资金情况,确定系统的硬件环境、软件环境、 网络环境和数据环境等。
d.根据系统整体逻辑构造与应用需要,对系统进行整体物理部署与优化。 很显然,当系统构架被设计完成之后,软件项目就可按每个具有独立工作特征的子系统为 单位进行任务分解了,由此可以将一个大的软件项目分解成许多小的软件子项目。
软件结构设计
软件结构设计是在系统构架确定以后,对组成系统的各个子系统的结构设计。例如,将系统进一步分解为诸多功能模块,并考虑如何通过这些模块来构造软件。
软件结构设计主要内容包括:
a.确定构造子系统的模块元素。
b.根据软件需求定义每个模块的功能。
c.定义模块接口与设计模块接口数据结构。
d.确定模块之间的调用与返回关系。
e.评估软件结构质量,进行结构优化
公共数据结构设计
概要设计中还需要确定那些将被许多模块共同使用的公共数据的构造。例如,公共变量、 数据文件以及数据库中数据等,可以将这些数据看作为系统的公共数据环境。 对公共数据的设计包括:
a.公共数据变量的数据结构与作用范围。
b.输入、输出文件的结构。
c.数据库中的表结构、视图结构以及数据完整性等。
但是数据结构设计阶段往往会发现一些需求调用中的不足进而衍生出更多的需求来。这一点前期要注意。因为需求频繁变更将导致后续设计的一系列变化,所以期间要有人专门的更近和进行整体设计的把控,避免最后的结果达不到客户的要求。