The only way to do great work is to love what you do. If you haven't found it yet, keep looking. Don't settle.
随着信息化和数字化的持续推进,越来越多企业和人员会涉及到软件开发业务中。了解软件设计流程成为了IT和OT、业务之间有效协作的关键基础背景知识。
本文旨在让产业界的朋友对软件设计的基本流程有所了解,一是鉴别合作方的业务能力,二是便于和合作方有效协作。
好的软件设计需要三个阶段递进,我们先讲第一个阶段:静态视角或者蓝图视角。
很多软件设计是从功能讨论开始,期望有亮点、有特色,结果很有可能是可汇报,不可使用。还有一些软件设计是从对标参考对象开始,期望有更多的功能,结果很有可能是功能比哪个都多,但员工抱怨不断。第三类常见的软件设计着手点是单个问题的拆解,结果很有可能是某个上帝可以正常使用,但在推广时各方阻力很大。建议软件设计先从人入手。
用一句话(10 个字以内)描述每个工作。然后描述每个工作的流程,流程中的节点具有几个特性:a、有外界的信息输入;b、向其角色、系统输出信息、文件;c、与其他角色、系统有交互。
这个环节即使选做,也是必做。选做是因为变革需要契机,有时只能把一步拆成两步,先把线下搬到线上,之后再逐渐优化。必做是这是一次难得机会,有可能让既有的工作有质的飞跃。
此时的功能需求相对清晰,将耦合性强的功能组合到一起,将独立性强的功能隔离开。整体思路与企业组织设计的思路相似。低耦合高内聚是一种追求和目标。
这时要考虑软件工程的技术问题,属于纯软件的技术领域。包括微服务、队列、数据库、缓存、容器等等软件成型组件都会被考虑进来,一起为系统添砖加瓦。
将软件与实物部署相结合,包括网络规划、服务器规划、数据库规划、容灾备份等等。
至此,软件的静态视角设计完成,我们就拥有了软件的宏伟蓝图,就可以撸起袖子开发了。产品、UI、前端、后端、硬件、质控、质保等等一群人不亦乐乎的忙乎起来。
在获得了软件蓝图之后,还需要为软件降生而设计。也就是要为软件交付、部署、上线等进行设计。包括但不限于要解决的问题如下:
只有这些问题得到提前设计与做好应对设计和开发,才不至于让软件姗姗来迟,甚至错过了降生的机会。
软件所处的环境是持续变化的。所以行业内一般认为一套业务系统用几年被淘汰掉是正常的。为什么?因为之前交付的软件是静态的!
为了让软件发展,需要让它能像孩子一样,不断了解世界,不断学习,不断改造升级自己,才能跟上企业的发展。需要做的设计包括但不限于:
好的软件设计刚开始会感觉有些慢。因为一开始并没有噼里啪啦的敲代码。好的软件设计在开始阶段会不断深入谈论业务。因为失之毫厘谬以千里。软件后期修改的成本极高,包括人力成本、工期延期的风险、质量下滑的成本等。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。