标题:
[转贴]企业软件设计纲要系列---职责定位, 技术人员的身份定位
|
职责定位 从事软件设计及程序编制的人员,往往对自己的能力都非常自信,尤其是那些刚从学校出来的本科生和硕士生。他们是聪明人,凭着在同学或同事面前鹤立鸡群的软件水平,来到软件设计这个行业。然而,他们往往就是用turbo C 写了个汉字中文菜单,vc 或delphi作了几个对话框,用foxpro或ms sql server 作了个个人信息管理系统,或者作了几次安装然后删除linux的工作,又或者看了一些软件工程的资料,觉得可以凭现在的一身本领包打天下了。然后,我们看到,很多人成了公司软件部门骨干,有的人改行作销售,有的人被炒掉,有的人受不了加班的疲劳战,自动退却了。虽然很多人受了一些挫折,学了一些东西,成长起来了,而更多的人是浪费了自己的精力和企业的资源和时间,非常可以。因为他们不了解这个行业的基本规则,有很多误区。如果一开始就去了解软件行业的规律,明白自己要掌握的技能,然后自己慢慢摸索去掌握,相对来说,困难和挫折要少很多。 软件企业,其技术人员的成员分工和职责定位,对技术骨干来讲,乃是一个极为重要的枢纽的环节,它直接影响团队的协调运行和项目有序实施。每个技术成员都要明白自己要做的事,需要从自己的上游同仁或用户获得哪些信息和数据,为下游同仁或用户做哪些工作,提供哪些信息和数据。在整个项目实施过程中,各司其职。 这里,描述软件企业在项目实施过程中,与技术人员相关的各岗位的基本的职责,包含输入,输出,需要完成的工作,所需的技能。 系统工程师 系统工程师往往被技术人员忽略,因为他们往往是业务专家。虽然,他们可能连程序设计,甚至是计算机都不会用,但是,他们却是整个系统最精华所在。因为他们总结用户的需求,产生系统需求规范。在这份规范里,尽可能详细描述,要哪些东西,完成哪些功能,业务逻辑和流程是什么。它是下游同仁的各项工作的核心,以后都是以此为依据开展工作。一旦需求规范发生错误,后续工作往往是无用功,许多事情要推倒重做。 系统工程师的职责:搜集客户需求,接收客户反馈,产生并不断修正需求规范,定期评估下游同仁的工作是否与自己的需求规范相符。 系统工程师所需的基本技能:精通业务的商业规则。 模型设计工程师 模型设计工程师也容易被忽略,因为,他们往往也不是计算机高手,而是数学家,做算法分析。各种算法技巧天花乱坠,但是,可能却没有能力写一段完整的代码。但是,它是决定系统性能的关键环节,往往也是决定能哪些功能的环节。他们把业务需求转换成数学模型,另外,在也许需要专门处理的地方,例如图像处理,压缩算法,加密算法等非常专业的计算方法,都需要他们给出详细的描述文档。 模型设计工程师的职责:根据需求规范,设计出描述业务逻辑的模型设计文档。 模型设计工程师所需的基本技能:精通业务算法,熟练运用模型设计工具(例如,rose,together等)。 结构设计工程师 结构设计工程师所需要的知识最全面,因为他们的接触面非常多,同时他们是软件生成的枢纽,他们把整个项目化整为零,各成员的工作由他们分派与调度。 结构设计工程师的职责:根据需求规范文档和模型设计文档,设计软件的架构,划分模块及评估个模块的技术难度、实现复杂程度及工作量,定义各模块的数据接口,和美工商定界面设计,和数据库工程师设计数据字典及数据算法流程.技术难点部分,还要指导高级软件工程师和软件工程师进行程序代码的实现. 结构设计工程师所需的基本技能:模型设计工具,数据库设计工具(powerdesigner等),数据库知识(sql,通过程序存取数据库表数据等),编程工具,集成编程环境,,基本数据结构的算法,各种编程语言及调试技能,熟悉各种操作系统. 数据库工程师 数据库工程师任务比较单一,但也很专业,需要有丰富的数据库基础知识和实施经验. 数据库工程师的职责:协助结构工程师设计数据库数据字典,安装数据库系统,提供数据库备份方案,初始化数据表及SQL语句排错,为高级软件工程师及软件工程师设计关键的SQL语句和存储过程. 数据库工程师所需的基本技能:全面的数据库知识,包括安装设置 ,业务所须SQL语句及存储过程的设计、编写、调试技术,数据库性能分析及调优知识。 高级软件工程师 高级软件工程师是项目的建筑施工队,属于编程的主力部队,人数相对比较众多,同时任务也比较繁重,加班加点是家常便饭. 高级软件工程师的职责:独立完成负责的程序模块,内部测试自己的模块的输入和输出功能,编写软件配置清单.负责界面任务的,在美工指导下,制作用户界面程序. 高级软件工程师所需的基本技能:精通一门或几门编程语言,精通常用的数据结构算法,精通一个或几个集成调试开发排错工具。熟练使用编程用到的常用操作系统基本命令和工具。熟练运行SQL语言。熟练使用各种接口操作数据库(odbc,jdbc,oci/ct-library等本地接口等) 软件工程师 软件工程师相对来说,属于机动替补的角色,负责完成必不可少但又不是非常关键的模块的程序设计工作. 软件工程师的职责 :在有限的帮助下,完成程序的模块或部分,内部测试自己的模块的输入和输出功能,编写软件配置清单.负责界面任务的,在美工指导下,制作用户界面程序。 软件工程师所需的基本技能:熟悉一门或几门编程语言,熟悉一个或几个集成调试开发工具,熟悉基本的SQL语句。 美术工程师 美工任务就是设计用户界面的模版。 美术工程师的职责:设计满足用户功能需求并且美观方便实用的用户界面及打印输出模版. 美术工程师所需基本技能:熟练运用各种二维平面设计工具,设计具有人性化美感的图片和界面模版. 测试工程师 测试工程是品质管理员,同时,是仅次于系统工程师的最熟悉业务及整个系统的技术人员.细心和全面的测试是保证功能完整和运行稳定的保证. 测试工程师的职责:根据需求规范和结构设计文档,制定测试计划,测试各个功能模块,反馈测试结果,并提供排错参考信息,编写用户文档. 测试工程师所需基本技能:熟悉业务规则,熟练运行各种数据库操作工具(例如, 支持oracle的plsql developer), 良好的编写工程技术文档的能力. 实际上,在规模比较小的企业或软件项目里,一个人可能同时身兼数职,要求具备多种能力.
分享到:
|
|
|