软件工程师职业发展的可行性与需求分析

2024-08-14

软件工程师职业发展的可行性与需求分析(精选7篇)

篇1:软件工程师职业发展的可行性与需求分析

软件工程师可行性与需求分析报告

一、职业目标与内容

职业定义

软件工程师是一个认证考试,具体地说是从事软件职业的人员的一种职业能力的认证,通过它说明具备了工程师的资格。主要工作进行软件前期的项目需求的分析,然后对项目进行风险评估并试图解决这些风险,然后开始进行软件的开发,后期对软件的进度做相关的评估。一般可以分为系统软件工程师,应用软件工程师两类。在企业中职位一般分为以下四种人:

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年以上开发与支持(测试/质量保证)活动方面的经验。

具体工作:管理从事若干项目的人员以及整个开发生存周期。负责把握项目方向与盈亏责任

篇2:软件工程师职业发展的可行性与需求分析

一、引言

(一)编写目的:

在编写软件前,查阅了许多资料,也到了本校的图书馆做了调查,经过分析和总结,做了一个这样的可行性的报告,这个报告对系统进行了一个尽可能全面的分析来明确了这次项目的可行性,也是对本次项目的个规划。本报告从应用的技术方面和用户的操作方式方面研究图书馆管理管理系统的可行性和必要性,希望对开发人员提供一定的帮助。

(二)项目背景:

项目的任务提出者:高校图书馆馆长

开发者:xxxxx大学软件工程09级学生

用户:图书馆的管理员及学生

(三)定义

这次高校图书馆管理系统应用了网站知识、数据库知识等的技术旨在为图书馆提供一套高效安全简便的软件。

(四)参考资料:

《软件需求工程》——毋国庆 梁正平编著机械工业出版社 《软件工程导论》 ——张海藩编著清华大学出版社 《C程序设计》 —— 谭浩强编著清华大学出版社 《UML和模式应用》——Craig Larman 编著机械工业出版社

二、可行性研究的前提

(一)要求:

功能:对图书馆内的用户和图书的信息进行有效的管理。性能:稳定快速,实时控制

输入:用户编码、图书编码

输出:用户信息、图书信息

安全与保密要求: 图书信息、用户信息只能由图书馆的管理员来更改和维护,对系统出现各种问题有恢复功能以保障数据不受损失。

(二)可行性研究方法:

通过调查分析开发图书馆管理所具备的功能确定总体结构,利用MYSQL数据库所具有的能力,以最简洁最容易的方法,以最低成本在短时间开发出该系统。

(三)决定可行性的主要因素:

设备状况、操作人员技术、经济条件、团队合作精神。

三、对现有系统的分析

3.1组织机构调查

现有组织机构有图书馆领导,三个部门:采购部,系统管理部,图书管理部。

3.2 业务流程

(1)新书入库及图书注销

查询由采购部采购回来的图书的信息,添加新书入库编号存放。对因故丢失等要删除的图书经行删除相关信息的操作保存至出库单中。

(2)图书借阅和归还

学生可以凭借自己的学号密码来借书,通过图书管理员更改信息获得书;归还图书由图书管理员更改图书信息及学生信息来完成。

(3)用户添加删除及数据修改

由系统管理员负责将系统的用户文件进行删除添加用户信息操作,对于要更改的信息对相应的数据库修改。

(4)查询信息

用户上网输入关键字进行查询信息

3.3 费用调查

开发所需的费用及硬件由图书馆来承担

3.4 设备

使用windows2000操作系统,以及SQL Server数据库软件

3.5 人员

系统管理人员3名,有一定的计算机知识。图书馆管理人员15名,可以熟练的使用软件。

3.6 局限性

图书管理系统功能不是很完善,人员必须经过专门的培训,并且要求对业务,由于编写人员经验有限所以系统功能少规模较小健壮性可能较差也不够完善。

四、所建议系统技术可行性分析

(一)对系统的简要描述

所建议的图书馆管理系统使用基于C/S架构的Windows应用程序,使用了先进的数据库技术与数据管理技术,使数据的准确性与安全性得到了很大的提高,且在用户的并行操作与用户管理方面也有了极大地改善。

(二)与现有系统比较的优越性

本项目应用了最新的技术,系统规模小,功能齐全,具备了较高管理效率,有较高的实时避免了学生借书与所查询的信息不一致。其次系统投入的资金也减少了许多,而且加入了对使用权限安全性保护的功能,使系统在可用性与稳健性方面有了很大的进步。

(三)采用建议系统可能带来的影响

1.设备:采用建议系统后,使用的设备不要求太高,只需更换较少的设备,以前的还可以用。

