软件工程可行性分析范例6篇

前言:中文期刊网精心挑选了软件工程可行性分析范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。

软件工程可行性分析

软件工程可行性分析范文1

软件的开发周期有需求分析、详细设计、测试、可行性分析、体系结构设计和编码六个部分。形式化技术贯穿于软件开发周期的六个部分,形式化时基于参数化的数学理论形式化定义语义。下面从可行性分析、需求分析、体系结构设计和详细设计几个方法进行说明。

1.1可行性分析

软件生命周期的第一个阶段是可行性分析阶段,在这一阶段要通过大量的数据资料来说明系统的开发是否是可行的。指出项目的建议、风险预测、可行性,为项目的决策提供参考依据。在此阶段,通过将实际问题转化为可行性的研究,形成一定的文档材料,规定专业的属于,说明软件系统进行开发的处理流程、数据流程、输入输出、运行环境和开发环境等等。当前来说,专门用于可行性分析这一阶段的形式化技术还非常少,主要的原因是无法将形式化的符号和自然的语言很好的结合起来,确保使用本软件的用户可以非常清楚明白的理解形式化技术所要描述的意义。Z语言是目前一种不可执行的半形式化语言,它短小且容易阅读,采用非形式化的英语对软件的规约进行解释。

1.2需求分析

需求分析分为信息处理和分信息预处理两个阶段,将可行性分析报告作为输入。元语言是形式化语言中的一种,它是基于集合论的证明规则和谓词演算,给出抽象机状态确定模型,从而生成文档。这种形式化语言,对于程序员来说,容易实现原型而且可读性好,容易掌握。语义的设计是形式化技术中需求分析阶段主要要进行的工作之一。在需求分析这一阶段,ER图是从可行性分析的实际问题中导出来的。通过ER图给出SXL语言的事实和对象,SXL语言有助于开发团队理解和交流。SXL语言、RAISE语言和VDM元语言都是应用于需求分析阶段的比较常用的形式化技术。

1.3体系结构设计

软件设计的第三个阶段是体系结构的设计,在这一阶段是将需求分析转换为要实现的目标软件,并进行各种方案的分析和比较,最终选择较好的方案。在体系结构设计阶段采用过程代数形式化的攻击进行输入、输出的行为描述。TLG语言适合体系结构设计阶段不强调如何做仅仅说明做什么。采用形式化的说明把自然的语言融入到逻辑程序设计范型和数学函数中,这样更容易证明用户需求的一致性。GLIDE是一种半形式化的SSFL,GLIDE的好处是应用范围广,而且抽象的级别比较高,不过也有一定的局限性就是使用的时候需要适当的进行扩充和修改。

1.4详细设计

软件设计的第四个阶段就是详细设计,在详细设计阶段,要与软件系统的形式化描述一致。在详细设计阶段,要为软件系统的各个模块设计相应的内部数据结构和算法,确定最终系统实现的一个精确的描述。Larch语言是用于说明程序功能,可以适当的增强详细设计阶段的处理能力和描述能力。形式化的Trace语言作为软件详细设计阶段的形式化工具,采用将模块实现的抽象数据作为自动机说明每个模块的接口需求。Trace语言与SSFL语言不同的特点是程序自动的生成和验证在同一形式的系统内进行。

2形式化技术的评价

形式化技术在软件工程中有效的提高了开发的效率、改进了软件开发的质量、减少了开发费用。形式化的技术容易在软件的规约上取得一致性,它属于一种非常有效的交流方式。在软件工程中,形式化技术的优势在于语法定义准确、问题抽象、表达无二义性、语义清晰可操纵、描述简洁规范。形式化技术在非功能性的要求上比如安全性、保密性、结构性上利用数学工具更容易进行核查。虽然形式化技术在软件工程的各个阶段已经取得了不错的成就,但是还是存在着一定的局限性,比如缺乏在实际项目中应用的有效工具。程序功能的正确性有时候难以证明,因为形式化技术缺乏定理证明机制的支持。形式化技术的下一个发展方向应该是尽量的把形式化的语言表达的形式进行简单化,让其趋于自然语言,增强它的可理解能力。

3总结

软件工程可行性分析范文2

软件工程不仅是计算机科学与技术专业、软件工程专业的一门专业基础核心课程,也是其他相关专业,如信息工程、系统工程、信息与计算机科学、信息管理与信息系统等专业的重要应用技术课程。对于这些专业的学生来说,毕业设计多是以软件开发类项目为主,整个毕业设计就是开发一个软件。为了更好地完成软件开发类毕业设计,提高学生毕业设计的质量,进一步规范毕业设计中的软件开发过程是必需的。软件工程的思想正是用工程化方法构建和维护有效的、实用的和高质量的软件。按照软件工程思想,软件开发的生命周期分为可行性分析、需求分析、总体设计、详细设计、编码实现、软件测试和软件维护几个阶段。在学生的毕业设计中以软件工程的思想为主线,从软件工程的角度去指导学生进行毕业设计,挖掘软件工程在系统开发过程中的价值,解决毕业设计中存在的一些问题,既有助于学生更好地理解软件工程的方法、技术和思想,更有助于提高软件类毕业设计的质量。

2毕业设计中存在的问题

笔者在指导学生软件开发类毕业设计过程中发现,毕业设计存在着选题难、任务重、重视编码、轻过程、项目无法完成等现象。设计过程中没有严格地遵循软件工程的开发方法,没有规范的软件设计过程,项目能否成功主要依赖于个人能力和个人努力,这种不正确的开发方法带来了严重的后果。在项目开发的过程中常常存在以下几个方面问题:

2.1选题的盲目性

选题是毕业设计过程中的一个初始环节,选题恰当是做好毕业设计的前提,但选题不当的情况仍然时有发生。学生没有认识到毕业设计的重要性,纯粹是为了完成学业而做毕业设计,选题没有一个确切的目标,往往是随便选一个题目,造成选题的盲目性,出现了选题陈旧、选题范围狭窄、选题偏大等问题,使学生抄袭、完成不了毕业设计的情况时有发生。

2.2缺少软件的系统分析

软件开发过程的第一个阶段是系统分析,用来确定软件开发要解决的问题是什么?估算完成该项目需要的资源和成本,确定目标系统应该具备哪些功能,主要经历问题的定义、可行性分析和需求分析三个阶段。软件的系统分析确定了用户需求,同时对目标系统提出完整、具体的要求,引导开发者正确地构建系统。因此,对用户需求做出全面、正确的分析,对于最终软件开发类毕业设计的成败起着至关重要的作用。然而在完成毕业设计过程中,学生往往认为代码编写最重要,对软件开发过程中的可行性分析和需求分析阶段不重视,甚至没有系统分析,对整个毕业设计的完成造成了影响。

2.3软件设计过程杂乱无章

软件设计一般都要经历可行性分析、需求分析、总体设计、详细设计、编码和测试阶段。而部分学生在毕业设计开发的过程中,缺乏软件工程设计思想,跨越需求分析、概要设计、详细设计和功能模块设计,直接进行代码的撰写;或者从代码反推出模块设计;甚至在软件开发过程中,一边写程序,一边了解需求,程序完成了需求才确定。这种无序的软件设计过程,导致最终设计的系统杂乱无章、代码的重复率高、潜在?Bug多、系统的可集成性非常差、不能在规定时间内完成设计或者系统无法运行。

2.4开发过程中文档不完备

根据软件工程学的基本原理,软件=程序+文档,可见软件文档是软件开发过程中不可缺少的组成部分。软件文档贯穿于软件开发的各个阶段,是提高软件产品开发效率、规范软件产品开发过程、保证软件产品质量的关键。但在实际毕业设计中,很多同学认为把程序代码编出来了,毕业设计也就完成了,提交的毕业设计论文就是系统代码的复制,即只做出一个可演示可操作的系统,而忽略了软件开发的完整性、系统性。完整的毕业设计不仅包括可操作的系统,还包括在开发系统的过程中所产生的各个文档资料。文档的缺失会降低软件开发的效率、影响整个软件的开发、使用和维护。以上问题的存在,严重影响了毕业设计的进度和质量,没有达到毕业设计的目标要求。针对当前毕业设计的现状和存在不足,笔者认为应用软件工程学的思想指导毕业设计,对促进学生综合素质与工程实践能力培养具有积极意义。

3用软件工程思想指导学生进行毕业设计

3.1以可行性研究指导选题

可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。毕业设计题目的选择,应立足于解决工程实际问题,可由指导教师提供符合相关专业毕业设计要求的题目,也可以鼓励学生自己到社会、生产企业中寻求研究课题,培养他们自主学习的意识。选题过程以可行性研究为指导,从课题规模大小、难易程度、学生自己的研究方向、爱好、学生的知识层面和能力等多个方面进行考虑,对于选择的题目是否能够解决,确定在规定的时间内完成毕业设计的可行性。指导教师可根据学生选报的题目来指导学生对该选题进行调查研究,明确课题要解决的问题是什么,简要地写出关于问题性质、项目目标和项目规模的书面报告。可行性研究来指导毕业设计的选题,实质上是简化了系统分析和设计的过程,也是在较高层次上以较抽象的方式进行的系统分析和设计的过程,使学生对于课题的设计有个清晰的思路,为及时完成毕业设计提供了可能。

3.2重视软件的需求分析

需求分析的基本任务是准确地回答“系统必须做什么”,即确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求,不仅指明了系统设计时必须要实现的目标,也是软件设计、实现、测试和维护阶段的主要参考标准。用户需求的获取是软件开发中最重要、难度最大的工作,它贯穿于整个软件设计过程,不仅要涉及到软件开发方面的知识、应用领域方面的知识,还涉及到与用户沟通的能力。在进行需求获取和分析时,为了及时、准确地获取,可采用软件工程中比较成熟的方法,例如访谈、实际调查、UML的用例技术等。需求分析在软件系统分析与设计阶段起着桥梁的作用,确定了系统的需求,才能制定出软件设计的框架,保证毕业设计循序渐进、有条不紊地进行,避免后期开发过程的频繁返工,进而按时完成最终的任务。

3.3规范毕业设计过程

软件开发类毕业设计一般是开发一个软件系统,实现一定的功能。“麻雀虽小,五脏俱全”,无论软件规模的大小、功能的多少,都应该严格按照软件工程中软件生命周期每个阶段的步骤完成各项任务。要培养学生把软件工程的概念贯穿于整个毕业设计过程,也就是说,让学生把开发软件的过程看成是盖一栋大楼,修一条公路的实际工程,用工程化的思想指导毕业设计,确定完成课题的各项任务的工作步骤,注重软件类毕业设计的过程,而不是学生所认为的毕业设计就是编程序,代码调试通过即可。通过工程的概念规范毕业设计过程,让学生明白开发一个软件系统一般经过系统分析、系统设计、系统实施三个阶段,必须严格遵循软件生命周期的规律,完成各个阶段的任务,才能最终提高毕业设计的质量。

3.4重视文档的写作

