前言
我从本科生阶段开始了软件编码的工作,最开始的编码主要是解决一些问题,涉及到的是算法的实现。主要采用的算法有冒泡排序,快速排序,HASH和贪心算法等。那时候没有架构设计的这个思维,基本上是以数据输入,算法,运算后的数据输出这个套路玩。后面开始接触商业软件开发的时候,逐渐开始进行方案研究和设计。这时候会考虑方案的可行性,从业务流和数据流方面进行模块的设计编写。随着参与的软件规模越来越庞大,复杂度和要求越来越高,对技术选型、架构设计的关注越来越多,本文就是这些年做技术设计的总结。
正文
技术方案流程
通常情况下,技术解决方案整体流程图如下:

在项目计划和需求规格主体明确的情况下,就需要制定技术方案了,一般情况下根据历史数据和当下成熟的技术进行多个技术方案的策划,然后从中选择适合本项目的技术方案。选定技术方案后,就需要实施架构设计,同时组织架构设计中的模块负责人进行demo的验证。demo验证通过后,就可以开始功能的迭代了。
制定技术方案的选择准则
在项目计划和需求规格主体明确的情况下,就需要制定方案了,一般情况下应根据历史数据和当下成熟的技术进行多个技术方案的策划,然后从中选择适合本项目的技术方案。
我认为选择技术设计方案有如下要素需要进行通盘的考量。
- 客户需求要素
- 成本进度
- 功能实现
- 性能
- 界面/外观
- 公司战略需求要素
- 维护客户关系
- 满足客户需求
- 技术创新
- 节约成本
- 加快进度
- 复用率最大化
- 培养新人
- 确定的项目最佳技术方案的选择准则为
- 成本因素优先
- 成熟产品优先
- 考虑提高开发速度
- 开源组件选择的时候同时需要考虑开源社区的活跃度、支持度
- 新技术的学习成本
并非所有项目都要求提供多个技术解决方案,但为保证项目质量,大型项目应至少提供两个以上技术解决方案。在实际项目的实施中根据项目情况,提供一个技术解决方案也是比较常见的,此时需要能对方案中可能存在的风险进行规避和预警。
提出解决方案
分析本项目的项目计划、需求规格说明,参考组织财富库中的资产,设计出多个侯选的技术解决方案。设计应基于成本、进度、技术性能、生命周期、产品运作条件、风险、需求和技术变化等多个因素来进行,开发出的解决方案将作为后续设计工作的基础,必须保证可行性与可操作性。
并非所有项目都要求提供多个技术解决方案,但为保证项目质量,大型项目应至少提供两个以上技术解决方案,将解决方案写入《技术方案书》。
在实际项目的实施中根据项目情况,提供一个技术解决方案也是比较常见的,此时需要能对方案中可能存在的风险进行规避和预警。
选择确定技术解决方案
项目经理、设计组成员、评审组成员评估各候选的技术解决方案,根据技术方案选择准则,选择本项目的技术解决方案。
- 根据技术方案选择准则,评估可选的解决方案,识别出各解决方案能满足的需求和不能解决的问题,以及由该解决方案衍生出的需求和问题
- 针对评估结果,选择满足需求“最好”的一组解决方案
- 基于选定的组织方案,分析本项目中需购买、重用、开发的需求组件
- 记录评估过程及方案选择理由,完成决策分析报告,将该报告与侯选的解决方案、选定的解决方案共同纳入配置管理。
结束
好了,今天暂时更到这,欢迎大家阅读、批评和指正,下回再见。