硬件工程师之路上的 8 个软件必通绝招!!!
由 http://mrwu.net 收集整理,原文地址 http://mrwu.net/archives/110.html
嵌入式系统设计不仅要了解硬件还应该了解它与软件之间的相互影响和作用。硬件设计需要
一定的设计范例,这点对于软件设计却不那么适用。如何从单纯的硬件设计过渡到硬软结合
的设计,在你着手开发软件时需注意以下八个软件设计技巧。
1.设计控制流程图
工程师进行到开发软件这一步时会情不自禁地开始书写代码。这种思维定势就像在原理
图还未完成之前就开始尝试画 PCB。当着手开发软件时,克制写代码的冲动,取而代之的
应该是软件流程结构图表的设计,这点非常重要。流程图能清晰地呈现给开发人员软件的各
个需要的组成部件,正如电路图列出硬件设计所需的各种元器件一样。做到这点能很大程度
上使程序整体更易于组织,而且也会减少占开发周期较长的调试工作量进而节省时间减少调
试的繁琐。
2.使用状态机控制程序流程
状态机是 20 世纪优秀的软件发明之一。应用程序一般被分解为多个不同的状态,每一
个状态控制一个特定的程序分支。状态机包括内部状态和依据不同激励所控制的状态转换。
使用状态机机制设计软件能够使模块化的可维护的软件开发更加容易而且易于理解。状态机
原理与算法的示例随处可见。
3.避免使用全局变量
在过去的函数式编程中,程序员使用函数编写程序,他们的唯一目标是使程序尽可能快
的运行而不考虑程序的结构和重用性。这类程序风格在使用全局变量时不注意变量的作用范
围引起其他函数修改的危险性。这样变量会被多次占用和重写。如今面向对象的程序设计中,
成员变量被定义在最小的作用范围之内并封装起来避免被重新复值和滥用。所以建议尽量少
地使用全局变量,实在需要的话,使用 C 语言中的关键字“extern”来修饰。
4.充分利用模块化的设计理念
如果你问一位工程师项目的哪一部分最有可能会拖延交付并超出预估时间,那答案一定
是软件周期了。软件通常是复杂而且不易开发和维护的,特别是当项目应用程序集中在一个
单一的文件里,或者几个结构松散的文件中时。为了便于代码重用和软件可维护并减小软件
的复杂度,强烈建议发挥高级程序设计语言模块化的特性,在程序的结构中把公用的函数分
离出来作为一个独立的模块。通过这种方式可以让程序员开始创建包含有常用函数和常用的
声明定义,它可以很容易的被其他的代码重用,这在以后的测试阶段不仅可以节省时间代价
还能提高代码的质量。
评论0