软件工程中的瀑布模型严格地规定了在整个软件生命周期的各个阶段,都要提交相应的文档。文档不仅记录软件开发过程中的大量信息,在软件的开发、维护过程中也起着重要的作用。在指导学生毕业设计时,要求学生遵照软件工程的思想,把文档作为整个设计的指挥棒,记载设计过程的每一阶段完成的目标、任务及技术手段,建立健全毕业设计文档制度,确保毕业设计过程中的文献综述、译文、任务书、开题报告、选题审题表、中期检查表、设计(论文)正文、答辩记录等各环节教学资料档案完善、规范,实现对毕业设计的全程监控。

4结束语

软件工程可行性分析范文3

软件危机的出现已存在多年,虽然业界专家不断致力于软件工程理论建设,认为软件工程理论的推进可有效缓解软件危机,但大量实践表明,只有通过对软件需求进行详细地分析才能真正改善软件的重复问题,进而提高软件工程的质量。文章简单阐述了软件工程需求分析的概念,分析了当前软件工程所存在的质量问题,并针对问题提出了相应的质量保证措施,旨在为相关技术人员提供若干参考意见。

关键词:

软件工程;需求分析;质量保证

1软件工程需求分析概念

软件工程需求分析是指在正确了解用户需求的基础上,使软件功能与客户需求相符,同时预估软件研发风险和项目评估,最终开成整个开发设计方案的过程。在软件工程需求分析过程当中,占主导地位的是用户的需求,用户需求的整理由工程师及项目经理负责,通过需求分析获取相关技术性文档材料,包括SRS文档、DRM文档和AcceptancePlan[1]。从广义上来说,软件工程需求分析所要做的工作主要有需求信息的获取、分析、变更、验证以及相关规则说明和管理。软件工程需求分析的流程多且复杂,如创建数据字典、确定需求优先级别、分析需求可行性等。不同流程所使用的分析方法也有所不同,如在确定需求优先级别时,可采取应用分析法,即在考虑产品版本时应基于优先级对产品特性及需求进行分析,若需求变更,则要在不同版本当中添加所变更的信息,并做好相应变更工作[2]。在进行需求分析可行性分析时,需对每项需求实施的可行性进行详细分析,以验证软件是否能够开发,是否能够给公司带来利润。

2软件工程存在的质量问题

第一,文档的时效性无保障。软件各模块的制作通常是由不同人负责的,这就导到软件开发过程存在诸多问题,如在进行需求分析应用数字字典时,因规格不同导到文档编写形式分离。又如不同制作人员所使用的工具不同,编写和检索时间不同,导致文档的时效性无法保证,若编写过程混乱还会给程序的维护带来很大困难,导致文档资料难以寻找,甚至出现缺失,致使维护时间加长,若问题严重的话还会导致软件无法维护。第二,程序与文档内容分离。软件程序与文档内容分离的主要原因是在编写文档设计与需求分析时所采取的角度不同,文档设计的编写是面对程序设计员的,而需求分析的编写是面对用户的,虽然两者的最终目的是相同的,都是将用户需求转化为程序编码设计文档,是在进行转化时却存在很大的偏差,导到软件成品与需求之间存在很大差距。此外,因编写需求分析文档多使用自然语言,而编写设计文档多使用计算机语言,两种语言在进行转化时易出现很多问题,且设计的图较多,如模块图、结构图、数据图等,若文档未及时更新,文档就无法正确表达程序,开发人员也就无法通过文档正确理解用户需求,导致程序与文档内容分离,最终软件只能从头开始。第三,软件开发与维护分离。软件的研发主要包括以下过程:需求分析、可行性分析、软件设计、代码设计、测试,此外还有软件的维护,这是软件自诞生至结束的整个周期。在软件研发的整个周期当中,软件的开发与维护是紧密联系的,软件的开发是软件诞生的重要过程,但软件的维护却是软件质量不断得以提升的重要阶段和方式。现多数软件开发公司在研发软件时比较注重软件的开发过程,而忽略了软件的维护,导致软件开发与维护分离问题凸显。如在进行软件的设计和开发时,研发人员比较重视用户需求分析,但却忽略了软件的功能升级,未预留相应模块接口,给软件的后期维护带来很大困难[3]。因用户需求是一个动态化的过程,随着用户使用时间的推移,用户会产生各种新的需求,若事先未预留相应接口,那么软件的升级相当于重新研发一套软件,这样研发成本明显上升。再者因需求分析与设计文档的编写所使用的语言有所不同,需求分析编写所使用的是自然语言,而设计文档编写所使用的是计算机语言,两种语言并未有一个统一的沟通桥梁,这就导致程序员的理解存在偏差,而这种偏差一旦出现就会使需求文档与设计文档出现分离,最终给软件的维护带来困难。此外,很多程序员习惯性编写程序代码,却忽略了建设文档,导致软件的开发与维护出现分离。

3软件质量保证措施

3.1保证文档编写的完整性

软件工程需求分析的编写对于软件工程需求设计来说非常重要。在编写软件工程需求时,应使用通俗易懂的自然语言来表达客户的软件功能需求,避免使用模糊性语言或是过量使用专业术语,以使程序员能准确理解,防止因程序员的理解偏差而影响程序的编写,导致软件的计算方式出现偏差,最终给用户带来软件陷阱。文档的编写应尽量使用实词,而避免使用形容词或是描述性词语,以保证产品描述的真实性,若使用这些词会使用户需求的理解出现误差,将导致软件无法正确反映用户需求。如在利用数据库存进行软件的开发时,应在设计需求文档当中对储存量、波动范围、数据类型进行详细说明,明确需求量,同时做好备份信息说明,以保证文档编写的完整性,使程序员在进行软件的编写时能够准确理解用户需求,同时做好详细的设计文档和代码[4]。