2.现有软件:建议系统采用了先进的数据库技术以及一系列高技术含量软件,对适用平台要求为Windows xp,其兼容性较好,可以使用大部分软件。

3.用户:界面人性化,操作简单,便于使用。

4.对系统的影响:系统规模小,功能全,运行快。

(五)技术可行性评价

本软件有本校软件专业学生开发,就目前使用的开发技术来说建议系统的功能目标应该能够达到,因此可完成性高。

五、所建议系统经济可行性分析

1.支出

(1)系统开发费用

1)人员费用:本系统开发期为三周,试运行一周。开发期需要开发人员x人,试运行期需要开发人员x人。人员费用为x万元。

2)设备费:本系统所需的硬件设备费及研究费用用为x万元。

3)不可预见费:按开发费用的15%计算。

(2)系统运行费用

1)系统维护费:由图书馆系统管理人员负责,费用由图书馆支出。

2)设备维护费:由图书馆指定人员进行维护。费用图书馆自己支付。

2.收益

综上所述,系统开发收益费用x万元,平均每人约x元。倘若提高工作效率,减少工作人员可以相应的提高收益。

六、社会因素可行性分析

1.法律因素

本软属于项目组开发,符合法律各项规定。

2.用户使用可行性

本软件提高和改进管理信息服务质量、增强资源共享、减少减少人力和设备费用、加快信息的查询速度和准确性、管理系统建成后可以和校园网相连,提供网上查询服务。符合工作人员及学生的习惯,方便操作,具有可行性。

七、技术因素可行性分析

本系统开发人员对系统采用的Window XP操作系统,服务器采用的Window 操作系统,前端开发语言使用的JAVA, 使用的WYSQL数据库管理系统及网络和通信技术有很深的了解。技术上是可行的。

八、结论意见

篇3:关于软件工程需求分析探究

一、软件工程中的需求分析概述

一个软件项目的开发主要分为五个阶段:需求分析阶段、设计阶段、编码阶段、测试阶段和维护阶段。而需求分析阶段所得到的结果。是软件项目开发中其他四个阶段的必备条件。从以往的经验来看, 需求分析中的一个稍稍的偏差, 就可能导致整个项目无法达到预期的效果。

需求分析是指理解用户需求, 就软件功能与客户达成一致, 估计软件风险和评估项目代价, 最终形成开发计划的一个复杂过程。在这个过程中, 用户的确是处在主导地位, 需求分析工程师和项目经理要负责整理用户需求, 为之后的软件设计打下基础。需求分析阶段结束后, 要求得到:1.SRS文档 (System Requirement Specification) ;2.DRM文档;3.Acceptance Plan。从广义上理解需求分析则包括需求的获取、分析、规格说明、变更、验证、管理的一系列需求工程。

二、软件工程中的需求工作流程

软件需求是指用户对目标软件在功能、行为、性能、设计约束等方面的期望。通过对问题及其环境的理解与分析, 为问题涉及的信息、功能及行为建立模型, 将用户需求精确化、完全化, 最终形成需求规格说明, 如图1所示, 整个活动构成软件开发生命周期的需求分析阶段。在需要的开发中, 问题的获取包括业务需求、用户需求、功能需求。业务需求的参与者主要是业务流程分析员, 对企业目前的业务流程进行评估, 确定进行何种程度的业务建模;用户需求重心是如何收集用户需求, 确定角色和用例, 获取需求的方法倾向组织访谈会;功能需求依赖于用户需求, 是用户需求在系统上的一个映射, 为用户做一个软件原型是一个很好的方法。

三、软件工程中的需求分析

需求分析包括提炼、分析和仔细审查已收集到的需求, 以确保所有承担风险者都明白其含义, 能找出其的错误、遗漏等地方。分析员通过评价来确定是否所有的需求和软件需求规格说明都达到了优秀需求说明的要求。分析的目的在于开发出高质量的需求, 这样你能做出实用的项目估算并可以进行设计、构造和测试。通常, 把需求中的一部分用多种形式来描述, 如同时用文本和图形来描述。分析这些不同的视图将揭示出一些更深的问题, 这是单一视图无法提供的。分析还包括与客户的交流以澄清某些混淆, 并明确哪些需求是更为重要的。其目的是确保所有风险承担者尽早地对项目达成共识并对将来的产品有个相同而清晰的认识。

1. 创建数据字典。

数据字典是对系统用到的所有数据项和结构的定义, 以确保开发人员使用统一的数据定义。在需求阶段, 数据字典至少应定义客户数据项以确保客户与开发小组使用一致的定义和术语。分析和设计工具通常包括数据字典组件。

2. 确定需求的优先级别。

应用分析方法来确定使用实例、产品特性或单项需求实现的优先级别。以优先级为基础确定产品版本将包括哪些特性或哪类需求。当允许需求变更时, 在特定的版本中加入每一项变更, 并在那个版本计划中做出需要的变更。

3. 分析需求可行性。

在允许的成本、性能要求下, 分析每项需求实施的可行性, 明确与每项需求实现相联系的风险, 包括与其它需求的冲突, 对外界因素的依赖和技术障碍。

4. 使用质量功能调配。

质量功能调配是一种高级系统技术, 它将产品特性、属性与对用户价值联系起来。该技术提供了一种分析方法以明确哪些是客户最为关注的特性。质量功能调配将需求分为三类:期望需求, 即客户或许并未提及, 但如若缺少会让他们感到不满意;普通需求和兴奋需求, 即实现了会给客户带去惊喜, 但若未实现也不会受到责备。

5. 衡量需求稳定性。

记录基本需求的数量和每周或每月的变更数量 (添加、修改、删除) 。过多的需求变更“是一个报警信号”意味着问题并未真正弄清楚, 项目范围并未很好的确定下来或是政策变化较大。

6. 绘制系统上下文示意图。

这种示意图是用于定义系统与系统外部实体问的界限和接口的简单模型。同时它也明确了通过接口的信息流和物质流。

7. 作为功能需求的补充, 软件需求规格说明还应包括非功能需求, 它描述了系统展现给用户的行为和执行的操作等。

它包括产品必须遵从的标准、规范和合约;外部界面的具体细节;性能要求;设计或实现的约束条件及质量属性。

软件需求分析中的关键就是展开分析、发现问题、征服问题。所有的一切都是为了能够将软件中的错误和漏洞在需求分析和需求工程阶段发现并解决, 这样才能使软件开发的成本收益比达到最大, 使得软件在其生命周期中的维护费用降到最低, 这也是我进行软件需求分析方法研究的目的, 希望可以通过上述的软件需求分析的方法研究为以后软件的开发打下一个良好的基础。

摘要:我国的信息化已经走过了20多年的历程, 但许多软件开发公司仍不得不在收集、编写和管理产品需求中疲于奔命。而缺乏用户参与、不完整的需求及不断变更需求, 是导致信息技术项目不能按进度安排和资金预算完成全部功能的主要原因。

关键词:用户,软件开发,软件工程

参考文献

[1]郑人杰等:实用软件工程 (第2版) , 北京:清华大学出版社, 1997

[2]史济民等:软件工程一原理、方法和应用, 北京:高等教育出版社, 2002

[3]Pres smaI1:软件工程一实践者研究方法 (第4版) .北京:机械工业出版社.1999

[4]张龙祥:UML与系统分析设计.北京:人民邮电出版社, 2007

篇4:软件工程中的需求分析

关键词:软件工程;CMM;需求管理;需求分析

中图分类号:TP311 文献标识码:A 文章编号:1674-7712 (2012) 18-0039-01

“软件工程”这个名词是1968年美国和西欧的一些科学家在NATO(北大西洋公约组织)会议上第一次提出的,是利用工程学的方法开发和维护计算机软件的一门学科。本篇论文粗浅分析的是软件工程中的需求分析。

软件开发由需求分析、概要设计、详细设计、编码、软件测试、项目维护和软件集成几部分内容组成。英文中有个全称为CapabilityMaturityModelforSoftware,缩写为SW-CMM,简称为CMM,用汉语表达出的意思就是——“能力成熟度模型”,也就是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。软件开发被CMM的核心视为一个过程,并根据这一核心原则对其进行过程监控与研究,目的是更加科学化、标准化,在监督过程中发现影响项目的关键问题并予以解决,使企业能够更好地实现商业目标。软件开发人员开发和维护软件及相关产品的一套行为、方法、实践及变换过程被定义为软件过程,它包括软件开发过程和软件管理过程。CMM把软件开发机构按照不同开发水平划分为5个级别,每个等级被分解为几个KPA(关键过程域),KPA是指在某个成熟度等级应重点关注的区域,也是达到此成熟度等级必须解决的关键点。在CMM中成熟度第二等级有6个关键过程域,主要涉及建立软件项目管理控制方面的内容。即:需求管理(RM)、软件项目计划(SPP)、软件项目跟踪与监控(SPTO)、软件子合同管理(SSM)、软件质量保证(SQA)、软件配置管理(SCM)。

软件项目管理中还有一个非常关键的步骤——需求管理。对于计算机系统的认识,很多用户有很多盲区,对于系统的具体需求往往也比较模糊,经常出现疏漏或者是错误的问题,随着项目的进展,凸现的会愈发明显。对于开发人员来说,软件产品的部分内容必须重新开发,这就意味着需求的变更。而对于整個软件项目管理而言,势必要重新分配资源、调整计划、估算成本等等。需求分析的完整与否可以控制软件质量、决定项目周期、增减项目成本。故而:需求管理工程越来越成为热点。

