在阅读《构建之法》之前,我所认为的软件就是通过c,c++等语言编程,制作出的一个能满足人们操作需求的一些代码,认为一个好的软件工程师,就是能够在很短的时间之内,最快的根据需求写出几段代码程序的人,认为一个完美的软件就是能够满足人们的要求永远都不出bug。
而邹欣老师在《构建之法》绪论中提到,软件=程序+软件工程,程序是软件的基础,而软件工程师吧系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。简而言之,就是将软件开发、运营和维护的流程进行系统统一化,从而提高软件开发的速度,减少开发周期,提升软件质量。而一个好的软件工程师,出了需要具备良好的编写程序的能力外,还需要有软件工程的意识。
邹欣老师还提到了软件的特殊性质:复杂性、不可见性、易变性、服从性和非连续性。这些性质让“做一个好软件”变得很难。对于程序的bug,有一个软件行业的著名笑话——这不是缺陷,这是 一个功能!道出了bug的本质:软件的行为与用户的期望值不一样。也许现在的bug可能是以后的某种功能,或者曾近是某种功能。因此,软件很少有完美的,但是软件工程师就是在挑战完美,让软件更加的可靠,用户体验更加的满意,软件的维护更加的容易。
对于这一点,我认为软件工程和机械工程有很大的相似之处——追求完美!机械加工之中工件的表面的光滑程度永远都可以更进一步,工件内部或多或少的都会存在着加工残余的应力,这些往往和理想情况相冲突,最终使得产品的功能出现缺陷和偏差。因此,机械工程追求精准,减小误差是一直以来的目标。
在机电控制方面,机械和软件结合得十分紧密。机械负责传动和执行,电力负责提供动力,而软件则负责控制。因此,机械学生很有必要学习软件工程,了解了软件工程的开发模式和编写思维,能够使我们设计的机械更符合控制需求,而拥有机械工程能力的学生也更容易理解机械的运行方式利于软件控制