3.2保证需求分析的完善性

需求文档及设计文档出现分离的最主要原因就是需求文档与设计文档的编写人员不同,且各司其职、缺乏沟通而导致的。在实际工作当中,很多软件开发公司的需求分析人员、开发人员和测试人员是没有任何将领的,这就使得很多软件质量问题无法支及时沟通并得到协商,最终导致软件质量问题增多。而实质上,软件工程的需求分析不仅需要需求分析人员的努力,而且还要与开发人员及测试人员进行相互沟通,以螺旋式的推进方式以不断对需求分析的内容进行丰富和细化,以此来使需求分析更加完整、完善。因此,为保证需求分析的完善性,在进行软件工程需求分析过程当中,就有必要尽量让所有参与工程项目的人员都加入进来,包括开发人员和测试人员,使所有工作人员都能够第一手了解客户需求,避免产生误差或是重复,这样才能有效解决需求文档与设计文档的分离问题。

3.3深入而正确地了解客户的真正需求

现很多软件开发公司为加快软件的研发进度,或是加快软件开发的效率,亦或是迫于交期压力等原因,通常会采取模块重用的方式以减轻软件开发工作量,提高自身经济效益,且现在这种模块重用方式也成了软件开发的主流,是软件工程开发的重要组成部分。但是很多软件开发公司在使用软件重用时,因并未深入分析客户需求,或是地进行分析时粗心大意而导致客户需求理解存在偏差或是错误,导致经重组重用的软件无法满足客户需求,或是软件出现质量问题,最终软件只能从头研发,使得公司软件研发成本大幅上升,影响公司经营和经济效益。为解决这一问题,最主要的就是正确而深入地了解客户的真正需求,同时在软件的研发过程当中做好监督和检查工作,尽量避免出现错误;此外还要注意技术人员在不同步骤之间的沟通,以免因沟通缺失而出现软件质量问题。

3.4依照实际需求调整文档内容

通常来说,在遵循以上规则的基础上所编写的文档是非常严谨、科学、合理的,因此在使用文档时,第一,程序员应严格遵循文档当中的内容,包括规范和说明,以文档内容为指导来编写代码,保证所编写的代码的正确性和准确性;第二,针对文档当中存在疑问的部分要及时向相关人员反映,做好沟通工作,在商量出良好的对策之后对文档进行改善;第三,针对文档中存在较难的技术性问题,程序员应努力攻克,若问题相对严重,则应及时向上反映情况,避免敷衍了事,导致软件产品质量下降;第四,做好需求文档的可行性分析工作,包括开发成本分析和功能实现可行性,从源头上提高软件产品质量;第五,最大限度地使用已有的软件功能模块,以尽量减轻自身的工作员,缩短软件的研发时间;第六,做好维护接口预留工作,以便于日常维护及软件使用过程当中用户可能遇到或是会出现问题的修复,以真正提高软件质量水平。

4结语

在实际工作当中,相关技术开发人员应特别重视软件需求分析,正确认识软件需求分析与质量保证之间的联系,严格律己,全面提升,以不断提高软件工程质量。

作者:赵伟 单位:南京模拟技术研究所

[参考文献]

[1]来羽.软件工程需求分析与质量保障[J].煤炭技术,2013(9):204-205.

[2]邱廷钰.论软件工程需求分析与质量保障[J].大科技,2013(36):347-347,348.

软件工程可行性分析范文4

随着信息技术的快速发展,软件的复杂度与规模呈指数级增长,给软件的开发与维护带来了极大的困难。因此,需要将系统化的、规范化的、可度量的方法应用于软件的开发、运行和维护中,即将工程化方法应用于软件。而传统的计算机专业的人才培养模式主要面向理论研究,不能够满足软件企业对工程实践型人才的需求。为了解决计算机教育重理论、轻实践的不足,国家教育部与发展计划委员会于2001年新增软件工程专业。目前,全国已经建立了一批国家与省级示范性软件学院,很多高校也相继开设了软件工程专业,培养模式各具特色,尤其是国家级示范性软件学院已经探索出了各具特色的培养模式,但是还是存在着重理论、轻实践的不足,这一缺陷在地方院校的软件工程专业尤为突出。由于受到资金支持、政策引导、师资建设等方面的限制,地方院校的软件工程专业基本上都是从计算机科学与技术专业繁衍出来的,其培养模式很容易沿用计算机科学与技术专业的人才培养模式,不能满足软件企业的需求,主要存在重理论、轻实践的问题,主要表现如下。

(一)教学方式单一化、理论化

软件工程专业的特点是理论性与实践性并重,特别是实践性非常强,软件工程的许多理论都来源于对实践的总结与归纳。但是目前的教学方法还主要是沿用计算机科学与技术专业的教学方式,偏向纯理论介绍,教学方式上还是以教师讲、学生听为主的“灌输式”的“教授/接受式”传统教学,学生只是被动接受,学习积极性不高。此外,很多教师缺少实际软件项目的开发经历,在教学过程中缺少必要的案例或者使用的案例不合适,妨碍了学生对软件工程中基本概念与理论的理解,不明白可行性分析、需求分析、软件设计的必要性以及不会撰写所对应的文档。

(二)实践少,理论与实践相脱节,学生动手能力差

目前很多高校软件工程专业开设的理论课比较多,实验课比较少,并且由于目前的专业教师大都是毕业后直接到高校工作的,缺少开发大型软件项目的实际经历,设计的实验题目大都规模比较小并且比较零散,比如成绩管理系统,学生可以直接进行设计与编码,无需可行性分析、需求设计、软件设计、进度安排等环节,也没有必要撰写相关的文档。如此以来,学生不能够加深对相关概念与理论的学习,没有体会到软件工程理论在实际软件项目开发中的重要作用,导致学生面对实际软件项目时无法下手,这直接影响到软件工程专业毕业学生的市场竞争力。