需求获取的正确性和有效性要求很高:角色的专业化、业务创新的复杂、交付速度等等。有时缺少特定需求的某些信息。在解决这个不确定性之前,可能必须与客户商议,检查与另一个系统的接口或者定义另一个需求。使用“待确定”符号作为标准指示器来强调软件需求规格说明中的这些需求的缺陷。

设计一个软件应用系统的起点与基本依据是需求分析。对用户来讲最重要的是有效性,高效性,灵活性,完整性,互操作性,可靠性,健壮性,可用性。对开发者来说最重要的是可维护性,可移植性,可重用性,可测试性。在属性取舍方面,用户和开发者必须确定属性优先级,做决策时始终遵照优先级,为了达到产品特性的最佳平衡,必须在需求获取阶段识别,确定相关的质量属性并为之确定优先级。当为项目定义重要属性时利用属性间正负关系图可防止发生与目标冲突的行为。通常一个软件项目合同的签订,体现的可能是整个系统的目标需求,面向用户的需求往往被忽略,对于这种情况一定要注意需求更改的可控性。任何一个需求分析因客观原因可能存在着需求更改的现象,要使受需求变化影响的产品与需求变更一致,就要建立需求的基准版本和更改版本,真正了解用户想要解决的实际问题,即使需求的变更比较频繁,也要注重需求的稳定性。直接影响到软件过程的改进因素离不开需求分析的完整性和变更可控性,它不仅可以决定软件的质量、开发成本的高低、甚至是导致项目成败的关键。

需求管理员是软件工程组(SEG)中要明确定义的一个角色。具体操作步骤有几点:

第一:多角度全方位的对项目进行分析并且对项目的可行性进行论证;

第二:对客户进行需求调研,整理客户需求,负责编写用户需求说明书;

第三:负责将完成的项目模块给客户做演示,并收集完成模块的意见;

第四:协助系统架构师、系统分析师对需求进行理解。

有了上述铺垫,毋庸置疑的一个角色也要出场了,那就是——需求工程师。再好的软件如果没有做好需求分析也将失去市场意义,失去生存活力。需求工程师是沟通用户与开发人员的桥梁,做好需求分析是一个产品是否能够适应用户要求的关键所在。需求工程师们在了解用户又了解技术的基础上掌控项目发展的风向标。

计算机软件工程中的需求分析要解决的任务是"做什么"的问题,全面地理解用户和开发人员的各项要求,准确表达所接受的需求。之所以重要,是因为它具有决策性、方向性、策略性的作用,从某种程度上说,它的作用可能并不小于程序设计,而且是提高软件质量的基础,也是决定一个软件项目成败的关键。

参考文献:

[1]孙琦龙.一种加强软件项目管理的实践模式[J].科技信息,2008.

[作者简介]王一帆,大连交通大学09级日语和软件工程二班。

篇5:浅谈软件工程之软件需求分析

【关键词】软件工程 软件需求 需求工程 需求开发 需求管理

【中图分类号】TP311.5【文献标识码】A 【文章编号】2095-3089(2015)06-0181-02

软件工程师所需解决的问题往往十分复杂,了解问题的性质可能是非常困难的,尤其当系统是全新的时候。

1.综述

软件工程中包含需求、设计、编码和测试四个阶段,其中需求工程是软件工程第一个也是很重要的一个阶段,这个阶段的任务仍然不是具体地解决问题,而是准确地确定“为了解决这个问题,目标系统必须做什么”,主要是确定目标系统必须具备哪些功能。本文以企业人事信息管理系统为例详细介绍了需求工程的构成和进行方法。

2.需求的标准

定義需求标准有所不同,但在思想上是相同的,都是为了保证项目的顺利进行。一般的标准为:明确(Clear)、完整(Complete)、一致(Consistent)、可测试(Testable),还有可跟踪、可修改等等。

明确:目前大多数的需求分析采用的仍然是自然语言,自然语言对需求分析最大的弊病就是它的二义性。所以对需求分析中采用的语言应该做某些限制尽量采用主语+动作的简单表达方式。还有,不要使用计算机术语。需求分析最重要的是和用户沟通,可是用户多半不是计算机的专业人士,如果在需求分析中使用了行话,就会造成用户理解上的困难。

完整:需求的完整性是非常非常重要的,要做到需求的完整性是很艰难的一件事情,它涉及到需求分析过程的各方各面,贯穿了整个过程,从最初的计划制定到最后的需求评审。

一致:用户需求必须和业务需求一致,功能需求必须和用户需求一致。严格的遵守不同层次间的一致性关系,就可以保证最后开发出来的软件系统不会偏离最初的实现目标。

