我们说软件工程,就是把软件开发的工作工程化,从建筑、工业等领域的工程实践借鉴经验,摆脱随意、不受控制的开发模式,从而使得软件开发的过程和产品质量可控。
软件工程,可以简单地理解为设计的工程化和开发的工业化。
设计的工程化
所谓的设计工程化,就是采用工程化的设计方式,即所有的设计都要结构化、图形化、标准化,以便做到设计能够精确地传递和继承。
其中,设计的结构化,指的是对设计分阶段(概要、详细)和分层(架构、功能、数据)进行设计;设计的图形化,指的是使用UML等工具绘制的流程图、时序图、状态图等图形来展示设计;设计的标准化,指的是遵循设计准则以及使用标准的记录格式等。
设计的工程化为设计复用提供了基础。
开发的工业化
所谓的开发工业化,指的是软件开发可以像工业制造一样,将产品分为不同颗粒度的零部件,然后通过零部件的组合形成不同规格的产品。
例如,我们在分析用户需求时,可以将一个复杂的系统利用分离原理,分解成子系统,再进一步分解成颗粒度更小的功能模块,这样可以使得我们更加清楚地了解系统,理解用户的需求;设计时,可以利用组合原理,将每个颗粒度小的功能模块,按照设计准则,重新组合成子系统和系统。
这就是开发的工业化。
同样,开发的工业化也为软件复用提供了基础。
总之,软件工程离不开设计的工程化和开发的工业化。
这正是:
软件工程有两化,开发不能离开它
设计需要工程化,开发需要工业化
参考书目:大话软件工程:需求分析与软件设计,作者:李鸿君,出版社:清华大学出版社