(三)校企合作不够

校企合作是实现高校软件工程人才培养与企业需求无缝连接,培养高素质软件人才的重要途径之一,尽管目前很多高校的软件工程专业都建立了校企合作模式,取得了不错的成绩,但校企合作存在着缺乏相应的政策引导、缺少双方交流的平台、企业积极性不高、合作松散、管理手段缺乏等问题。这样就会出现高校培养的软件人才动手能力差,无法满足企业的需要,而软件企业又找不到合适人才的尴尬局面。校企合作力度不够在地方院校表现的更为突出,主要原因是地方院校的软件工程专业在影响力与办学规模上与国家级软件学院有一定的差距,知名的软件企业很少愿意与地方院校合作,另一方面,地方院校缺乏政策与资金的支持,缺乏寻求与企业合作的机会。

二、应用驱动为导向的人才培养模式的改革措施

软件工程专业存在的重理论、轻实践的弊端,使得培养的学生在校学习的知识不能形成一个有效的体系,也没有机会将所学知识融于具体项目之中,同时也不清楚当前软件企业对人才的真正需求。而另一方面,软件企业希望新招聘来的员工能够直接融入到项目的开发中,能够解决项目中的实际问题。这样就形成了高校培养的软件人才“过剩”,而软件公司所需人才“短缺”的矛盾局面。为此,本文提出了以实际应用驱动为导向的人才培养模式,以培养能够在软件公司的一线解决实际应用问题、能在实践中应用所学知识、在实践中创新的应用型人才,并对该培养模式的相关实施方法进行了探讨。应用驱动为导向的软件工程人才培养模式的基本保障是以实际应用为导向加强师资建设,该培养模式按照人类认识的规律,以解决实际问题为目标,的三个阶梯式阶段:案例式课堂教学,项目式综合实训,顶岗式专业实习。

(一)以应用为导向加强师资建设

师资建设是专业建的首位,教师在人才培养中起着不可替代的作用。目前,软件工程专业的师资建设主要还是以理论研究为导向,多数教师从学校硕士或博士毕业后直接到高校工作,主要以理论研究为主,缺乏大型软件项目开发经验,不太了解软件产业的新技术与新动向,从而在教学过程中出现重理论、轻实践的现象,很不利于软件工程专业人才的培养。以应用为导向的师资建设就是在现有的以理论研究为导向的基础上,注重提高教师的实际动手能力,可以从以下3个方面做起:①改变传统的以学历和科研为导向的高校教师招聘方式,软件工程专业应当招聘一批具有大型软件项目开发资深经验的软件工程师,比例占师资总数的30%~40%为为宜;鉴于软件技术的快速更新,应定期派遣教师到知名软件公司的一线进行学习和培训;倡导并且增加教师带动学生参加研发类横向课题的机会,提高教师与学生的实际动手能力。

(二)案例式课堂教学

改变传统的“灌输式”的“教授/接受式”教学模式,使用案例驱动式的教学模式,就是指教师本着理论与实际有机结合的宗旨,遵循教学目的的要求,以案例为基本素材,通过师生、生生之间的双向和多向互动,让学生把所学的理论知识运用于“实践活动”中,以提高学生发现问题、分析问题和解决实际问题的能力。一方面,教师首先应准备一些引入型案例,例如,千年虫问题,来说明工程化方法对软件开发的重要性,并且提高学生的兴趣;另一方面,教师应该准备好一个能覆盖软件工程的各个环节和阶段、难度适宜的实际软件项目案例,这个案例最好是教师实际参加过的或者熟悉的项目,并且有必要的软件文档,然后把这个案例作为一个实际情境,结合案例引入并讲授各个知识点,必须要求学生撰写相应的文档和程序,然后与使用案例的已有标准文档和程序进行比较,找到自己的不足,加深对知识点的学习与理解,做到理论与实际相结合。

(三)项目式综合实训

鉴于软件工程专业的实践性很强,应该以实际应用项目为驱动进行软件工程的课程综合实训,让学生按照软件工程开发的流程去独立地完成一个应用项目。首先,教师选择一些中小型的,生活中经常接触的项目作为综合实训项目库,项目的选择一定要难度适宜,太简单体现不出软件工程化开发方法的优点,但是也不能太难,难度控制在学生可以运用所学习的知识、技能,通过讨论和合作可以完成,然后由学生人组成的小组从中选择合适的项目。然后,每个小组模拟软件企业中的一个项目开发小组,进行分工合作,由组长作为项目经理与指导教师沟通,指导教师模拟实际的客户。最后,项目组严格按照软件项目的开发流程来一步一步完成任务,应该包括可行性研究、需求分析、系统设计、实现与测试等阶段。在每个阶段学生应该提交必要的文档,可以按照《计算机软件文档编制规范》(GB-T8567-2006)撰写可行性分析报告(FAR)、软件需求规格说明(SRS)、软件(结构)设计说明(SDD)、软件测试报告(STR)等。在每个阶段,学生应利用流行的软件工程工具,例如,Microsoft Project、RationalRose等。

(四)顶岗式专业实习