可测试:需求的几项标准都是为了保证需求的可测试性,只有系统的所有需求是可以被测试的,才能够保证软件始终围绕着用户的需要,保证软件系统是成功的。

需求工程分为了需求开发和需求管理两个阶段:下面就以这两个阶段说明:

3.需求开发

需求开发又分为需求获取、需求分析、编写规格说明书和需求验证。以下列出和讲解分析常规的步骤,当然应按照项目的大小和特点等实际情况我们应该自己确定合适的步骤。

3.1需求获取:

这是该阶段的一个最重要的任务。以下为获取用户需求需要执行的活动。

了解客户方的所有用户类型以及潜在的类型。然后,根据他们的要求来确定系统的整体目标和系统的工作范围。

对用户进行访谈和调研。交流的方式可以是会议、电话、电子邮件、小组讨论、模拟演示等不同形式。需要注意的是,每一次交流一定要有记录,对于交流的结果还可以进行分类,便于后续的分析活动。例如,可以将需求细分为功能需求、非功能需求(如响应时间、平均无故障工作时间、自动恢复时间等)、环境限制、设计约束等类型。

需求分析人员对收集到的用户需求做进一步的分析和整理。

需求分析人员将调研的用户需求以适当的方式呈交给用户方和开发方的相关人员。大家共同确认需求分析人员所提交的结果是否真实地反映了用户的意图。

3.2需求分析

需求分析是软件定义时期中很重要的一个阶段,它的基本任务是准确地回答“系统必须做什么?”这个问题。在很多情形下,分析用户需求是与获取用户需求并行的,主要通过建立模型的方式来描述用户的需求,为客户、用户、开发方等不同参与方提供一个交流的渠道。这些模型是对需求的抽象,以可视化的方式提供一个易于沟通的桥梁。用户需求的分析与获取用户需求有着相似的步骤,区别在于分析用户需求时使用模型来描述,以获取用户更明确的需求。

用于需求建模的方法有很多种,最常用的包括数据流图(DFD)、实体关系图(ERD)和用例图(Use Case)三种方式。DFD作为结构化系统分析与设计的主要方法,已经得到了广泛的应用,DFD尤其适用于MIS系统的表述。DFD使用四种基本元素来描述系统的行为,过程、实体、数据流和数据存储。DFD方法直观易懂,使用者可以方便地得到系统的逻辑模型和物理模型,但是从DFD图中无法判断活动的时序关系。

ERD方法用于描述系统实体间的对应关系,需求分析阶段使用ERD描述系统中实体的逻辑关系,在设计阶段则使用ERD描述物理表之间的关系。需求分析阶段使用ERD来描述现实世界中的对象。ERD只关注系统中数据间的关系,而缺乏对系统功能的描述。如果将ERD与DFD两种方法相结合,则可以更准确地描述系统的需求。

3.3编写规格说明书

项目视图和范围文档包含了业务需求,而使用实例文档则包含了用户需求。你必须编写从使用实例派生出的功能需求文档,还要编写产品的非功能需求文档,包括质量属性和外部接口需求。软件需求规格说明阐述一个软件系统必须提供的功能和性能以及它所要考虑的限制条件,它不仅是系统测试和用户文档的基础,也是所有子系列项目规划、设计和编码的基础。它应该尽可能完整地描述系统预期的外部行为和用户可视化行为。

采用软件需求规格说明模版:采用需求规格说明书模板在你的组织中要为编写软件需求文档定义一种标准模板。该模板为记录功能需求和各种其它与需求相关的重要信息提供了统一的结构。注意,其目的并非是创建一种全新的模板,而是采用一种已有的且可满足项目需要并适合项目特点的模板。

3.4需求验证

需求分析阶段的工作结果是开发软件系统的重要基础,大量统计数字表明,软件系统中15%的错误起源于错误的需求。为了提高软件质量,确保软件开发成功,降低软件开发成本,一旦对目标系统提出一组要求之后,必须严格验证这些需求的正确性。一般说来,要按以下步骤进行需求验证:

1)审查需求文档;2)依据需求编写测试用例;3)编写用户手册;4)确定合格的标准。

4.需求管理

需求开发的结果应该有项目视图和范围文档、使用实例文档、软件需求规格说明及相关分析模型。经评审批准,这些文档就定义了开发工作的需求基线。这个基线在客户和开发人员之间就构筑了计划产品功能需求和非功能需求的一个约定。需求约定是需求开发和需求管理之间的桥梁,需求管理包括在工程进展过程中维持需求约定集成性和精确性的所有活动。

5.企业人事管理系统

5.1企业人事管理系统概述

