软件工程师可行性与需求分析报告
一、职业目标与内容
职业定义
软件工程师是一个认证考试,具体地说是从事软件职业的人员的一种职业能力的认证,通过它说明具备了工程师的资格。主要工作进行软件前期的项目需求的分析,然后对项目进行风险评估并试图解决这些风险,然后开始进行软件的开发,后期对软件的进度做相关的评估。一般可以分为系统软件工程师,应用软件工程师两类。在企业中职位一般分为以下四种人:
1、企业信息化管理:负责信息化建设中的目标与方案决策,信息化建设、升级、更新;
2、工程技术人员:负责软件系统的分析、设计、开发、数据库、使用、维护和升级;
3、运行维护岗位:负责软件开发代码的编写以及基本的开发和测试;
4、操作应用人员:主要应用软件进行日常的管理工作。
工作内容
1、按照客户需求和市场需求进行设计、开发相应软件产品。
2、根据工作的进度和编程工作规范编写系统中的功能模块。
3、对编写的所有程序进行严格的测试。
4、对软件实施测试方案,从而进行软件故障的诊断、定位、分析和调试。
5、编写软件产品实施文档,并管理相关软件文档。
6、对业务部门提供相应的软件技术支持。
7、参加各种相关软件应用培训课程。
二、职业可行性分析
1、社会可行性
目前国内软件测试工程师的来源主要有三方面:一是以前专业做软件开发的人员后来转行做软件测试,二是从大学招聘的本科或者研究生,三就是通过培训机构招聘的专业学员。据了解,在国外测试人才的供应方式多以第三种为主,而国内目前除少数培训机构外尚未形成足够的人才供应规模。以北京中关村为例,现有软件企业5000多家,仅对日本软件外包领域的人才缺口就高达5000人,而对美软件外包人才缺口更大,可供量不足10%。中关村一位负责人介绍,未来5年北京将有至少200亿美元的外包订单,由此可推算出中关村将出现100万的软件人才缺口。巨大的产业前景和匮乏的人才现状,使越来越多的IT企业关注软件测试人才的储备工作。
软件和信息服务外包产业已成为各个国家经济发展的重点。 从增加值角度来看, 同样金额的出口, 服务外包对中国经济的贡献是来料加工的20倍以上; 从能源消耗上看, 服务外包单位GDP能耗仅为制造业的20%。据调查研究显示,当前中国软件和
信息服务外包产业人才流动率较高,而且缺口很大。 企业成立时间比较短,规模大多
比较小, 企业人才平均流动率达18.28%, 这和缺乏培训、业务来源不稳定、报酬机
制不够合理等因素有关。 同时由于产业发展迅速,人才供不应求,尤其是本地化人才
和中高级管理人才。
市场需求的巨大和专业人才的缺乏令人吃惊,这正是商机和盈利的重要突破口。可
以预见,中国软件和信息服务外包产业将在不久的将来成为引领中国第三产业转型和发
展的龙头产业,相关职业包含高级软件工程师的人才需求将会非常巨大。
2、经济可行性
软件开发、网络维护等职业技能要求较高的职位薪酬也相对较高,目前在软件行业
内部,能够进行软件整体开发设计的软件设计人员比较稀缺。虽然软件从业人员的薪水
一路看涨,但是职位的争夺也异常激烈。
据调查得知,一般的程序员在开始试用时会有2500到4000那样子,转正以
后至少也有5000元以上,做到项目开发经理了年薪至少在10万以上,做到高级
工程师了年薪可能达到100万以上。软件工程师是一项高端技术性的工作,所以工作年限、学历、等因素对薪酬有很大的影响,除此之外,职位、工作地域对薪酬也有一定的影响。专科学历平均年薪为2.5~3.5万元,本科为3.5~4.5万元,硕士以上学历
可达7万元左右。
3、技术可行性
想成为一名正式的软件工程师,仅仅依靠在学校所学的C++、C#、JAVA以及数据库
和网络应用的知识,是远远不够的。由于Java和.NET技术在市场上平分秋色,都有
大量的岗位需求,同时值得庆幸的是二者在应用层面上的技术差异越来越少;在
未来的学习中,我应该更加了解JAVA和C#语言开发,考取相应的证书。并在之
后的工作中边学习边掌握更多的编程语言,向一个全面的软件工程师进行发展。
三、职业需求分析
实现目标所需的技术和职业素质
1、软件编程技术
软件编程技能实际应该是测试人员的必备技能之一,在微软,很多测试人员都
拥有多年的开发经验。因此,测试人员要想得到较好的职业发展,必须能够编写程序。只有能给编写程序,才可以胜任诸如单元测试、集成测试、性能测试等难度较大的测试工作。
此外,对软件测试人员的编程技能要求也有别于开发人员:测试人员编写的
程序应着眼于运行正确,同时兼顾高效率,尤其体现在与性能测试相关的测试代码编写上。因此测试人员要具备一定的算法设计能力。依据资深测试工程师的经验,测试工程师至少应该掌握Java、C#、C++之类的一门语言以及相应的开发工具。
2、测试软件技术
测试专业知识很多,本书内容主要以测试人员应该掌握的基础专业技能为主。
测试专业技能涉及的范围很广:既包括黑盒测试、白盒测试、测试用例设计等基
础测试技术,也包括单元测试、功能测试、集成测试、系统测试、性能测试等测试方法,还包括基础的测试流程管理、缺陷管理、自动化测试技术等知识。
3、数据库应用
数据库在当今的信息外包产业是很重要的。很多应用程序都是以数据库的数据为中
心, 而数据库的产品也有不少, 其中关系型数据库仍是主流形式, 所以作为高级软件工程师而言, 至少熟练掌握一两种数据库, 对关系型数据库的关键元素非常清楚, 测试人员至少应该掌握MySql、MS SqlServer、Oracle等常见数据库的使用。
4、网络协议TCP/IP
在互联网如此普及的今天, 如果还没有对互联网的支撑协议TCP/IP协议栈有很好
的掌握就很难在IT业立足.从最早的客户/服务器结构, 到今天的WEB Services, 这一切都离不开以TCP/IP协议栈为基础的网络协议支持, 所以, 深入掌握TCP/IP协议是非常必要的。
5、计算机专业英语
随着中国的信息外包产业逐步展开, IT业急需与国外相关高新技术接轨来保持在
发展上不落人后。于是IT业相关从业人员现有的英语水平成为限制中国信息产业与国外交流的瓶颈。一个普遍的共识是:良好的英语交流和阅读能力成为衡量一个软件工程师水平的隐性标准,所以掌握计算机专业英语是很重要的。
6、强烈的好奇心和学习精神
对于一个立志成为高级软件工程师的人, 最重要的其实是强烈的好奇心和学习精
神。 没有比强烈的好奇心和学习精神更好的武器了, 它是成功的工程师乃至在各行各业的成功者们永攀高峰的源泉和动力所在。
软件和硬件上的条件需求
1、程序语言环境
具备C/C++,VB,VC,Java,.net,ASP,Javascript等语言。具体要求要视公司
的具体项目或产品来定。但一般以C为基本要求。
2、数据库操作
SQLServer,Oracle,Mysql,Sybase等。一般对测试人员的要求就是要求会使用,
然后熟练使用SQL语句进行查询,修改,添加,删除数据操作。
3、主流操作系统使用
熟悉Windows系列,Linux,Mac OS X系统的使用和操作
4、自动化测试工具应用和理解
好多人觉得自动化测试就是使用自动化测试工具,其实各种工具只是自动化测试实
施的一个有效利器,如何建立一个脱离工具的自动化测试框架远远比研究如何使用测试工具复杂,困难的多。
自动化测试工具的使用:
自动化测试框架(流程)
GUI的功能测试自动化
非GUI的功能测试自动化
性能测试(广义的和狭义的性能测试)
自动化测试工具(功能测试工具,性能测试工具,缺陷管理工具,测试管理工具)
5、文档编写能力
熟悉编写项目实训的测试计划,测试用例,测试报告等相关文档的编写格式。
6、语言
掌握中文和英文,考取英语四级以及六级证书。熟悉计算机专业的英语术语。
7、硬件需求
熟悉企业服务器、个人台式机、笔记本电脑、平板电脑等使用方法,了解其基本硬
件结构以及运行原理。
自我分析和职业规划
自我分析:
我的性格是比较诚实、正直的,相对谦虚但不乏张狂,在做事情时认真勤奋责任心强,同时有一定的创新意识。在自己的生活与同学及其他人的交往中是比较大方的。
在能力上,我认为我的智力还是中等偏上的,在注意力上比较集中,善于观察,记忆力
较强,思维比较开阔,想象力较强。在特殊能力,也就是我的特长上,我认为自己并没有什么特长,只是自己的兴趣所到对一些东西投入了,或许会做的较好一点,比如:计算机的掌握与控制,计算能力等,在语言表达能力及动作协调能力上我做的还不是很好,空间判断能力也不是很突出。
工作、学习中我能做到耐心解决每个问题,但是不够细心,容易忽略一些细节。和团队
队员有很好的沟通,有着优秀的学习能力,积极完成各种任务。上进心强,永不满足现状,不断追求各种新的技术。
职业规划:
1、大学时间提高自我水平
要成为一个软件工程师,所需要的不只是扎实的开发能力,对软件开发的掌控能
力,还有的是沟通和团队合作能力,就目前的软件工程而已,个人能力已经微乎其微了,一个大型的软件,需要数十人,甚至上百人同时进行开发,所以沟通很重要。大学就是培养自身沟通能力与专业能力的最好平台。
大学四年首先要取得必要的证书来证实自己的实力,例如:取得学士学位证书,,
英语四级证书,计算机三级证书;取得专业资格证书等。另外还要提高自己的综合能力,
例如:提高独立面对、解决问题的能力,提高语言组织沟通能力、专业技能、面试技巧。
大学也是一个小的社会,而人本身就是社会最小的组成单位。所以我需要了解社
会所需要的。让自己去适应社会。才能发展自身的目标。从事自己专业的工作,对软件工程有更为深刻的理解。累积实践经验,甚至是为自己实现愿望提供必要的物质基础。所以我需要一边工作一边学习。
2、进入社会工作
第一阶段:(测试员)初级测试工程师(初出校门)
自身条件:初入具备计算机专业学位,有一些手工测试经验。
具体工作:执行测试用例,记录bug,并回归测试,通过qtp等测试工具录制回归测试脚本,并执行回归测试脚本。
学习方向:开发测试脚本并且开始熟悉测试生存周期和测试技术。
第二阶段:(测试工程师)程序分析员(1-2年)
自身条件:有1~2年工作经验。具有初步的自动化测试能力,完善自动化测试脚本。
具体工作:设计和编写测试用例,编写自动测试脚本程序且担任测试编程初期的领导工作。
学习方向:拓展编程语言、操作系统、网络与数据库方面的技能。
第三阶段:(高级测试工程师)程序分析员(3—4)
自身条件:有3~4年经验。具有一定的行业业务知识,储备系统分析员的能力。 具体工作:帮助开发或维护测试或编程标准与过程,分析软件需求,获得测试需求。确定测试需求相应的测试方法,获得测试策略方案。参与同行的评审 (软件需求,软件测试计划等),并为其它初级的测试工程师或程序员充当顾问。
学习方向:继续拓展编程语言、操作系统、网络与数据库方面的技能。
第四阶段:测试组负责人(4-6)
自身条件:有4~6年经验。具有丰富的行业业务知识,具有系统分析员的能力,专长性能测试。
具体工作:负责管理1~3名测试工程师或程序员。集中于技能方面,担负一些进度安排和工作规模/成本估算职责。分析性能瓶颈的原因,为开发团队 提供bug解决策略。
学习方向:性能测试,测试技能
第五阶段:(资深安全或性能测试工程师)测试/编程高级负责人(6-10)
自身条件:有6~10年经验的测试工程师或程序员。
具体工作:负责管理8~10名技术人员。性能测试整体方案设计,软件系统性能问题定位和性能优化,内存优化及分析数据溢出等,分析系统的安全漏 洞等。负责进度安排、工作规模/成本估算、按进度表和预算目标交付产品。负责开发项目的技术方法。为一些用户提供支持与演示。
学习方向:开发一些特定领域的技术专长
第六阶段:测试/质量保证/开发(项目)、经理
自身条件:有10多年的工作经验。(10年及之后)
具体工作:管理8名或更多的人员参加的1个或多个项目。负责这一领域(测试/质量保证/开发)内的整个开发生存周期业务。为一些用户提供交互和 大量演示。负责项目成本、进度安排、计划和人员分工
第七阶段:(公司级质量总监)计划经理
自身条件:有10年以上开发与支持(测试/质量保证)活动方面的经验。
具体工作:管理从事若干项目的人员以及整个开发生存周期。负责把握项目方向与盈亏责任