软件工程专业培养的人才最终是面向软件公司的,所以很有必要在第四学年时采用校企合作的方式,委派学生到软件公司顶岗实习,时间根据实际情况以个月为宜。在顶岗实习期间学生要与正常的员工一样完成企业的工作要求,真正在实际软件开发中理解并应用前期学习到的知识与技能,实现自身能力的提高,成功地由学生角色过渡到职业角色。在实习期间,学生的管理以企业管理为主,学校管理为辅,学生、教师、企业三方根据实习项目的实际情况确定学生毕业设计题目的选题与设计,最终由学校的指导教师负责指导完成毕业设计论文的撰写与答辩等事宜。

三、结束语

软件工程可行性分析范文5

关键词:软件工程;实践教学;订单式培养

1 引言

软件工程课程是一门综合性、实践性很强的课程。学习该课程的主要目标一方面是让学生掌握软件开发的系统知识,包括其中的原理和方法;另一方面是让学生初步掌握解决实际开发问题的能力,从而为将来走向软件开发工作岗位打下坚实的基础。为了解决上述两方面的有效融合,很多大学都在进行软件工程实训模式的研究和订单式培养等研究,也取得了很多研究进展。本文就是在研究上述内容的基础上提出了一种一体化软件工程教学方法,即满足教育目标要求又符合社会对学生能力的要求。

2 软件工程课程教学现状

目前的软件工程教学现状,可以概述为课堂教学和实践教学两个部分。教师在课程教学中,普遍采用讲授与实验训练相结合的传统教学方法,即课堂上由教师讲授理论、原理,实验训练时由学生动手设计一个项目。因此,该课程的教学存在许多的问题,主要表现在以下几个方面:

从教学内容上看,目前软件工程原理和方法较为抽象,学生较难理解,这是由于目前学校将软件工程课程设置在大三的上学期,而在大一、大二主要围绕着公共基础课、专业基础课进行。从学生角度来看,其刚刚掌握了一两门语言、初步了解计算机体系结构的知识,很多同学还没有进入到真正软件开发的角色中去。特别是在学生时代还没有开始或者刚刚开始准备考虑将来工作的事情的时候,软件工程课程已经开始了。在没有软件开发基础或者软件开发只停留在编一小段代码的情况下,很难理解软件开发所涉及的这么多问题。

从教学方法上看,软件工程课程以传统的教学为主,实践课为辅的教学方法,由于学时有限很难在实践课上将所涉及的软件工程原理和方法逐个地展示给学生,学生似懂非懂,当真正动手的时候却不知从何入手,学生学习的效果差。

从实训教学与订单式培养看,实训教学是将学生置入到模拟的实际工作环境中去,让学生自己体会在软件开发的不同岗位上的职责和应具备的能力与知识;订单式培养是按照指定的企业工作岗位的要求来培养学生所需掌握的知识和技能。目前高校中这两种方式所存在的问题是:实训教学的形式化问题,实训教学是让学生按照软件开发不同岗位所需要的技能和知识来进行,而不是给一个机房,让学生在里面编程就解决了,实训课不等于实验课;订单式培养的问题是学生知识面狭窄,虽解决了实际就业的问题,也培养了学生适应某个企业的岗位要求,但丧失的是学生应该具备的完整、扎实的知识体系。

3 一体化教学方法

为了解决上述三方面的问题,有机地将教学与实际结合在一起,既让学生掌握全面、扎实的知识体系,又让学生具备实际工作岗位要求的技能,综合软件工程教学方法应采取以下方法:

从课堂教学内容上看,结合软件工程的不同阶段,如:可行性研究、需求分析、总体设计、详细设计、编码、测试、维护等不同的软件开发阶段,在讲述不同阶段所使用的原理和方法的同时,要给学生讲述每个阶段的输出,输出的格式、标准。

从实践教学内容上看,让学生掌握在不同开发阶段所需掌握的开发工具是什么,如何使用,这样让学生对软件开发有一个深刻的感性认识,从而对软件开发的过程有感性了解,避免了书本上抽象、难懂等问题。

课堂教学与实践教学的统一,以实践项目为例从项目开始进行可行性研究,讲述软件工程原理和方法,以及每个阶段所产生的文档或者代码,文档和代码的标准内容是什么,到用实际的开发工具来进行可行性分析,如:使用Microsoft Visio绘制系统流程图、数据流图等,利用Rational Rose进行对象建模等。结合工具的使用,使软件工程教学内容以看得到、摸得着的方式逐步地传授给学生,激发学生的积极性、主动性及创造性。

软件工程课堂教学可采用分组讨论。软件生命周期的可行性研究和需求分析环节都要求开发人员和用户进行充分的交流。因此,在软件工程的教学中可以让学生参与教学过程,发表自己的看法,而且通过这种基于角色的讨论,学生不仅掌握了需求分析的基本方法、充分认识了需求分析的重要性,最终会大大地激发学生的学习兴趣和学习自信心。

4 结论

综上所述,软件工程课程是一门综合性、实践性很强的课程。要想取得好的教学效果,应该深入进行软件工程的教学改革。利用新的教学方式,激发学生主动学习理论知识的兴趣,提高教学效果。当然,学生也可以从教改理论和实践的结合上,加深对软件工程知识难点、重点的理解,进一步深刻理解软件工程过程和系统消化理论知识,训练项目设计的思路,锻炼实际开发能力。

参考文献

[1]Microsoft Corporation.office.省略/zh-cn/visio.

[2]宋波.Java Web应用与开发教程[C].清华大学出版社,2006.

[3]吴建,汪杰.UML基础与Rose建模案例[C].人民邮电出版社,2007.

软件工程可行性分析范文6

[关键词]软件工程 项目驱动 教学改革