企业人事管理系统是针对企业人事方面的大量业务处理工作而开发的管理软件。根据用户的要求,实现人员基本情况管理、工资管理、和考勤管理等几个方面的功能。用户通过输入工资、考勤、职工履历等基本信息,由系统自行生成相应的统计数据及各类统计报表以供用户查询、打印。

5.2系统功能分析

系统开发的总体任务是实现企业人事信息关系的系统化、规范化和自动化。

系统功能分析是在系统开发的总体任务的基础上完成的。经过按照以上分析过程进行分析,分析出企业人事信息管理需要完成功能。

6.总结

以上详细介绍了软件需求分析过程。软件工程中包含需求、设计、编码和测试四个阶段,其中需求工程是软件工程第一个也是很重要的一个阶段,要想做好一个项目,必须先做好需求分析,需求工程分为了需求开发和需求管理两个阶段:需求开发又分为需求获取、需求分析、编写规格说明书和需求验证。需求管理就是对需求变更控制的过程。通过介绍企业人事信息管理系统的需求分析阶段,更好地说明了需求分析过程。

参考文献:

篇6:软件工程师职业发展的可行性与需求分析

关键词:学生档案;信息管理系统;需求;可行性

中图分类号:TP311.5 文献标识码:A 文章编号:1671-864X(2015)12-0169-01

一、系统需求

需求分析阶段是软件定义时期的最后一阶段,它的基本任务是准确的回答“系统必须做什么”这个问题。但是这一阶段的任务还不是该怎样完成系统的工作,只是对目标系统提出完整、准确、清晰、具体的要求。更进一步的说,应该确定系统必须具有的功能和性能,系统要求的运行环境,并且预测系统的发展前景。必须仔细分析系统中的数据流又要分析长期使用的数据存储。通过此阶段可以知道该软件主要有学生学籍异动管理、奖惩情况管理、档案管理、成绩管理、考勤管理等功能模块。

工作是学校教学工作的重要内容,这一工作阶段性强,涉及面广,涉及诸多细节。目前,学校学生管理环节普遍存在的问题和现象是:

1.为加强学生社会能力和工作能力,在以就业为导向的指导思想下,学生就业前的校内管理效果不明显,须加以改善。

2.大部分学校逐渐走上完全学分制的教学模式,对于学生综合管理工作更需要规范化。

3.毕业涉及的申报和管理工作主要依赖人工处理,效率低。

基于以上,开发了学生档案信息管理系统。

二、模块化设计

模块化设计就是把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集中起来组成一个整体,可以完成指定的功能问题的需求。系统功能包括学生信息管理、学生成绩管理、考试模块管理、教师信息管理等。

三、系统流程分析

根据用户需求分析和系统的总体设计过程中确定的系统功能及模块,可以分析出系统的流程。系统的启动首先要通过用户权限的验证,输入错误的用户名或密码,系统无法运行,点击确定按钮将重返登录界面。

四、功能需求分析

系统应该具备如下主要功能:

(一)学生管理:学生能够查询自己的资料以及考试信息、课程信息等。可以修改自己的密码,在课程考试后可以查看自己的成绩以及成绩排名情况。

(二)教务人员管理:教务人员能够查询并修改自己的资料及密码,可以增加、查询、修改、删除学生基本信息,查看学生成绩以及总分、单课排名情况。可以增加、查询、修改、删除课程信息、考试信息、教师基本信息等。

五、可行性分析

(一)对现有系统的分析。

目前,在不少大、中专院校学生档案管理系统都是单机的MIS,甚至有的还是手工方式。这种单机的管理系统不仅工作方式效率是极低,而且存在许多弊端,主要包括:

1.档案录入效率低下:例如每学期开学,数以千计的学生档案都由学生处负责录入,这个工程量之大,可想而知。

2.查询不便:例如,某个系部要调出某个学生的档案,由于系部没有管理档案的权限,他就必须到学生处去调这个学生的档案。

3.毕业生转档不便:每年大量毕业生,他们都要转走个人的档案。在这个过程中,若没有管理信息系统的参与,工作繁重不可言喻。

可行性分析对系统的开发至关重要,可以大幅减少不必要的损失,保证系统开发的顺利进行。因此要对此系统进行技术可行性和操作可行性两方面的系统可行性分析。

(1)技术可行性。

本系统是采用目前比较流行的C#语言,用Microsoft Access 2005数据库完成。由于C#的与平台无关性,所以在任何有C#运行环境的计算机上都可以运行。

为了方便交互式应用和数据的大型存储,大学综合管理系统必须采用B/S框架模式而且支持大型的后台数据库,而Asp.NET、SQL、Server 2005数据库正好满足了交互与大型存取两方面。可见使用Asp.NET毕业设计管理系统在技术上是可行的。

