第三次作业

现代软件工程

最近拜读了邹欣老师的《构建之法》的前四章,对于其中介绍的一些方法和理论感受颇深,下面结合我的具体经历谈一些自己的想法。

一、软件工程师应具备的能力素质

首先一个软件工程师必备的技能要求:

1. 知识:对具体技术的掌握, 动手能力。

2. 经验: 对问题领域的知识和经验的积累。

3. 通用的软件设计思想,  软件工程思想的提高

4. 团队合作能力

再来谈一谈我自己的一些感悟:

知识是编程的基础,一个合格的软件工程师,必须拥有扎实的知识,例如我在工程测控的实验课上对一个matlab的程序进行编辑的时候,第一次会由于某方面知识的缺失而无法完成,所以我会再去复习关于语法和逻辑的知识。因此对于软件工程师来说,掌握Java,C/C++/C#的基本知识至关重要。

其次是经验的积累,经验的获得比知识更加宝贵,经验是由实践中获得的,对于初学者来说,开始的时候无法完全正确的调试一个较为复杂的程序,可能缺乏的不是知识,而是经验。

对于思想方面我的理解是,思想是逐渐建立的,在不断的实践和进步中,会对软件工程的习惯做法有更深的理解,这就形成了自己的思想,但是空谈思想而无所作为显然是行不通的。

团队合作是软件开发流程的必要因素,一个人很难高效完成任务,正如书中提到:软件开发流程不光指团队的流程,  软件团队是由个人组成的,一个好的团队流程能把冲突的积极方面释放出来, 而避免消极方面。

二、基于模型的设计流程

通过对算法建模进行软件设计的过程,叫基于模型的设计。例如使用Simulink模型开发嵌入式软件的设计过程,为提高开发团队效率和提高软件品质,考虑到了算法模型的验证、文档自动化及代码和模型的等效性验证,以系统需求文档作为依据建立模型,并进行代码生成,文件自动化和图形自动化,即为基于模型的设计流程。

相对其他开发流程的优点:

1. 图形化设计

对于基于模型的设计来讲,图形化设计是天然的优势,对于工程师来说,图形化的东西更加容易理解,所以这是对于其他开发流程的优势所在。

2. 早期验证

早期验证能够及时发现引入的bug。假如我们在一个阶段工作完成后就进行验证工作,那么在这一阶段的bug就会被及时发现,不会对下面的产生较大影响,使用基于模型设计去开发软件,除了传统的评审外,还有更高效的早期验证方式,包括Simulink模型本身固有的仿真,以及通过形式化方法工具对模型进行形式化的分析。

3. 代码的自动生成

代码生成的前提是模型已经是验证过的模型,或者说是正确的模型,做到以上这些,就可以考虑进行代码生成工作了,代码生成过程中,工程师要做的主要工作是数据管理工作,除此之外,还会有一些代码相关的配置,比如函数原型比如代码文件等等代码生成为软件工程师省去了许多时间,提高了开发的效率。

4. 文档自动化

代码生成和早期验证之外,基于模型的设计,还可以给我们带来其他好处,比如文档自动化。

文档在开发过程中必不可少,但是写文档对于大部分工程师是不情愿的,所以文档的自动化为工程师带去了便捷。

所以以上四点即为基于模型的设计流程为软件工程师带来的优点。

原文地址:https://www.cnblogs.com/harryhust369/p/7647727.html