[作者简介]范会联(1971- ),男,重庆人,长江师范学院数学与计算机学院,副教授,硕士,主要从事软件工程、智能信息处理的教学与研究工作。(重庆 408100)仲元昌(1968- ),男,四川南充人,重庆大学通信工程学院,副教授,博士,研究生导师,主要从事通信与测控系统、无线传感器网络等领域的教学与研究工作。(重庆 400030)

[基金项目]本文系2011年重庆市教委研究项目“基于RFID的校园安全防范系统研究与设计”的研究成果。(项目编号:KJ111304)

[中图分类号]G642.3 [文献标识码]A [文章编号]1004-3985(2013)05-0147-02

软件产业是信息产业的核心、国民经济信息化的基础,已经渗透到各个领域。相关数据显示,我国软件开发行业人才需要量已经超过30 万人,并仍以每年20%的速度增加,其中初级软件开发工程师的需求量就高达20 万人,软件服务外包、3G 研发的人才缺口更大。但让人困惑的是,近年来失业率排在前10 位的专业中涉及计算机科学与技术。一方面每年相当一部分计算机专业毕业生就业困难,另一方面企业招聘不到对口的软件人才,这说明学校培养的软件人才与企业的实际需要存在较大差距。目前我国500 多所院校开设了计算机专业,培养方式各具特色,但培养适应企业需求的优秀软件开发人员,仍是教学实践中值得进一步研究和解决的问题。本文分析研究了软件工程课程的特点及传统教学实践中涉及的普遍问题,提出在软件工程课程的教学实践中引用基于项目驱动的复合教学式理念,并从教学定位、教学内容、教学方法、实践教学等方面进行了探索。

一、课程特点及教学定位

软件工程是一门理论与实践并重的课程,涉及内容广泛,从工程意义上讲,包括软件开发、维护和管理等活动的总体;从学科意义上讲,包括与软件开发相关的理论、原理、方法和技术。ACMCC2001 草案把软件工程学分为七大核心专题:软件过程和软件生命周期模型、需求分析、软件设计、测试和评估、软件进化、软件项目管理、软件工具和环境。为满足社会对不同层次计算机专业学生在软件工程方面知识和能力的要求,软件工程课程应设计成一个多层次的课程系列。针对计算机专业应用型本科学生,将教学定位在两个方面:一是从软件生命周期的角度,讲解软件工程的基本概念、基本原理和基本方法;二是从工程应用的角度,讲解系统性、规范化的通用开发技术。软件工程课程教学应既重视理论知识和分析问题与解决问题的方法,又重视软件工程实践。课程教学目标是使学生掌握需求分析、概要和详细设计及软件测试与维护等内容,用软件工程的原则、开发方法与技术实现中、小规模项目的开发与管理,使学生在基础知识与技能、团队协作能力、分析与解决问题、谈判与沟通能力、创新与发展能力等方面得到良好的训练,为将来从事大型软件系统的开发与维护打下扎实的基础。

二、传统教学方法存在的问题

1.教学内容枯燥、抽象、陈旧。目前的软件工程教材偏向纯理论介绍,主要讲解方法学,从结构化或面向对象的角度讲解软件开发过程的理论知识,缺少案例支撑。大部分学生对软件项目概念的理解是建立在其他课程设计的基础上,没有软件项目的经验,因而妨碍学生对软件工程中基本概念的理解,如可行性分析、需求分析、需求变更、过程管理、质量保障等,不明白为什么要做可行性分析、需求分析,以及需求变更的必然性及管理措施。随着软件系统向社会各方面的渗透以及软件系统的规模不断扩大,对软件系统的质量要求越来越高,这对软件工程课程的教学内容提出了新的要求。从内容上看,不仅要重视方法,还要重视开发工具与环境;不仅要重视开发过程,更要重视开发过程中的过程管理和质量保证措施,这些知识和技能,不能仅仅依靠书本和课堂教学来获得。

2.案例教学中采用的案例不当。软件工程的实践性很强,教学时一般采用案例教学法,方法的成效取决于选择的案例,案例如果选择不当,则教学效果肯定不好。很多教师在教学时,由于缺少实际软件项目的开发和管理经验,导致案例的选取要么不贴近学生实际,如机票预订、仓库管理项目,学生缺少实际接触经验,因而理解困难或不感兴趣;要么选择的案例规模较小,如简单的成绩管理系统,在学生的角度来看,可以直接进行设计和编码,不清楚为什么要进行可行性研究、需求分析;要么案例前后不连贯,如由于教师缺少实际项目开发经历,导致可行性分析的阶段选用机票预订,需求分析用仓库管理,而设计又选用人事管理等现象,导致学生对软件项目、软件工程没有建立完整的概念,缺乏对所学知识的整体认识。

3.重讲解、轻讨论,缺乏实战练习。软件工程课程的实践性要求很强,在传统软件工程教学过程中,教师一味讲解软件工程的基本原理、理论,或一味分析一些简单案例,忽视了学生主观能动性的发挥,没有让学生参与教材内容或案例的分析讨论。虽然有实验教学的要求,但一般只停留在组织学生编写软件项目设计文档的单一环节上,由于学生没有进行实际项目的演练,教学效果不理想。尽管这种以教师讲授为主的教学模式,在课堂教学中使用了一些情境教学,但仅仅遵循原有理论教学过程模式,并未按典型工作任务模式完成情境教学,培养出来的学生缺乏自主探索知识的能力和运用知识解决实际问题的能力。因此,切实加强软件工程教学的创新与改革至关重要。

三、项目驱动的复合教学模式

