在【软件需求评估(竞品软件调研)】的基础上,我们开始要对产品的软件模块进行划分,从如下几个角度来谈一下模块划分
一、模块划分的目的
模块划分的目的,本质上是分解系统的复杂度。如果一个整体系统直接开发,那么这个整体的复杂度较高,个人或者团队难以完成。
同时,对系统进行模块划分,则可以将不同的模块交由不同的工程师负责,便于团队开发。
那么,模块划分要做到什么粒度呢?是粗一点好,还是越细越好呢?
我觉得模块划分的粒度要适中(好中庸的想法,似乎是万能标准答案),适中到某一个粒度,此时模块的复杂度可以让工程师接受,工程师有能力完成模块。
二、模块划分的方法
划分的方法有很多,我现在使用得比较多的有如下几种方法:
1.场景划分
嵌入式设备可以用于各种场景下面,那么可以根据场景对模块进行划分
2.软件层次划分
软件分层进行开发,像操作系统、网络协议都是分层。对于我们的系统而言,也是可以分层进行划分
3.开发阶段划分
在开发过程中,早期重点在于功能的开发,中期后期重点在性能优化。因此,可以通过开发阶段来对模块进行划分
三、场景划分
对于嵌入式软件而言,涉及嵌入式产品的生产方面,因此一般会分成两种模式,分别是:
1.用户模式
2.产测模式
四、软件层次划分
对于用户模式而言,我一般会再分成三种类型,如下:
1.驱动层
2.系统层
3.应用层
五、开发阶段划分
对于整个开发阶段,可以分成前期、中期、后期。在每个周期里面,软件的重点不一样
1.前期:功能开发
2.中期:性能优化
3.后期:修改bug&证明思维的自测
六、查漏补缺保证完整性
在分析完需求之后,整个系统会清楚很多,但还是会有很多不清楚的地方,所以这次的模块划分是初步的,后续要持续进行。
只有每隔一段时间(建议以周为单位)进行模块划分回顾,才能保证查漏补缺,保证整个系统划分模块的完整性。
七、智能音箱项目的模块划分
划分的情况如下图所示