(2)操作可行性。

学生档案信息管理系统是一个集成了教师管理、学生成绩管理、考试信息管理,用户只要会上网就应该会使用本网站,网站各个部分都有说明和提示,引导用户达到他们的目的。

对于用户来说,本系统只要求使用者掌握一般的上网经验,经过仔细设计和测试之后的系统具有操作简单,方便灵活等优点,足可以满足用户的不同需求,同时也方便了学校的内部管理。用户一定会在短时间内掌握并熟练使用。只要动一动鼠标键盘就可以达到想要的效果。

(3)经济性可行性。

通过网络化的学生信息管理,大大的提高了工作效率和人才的利用率,使之创造了更大价值;减少了工作人员,同时减少了学校开支;人才利用率的提高,适应了信息时代的网络化管理要求。

(二)可靠性方面。

采用代码较检逐项检查录入的各项资料,保证录入资料的正确性。遵循软件工程规定,保证各个模块的独立性和可靠性,达致整个系统的可靠。同时加强服务器维护工作,保证服务端稳定可靠地运行。

参考文献:

[1]王秀华,徐元栅,学生管理信息系统的开发及实现[J].成都:西南民族大学学报[自然科学版] ,2004:1.

[2]杨波.基于INTERNET_INTRANET的大学生综合管理系统[J].江西:江西财经大学信息管理学院,1999:1-4.

[3]Management Information System, McLeod, Printice Hall,1998.

[4]颜承元.基于Web 的大学生综合素质管理信息系统的设计与实现.[J].上海:上海交通大学学报[农业科学版],2007:2.

[5]祝宇.Windows窗体间的消息传递[J].电脑编程技巧与维护,2007,(7):57-80.

[6]周旺基.ADO对象访问数据库动态查询的实现[J].上海:电脑编程技巧与维护, 2003,(1):55-57.

作者简介:卢秋华(1965—8—),男,本科学历,现在江西省赣州农业学校工作,职称实验师,主要从事计算机教学工作和研究。

篇7:需求分析与软件可靠性保证

关键词:需求分析;测试;可靠性评估;模型

中图分类号:TP311文献标识码:A文章编号:1007-9599 (2012) 03-0000-02

Requirements Analysis and Software Reliability Assurance

Pang Hongbiao

(Information Central of China North Industries Group Corp,Beijing100089,China)

Abstract:The data generated by the software testing process analysis,control errors or defects in the software design process needs analysis,repeated measure of the reliability index of explicit software error distribution in order to reduce the reliability of the software requirements analysis impact,and thus control the errors or defects.

Keywords:Needs analysis;Test;Reliability;Model

需求分析是使用技术手段分析识别软件面向客户的实际需要,并且通过特性的系统描述待开发软件需要实现的功能和解决的问题,以此定义软件所有的操作指令和特征,并最终形成软件的使用说明。因此需求分析在软件设计计划的基础之上,从最先客户的原始需要分析开始,深入的理解和把握软件在使用后需要解决的客户需要,然后在掌握和理解的基础之上把这种需要转换成计算机能够识别的代码。

软件的可靠性则是指软件在规定的运行阶段内按照用户给定的命令参数完成功能说明的规定动作的能力,它是软件系统最重要的评价指标之一,它的完成与否标明的软件是否按照客户的原始要求以及是否完成设定目标,并且软件的可靠性和软件的设计缺陷也有部分关联,从理论上分析可靠的软件系统应该是完整正确的,但在实际运用中任何软件都不能达到理论上可靠性,而且软件的精确度目前缺乏准确度量的手段。

在以往的软件设计工程的历史中,很长时间里人们一直认为需求分析是整个软件工程中的一个简单步骤而导致产生软件的可靠性和软件的需求分析之间关联关系不大印象。但在过去十几多年开发实践中,已经有越来越多的人认识到需求分析实际是保证软件可靠性乃至整个系统稳定的比较关键的一个过程,只有通过软件需求分析,才能把软件功能和性能的总体概念描述为具体的软件需求规格说明,最终才能给程序员确定无二义性的程序编写目标,从而奠定软件开发成功的基础。目前许多大型应用系统的失败,其实归根到底都归结到需求分析的失败:或者是获取需求的方法不当,使得需求分析不到位或不彻底,导致开发者反复多次地进行需求分析,致使设计、编码、测试无法顺利进行;或者是客户配合不好,导致客户对需求不确认,或客户需求不断变化,同样致使设计、编码、测试无法顺利进行。