复合教学模式是以科学的教学理论为指导,依托分组教学、研讨、协作、活动参与等多种教学模式的相互交叉、相互渗透,并融合多元化的教学内容、多样性的教学形式、现代化的教学方法而形成的综合性、立体性的教学模式。结合软件工程课程特点,提出“项目驱动的复合教学模式”,以项目为主体,组织学生以团队的形式参加项目分析、设计、实现和管理,在项目实施过程中,激励学生自我认识,引导学生独立思考与创新,营造讨论争辩的机会和气氛,并以讨论的形式鼓励学生表达各自的观点和思想,从而积极主动地参与分析、概括或评价等思维活动,将软件工程的分析、设计、实现、管理等各个知识点的讲解融入项目实施的各个阶段。项目驱动的复合教学模式由以下几个环节构成:

1.学生分组。学生按系统分析、设计、实现、测试的角色组成4~5人的开发团队,选举一人作为项目负责人,明确各自的分工和职责,并协作完成,以培养学生的团队合作精神、沟通能力和协调管理等能力。随着教学进度展开,把项目实施与理论教学结合起来。

2.确定项目。项目的确定分为教学案例和演练项目。教学案例是教师用于组织课堂教学讲解的项目,由教师根据学生的特点确定。演练项目是在教师的指导下由小组根据各自的兴趣、特长自行选择,用于课后同步训练。

3.教学内容及方法的改革。教学内容的选取以整合相关课程中相同知识点使教学内容更加精炼为指导思想,根据市场和企业对软件人才的需求,将重要、经典的基本概念、知识点连同相应的技能串联起来讲授和实践。软件工程课程的教学内容将软件过程模型、工程管理、需求工程、分析建模、软件设计、软件构造、测试以及软件交付与维护为骨干,融入数据库原理、计算机网络、数据结构、操作系统等相关课程知识,按和J2EE两个方向构建组合式、模块化教学内容。在教学方法上,以培养学生的独立思考和创新思维为目标,将理论知识融入教学案例的讲解中,通过分析、演绎、推断、归纳,引导学生认真分析项目中体现的软件工程领域的问题,运用启发式教学方法建立教师、学生双向交互的教与学通道,启发学生对软件开发问题的认识和思考,激发学习的主动性,使其通过积极的思维和讨论获得知识。

4.演练项目的过程管理。演练项目作为课外同步训练项目,教师以需求方与技术顾问的双重身份参与其中。作为需求方,教师针对演练项目提供大致的功能需求,鼓励学生通过分析问题、调查研究、分析需求和管理需求等活动,学习软件需求工程的基础知识和基本技能。作为技术顾问,教师为学生提供相应的学习资源和解决问题的方法及手段的建议,引导学生独立思考和讨论。演练项目的实施按项目规划、迭代开发两个阶段组织进行。在项目规划阶段,完成定义项目开发过程模型、定义项目组织结构、分配人员角色、估算项目规模、制订进度计划。迭代开发阶段是由需求分析、软件设计、数据库设计、模块开发与测试各环节组成的循环逐步求精的过程。整个演练项目的实施要求在规范的、可控的过程中完成,具体保障措施如下:一是明确开发任务并落实到小组的每个成员,由项目负责人填写任务跟踪表,监督任务执行情况,小组各成员通过不同角色的任务分工,共同协作完成项目开发任务;二是实行每周例会制度,保证所有成员在规定时间进行讨论交流;三是将需求分析、软件设计、模块开发、集成测试等关键阶段产品置于配置管理的控制下,并实行阶段评审机制,要求各项目组在完成每个里程碑的任务后,提交相应技术文档,推荐一名代表就该阶段完成工作情况、遇到的问题及解决方法作小型汇报,并组织学生进行技术评审。

5.演练项目验收。在完成演练项目的开发任务后,由教师组织项目验收讨论会,要求每个小组演示项目成果,从系统背景、团队介绍、采用的技术、系统优势及存在问题等方面汇报,演示系统的各项功能,回答教师和同学的提问,以团队的形式提交软件需求规格说明书、软件设计文档、项目代码、软件测试文档、软件过程管理文档、每周工作报告以及任务跟踪表等材料。

6.课程考核。课程考核分为理论考核和实践考核两个方面。理论考核采取开卷考试,要求学生在规定时间内完成给定案例的分析和设计方案,重点考核学生思考、分析和解决问题的能力;学生的实践考核成绩由小组成绩和个人成绩两部分组成,小组成绩根据各小组提交的演练项目结题材料,并结合项目验收汇报情况进行评定;个人成绩根据每周工作报告和任务跟踪表由小组组长和教师进行综合评价。

进行教学改革的最终目的是培养符合市场和社会需求的创新型软件人才,在基于项目驱动的软件工程课程复合式教学模式下,培养的人才具有扎实的理论基础知识,通过相关知识的组合式、模块化的理论教学方法,强化学生的认知,使其更牢固地掌握理论知识;具有独立思考和基本的创新能力,在复合式教学过程中,通过引导、启发学生分析问题,积极思考和讨论,培养学生的独立思考和自主创新能力;具有团队协作精神,以项目驱动小组协作开发,培养团队合作精神。在项目进行的各个阶段,要通过明确任务、落实责任、任务跟踪、协作开发、定期讨论、阶段评审和项目验收各个环节的协同工作,达到培养学生的团队精神与合作意识的目的。

[参考文献]

[1]李超,谢坤武,向军.软件工程课程教学内容及方法探索[J].计算机时代,2010(7).

[2]教育部高等学校计算机科学与技术教学指导委员会.高等学校计算机科学与技术专业核心课程教学实施方案[M].北京:高等教育出版社,2010.

[3]庞雄文.基于实例的“软件工程”课程教学方法[J].现代教育技术,2010(S1).

[4]温颖,周昕.项目教学法在软件工程教学中的应用[J].科技信息,2010(24).