软件工程师的理想素质

2022-05-03 14:25:02 | 浏览次数:

软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。

软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。同时,各个行业几乎都有计算机软件的应用,如工业、农业、银行、航空、政府部门等。这些应用促进了经济和社会的发展,也提高了工作和生活效率。

有些同学在开发过程中,看了一些软件工程书,虽然对于自己的文档编写等有一定的帮助,可惜觉得还是不能落实到实处,譬如对于整个工程很难按设想的进行,本文阐述一些软件工程师的理想素质。

在实际的开发过程中,只有42%的软件项目完成时达到了预期的范围和功能,事实上,许多系统只完成了部分预期的需求,因此,软件的开发是一个很困难的活动,要求很仔细的计划和执行。软件工程就是在这样的背景下,由许多计算机科学家经过多方面的探索和总结而成形的.目前发展十分迅速。近二十年来计算机软件已经成为现代科学研究和解决工程问题的基础,以及管理部门,生产部门,和服务行业中的关键因素,渗透到了各个领域,成为当今世界不可缺少的一部分。展望二十一世纪,软件仍将成为驱动任何事情从基础教育到遗传工程取得新进展的动力。学习研究工程化的软件开发方法,使开发过程更加规范。

软件工程(SoftWare Engineering)的框架可概括为:目标、过程和原则。软件工程目标:生产具有正确性、可用性以及开销合宜的产品。正确性指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。

抛开基本理论,这里更加详细讲述的是软件工程师的理想素质。本文中罗列了七种软件工程师应该具备的素质。

决策能力,需要进行一系列的决策和评价,能通过分析和权衡成本和利益,做出适当的选择,识别和理解问题和机遇,比较不同来源的数据得出结论,运用有效的方法来选择行动方针或发展适当方法,采取行动来应对现有的现实、限制和可能的结果。

定量分析能力,需要进行各种度量,通过经验和实验获取数据,进行估算和定量分析,对社会现象的数量特征、数量关系与数量变化进行分析的方法,好的软件工程师应该有良好的洞察力,深入了解数量关系特征。

团队协作能力,采用规范的过程进行创造性设计,并能作为团队的成员进行有效工作。将其作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的也是最重要的安身立命技能。任何个人的力量都是有限的,一旦进入系统的研发团队,进入商业化和产品化的开发任务,缺乏这种素质的人是不合格的。

多重角色的承担,研究、分析、构造、实现、测试、维护,设计、开发、生产、实施、管理,销售、咨询、培训、服务等。

工具运用能力,需要选择各类工具并将工具系统地应用到过程中,技术不是多么神秘的个人能力,技术其实可以理解成 对工具的获取与使用能力,掌握的工具越多、对工具的理解越深、应用能力越强,于是技术就越高。

社会交流能力,需要专业团体之间的交流与沟通,不断地开发和确认工程原则、标准,并进行实践,语言表达能力是社会沟通能力的基础,但语言表达能力不等于社会沟通能力。社会沟通能力强,就会自然形成有效的语言表达能力,而盲目软件工程师的语言表达能力反而有可能形成非良性的社会沟通能力和麻烦。

成果的重用能力,需要设计、编码、过程等的可重复和重用性,复用性设计,模块化思维就是要程序员在完成任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作, 如果一个软件研发单位和工作组能够在每一次研发过程中都考虑到这些问题,那么程序员就不会在重复性的工作中耽误太多时间,就会有更多时间和精力投入到创新的代码工作中去。

推荐访问: 软件工程师 素质 理想