软件的设计步骤是描述软件实现的过程,与软件的总体开发过程模型并不矛盾。
其中,总体设计过程中的功能分解,需要先进行结构(非机械结构,指软件功能模块)设计,再进行过程(模块间的变换)设计。好的模块化设计能够显著的降低软件的复杂度(架构师的作用),即便是结构/功能模块层面也需要符合KISS原则,尽量降低模块的复杂度。另外不是模块越小越好(导致接口会越多),而是最少的模块最多的重用最好(问题类似于数学上的因式分解—获取公因数)。
模块化也有助于软件开发工程的组织管理,一个复杂的大型程序可以由许多程序员分工编写不同的模块,并且可以进一步分配技术熟练的程序员编写困难的模块。
对于工业自动化软件的开发而言,先将设备功能从设备的硬件(包括机械,液压,电气等)和软件上进行划分(有些功能非常明显的属于有硬件/软件实现,有些功能并不明显,需要总设计师进行平衡),再将功能间的状态变换通过软件实现。对于软件而言,还需要将软件拆分成上位机HMI和PLC的功能,再进行过程设计。详见机电一体化系统的组成。
参考资料:
- 《软件工程导论》-张海藩(第六版)