软件需求分析对软件可靠性的影响至关重要。在需求分析中,除了在思想上予以高度重视外,还应使用合适的技术,选用有效的方法和工具,并加强管理。用户、软件分析与设计人员及其他软件设计方面的专家和行业专家应通力协作,以控制所有可能影响软件功能、性能与可靠性的因素。并可请教在类似软件项目中已成功地进行了需求分析的人员,重用其成功的分析经验、方法和需求规格说明。关于如何通过完善系统的需求分析保证软件的可靠性方面的措施,笔者在实践过程中形成结合自身的切身感受谈以下几点看法,仅供业界同仁参考。

一、首先对需求分析中可能会影响软件可靠性的因素进行重点关注,并对需求分析人员针对此类因素进行重点培训,包括以下几个方面,1、需求获取与分析的彻底性、完整性、准确性,以及分析方法的有效性;2、需求分析规格说明定义与描述的完整性、准确性、一致性、无二义性,以及可读性、易理解性和可维护性;3、分析工具、方法的选择、使用及其有效性;4、数据的准确性和逻辑组织;性能需求包括纠错及功能增加所产生的影响;5、建模语言的选择与开发人员、分析对象和需求领域的适配性;6、环境要求对软件实现的影响;7、功能需求包括备选功能的定义和识别。

二、在需求分析中构建需求分析说明可靠性框架,其包括:建模语言、模型理解、问题模型、问题论域四个方面,以及联系这四个方面的语法质量、语义质量和语用质量三个关系。其中,建模语言与应用领域的适配性、建模语言与开发小组的适配性、开发小组与应用领域的适配性、需求模型对用户需求的实际意义,以及语义质量、模型构造对建模语言的语法质量等是影响软件需求分析可靠性的主要因素,建立软件需求分析的可靠性框架对于确保整个软件可靠性体系是十分重要的。

三、注意需求分析中使用语言的语法质量,语法质量的目标是语法的正确性,即所有语句在句法上完整,不准使用需求说明语言中不曾定义的符号,保证所有语句均满足语法规则。实践表明,错误的预防、检测和更正是语法质量保证的三种基本手段。其中预防错误是拒绝在模型中加入错误的语句;而检测错误则是通过模型的构造发现错误;更正错误是用正确的语句替换错误的语句。前两者可以通过需求说明语言的形式预防来完成,后者则较难自动化。语义质量是需求模型有效性和完备性的保证。有效性要求模型中的所有语句都正确且与用户需求相关;完备性要求模型包含领域中关于问题的所有相关语句。需求模型与领域越相似,其语义质量越高。但对实际问题,不可能达到彻底的有效性和完备性,因而较为实际的目标是在约定的可信度下的有效性和完备性。多数提高模型质量的方法都依赖于人们对模型具体内容的理解,即语用手段。一致性检测往往可自动完成,而不必真正理解给出的模型。语用质量影响人们对表达同一意义的多种表达方式的选择,其目标是可理解性。它不仅要使需求模型能被理解,而且要确保开发人员理解该模型。与语义质量目标一样,在可理解性中也需要引入可信度,任何有助于理解需求模型的手段都可以纳入达到语用目标的有益途径。

在软件需求分析过程中,用户需求中有时已经包含了用户对可靠性的要求,这样,需求分析人员只需将其可靠性要求和其它要求一起进行细化,并以规定的要求和形式形成能综合反映可靠性要求的规格说明即可。因为软件需求分析是一项纯智力活动,所以需要在这一过程中、尤其在需求分析的后期,进行有效的评审和验证,这是发现需求分析错误和缺陷的最有效的办法。当然,它们也只能发现需求分析中的错误和缺陷,并不能保证需求分析没有错误和缺陷。此时,采用基于严格数学正确性证明和公理证明的非形式化正确性证明方法,会收到意想不到的效果。

综上,软件的可靠性保障就是运用合适的定性和定量分析方法对软件的可靠性进行分析、容错和纠错的过程,同时对测试中收集的各种可靠性指标数据进行评估,并返回对照初始设计时的需求分析对照,发现问题并提出解决措施,在周而复始的不断测评中提升软件系统的可靠性。现实实践中,因使用的可靠性评估软件不同,可靠性评估的误差难免,但通过测试将收集的故障数据对照原始需求分析设计,并反复录入测试,最终可获得可靠性评估的结果。

参考文献:

[1]Musa J O.软件可靠性工程[M],韩柯.北京:机械工业出版社,2003

[2]文长康.软件工程与软件可靠性[J].电子产品可靠性与环境试验,2009,6:30-33

[3]郑骏.软件可靠性建模的发展和存在的问题[J].计算机科,2005,6:74-78

[作者简介]庞红彪,中国兵器工业信息中心;研究方向:软件测试、测试技术、安全性、可靠性分析。

上一篇:做幸福的教师读后感下一篇:小学留守儿童活动简报