您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 嵌入式系统产品研发领域中的社会角色分工
久联技术(JulianTec)——您在arm架构下学习嵌入式Linux的上佳指导Copyright®2010,JulianTecAtelier&嵌入式系统开发领域中的社会角色分工(v1.0,18Feb2011)久联技术(JulianTec)——您在arm架构下学习嵌入式Linux的上佳指导Copyright®2010,JulianTecAtelier&久联技术(JulianTec)——您在arm架构下学习嵌入式Linux的上佳指导Copyright®2010,JulianTecAtelier&概论如同其他的社会活动一样,嵌入式(linux)系统开发领域中也有着不同的角色分工。假如你要进入这个行业,那最好先了解一下这个行业中的不同角色分工,然后根据自己的实际情况选择所感兴趣的角色,继而在每日的时间消耗过程中努力学习成为该角色所需要掌握的各种知识。在这篇文章里,我们以自身平时工作过程中的的实际经验为基础,来讨论开发领域中的不同角色分工。具体来说,在本文中,我们需要解决几大问题:在嵌入式系统产品开发领域中,到底会有哪些角色参与其中?这些角色是如何相互支持和协同工作来完成具体产品的?若要成为这些角色,分别都需要掌握些什么样的技能?上面这些问题当中,问三比较容易理解。对于问一,我们这里讨论的主要是那些参与具体产品开发的角色,对于那些管理类的角色,咱们这里则忽略不谈。对于问二,我们关注的不是各角色之间交互的方式,而是关注于各角色在整个产品开发过程中各自要完成什么样的职能。(1)在继续往下看之前,作为理解这篇文章的基础,也许你需要先了解下一个嵌入式系统的大致组成。为此,你可以参考文章《应用程序,操作系统,驱动程序和硬件》。2.软硬不分家我们做嵌入式开发的,应用永远记住一个公理,那就是在嵌入式系统中,软件硬件永远不分家(2),这是不需要经过证明的。既然有这样的公理存在,那在实际嵌入式产品的开发过程中,我们可以想见将会有两班人马在一起努力。其中一班负责设计开发产品的硬件部分,另外一班负责设计在硬件上运行的软件部分。两班人马只有相互协同好了,这个产品才能设计出来。实际上,在嵌入式系统产品开发领域中,硬件工程师和软件工程师恰是最最重要的两大类角色。前面所说的文章中指出软件是要依赖于硬件来工作的,那么我们下面具体讨论角色分工时,也应该自然的先讨论硬件工程师,再讨论软件工程师。但是,切记,在进入软硬件任一部分的开发之前,我们都要仔细的做好产品系统的需求分析和架构设计(3)。3.软硬件需求分析与系统架构师一个嵌入式产品的最初起源不应该是起源于宇宙大爆炸,而应该是来自于出现在我们大久联技术(JulianTec)——您在arm架构下学习嵌入式Linux的上佳指导Copyright®2010,JulianTecAtelier&脑中的某些概念。这些概念也许来自我们和朋友的聊天过程当中,也或许是我们看到了人家的产品受到启发而产生的。光从这些零碎的概念出发去开发产品是不行的。为了使概念中的产品在市面上具备竞争力,我们需要将其转换成真正的产品需求。一般来说,最初形成于脑袋中的概念只是需求的一个很小的部分。所以,我们需要从众多的渠道通过不同的方法尽可能的将需求收集完整。在嵌入式产品开发领域中,需求分析师角色会负责去收集这些需求,并将它们书面化,形成原始的需求文档(比方我们文章《面向过程的分析(POA),和面向对象的分析(OOA)》中分析的CBM项目)。至于收集的方法,则多种多样。或对待开发产品的最终用户进行调查走访,或对市面上同类产品的功能进行分析等等,我们这里不再详加讨论。原始需求收集完还不够,需求分析师角色还会对它们进行深入的挖掘与分析,最终形成书面的需求规范文档(RequirementsSpecification)。在需求规范中,通常描述了一系列的UseCase,也即最终用户在使用这个产品时的各种不同使用过程(可理解为用户与产品之间的交互过程)。在需求分析后期,另外一类角色,即软硬件系统架构师会参与进来。他们会和需求分析师紧密合作,从产品的整体角度出发,决定需求规范文档中哪些需求需要由硬件来完成、哪些需求又是由软件来完成。在需求的软硬件界限大致确定下来后,软硬件系统架构师又会通力合作,设计好软硬件两个部分各自的内部架构。软硬件架构师必须具备深厚的专业技术积淀,所以他们经常由在软硬件领域摸爬滚打多年的资深工程师担任。除此外,他们也必须有很强的全局观,习惯于从整体的角度去把握整个嵌入式系统。具体来说,软硬件架构师必须习惯于殚精竭虑的考虑问题。同时应该具备良好的沟通能力,因为他们身处提出需求的客户和具体实现这些需求的团队之间,而时常要做类似下面这样的事情:¾面对某一项需求,在经严格评估后认为毫无实现实际的可行性,或者实现它会大大影响全局设计的情况下。他们需要说服客户做出妥协,使之值之暂时接受一个没实现该需求功能的产品版本;¾假如某项需求是关键性需求。如果缺了它,该产品将毫无实际应用价值,或者毫无市场竞争力的话。他们又要殚精竭虑的思考出解决方案,并敦促软硬件开发团队努力实现之。硬件架构师在确定好需要由硬件来完成的需求后,会通过性价比分析来决定出能实现这些需求的最佳方案。在这个过程中,为了缩短产品上市的时间,也许他会尽量选用市面上的现有组件。他会根据自己的经验,将整个产品的硬件部分划分成若干个子系统,并理清它们之间的关系。这样做,一方面是为了能更方便的给下面的硬件工程师分配不同的任务,另外一方面,也是为了简化整个系统的设计。相比硬件架构师角色来说,软件架构师角色的工作可能更具艺术性。软件架构师通常会使用业界常用的,诸如结构化的或者面向对象的建模方法来对软件部分的需求进行建模和整久联技术(JulianTec)——您在arm架构下学习嵌入式Linux的上佳指导Copyright®2010,JulianTecAtelier&体架构设计。相比于硬件架构设计,软件架构设计要灵活的多,隐藏其中的变化更加多样。软件架构师需要根据自己的专业经验、对各种利害因素加以权衡,从中选择出最有效的软件设计方案来。这不是一个容易的过程,相比于技术能力,它体现更多的是软件架构师整体思维的能力。在实际的研发过程中,为了使得研发更加有效率,软硬件架构师通常作为软硬件研发团队的TeamLeader来参与具体的研发工作。4.硬件开发工程师在硬件架构师进行架构设计期间,其他硬件开发工程师可能也会参与进来,协助硬件架构师进行不同硬件设计方案的选择。在整体硬件设计方案架构完成之后,每一个硬件工程师可能会负责设计开发其中的单个子系统。这个过程主要是关键元器件的选型、以及相关电路的设计。电路的设计大都要求使用Protl等EDA软件来进行,在设计过程中会经常使用器件datasheet文档中的参考设计。设计完成后,各硬件子系统的电路设计完成后,会出来电路原理图,里面详细记录了硬件系统内各器件之间的连接关系。原理图对下面谈到的底层驱动开发工程师来说同样重要。接下来,硬件开发工程师会根据原理图来进行PCB布线(所谓布线是指决定如何在印刷电路板上放置器件及它们之间的走线)。PCB布线的好坏直接影响产品后续开发过程的执行顺利与否,所以必须严格按照布线标准来进行。布线结束时,硬件开发工程师需要准备好元器件清单(即BOM清单),它详细记录了这个产品都需要用到哪些元器件,数量各是多少。此后,他们就会开始元器件的采购并联系厂家来生产PCB样板,以及完成特殊元器件的贴装(某些特殊的元器件没办法通过手工焊接到PCB样板上,需要请专门的贴片加工厂的机器来帮忙)。待PCB样板回来后,硬件工程师们会动手焊接调试之前设计的各个子系统。这个过程的工作也许会全部由硬件工程师自己完成,但下文提到的底层驱动开发工程师通常也会参与进来一起进行联调。实际上,硬件各子系统的调试过程通常会延续至底层驱动软件开发结束为止。在调试过程,如果发现电路设计或者PCB布线上面的问题的话(4),硬件工程师会详细记录下来,等到PCB的后续版本中去修改。硬件开发工程师除需要掌握模拟/数字电路设计等书本上能找到的基础知识外,还要求能熟练使用各种EDA设计软件以及电烙铁、万用表、示
本文标题:嵌入式系统产品研发领域中的社会角色分工
链接地址:https://www.777doc.com/doc-488135 .html