前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的项目需求分析主题范文,仅供参考,欢迎阅读并收藏。
关键词:科研软件;需求分析;开发模型;质量保障
0引言
随着科研机构、高校承担的国家大型科学工程项目越来越多,在这些大型科学工程中,软件起到不可或缺的作用。如中国科学院高能物理研究所承担的硬X射线调制望远镜项目[1]、BESIII项目[2]中的数据采集软件、探测器和数据监测软件是获得物理成果的基础,而模拟软件和分析软件则直接关系到物理成果的处理和精度。这类软件项目有较深的物理学背景,需要使用一些物理分析和设计方法,实现手段必须符合领域特点。例如,数据存储在粒子物理实验和空间天体物理实验中的要求不同,前者主要采用ROOT[3]格式,而后者则以FITS[4]格式为主,开发所用的常见库和工具也因数据存取格式不同而不同。此外,该类软件应用面较窄,仅限于某一科研领域,其开发很难由软件公司承担,因为软件公司必须投入大量的学习成本,而产品应用又受局限。因此,这类软件的开发一般由科研院所、高校自行承担。然而,目前我国软件整体实力与创新性还不强,人才结构也需要改善[5],一些从事基础研究的机构,软件人才紧缺,且缺乏软件开发管理经验,造成软件质量不高。科研机构从事软件开发的科研人员学习能力强,热衷于追求新技术,如果在方法上给予指导,可帮助其开发出高质量的软件。依托大型工程培养所需的软件人才,不仅有利于大型工程项目的实施,而且还能为国家培养大批软件人才。本文结合该类软件项目的特点和科研机构现状,探讨其软件开发特点,并提出流程管理和质量保障措施。
1科研领域软件开发及其特点
1.1软件项目特点
(1)软件提出者。一般是项目科学家、顾问,他们具有较强的科学洞察力,也能较好地把握软件开发方向,但他们大多只关注宏观问题,而非技术细节,对软件不是很了解,不能用计算机语言和思维描述项目,也无法很好地理解和描述实现流程、细节,因此不能准确估计软件开发难度和工作量。
(2)软件开发者。一般为青年职工和学生,他们熟悉软件开发,但往往不能完全理解项目目标,也不能深刻理解其物理过程,理解过程中往往思维局限性大,缺乏方向。
(3)软件测试者。多数情况下单元测试由开发者承担,集成或系统测试由其他人员完成,部分由用户完成。与开发人员相比,测试人员往往物理基础较好,掌握基本测试方法,但是没有建立起完整的测试体系,而且将软件测试当作“副业”,测试以功能实现为主,对软件细节不了解。
(4)用户。用户一般是物理工作者,他们熟悉研究领域的物理要求,但不能用计算机语言描述需求,往往需求不实际或不够明确。他们对软件要求较高,要求通过物理测试对软件性能和输出结果精度进行测试。如通过运行大数据量检查软件内存和时间消耗,以促进开发者进行算法优化等。
1.2软件项目开发特点
(1)软件需求不够明确。科研领域软件项目一般都涉及到探测器和数据,涉及领域较广,而且需求不断变化。无论是软件提出者还是用户,往往难以用计算机思维或语言清楚描述问题;软件开发者对项目物理目标,特别是物理过程缺乏深刻理解,不能很好地理解软件功能细节及需求。比如,对于一些数据分析软件,提出者或用户难以描述出软件需要完成的功能,而开发者对数据处理流程中进行的数据转换、修正、数据结构重组也缺乏深刻理解。
(2)人员结构较为单一。软件开发中通常一人需要承担多种角色,包括软件需求分析员、设计者和开发者,甚至测试者。这样的职位设定,人员分工不明确,难以深入把握某一领域(比如测试)的特点和方法,从而影响了整个软件开发过程。
(3)软件实现细节难以把握。此类软件一般涉及复杂的物理过程,需要用一定的物理方法解决,但方法并不唯一,不同方法会对结果带来一定影响,而且不同类型数据所依赖的方法也不同。软件开发中还有些研究性课题,只能以接口形式存在于软件中,但预留接口时往往设计较为简单,考虑的情况过于理想,难以满足实际需求。然而,如果设计时考虑得比较复杂,接口较多,又往往缺乏必要的软件技术和经验,不能有效把握细节。
(4)硬件频繁改动增加软件开发风险。软件依赖于硬件,设计初期软件是在理想的硬件设计状态下运行,但如果硬件发生变更或者运行影响因素增加,软件也随之变动,从而加大开发风险。
(5)软件测试及评估缺乏专业水平。由于开发者、测试者与用户的专业测试能力都比较欠缺,难以涉及到核心质量问题,往往无法全面对软件作出专业评估。
(6)人员管理难度大。科研机构、高校一般热衷于科学研究而不是工程项目本身,因此难以兼顾两方面工作。软件提出者和管理人员往往对软件工程缺乏深入了解,难以对开发工作作出客观评价,因此对软件开发的进度和质量带来一定影响。
(7)软件不确定性因素多。随着工程实施,软件提出者、用户会不断改变、增加需求,加上开发者及测试者缺乏相关经验,代码开发不规范、开发人员流动性强等增加了软件开发的不稳定性。另外,为降低开发成本和难度,开发人员通常会引入现成的工具,这可能给软件开发带来隐患。然而,面向某一科研领域的软件开发项目也有自身的优势。如和大型专业软件相比,所需的项目功能不是特别多,部分开发平台具有可移植性,开发人员综合素质较高,学习能力强,英语基础较好。此外,很多工程与国外合作开发,可参考国外成熟软件,并方便引进一些免费的软件框架和平台,如Gaudi[6]框架、天文分析工具库Ftool[7]等。
2软件开发流程管理
2.1确定软件开发模型
科研机构,尤其是一些缺少经验的团队,习惯采用瀑布模型进行开发,主要由于该模型分阶段,且各阶段间存在因果关系,比较符合思维模式。但它会产生大量文档,到开发后期会凸显软件开发缺陷。适合科研领域的开发模型有迭代式模型[8-9](需求变更驱动型)、增量模型(功能驱动型)及快速原型开发[10]等。对于科研软件而言,模型选择需综合考虑软件框架稳定性和开放性、构件独立性以及项目组开发经验等。比如对于需求不明确、流程不清晰、算法不确定的项目(如数据处理软件、分析软件和标定软件等)采用迭代模型或者快速原型开发较好。此外,采用一种模型为主,其它模型为辅,也会得到很好的效果。
2.2加强开发流程控制
无论采用何种开发模型,开发人员必须在每一次开发或迭代中完整实现需求分析、设计、编码和测试等步骤。各阶段的评审或项目报告尤为重要,项目前期要确保软件开发人员准确理解项目需求以及软硬件环境;中期阶段要确保开发流程和方法可靠;后期要通过测试确保软件运行符合要求。
2.3需求分析中注重物理分析
科研软件中一般涉及大量数据操作,而且过程比较复杂,一些原始数据要经过转换、重建、标定及修正等步骤,而且处理不一定是线性的,即相邻数据之间可能有关联。这些功能和性能需求不容易明确,需要着重把握。软件中还可能涉及一些物理算法(比如图像修正、频率分解等),因此在需求分析中需要着重进行物理分析,包括流程梳理、特殊方法和条件选择等。
2.4采用串行开发方式
科研机构人员结构比较单一,往往多项工作并行执行,给软件开发质量提升及人才培养带来不利影响,可将相关性比较强的软件以串行方式开发,数据产品生成软件和数据分析软件可以依次开发。
2.5提高开发人员的主观能动性
软件开发过程中,保障软件项目负责人在经费使用及绩效考核中的话语权,组建凝聚力强的研发团队,对软件开发的进度、质量进行考核。
3软件质量保障措施
(1)加强开发过程中的沟通。科研项目的不确定性带来软件开发需求的变动,用户往往只注重项目需求功能满足,而不关心软件的实现细节,所提出的功能或接口可能不切实际,因此需要加强与用户的沟通,明确软件开发目标。
(2)充分调动开发人员积极性。科研机构软件开发人员往往是科研项目的幕后工作者,其工作成果容易被科研项目成果所掩盖,所以充分调动软件开发人员的工作积极性尤为必要。一方面,为其提供成果展示平台,尤其是展示创新性成果,如将开发中的文档整理成册等;另一方面,在基金申请、职称评定等方面提供支持。科研机构职称评定主要依据取得的科研成果,由于工作内容不同,如采取同样的评审条件,软件开发人员与其他研究人员在同一层次上竞争将缺乏竞争力。可能导致部分人员不愿意从事软件开发工作,或者开发软件的同时还从事其它研究,从而影响软件开发进度和质量。因此,需要根据软件开发人员工作的特殊性,通过有效的激励措施调动其积极性。
(3)培养既懂管理又懂技术的项目负责人。优秀的软件工程项目负责人不仅是一个好的软件设计师,对软件实现细节能够很好的掌控,还是一名优秀的管理者,能科学配置资源。
4结语
面向科研领域的软件具有较深的行业背景,其设计方法、实现手段有很强的领域依赖性。本文从科研领域特点及软件提出者、开发者、测试者、用户的角度出发,探讨了其需求难以明确、人员结构较单一且管理难度大的特点。在软件开发管理过程中,需要采用合适的软件开发模型,注重流程管理,充分调动开发人员的工作积极性。
参考文献:
[1]LITIPEI,WUMEI.ThehardX-raymodulationtelescopemission[J].Physics,2008,37(9):648-651.
[2]LITIPEI.HXMT:achinesehigh-energyastrophysicsmission[J].NuclearPhysicsB,2007(166):131-139.
[3]BESCOLLABORATION.PreliminarydesignreportoftheBESIIIDetector[Z].2003.
[4]TheROOTTeam.ROOTuser'sguide[EB/OL].https://root.cern.ch/drupal/content/users-guide.
[5]WELLSDC,GREISENEW,HARTENRH.FITS:aflexibleim-agetransportsystem[J].A&AS,1981,(44):363-370.
[6]APrimerontheFITSDataFormat[EB/OL].http://fits.gsfc.nasa.gov/fits_primer.html.
[7]刘丽梅.中国软件产业市场竞争力分析[M].北京:对外经济贸易大学,2007.
[8]BARRANDG.Gaudi-asoftwareconfigurationmanagementtool[C].ProceedingofCHEP2000,2000.
[9]FTOOLS.Ageneralpackageofsoftwaretomanipulatefitsfiles[EB/OL].http://heasarc.gsfc.nasa.gov/docs/software/ftools/ftools_menu.html.
[10]张海籓.软件工程导论[M].北京:清华大学出版社,2005.
[11]师迎海,何雪慧.迭代式软件开发模型研究及应用[J].微处理机,2015(1):55-57.
论文摘要:在云技术架构下,建立强大的多媒体教学资濠库。这样可以集中整合各方优秀的教学资源,建最好的和最丰富的教学课库,让各奏学生均可找到适合自己,而且自己感的课程和课件。建立了多媒体教学资涎库后,既可以垴小东西部教育差距,又能保障教育资泺的均衡发展。
大部分教师(尤其大学教师)的工作应该相应的从向学生灌输知识,转向引导学生学习知识,找到激活学生学习智门的钥匙。
放在云架构内的这些教学资源,随着不断的更新、增加,必将成为一笔极大的资源财富,不仅可以供在校学生学习使用,也可以提供给全社会需要再学习、需要更新知识的人士使用,为全社会形成一种不断学习的氛围,提供一个强大的资源保障。
一旦形成全社会不断学习的风气,社会就会和谐,文明程度的程度就会不断提高,人们的创新意识和能力就有了源动力,人们就会从更多的追求物质财富转而进入追求精神财富。
前文我们探讨了利用“云技术+多媒体技术改革现有的教学模式”,话题意犹未尽,还想进一步探讨一些教学模式改革的细节。当然我们暂且讨论的教学对象为大学以上的学生,或部分高中生,因为绝大部分高中生的教学活动还是基本围绕着高考指挥棒在转。
在云技术架构下,建立强大的多媒体教学资源库。这样可以集中整合各方优秀的教师资源、教学设备资源,建最好的和最丰富的教学课程库,让各类学生均可找到适合自己,而且自己感的课程、课件和学习参考资料。
制作这些课程资源可以分工,高层次教师撰写课程内容,配套各类教师,可以有的整合内容、有的应用多媒体素材加工制作课件、有的制作各类课程教程、而有的则准备相关参考资料以及考试题库系统等教学资源。
这时的教学资源就不是属于某个学校、某个团体、某个局部组织,而是属于国家或全人类的资源,为全人类所共享。
这样,可能有人会担心是否教师或相应的人员都要下岗了呢?否!
大部分教师(尤其大学教师)的工作只是从向学生灌输知识,转向引导学生学习知识。大部分长期从事教学工作的教师深有体会,好学生不完全是教出来的,而且通过老师启发性的引导,激活了他们的兴趣,或打开了他们的智门,使他们自己要学习,只有激活了学习者的源动力,才能使他们朝着一个一个目标不断攀登。
那么,教师教学要包括哪些内容呢?我认为教师的教学工作应该围绕中如何能激活学习者的兴趣和以如何能打开他们的智门为衡量指标。方法可以各不相同,因为人是个性化的,当然方法也应该因人而异,当然可以对个性相近的学生采用类似的方法,但还是需要有微调。
具体做法可以不断摸索。教师可以组织学生开展各种开发、创新活动,可以组织各种竞赛活动,可以组织学生参与各种专题讨论活动,让每个学生均有机会表达自己的想法和观点,很多思想的火花是在交流中产生的,是在实践过程中绽放的,所以要多提供一些机会让学生经历各种活动的锻炼,活动的过程是最能锻炼人能力的,如果省略了过程,结果也是不丰实的。
我们提倡多开展各种创新活动来锻炼学生的能力,而现在学生这方面的锻炼机会太少,应该增加相应的比例。那么是否就不考试了呢?当然不行!期间,我们的学校大多不考试,结果中学毕业生连简单的一元一次方程都不会,这样社会如何发展?考试还是衡量学生学习掌握程度的标尺,当然考试形式可以的笔试,也可以是操作过程,更可以写论述文章、论文之类形式;考试时间可以是期中、期末考试,可以是融入平时的多次抽查中,也可以罗列各类课程统考时间安排表,学生学习到一定程度,可以报名参加考试,来检验自己知识的掌握程度,形式可以通过实践不断总结,不断改进。总之,有助于学生更有效掌握知识、能打开学生智门的方法就是好方法。
学生通过考试,当然需要有一系列学分累积机制,最好将理论课程和实践课程按不同学分比例分别统计,保证不同学科对理论和实际操作的要求不同。
这样的机制,对教师的要求不是低了,而是更高。要求教师积极思考,寻找能与学生更好沟通,激活学生心智的钥匙,这是没有一个统一模式可循的,教师也必须不断摸索、创新。
有了这种师生一对一、一对多、多对多的关系机制,学生与教师之间的距离不是远了,而是更近了,社会也会更和谐。因为从教师的角度来说,必须了解学生,走近学生,才能找出适合他们学习自嘶方法,才能激活他们的学习兴趣;从学生的角度来说,有问题、有心结就可以及时与他们所喜欢的教师沟通、请教,尽快排除障碍,琢磨出适合自己学习的好方法。要使学生学习效果好,教师与学生是一个整体,只有双方的努力、协调,才能找到最佳的教学方法。
如果学生太多,老师顾及不了怎么办?老师可以到学校与学生面对面的谈话,也可以出现在各种活动场合,如:各类研讨会老师可以当组织者,让学生大家来准备内容、畅通各自的观点,但教师更多的时间可以利用现有的网络环境、3G环境,老师可以规定时间在网上,利用视频、语音交流与学生好似面对面的交谈,也可以利用手机、短信等的形式及时进行一些师生对话。不远的将来电脑、手机、电视三网合一,利用任何IT工具都可以及时沟通,现代科学技术的发展已经具备了技术上的条件,问题是我们需要寻找到一系列行之有效的方法来强化师生间的沟通。
放在云架构内的这些教学资源,随着不断的更新、增加,必将成为一笔极大的资源财富,不仅可以供在校学生学 习使用,也可以提供给全社会需要再学习、需要更新知识的人士使用,为全社会形成一种不断学习的氛围,提供一个强大的资源保障。
一旦形成全社会不断学习的风气,社会就会和谐,文明程度的程度就会不断提高,人们的创新意识和能力就有了源动力,人们就会从更多的追求物质财富逐步进入追求精神财富,那么社会的发展也就更稳健。
随着社会的进步,我们应该摸索和寻找一种更理性和有利于学生身心健康的教学体制,让学习者获得获取知识的乐趣,让教师真正成为学生的良师益友。
【关键词】项目管理;中小型企业人才需求;毕业生就业;国家政策
2012年,我国普通高校毕业生规模已达680万人。由于当前我国经济发展面临的国内外环境仍然十分复杂,不稳定、不确定因素还很多;高校毕业生就业总量压力和结构性矛盾依然突出,就业形势不容乐观。
虽然大学生求职与企业人才招聘不止进行一次,但是对于企业对毕业生的选择和大学生毕业后第一次择业的一系列工作活动来说,却是符合项目的特征,即一次性,渐进性,多目标性,生命周期性。为系统地、全面地看清毕业生就业情况萎缩与社会人才需求增大的矛盾,运用项目管理过程思想将这一矛盾阶段化、细节化,分析各方内在特征及相互之间的联系与区别,结合相关应用理论、经验知识和真实数据资料探索解决方法就显得很有必要。
1.基于项目管理的国内中小型企业人才需求分析
统计数字显示,当前我国中小型和微型企业已经占全国企业总数99%,创造的最终产品和服务价值相当于国内生产总值的60%左右,提供了全国80%的城镇就业岗位,上缴的税收约为国家税收总额的50%。此外,目前,中国65%的发明专利、75%以上的企业技术创新、80%以上的新产品开发,都是由中小企业完成的。这充分表明,没有量大面广的中小企业的平稳较快发展,就没有整个国民经济的平稳较快发展[1]。而中小企业的生存发展归根结底离不开人才的作用,找对人才、留住人才、发展人才,加强企业竞争力,延长企业生命力恰恰成为制约企业如何发展以及如何更好更快发展的重要因素。
1.1 中小型企业人才需求的特点
1.1.1 人才需求量大,需求层次广
中小型企业的创立和发展期,用人比较灵活,随着机构、规模不断扩大,对人才的需求量急剧增加,除了基础部门的行政运营人员,还有营销管理人员、财务管理人员这类高级知识性人才,同时也大量缺乏专业技术人员。对人才存在如此大的缺口需求导致了大学毕业生成为中小企业的主要选拔对象,毕业生在中小企业的发展空间也很大。
1.1.2 认同企业文化,忠于为企业服务
中小型企业想要获得长期的、稳定的发展壮大就必须建立完整的企业价值文化,只有当企业员工对企业价值高度认同,才能保证在企业发展过程中由于资金、技术、资源等有限的不良因素影响下,企业员工坚持个人价值与企业理念相契合,努力帮助企业渡过难关,个人潜力也得到最大发挥。
1.1.3 具备一定能力,有较强可塑性
近年来,企业在招聘员工方面相对于“学历”更看重“学力”。当然,员工自身的基本能力培养也是必不可少的,这主要包括:问题分析能力、沟通能力、团队合作能力、抗压能力等。然而,不是每一个应聘人员都具备较强的能力,一旦加入就能为企业创造价值,所以企业现在选拔人才注重的是一种学习的能力,一种经“雕琢”后能变成“璞玉”的能力,一种能随着环境变化自己不断改进的能力。
1.1.4 有良好的信用背景,诚实信用
如今,诚实信用不仅是个人自身信用状况的表现,也是社会各方对员工的考察点。特别是涉及到企业资金项目的财会人员、销售人员、出纳人员之前的信用情况,有无挪用、侵占企业资产、收取不当回扣等不良记录。应聘人员学历、资格证书有无假冒等,有时如果企业不慎重审查会给企业造成致命性的打击。
1.1.5 拥有创新思维,具备创造能力
面对人民币升值、原材料价格与用工成本不断攀升、出口不景气以及严峻的资金短缺等形势,原来主要依靠低劳动力成本和廉价原材料的发展模式已经不再可行,科技创新和品牌越来越受到业界的重视。所以,中小企业应以“创新”为主导,有意识地选拔培养一批拥有创新思维,具备一定创造能力的新员工,这势必为企业发展添砖加瓦。
1.2 中小型企业在招聘工作中存在的问题
在我国,中小企业平均寿命仅为三四年,中小企业招聘现存的主要问题有:企业缺乏人力资源管理;未进行成本估计;岗位需求分析不具体;招聘基础工作薄弱;招聘岗位诠释不全;员工录用机制不规范;员工缺乏专业培训;绩效考核制度不健全;激励措施不给力等。
这一系列问题之所以较为突出且没有根本性改变,是由于中小企业是由单一个人或少数人提供资金组成,因此在经营上多半是业主直接管理而较少受外界干涉。企业受规模、资金、工作环境等的制约,家族管理模式下的任人唯亲现象也就相当普遍,同时,缺乏良好的就业平台、公平竞争的机会、人才培养的引导、地方政府的支持,使中小企业在人才引进和保留方面举步维艰。
1.3 中小型企业人才招聘体系分析
将企业员工招聘进行项目化管理可以更系统、清晰地分析出每个阶段的工作要求,使招聘工作更加规范化、合理化。结合相关现代人力资源管理理论,人才招聘项目化分解体系图如下(见图1):
图1 人才招聘项目化分解体系图
1.3.1 启动阶段
启动阶段要求招聘的总体规划必须符合企业文化,招聘成果有利于企业针对性、有计划地引进人才,是关系到招聘工作实际性操作的基础。
1.3.1.1 相关信息分析
信息分析可分为内部信息分析和外部信息分析。内部信息分析主要是与企业相关方面的评定与估计,如公司的地理位置、办公条件、工资水平、盈利水平、负债情况、发展前景等。外部信息分析则是对公司控制之外的国家政策、人才市场环境、竞争对手情况加以考虑。
关键词:软件项目,软件开发,需求管理,需求变更
在信息化建设高速发展的今天,建立与之相适应的信息化系统已成为政府机关,企事业单位的重要课题之一。然而,在软件项目的开发过程中,项目变更频繁、进度超期,成本增加等现象数不胜数,这些问题的出现,使很多项目无法达到预定的目标,最终不得不以失败而告终。究其原因,主要有需求开发的原因、项目控制的原因、与客户沟通的原因、技术方面的原因等等,但对项目影响最大的则大多与开发需求有关。
(一)软件项目需求开发与管理存在问题分析
1、需求获取过程中,需求的不确定性
(1)项目开发团队缺乏项目的业务背景和行业经验,没有能完全了解客户的需求,需求分析不到位。项目开发团队的组成,是根据项目的规模、项目技术人员具备的专业技术水平来决定的。需求规格说明书是项目组成员通过前期的调研、向客户详细咨询等方式获得,是项目需求阶段的重要文档。需求分析人员在需求获取过程中,由于不了解客户的业务流程及行业状况,不好把握客户的需求,无法将需求表述为准确的技术用语,对项目需求分析产生一定的影响。
(2)客户不能全面、准确的阐述项目需求。由于客户对计算机系统的能力和限制缺乏了解,他们认为所提出的需求是否准确、全面,计算机最终能否达到他们的需求,只能取决于需求分析人员对客户对需求的描述和理解。
(3)对需求理解的分歧。客户和需求分析员之间由于工作背景不同以及理解的偏差,双方很难在沟通过程中对某一问题进行有效的沟通。当需求分析人员就系统需求与客户进行沟通时,需求分析人员通常使用的是专业的计算机术语,而客户使用的是通俗的行业语言描述。对同样的一句话,不同行业背景,不同层次的人员所理解的含义也尽不一样,这些情况都会在认识上产生一定的分歧。
2、需求分析不完整
在需求分析阶段,客户提出的需求仅是一个模糊的概念,需求分析员虽然已按客户的描述进行需求分析,但这只是从开发者的角度考虑,并没有能完全站在客户角度去搜集和整理需求,所形成的软件需求说明文档无法得到客户的认可。
3、需求变更频繁
需求在项目开发生命周期的任何阶段,都有可能被改变、删除或增加,需求的变更,对项目后期的相关活动产生很大的影响。这时,项目组成员不得不重新执行需求分析、设计、测试等工作。免费论文,需求变更。在需求评审、确认阶段,不同层面的客户所关注的问题也不尽一样,由此将会提出其它新的想法及要求;另外,客户的业务变化,也是客户提出需求变更的原因之一,这些需求变更的提出,对项目的进度、成本、资源配置等造成一定程度的影响。
4、缺乏有效的沟通制度和机制
由于项目组对客户的组织结构、人员关系、工作职责等没有足够了解,使得用户需求的传递延迟、丢失或者传达的意见被曲解的现象。另外,在需求开发阶段,由于出现多个用户代表各说其词,没有形成统一的需求,以致于项目组无法得到最终用户代表确认的需求。
(二)软件项目需求开发和管理对策
针对上述软件项目需求开发和管理存在问题,提出以下应对措施:
1、全面、准确的理解客户需求
(1)需求获取是项目需求分析人员与客户之间有效的沟通与交流,收集客户需求,与客户达成需求共识的活动。这项工作在很大程度上依赖于需求获取者的专门知识,这种专门知识可以建立在对各种行业的了解上,也建立在对项目开发技术的全面了解上,因此项目需求获取阶段必须由具备专业技术知识的项目经理或技术人员担当。针对项目开发方缺乏项目相关行业经验的情况,可以聘请行业专家、顾问等专业人员,通过业务培训、专业指导的方式进行,以提高项目团队尤其是项目需求分析人员对客户需求的把握能力。
(2)选择熟悉业务流程、能够确定需求的管理者、客户代表,让他们参与需求讨论。对于客户无法详细描术清楚的需求,由需求分析人员对他们进行引导,必要时,有针对性的对他们进行软件项目的相关知识培训,让客户能够更好的了解软件项目开发知识,提高他们对开发高质量系统需求重要性的认识,从而能清楚表达自己的需求。
(3)为了能够准确把握客户的需求,只有语言、文字上的交流沟通还不够,还需要通过成熟的项目进行演示,或搭建直观易懂的项目需求模型,由有实际开发经验的项目经理作为需求分析人员向客户演示并详细解说,减少客户与分析人员对系统开发需求的理解偏差。若客户在听取需求分析人员的解说后,仍对项目需求仍存在理解上的分歧,需求分析人员可与客户再进行深入交流和需求探讨。
2、对客户需求进行深入分析,达成共识
需求分析是项目管理的核心内容之一,准确、完整的需求分析是软件项目成功的基础。为了能够得到客户对需求的认可,要求项目需求分析人员能够准确领会客户的意图,对客户需求进行深入分析,完整的编写需求分析文档。通过召开会议的方式,组织双方相关人员进行项目需求评审,向客户详细介绍系统功能的描述,让客户能充分理解说明书的内容,以形成全面、准确的需求说明文档。
3、加强需求变更管理
对项目而言,出现需求变更是不可避免的,变更可能是由客户、项目团队或项目特殊原因引起的。项目变更控制和跟踪,是项目开发的一项重要摘要的变更说明书,其内容包括:变更时间、变更内容、变更申请人、变更采取的措施等,并对变更内容及时进行跟踪、确认。只有对需求变更进行有效的控制和跟踪管理,才能有效保障项目的成功开发。
4、制定有效的沟通制度和机制,采取多种沟通方式
在项目需求开发阶段,项目分析人员与客户的有效沟通,是建立在彼此对需求达成一致的基础之上的双向互动过程。如果没有一个良好的沟通渠道,项目将无法继续开展。因此,项目经理有必要尽早建立一个完善的沟通网络,制定有效的沟通制度,加强项目经理与成员、项目经理与客户之间的双向有效沟通。通过制度规定,对于特别重要的内容要采用多种方式进行有效沟通、确定,提高沟通意识及沟通的有效性,以确保信息能及时传达到位。例如,除发送邮件外,还应电话提醒、传真回执确认,对于特别重要的内容,要以召开会议的方式进行传达。
(三)结束语
项目需求开发和管理是软件项目开发中非常重要的工作内容,它贯穿于开发活动全过程。免费论文,需求变更。免费论文,需求变更。软件项目的失败大多数不是技术上、管理技能方面的原因,而是软件需求开发与管理所致。免费论文,需求变更。免费论文,需求变更。可见,需求开发和管理在项目开发中起着及其关键的作用。免费论文,需求变更。因此,在项目需求阶段,我们应系统的了解和掌握需求开发与管理的相关知识,结合项目实际情况并加以应用,做好需求的开发和管理工作,确保项目的顺利完成。
[1]张文清.软件开发过程项目管理的研究[D].北京:首者经济贸易大学,2005
[2]屠梅曾、刘欣、胡昊编著.项目管理[M].上海:格致出版社:上海人民出版社,2008,192-193.
关键词:软件;需求;分析;开发;系统
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)22-5270-03
随着计算机、信息等技术的发展,计算机被广泛应用在各个行业中。各行业的管理与生产趋于信息化、数字化。使得与之相应的各种软件更多更复杂,客户对软件的要求更加高。软件产品是否能顺利交付给客户,是否能得到客户认可,客户是否能真正运用,是否能达到客户的期望,这些与软件需求分析有密切的联系。为了提高软件质量,就应该对软件需求分析加以重视。
1 软件需求分析任务
1.1 何谓软件需求分析
先举个例子来说明,对于装修房子这个问题相信大多数人都能理解,客户装修房子要与装修公司签合同。在签合同之前,装修设计者一定会与客户详细讨论各种细节。如整个装饰格调?各个房间的功能?房间家具图纸样式等等,每个环节都有约定说明及装修合同,双方都明白假如完工后修改带来的不便以及变更细节的危害性。同样在软件开发中也有这样的过程即软件需求分析。
软件开发者要从客户的工作业务中提取出软件系统能够帮助客户利用计算机解决或更好解决的工作中各种问题。通过对客户工作问题的分析,规划出开发者所要开发的软件。这些的活动阶段即构成软件开发生命周期的需求分析阶段。
1.2 软件需求分析的任务
软件需求是指客户对目标软件系统在功能、行为、性能、设计约束等方面的期望。通过对应问题及其环境的理解与分析,为问题涉及信息、功能及系统行为建立模型,将客户需求精确化、完全化。
软件需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的“做什么”的问题。软件需求分析的任务不是确定系统怎样完成的工作,而是确定系统必须完成那些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。
1.3 软件需求分析的重要性
一方面:软件需求分析对软件具决定性。软件开发出满足客户要求的软件产品,就必须知道客户的需求。需求分析就是分析软件客户的需要是什么,决定要什么。不能真正满足客户需要的软件不是合格的软件。
另一方面:软件需求分析对软件后期开发具方向性。需求分析可以让软件项目人员明确方向,让项目成员知道下面步骤如何实施。只有通过软件需求分析,才能把软件功能和性能的总体概念描述为具体的软件需求规格说明,为后续软件开发工作指明方向,保证软件开发在正常的轨道进行。
1.4 软件需求分析的过程具体可分四个步骤
1)对问题进行识别;2)问题的分析与方案的综合;3)编制软件需求分析的相关文档;4) 需求分析评审,对系统给予评价。
2 软件需求分析过程中常见的问题及采取措施
软件的需求与传统生产企业产品需求相比较,具有模糊性、多变性和主观性等特点,它不像生产汽车、电脑等硬件的需求,是有形的、客观的、可描述的、可检测的。软件需求分析是软件项目开发中难把握的问题。下面对软件需求分析过程中常见问题进行分析后,给出相应措施来保证需求分析的质量:
2.1开发人员和客户间交流与理解的问题
2.1.1 问题原因主要体现
1)软件开发人员不可能是全才。对客户应用领域的问题不是专家,对客户的业务活动流程及业务环境不熟悉,认识不够清楚、准确。
2)而客户不熟悉计算机应用。有的客户不太懂软件,他们可能觉得软件是万能的,会提出一些根本无法实现的、不切实际的需求;有的客户也可能觉得软件不能解决工作中的问题,无法提出正确的需求。
3)软件开发人员与客户双方所占位置不同。不了解对方的工作,对相同需求的认识有差异,交流时存在着理解上的不同。
2.1.2可采取的措施
1)对开发人员进行专业培训。开发人员对所开发系统的领域不一定了解,为了使开发人员能更好理解用户的需求,在做需求分析的初始阶段对开发人员进行该领域相关知识的培训。对开发人员尽快完整地熟悉相关业务,从而能够站在客户的立场看待软件需求。
2)熟悉现有的处理系统的各个方面。熟悉客户各岗位人员、工作环境、工作流程;确定各部分的需求调查对象;建立调研对象通讯录以保证调研及分析期间的沟通。使需求调研分析更好更全面地进行。
3)所有客户方进行沟通。需求分析不仅仅是软件工程项目方的事,软件客户也起到了至关重要的作用。应当从项目的启动开始,需求分析员及其项目成员就要分清项目客户方包含哪些人和部门,通过沟通协调对他们施加影响,争取所有客户对软件项目的支持和配合。
2.2需求不完整及完备程度的问题
2.2.1可能的原因
1)需求获取时参与的客户太少。需求调查时的对象数量不够,获取的客户需求有限自然使得需求不够完整。
2)客户提出的需求是有限的。有的客户因对计算机新技术、信息新技术了解不多,无法提隐含的或潜在的需求;有的客户也不太明白自己的真正需求;有的客户对问题的陈述往往是不完整。这些都使得获取的需求不够完整。
3)开发人员主观性。开发人员主观性为对客户开发项目的需求明白,实际只是开发人员的主观判断。使得获取的需求是片面的,不完整的。
2.2.2可采取的措施
1)让更多的客户参与软件开发项目。得到客户对项目的支持,调查并明确他们的需求和愿望。让具有代表性的用户在项目早期直接参与到开发队伍中,并一同经历整个开发过程。
2)收集整理资料,对各项业务全面分析。收集各项业务中的资料如:行业标准、工作手册、作业流程、办事指南、各种表格、技术资料等等。通过这些资料掌握对了解系统有帮助。对系统中的每项业务及流程要进行全面了解,帮助全面理解客户需求。
3)深入挖掘潜在的需求,反复进行完善需求。主要对业务流程、组织架构、软硬件环境和现有系统等相关内容进行沟通,挖掘系统中最终客户的真正需要各需求,把握需求的方向。还要启发客户探讨隐含的或潜在的需求,这样可发激发他们提供更为完整全面的需求。
2.3软件需求不一致性问题
2.3.1常见的原因
1)现实使用的系统的信息的不一致。正在使用的处理系统所反映的信息本身就不一致,自然使得获取的需求不一致。
2)不同的客户的需求不一致。不同的客户站在不同的角度,对现实使用的系统认识理解不一致,对新系统具有不同的要求和期愿,故所得的需求不一致。如客户中使用目标系统者关心系统是否简单易用,而对客户中的管理客者则关心系统是否高效。
3)相同的客户的需求不致。相同的客户对系统使用频繁程度的差异、受教育程度和经验水平也不尽相同,故所产生的需求不一致。
2.3.2可采取的措施
1)对各种不同客户需要进行分类。项目早期就针对所有这些主要用户进行分类,每一个客户类将有自己的一系列功能和非功能要求。这样就能从每一个重要的客户类代表中获取不同的需求。
2)对需求进行优先级排序。不一致的需求,那么必须决策出满足哪一类客户方的需求更为重要。了解可能使用产品的客户种类的信息和他们的用法与软件项目目标的关系如何,将有助于决定哪一个客户类所占份额更大来确定是关键与非关键客户需求。这样就对客户需求进行优先级的排序。
3)软件项目需求进行定位。软件需求没有简单的对与错,只能软件需求需要从不同的地方、不同的角度去定位;去考虑;去分析。“ 需求分析”不能是“客户要求什么就是什么”;也不是“我们能做什么就做什么”。用户需求必须和业务需求一致,功能需求必须和用户需求一致。严格的遵守不同层次间的一致性关系,才可以保证最后开发出来的目标软件不会偏离最初的实现目标。
4)平衡需要对其分层次。需求人员,在进行需求分析的时候,首先应该明白客户的需求,然后再加上自己的分析处理过程,将需求划分成不同的层次如:哪些现在能做、现在哪些不能、哪些以后可以做,应当考虑全面并进行平衡和取舍。
2.4需求不明确、模糊的问题
2.4.1可能原因
1)客户的认识的模糊。对于软件系统,客户很难精确地提出它的功能和性能要求。开始只能提出一个大概、模糊的要求,只有经过长时间的反复认识才逐步明确。
2)需求描述导致的需求模糊。需求描述的不清楚,或需求描述的方式方法可能使得不同的人对需求说明产生了不同的理解。
3)需求分解和细化程度不明确。软件需求分析对问题按自顶向下、逐层分解的方式进行分解和细化。在分解和细化中,对横向分解的宽度不明确;对对纵向分解的深度不明确。
2.4.2可采用措施
1)准确表达用户需求,描述各项业务要详细。对数据的具体业务来如查、增、删、改、传等若干步骤,都有其业务名称,同一步骤可能对多个数据集进行不同操作需描述正确及详细。准确地表达所接受的用户要求,只有通过确切描述的软件需求才能成为软件设计的基础。
2)编写软件需求文档。尽可能全面详细描述原有系统和客户希望将来系统具有的各项业务流程,确定系统必须具有的功能和性能,定义了系统中的数据,简略描述处理数据的主要算法,就要把分析的结果用软件需求文档记录下来。软件需求文档是需求的载体,借助它与客户进行讨论,对描述不明确的模糊的需求进行修改,最终让客户确认。
3)组织从不同角度审查需求的队伍对需求审查。按照技术标准,对需求分析阶段工作进行审查。不同的评审者从不同的角度对需求说明给予解释,让每个评审人员都真正了解需求文档,对需求文档进行评审,以便发现问题,排除故障,及时改正错误。
4)与开发团队中的其他小组成员协助明确需求。软件开发中上一阶段的工作成果往往要通过多次的沟通才能更为清晰地被下一阶段成员接受,需求分析也是如此。需求文档完成之后,借助这些对需求“固化”的文档资料与其他项目组成员进行交流沟通,共同明确软件项目需求。
5)需求分解和细化程度划定。进行需求分析的时候,在理解客户的需求上,对软件与需求的宽度和深度有硬性的划定。使软件做到什么程度要划定从而减少因分解和细化需求带来的不明确和模糊。
2.5需求具有不稳定性,是动态变化的问题
2.5.1引起需求变更原因
1)客户对软件项目认识导致新要求,要求需求变化。开始没有对问题识别全面,随着客户对这个软件项目越来越深刻理解,就可能对软件的系统的界面、功能、性能等提出新要求,导致需求变更。
2)客户工作环境发生变化,要求需求变化。在软件开发过程中,客户业务流程简化或流程增加,使得需求要发生改变;客户工作中新设备、新技术出现,使需求变更。
3)客户与软件开发者沟通不够,导致需求错误,需求必须改变。客户与软件开发者双方对软件项目的认识、理解有不同,加上双方沟通不够,使得对需求分析不正确,发生需求错误,使需求变更。
2.5.2可采用措施
1)对需求进行固态、动态的分类。我们在需求分析的时候就要充分考虑到哪些需求是相对固定的需求,哪些可能会是产生变动的需求,考虑到它的可变性,这样设计功能和数据库的时候不致因为后面的变动而影响整个工程。
2)需求评审过程考进反复。评审是对软件目标系统功能的正确性、完整性和清晰性,以及其他需求给予评价。需求评审过程进行反复,可以有效减少需求变更的发生。评审通过就可进入下一阶段的工作。
3)评审中设立需求的基准线。需求评审中,与客户方,软件开发其他工作人员应该确定需求基准线。对软件目标系统中必须的需求,可有可无的需求,完全没有必要的需求进行划分。这样可以减少需求变更,也可以将变更引起的麻烦减至最小。
3 结束语
本文通过对软件需求分析为主题,对软件需求的任务、过程及重要性进行剖析,针对软件需求分析过程中出现的常见问题进行一些探讨,采取了一些可行的技术措施和管理措施来避免可能导致需求分析失败的情况,提高软件需求分析的质量,能圆满地完成软件需求分析任务,顺利的进行软件发开工作。
参考文献:
[1] 张海藩.软件工程[M].北京:人民邮电出版社,2007.
[2] 郑人杰,殷人昆,陶永雷.实用软件工程[M].北京:清华大学出版社,2003.
关键词:软件;开发;需求;分析
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)32-1125-04
The Study on Requirement Analysis in Software's Development
WU Zheng
(Anhui Family Planning School, Chizhou 247000, China)
Abstract: software requirement analysis is a decisive step of planning stage in software engineering, it changes unclear software concept into specific explainations in this step, thus,it establishes foundation of software development.This paper intoduces the requirement definition,types of the requirement, the mission of the requirement analysis, the method of the requirement analysis,the change of the requirement,and applied example etc. These intoductions will be helpful in requirement analysis of software’s development.
Key words: software; development; requirement; analysis
1 引言
软件项目的开发主要分为五个阶段:需求分析阶段、设计阶段、编码阶段、测试阶段和维护阶段,需求调研和分析是软件开发的第一个阶段。完善的软件需求说明是软件开发项目得以成功的基础。不管设计如何精心或者编码如何巧妙,如果对软件需求不加以明确规定,将使用户感到失望,并给软件开发者带来严重后果。据权威部门统计,目前软件的成功率约为25%,75%的软件是失败的。在这75%的失败中,约有50%以上的软件是由于需求的原因造成的。另有资料表明,软件开发项目中返工开销几乎占开发总费用的一半,而导致返工的主要原因是需求分析错误或不明确,从而引发项目开发中的一系列更改。成功的软件需求分析不仅能提高软件的成功率,而且能节省大量的资源,因此需求分析是软件开发的关键阶段。[1]
2 需求的定义和类型
2.1 需求的定义
软件产业存在的一个普遍问题就是缺乏统一定义的名词术语来描述我们的工作。客户所定义的“需求”对开发者似乎是一个较高层次的产品概念,而开发人员所说的“需求”对用户来说又像是详细设计了。实际上,软件需求包含着多个层次,不同层次的需求从不同角度与不同程度反映着细节问题。
IEEE软件工程标准词汇表(1997年)将需求定义为:
1) 用户解决问题或达到目标所需的条件或能力。
2) 系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或能力。
3) 一种反映上面1)或2)所描述的条件或能力的文档说明。
IEEE的定义包括从用户角度(系统的外部行为),以及从开发者角度(一些内部特性)来阐述需求,其关键的问题是一定要编写需求文档。
另外,还有其他几种关于“需求”的定义:
需求是用户所需要的并能触发一个程序或系统开发工作的说明;
需求是从系统外部能发现系统所具有的满足于用户的特点、功能及属性等;
需求是指明必须实现什么的规格说明。它描述了系统的行为、特性或属性,是在开发过程中对系统的约束。
从以上的定义中,我们依然无法得到有关“需求”的清晰概念,真正的“需求”实际上存在人们的脑海中,任何文档形式的需求(例如:需求规格说明)仅是一个模型或一种叙述,但是编写出高质量的需求规格说明书在需求分析阶段还是关键。
需求分析奠定了软件工程和项目管理的基础。我们在建造软件系统这座大厦的时候,如果需求分析的基础不够坚实和牢固,那么往往会导致软件系统问题百出,甚至被马上丢弃。在建造软件系统的过程中,如果我们经常习惯地沿用一些不规范的方法,其后果便是产生一条鸿沟──开发者开发的与用户所想得到的软件存在着巨大的“期望差异”。 因此“需求”这个名词的定义不仅仅是从用户角度对系统外部行为的描述,以及从开发人员角度对系统内部特性的描述,其关键的一点是“需求”必须文档化。
2.2 需求的类型
软件需求包括三个不同的层次──业务需求、用户需求和功能需求。
除此之外,每个系统还有各种非功能需求。
业务需求(BusinessRequirement)表示组织或客户高层次的目标。业务需求通常来自项目投资人、购买产品的客户、实际用户的管理者、市场营销部门或产品策划部门。业务需求描述了组织为什么要开发一个系统,即组织希望达到的目标。使用前景和范围(vision and scope)文档来记录业务需求,这份文档有时也被称作项目轮廓图或市场需求(project charter 或 market requirement)文档。
用户需求(UserRequirement)描述的是用户的目标,或用户要求系统必须能完成的任务。用例、场景描述和事件响应表都是表达用户需求的有效途径。也就是说用户需求描述了用户能使用系统来做些什么。
功能需求(Functional Requirement)规定开发人员必须在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求。功能需求有时也被称作行为需求(behavioral requirement),因为习惯上总是用“应该”对其进行描述:“系统应该发送电子邮件来通知用户已接受其预定”。功能需求描述是开发人员需要实现什么。
非功能需求(Non-functional Requirement) 定义了软件产品为满足用户业务需求而必须具有的除功能需求以外的特性。包括系统的完整性(联机帮助、 数据管理、用户管理、软件管理、在线升级等)、性能、可靠性、可维护性、可扩充性、对技术和业务的适应性等。
3 需求分析的任务
3.1 解决的问题
1) 齐全、准确地找出目标系统全部的功能、性能、限制;
2) 找出全部的输入流、输出流;
3) 找出所有的加工;
4) 产生完整的分层的DFD、数据字典、加工的描述;
5) 补充的意见。
3.2 综合要求
确定对系统的综合要求,系统功能要求,系统性能要求,运行要求,将来可能提出的要求。
3.3 任务
图1为需求分析任务图,需求分析阶段要完成的具体明确的最终任务就是形成一份经开发方和用户认可或达成共识的软件需求分析文档(需求规格说明书、修改后的项目开发计划、初步的用户手册、确认测试计划、数据要求说明书)。这个文档能清晰准确地说明系统将要开发什么,能够规定出详细的技术需求,包括所有面向用户、面向机器和其它软件系统的接口。可以说需求文档在开发过程中一直起指导作用。
为了更好地完成软件开发第一阶段的需求分析任务,提高质量,需求管理是必不可少的。
需求管理的目的是在客户与开发方之间建立对需求的共同理解,维护需求与其他工作成果的一致性,并控制需求的变更,主要体现在跟踪和控制需求变更管理。需求管理是开发工作有效进行的保证,是一种很高层次的系统行为,涉及整个开发过程和产品本身。
4 需求分析的方法
需求分析方法由对软件问题的信息域和功能域的系统分析过程及其表示方法组成,大多数的需求分析方法是由信息驱动的。信息域具有三种属性: 信息流、信息内容和信息结构。
常用的需求分析方法有:面向数据流的结构化分析方法(SA),面向数据结构的Jackson方法(JSD),面向数据结构的结构化数据系统开发方法(DSSD),面向对象的分析方法(OOA)等。选择那种方法要根据哪些资源在什么时间对开发人员有效,不能盲目套用。这里着重阐述面向数据流的结构化分析方法(SA)。[2]
4.1 面向数据流的结构化分析方法
面向数据流的结构化分析方法(Structured Analysis,简称SA),是面向数据流进行需求分析的方法,是需求分析使用最多的方法之一。 SA也是一种建模活动,该方法使用简单易读符号,根据软件内部数据传递、变换的关系,自顶向下逐层分解,描绘出满足功能要求的软件模型。适用于数据处理类型软件的需求分析,这一方法除了简单,容易掌握之外,还能和设计阶段的结构化设计(SD)衔接,从而取得良好的设计结果。
4.2 自顶向下逐层分解的分析策略
SA方法的基本手段:“分解”和“抽象”。这是系统开发技术中控制复杂性的两种手段。它先将系统“抽象”成一个模型,此模型是有输入和输出并有系统名称的盒子,然后打开这个盒子,对它进行逐层分解,直到能被理解,可以实现为止。因此分析的策略是自顶向下,逐层加细,由抽象到具体的过程。如图2。
4.3 结构化分析方法使用工具
SA方法利用图形等半形式化的描述方式表达需求,简明易懂,用它们形成需求规格说明书中的主要部分。描述工具是:
1) 数据流图:描述系统由哪几部分组成,各部分之间有什么联系等等。
2) 数据字典:定义了数据流图中每一个图形元素。
3) 描述加工逻辑的结构化语言、判定表、判定树:详细描述数据流图中不能被再分解的每一个加工。
由于分析中的主要依据是数据传递及数据变换所形成的数据流,所以结构化分析一般采用的方法是使用数据流图的分析方法,最终结果是产生需求规格说明书,该文档包括一套数据流图,对数据流图中的成分进行定义的一本数据字典及对加工逻辑的描述。
4.4 结构化分析步骤
用结构化分析方法进行系统需求分析的具体步骤是:
1) 了解当前系统的工作流程,获得当前系统的物理模型。通过对当前系统的详细调查,了解当前系统的工作过程,同时收集资料、文件、数据、报表等,将看到的、听到的、收集到的信息和情况用图形描述出来。也就是用一个模型来反映自己对当前系统的理解,如画系统流程图。
2) 抽象出当前系统的逻辑模型。物理模型反映了系统“怎么做”的具体实现,去掉物理模型中非本质的因素,抽取出本质的因素,构造出当前系统的逻辑模型,反映了当前系统“做什么”的功能。
3) 建立目标系统的逻辑模型。分析、比较目标系统与当前系统逻辑上的差别,明确目标系统到底要“做什么”,从而从当前系统的逻辑模型导出目标系统的逻辑模型。
4) 作进一步补充和优化。为了对目标系统做完整的描述,还需要对得到的逻辑模型做一些补充。
说明目标系统的人机界面。
说明至今尚未详细考虑的细节(包括出错处理、系统的启动与结束、系统的输入/输出和系统性能方面的需求等)。
其他(系统特有的其他必须满足的性能和限制,也需要用适当的形式做出书面记录。
分析阶段结束时,系统分析员必须和用户再次认真地审查系统文件,争取在系统开始设计之前,尽可能地发现其中存在的一些错误并及时纠正,直至用户确认这个模型表达了他们的要求后,系统文件(软件需求规格说明书等)才作为用户和软件开发人员之间的“合同”而最后得到确定。
4.5 结构化分析方法的优缺点
1) 优点: 结构化分析方法是软件需求分析中公认的、有成效的、技术成熟的、使用广泛的一种方法,它较适合于开发数据处理类型软件的需求分析,该方法利用图形等半形式化工具表达需求,简明易读,也易于使用,为后一阶段的设计、测试、评价提供了有利条件。
2) 缺点:① 传统的SA方法主要用于数据处理方面的问题,主要工具DFD体现了系统“做什么”的功能,但它仅是一个静态模型,没有反映处理的顺序,即控制流程。因此,不适合描述实时控制系统。② 上世纪60年代末出现的数据库技术,使许多大型数据处理系统中的数据都组织成数据库的形式,SA方法使用DFD在分析与描述“数据要求”方面是有局限的,DFD应与数据库技术中的实体联系图(ER图)结合起来(如同IDEF0功能模型与IDEF1信息模型相结合一样)。ER图能增加对数据存储的细节以及数据与数据之间,数据与处理过程之间关系的理解,还解决了在DD中所包含的数据内容表示问题,这样才能较完整的描述用户对系统的需求。③ 对于一些频繁的人机交互的软件系统,如飞机订票、银行管理等系统,用户最关系的是如何使用它,输入命令、操作方式、系统响应方式、输出格式等都是用户需求的重要方面,DFD不适合描述人机界面系统的需求,SA方法往往对这一部分用自然语言作补充。④ 描述软件需求的精确性有待提高。
5 需求的变更
在开发项目过程中,用户随时会提出一些新的需求,要求开发方解决,这些需求的提出,有时在开发阶段中有时在开发阶段后。这种在需求分析的两个相邻子阶段中,或者在迭代周期的需求分析中,后一段或周期的需求分析结果与前一次不一致,我们把这种不一致称为需求变更。产生需求变更的原因主要有以下几个方面:1) 在需求分析阶段,开发方与用户的沟通不够。在需求分析阶段,开发方与用户没有很好的交流,开发方就根据用户提供的大概信息,自己推导出用户的需求。通过这种需求分析得出的需求往往会和用户的实际需求相差甚远,导致用户提出更改需求。2) 项目的实施周期过长。随着时间的推移,用户对整个系统的了解也越来越深入。他们会对模块的界面、功能和性能方面提出更高更多的要求。3) 技术更新过快。由于技术的快速更新, 企业可能引进一些新的设备, 而这些设备可能就会与我们的目标系统有直接的关系, 由于这一变化可能发生在解决用户原先问题之前或者之中,那么开发方不得不加入这一新的需求。[3]
关键词:软件工程;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)一整套方法论;(2)标准和规范;(3)软件支持工具系统;(4)整体解决方案;(5)一批成功案例。
著名的信息资源规划教授高复先用“信息孤岛”来形容企业在实施信息化的过程中,使用不同的系统、不同的应用、不同的技术平台进行不同的功能操作,从而使得各种资源难以流动、无法交流的现象出现。“因此,要想解决信息孤岛的问题,就必须进行信息资源规划,信息资源规划的产生是大势之趋,也是必然之举。”高教授强调。
1、帮助理清并规范表达用户需求,落实""应用主导""。
2、整合信息资源,消除""信息孤岛"",实现应用系统集成。""
3、指导SCM、ERP、CRM等应用软件的选型并保证成功实施。
在整个过程中,用户是处在主导地位,需求分析工程师和开发人员负责整理用户需求,为之后的软件设计打下基础。 从广义上讲:需求分析包括需求的获取、分析、规格说明、变更、验证、管理等一系列工程。 狭义上讲:需求分析指需求的分析、定义过程。 需求分析就是分析软件用户的需求是什么。
需求分析的任务就是解决“做什么”,就是要全面地理解用户的各项要求,并准确地表达所接受的用户需求。需求分析阶段的工作,可以分为四个方面:问题识别,分析与综合,制订规格说明,评审。
需求分析的方法有很多。这里只强调原型化方法, 原型化方法十分重要。原型就是软件的一个早期可运行的版本,它实现了目标系统的某些或全部功能。该方法尽可能快地建造一个粗糙的系统,系统实现了目标系统的某些或全部功能,但是这个系统可能在可靠性,界面的友好性或其它方面上存在缺陷。
需求分析之所以重要,就因为它具有决策性、方向性、策略性的作用,它在软件开发的过程中占有很重要的地位。在一个大型软件系统的开发中,它的作用要远远大于程序设计。
使用原型化方法有两种不同的策略:废弃策略,追加策略。废弃策略:先建造一个功能简单而且质量要求不高的模型系统,针对这个系统反复进行修改,形成比较好的思想,据此设计出较完整,准确,一致,可靠的最终系统。系统构造完成后,原来的模型系统就被废弃不用。
客户与开发人员交流需要好的方法。在需求分析的阶段,同样需要用到信息资源规划的理论,例如:客户的时间表不合理我们常常听到客户这样说:“这是一个非常紧迫的任务,我们需要项目在X周内完成。”常见的错误是,没有进行详细分析,并了解项目的范围以及完成项目所必需的资源,就同意客户的要求。未经讨论就同意不合理的时间表,这实际上是给客户造成伤害:项目很有可能被延期(因为不可能按时完成),或存在质量问题(因为赶工,没有进行适当的检验)。这时我们就要用信息资源规划理论,把项目需求规范转化成一个项目计划、详细的任务和各阶段所需的资源,并为最佳情况、一般情况和最差情况建立模型。保证项目计划考虑到有效资源的限制,并为检测和质量检验保留足够的时间。与客户讨论最终期限问题,用计划草案中的数据为陈述提供证据。若计划是合理的,则很有可能随后的谈判会极为成效,并对双方有利。
二、 数据流图
数据流图(Data Flow Diagram),就是采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。
三、小结
由此,在软件开发的整个过程中,信息资源规划起着相当重要的作用,资源规划的好坏将直接影响项目的质量以及后期的维护工作,我们不可忽视。
参考文献:
[1]高复先,信息资源规划-信息化建设基础工程,清华大学出版社,2008年
关键词:工作过程;项目导向;情境教学
1.教学内容的组织
本课程基于四个学习情境开展教学,理论与实践一体化,把所要掌握的理论知识贯穿于每个学习情境中,整个课程教学均在网络实训基地完成,每个学习情境围绕一个教学项目,每个教学项目进行分解,开发和设计出若干个实训项目,以学生为主体,在边做边教,边做边学,做到教、学、做一体。
序号学习情境学习单元教学内容学时分配1SOHO网络构建SOHO网络需求分析,规划与设计建网方案如何根据实际项目进行需求分析,网络拓扑结构设计、SOHO网络设备选型、分类IP地址规划,设计网络建设方案36SOHO网络布线实施、网络连接与配置、网络测试与验收双绞线制作、SOHO网络设备连接、ADSL接入配置、网络配置、网络测试与故障排查、验收文档编写32企业办公网络构建企业办公网络需求分析,规划与设计建网方案如何根据实际项目进行需求分析,网络拓扑结构设计、交换机设备选型、无类IP地址规划、服务规划224设计网络建设方案2企业办公网络子网规划、交换机安装与配置子网规划、VLAN的划分2二层交换机的安装与配置4三层交换机的安装与配置6常用网络服务的规划、安装与配置文件服务器的安装与配置2DHCP服务器的安装与配置2网络测试与验收全网连通性测试,故障排查,验收文档编写43园区网络的构建园区网络构建需求分析,规划与设计建网方案如何根据实际项目进行需求分析,网络拓扑结构设计、交换机、路由器设备选型、无类IP地址规划,设计网络建设方案214园区路由器安装与配置路由器的安装与配置(包括静态路由、RIP、OSPF、ACL配置)10园区网络测试与验收全网连通性测试,故障排查,验收文档编写24校园网的构建案例实训校园网的需求分析、校园网组网方案规划与设计根据我院龙腰校区的实际情况和网络需求进行分析、交换机与路由器设备的选型、规划与设计组网方案2
12校园网组网实施交换机安装与配置4路由器安装与配置4校园网测试与验收全网连通性测试,故障排查,验收文档编写2
2、教学项目举例
项目名称:构建SOHO网络 所属学习情境:SOHO网络构建
实施场所:校内网络技术实训基地 课时:6课时 环境准备人员:实训教师
指导教师:专任教师为主,兼任教师为辅 评估小组成员:专兼教师、各小组组长
教学目标:
通过项目教学使学生了解SOHO网络构建的工作流程,掌握SOHO网构建技能,能按项目需求构建小型网络。具备SOHO网络的规划、设计与实施的能力及SOHO网络的运维管理能力
学习任务:
根据SOHO网络的构建项目要求,能对SOHO网络的硬件需求,软件需求分析,并根据软硬件的选择原则,能根据用户需求做出合理的资金预算;能根据SOHO网络布线标准,熟练制作双绞线;能熟练完成SOHO网络的连接,网络配置,网络测试及故障的排查方法;能按项目需求很好地完成构建SOHO网络建设方案并实施项目
实施环境要求:
每组学生3-4人,每组实践平台要求:3-4台计算机,[一台modem、一台ADSLmodem]。材料准备:双绞线、水晶头、RJ45压线钳、交换机/集线器(每组一台)、网卡(每机一张)
项目说明:
项目场景介绍
现有一个办公室,共有四台电脑,要求连接成网络,相互之间能相互通信及文件和打印共享,同时有一台电脑能支持远程桌面功能。(如果环境允许的话,可设计完成与Internet网络的连接)
需求分析
(1)连接四台计算机
分析:采取什么拓扑结构,需要什么网络设备,如何联接
(2)能相互通信
分析:如何安装网络软件,如何设置网络属性,如何测试能否相互通信
(3)能共享文件与打印资源
分析:如何设置文件与打印资源,如何访问网络资源?
*(4)访问Internet网络
分析:有几种连接方法?采用哪种连接方法访问Internet性价比最高?为什么?
项目教学过程:
将学生进行分组实施项目,每组指定一个小组长,每组4—6人,一个实验平台,按照项目的 “资讯、计划、决策、实施、检查、评估” 六个工作过程环节来开展教学,实现边做边学,从做中学。
(1)资讯
教师给出项目,分析项目建设需求,让学生明确这个教学项目要完成的任务。
(2)计划
要求小组长组织小组成员对项目说明进行讨论、分析,制定建网初步方案。
(3)决策
确定网络构建方案,画出网络拓扑图,并由小组长安排小组成员工作任务,明确项目实施的步骤及完成的时间。
(4)实施
小组成员按方案和工作任务安排进行项目实施。
(5)检查
项目实施完成后,小组成员进行访问测试,看能否达到项目预期目标,如果未达到要求,则组织小组成员进行故障分析和排除,并记录排障日志。
(6)评估
项目经过自己检查,提交给评价小组进行验收,评价小组将对项目的各项功能进行测试,评分,并要求小组提交所有的项目过程材料(包括方案和排障日志)
整个教学过程,以学生为主体,教师从中指导,实现与学生的互动,回答和解释学生提出的疑问,从而让学生学习到该教学项目所应该掌握的部分知识内容。
教学项目验收标准:
(1)组网方案合理、描述条理清晰、内容完整、方案设计性价比高(30%)
(2)网线制作规范和连接规范(10%)
(3)各主机是否配置正确,IP地址规划合理,能实现四台主机相互通信,并能相互共享网络资源(40%)
(4)过程表现情况及团队合作情况(20%)
(5)是否选择最优连网方式,连接设置正确,能成功连接Interne
3、结论
本课程依据网络技术专业高职生的培养目标、企业职业岗位的任职要求,针对网络构建岗位的主要工作任务的工作过程所应具备的基本工作能力,进行教学内容的选取,整个课程的教学内容强调实践教学,重于强化专业技能的培养,同时网络组建必须要求掌握的知识与技术贯穿于教学项目中,通过实践教学加深对理论知识的理解,通过综合项目的工作过程教学培养学生的岗位技能、团结协作能力及解决实际问题的能力,大大缩短校企之间的距离,使学生能根据企业的场景,企业用户的需求,完成企业网络的规划、设计和实施的能力。具有一定的针对性和适用性,为学生上岗和持续发展奠定良好的基础。
参考文献: