时间:2022-08-17 19:41:37
开篇:写作不仅是一种记录,更是一种创造,它让我们能够捕捉那些稍纵即逝的灵感,将它们永久地定格在纸上。下面是小编精心整理的12篇软件工程,希望这些内容能成为您创作过程中的良师益友,陪伴您不断探索和进步。
如今我国已经迈入了信息化时期升了国家对完成工业化和现代化的能力。软件工程作为电脑技术里的关键构成部分,其,互联网技术与电脑技术很大程度上参加到人们的工作、学习和娱乐中。电脑数据技术极大的促进了国内的科技社会的进步,推动了国内的各种行业的进步,同时提为全部数据系统中的工作提供了保障。该文为软件工程标准化的现状给出了有关分析,同时提出了强化国内软件工程标准化系统的合理措施。
关键词:
软件工程;标准化;现状;分析
伴着国内的智能化速度的增加,计算机软件工程也更为完善,在社会中的使用相当多,给人们的生活提供了极大的便捷,并也推动了科技、文化的改革。推动软件工程的进程,不但是社会进步的需求,也是人们平日娱乐、学习的实际需要。软件工程作为电脑技术里的关键部分,是开展智能化的源头。其是一个相当繁复的工程,波及到的专业很多,而且因为它自己的繁复性,致使在创新软件的过程里碰到了许多的障碍,因此必定要严格的进行软件工程策划、建设和制造养护等每一个步骤,进而来提升软件的品质,推动企业的经济效益。
一、软件工程标准化的含义
软件工程的标准化指的是规范软件标准和软件工程进程规范。软件工程的标准化作为软件制造业进步的关键保证,其对软件工程来讲,软件工程的构建是很多工程的综合建立,同时构建的进程相当的繁复并且有相当的难实现性,在软件工程构建的各个步骤都有着很多的关系,必定需要招募各个专业的优秀技术人员共同协作,才可以达到一致的目的,因此软件过程的规范化代表着软件工程的完善。此外,在软件工程的构建里,必定要须有关的原则准则来给予科学的引导,进而改善软件成品的性能。软件项目的规范化为制造软件工程提供了巨大的益处,在相当的程度中提升了软件的可信度与软件的品质。而且,软件工程的规范化,也将给软件制造的工作者提供合理的引导,令有关工作者的设计更一步的完善,免除了许多技术中的错误操作,进而提升了产品的制造效率。软件工程的规范化同时在相当程度中降低了软件设计的资金耗费与缩短软件的生产周期,这为软件的养护提供了巨大的优势。
二、软件工程标准化的现状
(一)对软件工程标准化的理解偏颇
在国内需多软件相关领域里,潜在着忽视软件制造规范的状况。大部分的企业常常会忽略有关法律里对软件产品规范化的要求,有关技术工作者在软件的制造进程里,常常依据自身的经历,按照自身常用的措施与思维实行软件的设计。同时,行业中某些设计者对自己的监督与自检过程缺失或是不严密,难以保障有关规范的实行,不能给工作者的研制开发进程构成合理的监督管理,类似的都会对软件工程的制造品质及功能造成极大的不良作用。
(二)有关法律法规不健全
国内对软件工程规范化的关注程度每年都在提升,不过有关法律法规的条目中未能够有效的推动,导致国内软件项目规范化杂乱无序的状况。在第八个五年计划时期,极多的软件研制开发与管理工作是通过企业施行自主研发的,国内未有达成一致的筹划,降低了软件研制开发的效果。另外,国内软件的研制开发起点低,研制水准对于国际水准来说普遍较差,这是国内软件设计的弊端。所以,要时时刻刻铭记需要和国外的前沿软件研制开发组织的沟通学习。如今国内在软件工程的建设里,和国际间的沟通行动不是很多,跟不上国外的智能化进度,使得国内产生软件工程体系紊乱、软件工程资源虚耗大的状况经常出现。
(三)软件质量的管理不合理
软件的设计应当要构建起软件工程化标准的有关规范系统,并需专门的管理工作者来进行管制和督促。由于软件研发工程须要严格的进行管制与标准研发的,唯有如此才可以保证软件品质。假如缺少一系列规范准则,软件研发进程里的软件产品性能就不能得到保证,增加了软件品质的管制实现程度。
三、完善软件工程标准化的措施
(一)深入理解有关概念
设计者在研制软件的进程里,设计要依据客户要求来严格挑选准则进行研发制造,认真完成客户要求的设计,关注软件和客户间的各个微妙联系,进而保障软件设计工作的科学进行。与此同时,企业应当主动引入软件项目的各样规范,加深与把握各样的理念,推动了软件工程体系和规范间的有效性、关联性,进而获得用户的信赖与行业的赞赏。
(二)大力培养有关技术人才
近些年来,我国渐渐开始关注软件技术专门人员的培训,不过其中大部分是培训学术性质和研究性质的软件技术人员。大多高等职业学校建立的软件技术专业潜在着诸多的弊端。专业界定模糊,诸多院系将软件专业的教育关注点定在软件研制用具的应用上,培训出来的学员缺少基础软件系统的探究、策划、评测、布置实行的根本能力,缺少对软件研制进程里所须要的体系认知能力与规范化贯彻能力,对行业的认识较少。
(三)保障软件产品质量
国内的软件工程规范化如今处在一个比较差的层次中,对国内的软件工程规范化展开十分不利。因此有关设计人员须要考虑国内的环境现状来引入前沿技术,同时要依据市场的全面需要来制造软件有关成品。加强对软件研发方面的付出,奋力沟通软件和客户间的联系,并在技术支撑下来展开技术分析任务,提升本身软件的全面的水准,显出本身的特征与优势,才能够在复杂的国际竞争里夺得一隅之地,进而完成了软件工程规范化的构建任务。对企业来讲,不但提高了本身品质的作用效果,同时也获得了外界的市场经济效益,推动企业长久的运行目的。
四、结束语
软件工程规范化的展开是须要依赖各个方面的支撑才能够正常实行,其是一个繁杂,整体性强的项目,这考验了一个国家的科技能力,有关工作人员的才能。国内的软件工程规范化如今处在一个相当差层次的时期,并且在实际工作里接触到了各样困境,所以,构建一个管理能力高的系统是很有效果的。
参考文献:
[1]马关蕊.如何实现计算机软件工程标准化发展方向[J].软件,2014,03:184-185.
一、研究背景
软件工程是高校计算机专业教学计划中的一门重要课程。软件工程的课程体系涉及了从客户沟通,软件设计,软件开发,软件测试到最终软件维护等软件生命周期各个阶段。既是一门理论性极强的专业课程,更是一门实践性很强的课程。近年来,全国各大高校均将软件工程作为计算机及其相关专业的一门重要专业课程。计算机专业的学生通过软件工程课程,学习作为软件从业人员需要掌握的基本专业能力,为未来从事计算机软件相关的各类工作,提供理论及方法的指导。可以说,学好软件工程,对计算机及其相关专业的从业人员来说都是一门必修课。
二、教学现状
在当前的软件工程课堂教学当中,部分院校采用纯理论课堂讲授的授课形式,另一部分院校则采用理论讲授与实践实训课程相结合的授课形式。然而,从教学内容来看,当前软件工程的教学内容,主要集中在传统方法学,即传统的软件工程学。对于面向对象方法学来说,很多新的知识方法还涉及不足,特别是软件模型化,构建技术,UML统一建模语言等等一些当下社会流行的软件工具和方法。同时,实践环节较少,实践效果不够理想也是软件工程教学中普遍存在的问题。目前可供该课程选用的合适的实验项目甚少,所以学生通过实验课程所达到的效果与教学要求存在较大的差距。另一方面,学生对理论知识的理解不足。软件工程是一门计算机领域的综合性、工程性学科。涉及软件生命从萌芽、成型、成熟、生命结束的各个周期阶段的工作和任务。学习者似乎能听懂,可听完后大部分学生还处在似懂非懂的阶段,真正需要动手时,不知道该从何下手。在近年来的教学实践过程中发现,一些理论知识,过于抽象晦涩。与实际的应用需要相脱节,学生对很多知识理论,只停留在概念阶段,难以消化,更无法理解理论知识在实际的软件设计、开发、测试、维护中究竟何时何地可以运用,具体又该如何操作。理论与实际的结合仍存在很多不足。这一方面与课程理论研究性较强有关,另一面也与教师本身长期在院校从事较单一的教学工作,缺少工程项目经验,脱离实际的生产及软件开发场景,难以将理论与现实情境很好的结合传授给学生。在计算机专业毕业生的毕业设计中,也集中体现出了学生不能把理论知识有效地运用到实践活动中的问题。学生并没有真正掌握基础理论及运用理论的技能和方法,所以在进行毕业论文设计时,不能将软件工程的理论充分运用到他们的设计实践中去,从而导致设计开发的软件和撰写的文档在结构、内容等方面错误百出。
三、改革思路
(1)研究并解决软件工程教学中存在的新兴软件方法不足等问题。结合现有的专业培养方案,教学大纲,制定教学计划,改善软件工程教学现状,研究传统软件工程技术在教学改革中占的课时比例及应当讲授的内容,增加研究面向对象软件工程技术在教学改革中的地位及讲授的方式、内容和课时量。(2)研究并解决软件工程课程实践性不足,学生学习停留于理论阶段的问题。结合理论课程的内容,增强软件工程的实践性,与一些软件开发的实训课程相结合,增加学生的实践机会,将软件工程理论应用于实践当中,提高学生对课程的理解和现实认识。(3)研究并解决学生对理论知识理解不足,课程停留于课堂教学,脱离实际运用,学生难以满足应用型人才培养目标等问题。根据教学计划,教师请教并邀请相关企业的软件资深从业人员,与学生开展专业知识交流活动。以企业中实际可行的软件项目为案例,为学生讲解软件知识,让学生理解软件工程的理论知识如何有效的融入实践当中。并加深学生对课程、对当今计算机领域流行的专业知识及未来从业方向,对计算机专业从业现状的认识,真正做到应用型人才的培养。可以安排学生到企业进行调研,参与实际的企业项目。(4)研究并解决学生在毕业设计及毕业论文的完成过程中,缺少理论支撑,不能合理规范化完成设计的问题。将软件工程专业知识与计算机专业毕业设计相结合,在毕业论文指导的过程中,重视软件工程理论的应用。以软件工程方法学,软件过程,项目管理等相关知识软件工程相关理论指导学生的毕业设计,力求整个毕业设计过程达到模块化、规范化,正规化。
参考文献
[1]张海藩.软件工程导论(第5版)[M].北京:清华大学出版社,2018.2
[2]崔含鼎,梁仕云.现代教学系统工程模式论[M].广西教育出版社,2001.
软件工程学的主要内容是软件开发技术和软件工程管理。软件开发技术包含软件工程方法学、软件工具和软件开发环境。软件工程管理学包含软件工程经济学和软件管理学。
专业简介:是计算机领域发展最快的学科分支之一,国家非常重视软件行业的发展,对软件人才的培养给予了非常优惠的政策。软件专业培养掌握计算机软件基本理论知识,熟悉软件开发和管理技术、能够在计算机软件领域中从事软件设计、开发和管理的高级人才。主修课程:除了学习公共基础课外,还将系统学习离散数学、数据结构、算法分析、面向对象程序设计、现代操
(来源:文章屋网 )
【关键词】 项目教学法 软件工程
软件工程课程的特点是理论与实践结合紧密,其教学目标是学生能够掌握软件工程的基本方法和技术,并能够灵活运用到今后的软件生产和项目管理工作中。为了更好地达到此目标,弥补传统教学模式中的不足,有必要对软件工程课程教学模式进行研究和探讨,通过课程改革放弃分散的项目开发,采用项目教学法,使学生能更好的将所学的知识进行串联和汇总,培养学生软件项目管理的思想,树立工程观念。
1 项目教学法的内涵
项目教学法也叫项目学习法(Project based learning,简称PBL)。上海师范大学教授黎加厚认为:“基于项目的学习是以学习研究学科的概念和原理为中心,通过学生参与一个活动项目的调查和研究来解决问题,以建构起属于他们自己的知识体系,并能运用到现实社会中去。”
2 项目教学设计与实施
(1)选定项目,创设情境:在《软件工程》课程教学中,教师设计一个典型的、完整的、实际的软件项目案例,将案例按照软件生存周期模型展开,作为贯穿软件工程各阶段的主线;学生根据实际的开发流程构建开发场景,结合具体的项目进行项目分析和任务分解,再分析每个任务需要的知识、技能、素质要求,以完成任务的形式来组织学习内容。教师利用“虚拟实战项目”引导学生进入项目研境。
(2)分析项目,制定计划:根据确定的项目制定详细的活动安排计划和学习时间计划。按照所选项目,教师制定各阶段的任务表,对学生进行一个从软件计划、需求分析、设计、编码、测试和软件开发全过程的训练。项目组成员对学习完成这个项目进行总体规划,做出详细的时间安排及对项目学习中进行的活动提前计划。
(3)独立探究,完成项目:成立项目组是项目教学法的一个比较重要的环节,学生按照“小组软件过程”的管理办法参与项目实施过程。每个项目小组选出项目经理,并对小组成员分配相应的角色。项目组成员按照确定的项目和制定的计划,进行深入调查研究,从项目开发的准备工作、系统分析过程、系统设计过程、软件测试到系统实施,完成项目开发,使学生通过实验室工作来实际应用在课程中所学的概念;按照软件工程课程的要求,文档的书写也是要掌握的一个重要环节。教师可以让学生在撰写文档之前,利用网络资源,阅读别人的格式和内容,鼓励创新,能够撰写符合国家标准或ISO标准的工程文档;通过开发项目,学生自己分析问题、查阅资料、设计系统、调试编程直到解决问题,以小组为单位撰写相关文档并提交,实现一个软件项目从分析、设计到实现的全过程,培养软件开发能力,积累开发经验。
(4)成果交流,活动评价:成果交流分为平时评审和期末答辩两种模式。平时评审按项目阶段进行,各小组汇报进度并提交各自的实证材料,教师给出成绩,密切追踪学生的学习情况;期末评审是在小组完成全部工作的基础上,以答辩的形式实行;项目教学法中的活动评价可以多个方面进行,如:项目的选择、项目组成员的表现、计划实施、交流讨论、成果展示等。活动评价是过程评价和期末评价,个人评价与小组评价,自我评价和教师评价的良好结合。教师不仅是评价的客体,而且也是评价的主体,评价的结论为教师反思教学提供诊断性意见。
3 研究结果分析与结论
选取一个班级作为实验班,通过一个学期的实验教学,及对学生学习习惯、合作能力、学习方式等个方面做问卷调查,评价调查结果统计如表1表2所示。“1”表示完符合,“2”表示比较符合,“3”表示不太符合,“4”表示不符合。
以上数据表明,项目教学法体现了“学生主体”的教学思想,采用这种教学法易于激发学生学习的积极性、主动性,锻炼学生的合作精神和沟通能力,合作完成一个中等规模的软件系统的分析和设计,实现一个规范化的软件项目从分析、设计到实现的全过程。
参考文献:
[1]刘延申.美国高等师范教育改革简述[J].教育研究,2001,(10).
(1)对软件开发成本和进度的估计经常很不准确。实际成本比估计成本有可能高出一个数量级,实际进度比预期进度拖延几个月甚至几年的现象并不罕见。这种现象降低了软件开发组织的信誉。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量,从而不可避免地会引起用户的不满。
(2)用户对“已完成的”软件系统不满足的现象经常发生。软件开发人员经常在对用户要求只有模糊的了解,甚至对所要解决的新问题还没有确切熟悉的情况下,就仓促上阵匆忙着手编写程序。软件开发人员和用户之间的信息交流往往很不充分,“闭门造车”必然导致最终的产品不符合用户的实际需要。
(3)软件产品的质量往往靠不住。软件可靠性和质量保证的确切的定量概念刚刚出现不久,软件质量保证技术(审查、复审和测试)还没有坚持不懈地应用到软件开发的全过程中,这些都导致软件产品发生质量新问题。
(4)软件经常是不可维护的。很多程序中的错误是非常难改正垢,实际上不可能使这些程序适应新的硬件环境,也不能根据用户的需要在原有程序中增加一些新的功能。“可重用的软件”还是一个没有完全做到的、正在努力追求的目标,人们仍然在重复开发类似的或基本类似的软件。
(5)软件通常没有适当的文档资料。计算机软件不仅仅是程序,还应该有一整套文档资料。这些文档资料应该是在软件开发过程中产生出来的,而且应该是“最新式的”(即和程序代码完全一致的)。软件开发组织的管理人员可以使用这些文档资料作为“里程碑”,来管理和评价软件开发工程的进展状况;软件开发人员可以利用它们作为通信工具,在软件开发过程中准确地交流信息;对于软件维护人员而言,这些文档资料更是至关重要必不可少的。缺乏必要的文档资料或者文档资料不合格,必然给软件开发和维护带来许多严重的困难和新问题。
(6)软件成本在计算机系统总成本中所占的比例逐年上升。由于微电子学技术的进步和生产自动化程度不断提高,硬件成本逐年下降,然而软件开发需要大量人力,软件成本随着通货膨胀以及软件规模和数量的不断扩大而持续上升。美国在1985年软件成本大约已占计算机系统总成本的90。
(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋向。软件产品“供不应求”的现象使人类不能充分利用现代计算机硬件提供的巨大潜力。
软件工程的七条基本原理:1、用分阶段的生命周期计划严格管理有人经统计发现,在不成功的软件项目中有一半左右是由于计划不周造成的,可见把建立完善的计划作为第一条基本原理是吸取了前人的教训而提出来的。在软件开发和维护的漫长的生命周期中,需要完成许多性质各异的工作。这条基本原理意味着,应该把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件的开发和维护工作进行管理。Boehm认为,在软件的整个生命周期中应该制定并严格执行六类计划,它们是项目概要计划,里程碑计划,项目控制计划,产品控制计划,验证计划,运行维护计划。不同层次的管理人员都必须严格按照计划各尽其职地管理软件开发和维护工作,绝不能受客户或上级人员的影响而擅自背离预定计划。2、坚持进行阶段评审当时已经熟悉到,软件的质量保证工作不能等到编码阶段结束之后再进行。这样说至少有两个理由:第一,大部分错误是在编码之前造成的,例如,根据Boehm等人的统计,设计错误占软件错误的63,编码仅占37;第二,错误发现和改正得越晚,所需付出的代价也越高。
因此,在每个阶段都进行严格的评审,以便尽早发现在软件开发过程中所犯的错误,是一条必须遵循的重要原则。3、实行严格的产品控制在软件开发过程中不应随意改变需求,因为改变一项需求往往需要付出较高的代价,但是,在软件开发过程中改变需求又是难免的,由于外部环境的变化,相应地改变用户需求是一种客观需要,显然不能硬性禁止客户提出改变需求的要求,而只能依靠科学的产品控制技术来顺应这种要求。也就是说,当改变需求时,为了保持软件各个配置成分的一致性,必须实行严格的产品控制,其中主要是实行基准配置管理。所谓基准配置又称基线配置,它们是经过阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。
基准配置管理也称为变动控制:一切有关修改软件的建议,非凡是涉及到对基准配置的修改建议,都必须按照严格的规程进行评审,获得批准以后才能实施修改。绝对不能谁想修改软件(包括尚在开发过程中的软件),就随意进行修改。4、采用现代程序设计技术从提出软件工程的概念开始,人们一直把主要精力用于探究各种新的程序设计技术。60年代末提出的结构程序设计技术,已经成为绝大多数人公认的先进的程序设计技术。以后又进一步发展出各种结构分析(SA)和结构设计(SD)技术。实践表明,采用先进的技术既可提高软件开发的效率,又可提高软件维护的效率。5、结果应能清楚地审查软件产品不同于一般的物理产品,它是看不峥摸不着的逻辑产品。
软件开发人员(或开发小组)的工作进展情况可见性差,难以准确度量,从而使得软件产品的开发过程比一般产品的开发过程更难于评价和管理。为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得所得到的结果能够清楚地审查。6、开发小组的人员应该少而精这条基本原理的含义是,软件开发小组的组成人员的素质应该好,而人数则不宜过多。
开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。素质高的人员的开发效率比素质低的人员的开发效率可能高几倍至几十倍,而且素质高的人员所开发的软件中的错误明显少于素质低的人员所开发的软件中的错误。此外,随着开发小组人员数目的增加,因为交流情况讨论新问题而造成的通信开销也急剧增加。
SC图是软件工程中面向数据流设计方法中的一种描述工具,专门用来描述软件的总体结构。SC图具体是是面向数据流设计方法使用的主要描述工具,用来表达软件的组成模块及其调用关系。
SC图在SD方法中约定:用矩形框来表示模块,用带箭头的连线表示模块间的调用关系。在调用线的两旁,应标出传入和传出模块的数据流。
SC图允许使用的6种模块:传入、传出、变换、源、漏和控制。
SC图模块调用有3大类:简单调用、选择调用和循环调用。
(来源:文章屋网 )
1.1软件测试的含义
软件测试根据用户的使用目的,将成功开发的软件进行相应的纠错动作,从而披露该软件的各种问题及缺失因素,促进研发人员进行相应的改进,从而达到完善软件的目的。
1.2软件测试的关键性阶段
主要有以下两个关键性的检测阶段。第一阶段是软件开发过程中各主要单元模块完成后进行测试。这一阶段测试可以将缺陷控制在最小单元模块内,给研发人员最快的测试反馈,促使其完善单元模块的功能,达到用户的使用要求;第二阶段测试是软件系统全部完成后,进行全方位的综合测试,查找系统在使用过程中可能存在的问题。此时,需要根据系统要实现的功能进行多种测试工具的应用,以其找到系统不符合要求的功能或性能瑕疵。
1.3软件工程中软件测试的方法
对软件工程进行软件测试时,不同软件可以运用不同的测试方法。现阶段,主要以软件测试在测试过程中是否需要将程序进行完全运行来判断测试方法,不需要系统程序运行就能完成测试的方法称为静态方法;需要系统时时传送相应数据,并通过相应程序检测系统是否达到用户的期望值,是否存在运行逻辑上的问题和算法上的缺陷等的测试方法称为动态方法。目前,静态测试方法应用较广的有静态排演法、软件检查法和软件审查法。随着软件测试方法的不断创新和完善,新兴的测试方法如静态自动分析、分析模型等方法不断得到应用;动态测试方法随着精细化测试进程的深入逐渐细分为单元测试方法、集成测试方法、系统测试方法。这些测试方法相较于静态测试方法,具有范围广、测试成功率高、内容覆盖面大、应用程度高等特点。如白盒测试、代码覆盖测试等。
2软件测试在软件工程中的作用分析
2.1软件工程项目需要软件测试进行全方位的辅助管理
所谓软件工程项目就是将用户的要求进行立项管理,通过建立项目组、研究用户的使用目标来确立项目目标,对目标现状进行系统研究与分析、总体目标细分阶段性目标以及规划项目总体方案等,将软件开发过程建立在项目管理过程中。在这一过程中,各阶段性成果都需要软件测试来校验其可行性,从而辅助软件工程项目步入更完善的项目管理中。首先,软件工程项目需要精细化项目管理和集中项目管理两者协调统一。因此,需要设立软件测试机构,能够对项目细分的各阶段、各模块进行软件测试。其次,项目组人员组成和责任落实要依照规章制度实施。要体现软件测试的重要性和实际意义,测试机构负责人为项目组组长的最佳人选。其组员为各项目负责人和其他测试人员组成。软件测试结果必须立即反馈到软件研发人员、程序员及系统分析人员等相关人员手中,以期促进其团结协作,将软件各部分呈现出的问题解决。最终满足用户的使用要求,实现软件设计的目标。可见,软件测试的辅助作用,对于软件工程项目的精细化管理、软件相关技术的综合管理等至关重要。
2.2软件工程项目实施反促软件测试发展
研发一个新的软件系统时,其核心内容包括目标确定、框架设计、分支设计和编码应用等,这些核心内容均需要软件测试来实现其统一性和兼容性。系统目标是软件测试的最终目的,软件测试需要围绕系统目标进行缺陷的发现和反馈,从而实现各阶段测试的统一性和完整性,从而促进系统的协调和完善。经过软件测试的系统,必须保证达到项目目标,且在长时间运行下无重大bug。从这一过程来看,软件测试是在软件工程项目实施中得以发展的。软件测试机构并不是真正意义上的独立,其“独立”仅是功能上的独立。实际上,在进行软件工程项目实施的整个过程中,无论是整体设计还是精细化管理,都需要软件测试参与其中,以测试角度对软件工程项目的设计和实施进行指导和辅助,从而纠正一些设计上的错误和细节上的缺陷。这种参与的直接性促进软件测试必须紧跟项目研发现状,才能提出及时有效的参考意见,促进项目顺利开发。软件编码规范是软件研发团队必须规范执行的,而这种规范的编码刚是软件测试机构的首要任务,制定规范要严肃,执行规范要严格,才能给用户呈现出高质量的软件产品。
2.3软件测试原则
软件测试的原则是在其测试的基本目的和要求下产生的,因此,在进行软件测试时,必须注意其原则性。(1)坚持用户使用目的,坚持项目总体目标和阶段性目标的实现原则;(2)测试“精细化”即细分分支、单元模块、阶段性成果、系统全面测试等随时进行;(3)测试时间要越早越好,频率越高越好;(4)测试中逻辑性检测和算法检测要注重;(5)测试要结合数据检测进行;(6)保证测试的严肃性;(7)测试坚持第三方进行原则;(8)不合理条件值都要进行测试;(9)测试过程、方法、用便、结果、完善等都要记录在案,便于故障定位和日常维护。
3自动化软件测试技术分析
随着智能化技术和自动化技术的不断深入应用,在软件测试中,自动化软件测试技术得到创新和发展,并在软件开发中应用得越来越广泛。所以,人们将各种自动测试的效果进行评估,将成功案例进行相似引用,来判断检测的可行性。最初的自动化测试具有较严格的针对性,运用特定的测试原则和测试方法,将统计指标运用其中,从而得到测试结果,并对其进行全面评估,从而得出自动化测试的严密性。随着自动化测试的不断深入推进和创新,其测试准则和自动测试技术越来越成熟,逐渐过渡到自动测试模型化阶段。逐渐形成自动测试的等级制度,使得自动软件测试技术成为测试控制能力高低优劣的一个重要判断依据。
4结语
软件工程实验软件装置结构设计支持开放式实验教学与设计型实验的开发,特别适合当今教育教学改革对创新能力培养的要求,可作为相关专业的课程设计、专业设计以及毕业设计的实践性综合平台;还可作为面向自动化应用技术,开放的技术培训与产品开发平台。软件工程技术综合实验装置基本覆盖了当今自动化控制技术的各种技术手段[1]。
1软件工程实验装置的设计
程序必须与终端用户搭配:
一般说来,它需要接受一个或几个用户的输入,然后以电子和/或书面的形式产生输出。一般情况下,用户也必须从程序本身或随程序的书面文件学会使用程序。
程序将有可能和其他程序相互作用,因此需要“内部接口”或兼容组件将它和其他程序联接
近几年来,随着对集成应用程序的需求增多和面向目标的编程已成为一项准则,这个程序单元越来越重要。最后,程序人员必须编写执行程序的实际源代码,并且这个源码必须被翻译成在计算机上运行的目标码。不可能界定程序编写的“顺序”。虽然人们可以自然地推定程序员可能从“顶部”开始并一路向下工作——对程序提出想法,然后设计它的结构和界面,并且最后以代码完成这些设计决定—本文由收集整理—然而事情并不总是按这个路线进行的[2]。
2软件工程实验装置应用的项目
关于编写计算机程序步骤的一个最重要的事实是:它是迭代的。大部分程序不是以直线型构造编写的。程序设计表现为一系列的“反馈循环”,其中程序的每一阶段影响到所有其他阶段。因此编写代码可能揭示出一些需要重新考虑程序的基本结构问题。用“a测试版软件”让一些试用用户可以指出已完成程序的一些缺陷,而且也可以鉴定所期望的性能以便要求程序全部或部分重写;即使在程序已经编写“完成”并出售以后,改写的过程仍在继续。大部分公司对它们的程序制定出一系列的修订版或最新版;当然消费者对购买第一版本的新产品往往非常谨慎。无论计算机程序是如何编写的,它们都是功能性的。程序的设计是为一个或多个目的服务的,并在很大程度上通过它们完成任务的好坏得以评定。由于计算机指令的功能仅是完成确定的任务,制定程序结构时,最令人关心的是以最有效的方式满足用户的需要。在这个框架下,效率的概念是广泛的。效率可以是以下一项或几项:1)代码效率——信息处理速度最快;2)存储效率——使用求解技巧和寻址方法使完成期望任务所需的存储量最小;3)输入/输出效率——计算机与外部硬件没备(如键盘和打印机)的用户之间的信息传送质量和速度最优;4)稳定性——程序必须便于维护、升级、适应新的硬件平台。软件工程界力争以较低的成本开发出更“有效”和更可靠的程序编写方法。当然,这并不是说,用于完成相同目标的程序设计包含相同的代码。无数的因素可能导致不同的程序之间,在“低”级源码方面以及在较高级的程序设计和用户界面方面,形成显著的变化。如同对效率的考虑在很大程度上支配编程一样,我们将看到,这种变化对知识产权的影响也是很大的[3]。
由于用户的基数大,更多的程序人员编写在dos和windows上运行的程序;更多的用户部分地采用微软系统,因为所有的程序是为此编写的。1994年,dos和windows占有个人计算机操作系统市场的80%,尽管该系统具有封闭性,并且还存在一些具有竞争优势的系统。在具有显著网络外部性的市场中,应考虑的重要事项是:计算机厂商是否有正确的动机去开发或采纳兼容性的产品,并借此扩大既有网络。经济学家证实,计算机厂商可能宁愿采用不兼容的产品标准,虽然他们采纳兼容的产品将增加净社会财富[4]。
3 实验软件装置的实例分析
实验装置的软件有三部分,第一部分是控制软件,主要是控制系统的扫描、功能、数据的采集等;第二部分是数据处理部分,用来对曲线做处理,如曲线的平滑、四则运算等;第三部分专门用于黑体实验,前两部分很好理解,重点介绍第三部分[5]。
3.1建立传递函数曲线
任何型号的光谱仪在记录辐射光源的能量时都受光谱仪的各种光学元件以及接收器件在不同波长处的响应系数影响,习惯称之为传递函数。为扣除其影响,系统提供一个标准的溴钨灯光源,其能量曲线是经过标定的。另外在软件内存储了一条该标准光源在2940k时的能量线。当需要建立传递函数时,请按下列顺序操作:
1)将标准光源电流调整为“溴钨灯的色温”表中色温为2940k时电流所在位置;
2)预热20min后,在系统上记录该条件下全波段图谱。该光谱曲线包含了传递函数的影响;
3)点击“验证黑体辐射定律”菜单,选“计算传递函数”命令,将该光谱曲线与已知的光源能量曲线相除,即得到传递函数曲线,并自动保存。
3.2软件的设计与编写
根据实验软件装置的要求,对所需要的功能进行实现与设计,从而达到预期的应用果酱。
1 新时代背景下的ORACLE问题
在软件工程中,软件测试地目的是为了能够发现和找出软件错误运行的情况,专门判断测试过程是否通过的可验证即被称为ORACLE,在如今新时代的背景下,不管是趋势分析还是相应的图论计算等,都开始变得越来越困难。新时代的处理模式,主要包括了物理作用下的数据处理和化学作用下的数据处理两种类型模式。其中,物理作用下的数据处理,主要是在保证其价值的情况下,不断的缩小其数据的规模,然后由此清洗不变的数据基本属性。这其中就包含了针对数据处理的多种方式,能够有效的实现将新时代花销,的物理式变化。因此,物理作用下的数据处理测试ORACLE本身并没有问题。
而基于化学作用下的数据处理,则具备最主要的预测和快速算法的问题,这两个问题都非常经典,直接促使ORACLE的确定变得异常的困难。比如在计算个性化推荐统计学信息当中,经过个性化推荐的商品,更容易获得用户们的喜爱,当然也存在一半不喜欢的概率。而经过计算的结果也只是表明此类商品被喜欢的概率相对较高。概率性问题直接导致结果的正确性和确定性产生本质的区别,直接致使ORACLE确定的难度。
2 传统测试平台难以符合新时代处理的要求
以往所采用的软件性能测试,主要是借助控制器协调本地直接向服务器端发出服务的请求,由此实现对服务器压力的测试,其测试负载产生器都属于局部的物理主机。相对少量的服务器构成应用系统来说,用户数在数百上千量级的应用服务,才能有效满足应用的需求。
如今,随着云计算的发展,用户的需求也在不断的增长,其多个系统所需支持的并发用户也在不断的增加,相应的访问量也在由此攀升。这就需要针对服务端系统是否能够真正承受如此巨大的用户访问量进行有效的测试,可直接在系统上线之前就展开较为充分的测试内容。以往局域网主机测试方法所产生压力,很难真正满足服务器对其所产生的压力测试需求。由此软件测试工作中开始出现一系列的问题。一是负载产生器的物理机数量很难获得动态的扩展;二是新时代所驱动的云计算系统,直接采用了广泛的分布客户端。三是在网络海量数据的推动下,控制器所监控的负载产生器状态直接成为性能测试的瓶颈,很容易由此引发测试失败。四是控制器对负载产生器的同步问题变得越来越复杂,直接影响到负载测试的效果。
3 软件服务化所引发的测试挑战
具体从开发的模式而言,软件开发的过程,主要包含了完全编码、构件化、服务以及云计算等多个阶段。
3.1 完全编码阶段
主要是相应开发人员直接从零基础开始对每行代码的编写过程,除了系统本身所提供的类库之外,通常所有的代码都是直接由相应开发人员所掌握。在此阶段当中,用户们普遍具有良好的可测性,几乎所有的测试和调试方式都可以实现。
3.2 构件化阶段
该阶段直接是为了提升软件开发的效率,要求相应开发组织必须在系统类库的基础上,结合业务自身的特点来构建出可复用的业务组件。而通常该组件都是在本地运行,因此其业务系统的耦合度明显偏高,用户们对于组件的掌控也明显较大。
3.3 服务阶段
在此阶段当中,多数本地组件所提供的调用可转变成为远程服务形式。用户们可对外部的服务控制处于逐渐减少的状态,只能透过服务的输入和输出来实现对服务情况的良好把握。
3.4 云计算阶段
这一阶段主要是特别架构和PASS之上的应用程序,在处理输入和输出的同时,多数用户并不具备了解PASS服务运行情况的能力,因而导致用户测试的难度再次增加。
4 杀虫剂效应
在软件工程测试领域当中,杀虫剂效应是指相应的测试软件越来越多,其免疫能力变得越来越强的现象。这种现象就如同采用农药杀虫是一样的效果,如果持续采用一种单纯的农药,则害虫将最终在体内产生一定的抗体,在此情形下,农药将无法发挥出应有的杀虫效力。而在多种构件化开发当中也是如此,通常在中前期发现多种缺陷的模式,其都可直接通过校验和验证的方式集成在构件当中,乃至直接成为构件的必然属性。此类构件并不需要开发人员进行单独的代码编写,其直接对测试的方式产生了天然性的免疫能力。
在软件工程中,杀虫剂效应将有效的促使软件的测试技术获得飞跃式的更新升级,可迅速的找出存在软件当中的缺陷问题。一般在进行测试的初期阶段,只需通过较少的测试即可直接发现其中所存在的更多缺陷,而在后期的测试当中,则很容易发现其所存在的缺陷数量,将渐渐趋于平缓,甚至最终在某个周期停止增长。
一、开发组件软件工程的对策
第一,用进式和并发式开发流程取代传统的瀑布式开发。由系统设计和建模、开发与挂历组件、系统分析和项目的组织一同构成了整个过程。开发时,利用装配和组合组件,来实现耦合松散的结构模块。第二,在开发组件软件工程的时候,组件为整个开发过程的核心,收集组件时在需求分析阶段完成的,实现后,对于设计、装配、测试软件要按照一定的顺序去做。在应用的组件和系统的需求之间完成了权衡之后,开发者的重要工作则转向了开发工具、装配模型和组件,只有这样,能够将开发的效率有效提升上来。第三,面向接口、面向连接和面向重用为组件软件工程的主要开发方法。应用程序和组件的开发为整个开发的两个重要组成部分。在开发组件的时候,待定领域要对口针对,建立模型、深入分析,进而将组件的实际功能确定出来,然后,对对外接口进行规划与设计,对内部的细节进行落实与实现,完成管理和部署软件工作。在设计组件时,不同组件间的粒度不能太大,只要能满足一个逻辑功能对单个的需求即可,不必追求功能的全和。此外,对于提升整个应用系统复用能力,要满足组件的接口。此外,简易性和实用性也是不能缺少的。在设计完某一组件后,用二进制代码形式将某一组件编辑出来,而且在重要的组件库中进行存放,便于今后使用,组件的数据库应用系统即为组件库,组件的分类和描述,加入和删除组件为其两个重要的功能。在开发应用程序时,利用设计组件生成组件清单,将查询数据库时需要的组件提供出来,然后有效的利用现有的组件,自行开发和重构没有的组件,并且向组件库中存入。
二、对软件工程的管理分析
开发管理为现阶段组件工程开发中的一项重要工作内容。在开发了组件化软件工程之后,使工业化的软件工程成为了现实,专业化的流水线分工用很少的组件开发岗位就能够予以实现,对专业编程岗位不用过多的选择应用。但是,系统分析员在当中是绝对不能缺少的,设计组件系统的工作人员和维护管理组件库的工作人员为软件工程管理中的基础岗位,因此,对于软件工程中所涉及到相关知识,他们必须要认真扎实的进行掌握,然而,随着组件工程的发展,就不再过多的需要那些大量的编程人员。为了能够协调的开展起各个岗位的工作,将工作效率提升上来,为软件工程进行开发时的一个重要环节。在开发组件软件工程的过程中,对于接口标准一定要予以符合,并且还要通过严格的测试,在对通用性、互操作性和重用性进行了综合的考虑之后,进而将可信任和可靠的商业化软件构建起来。
三、结语
综上所述,随着时代的发展与进步,计算机网络系统已经成为我们身边不能缺少的一个重要工具,计算机系统能够发挥作用,主要得益于软件工程的大力支撑,但是,对于软件工程的开发并不是一件简单的工作,需要具备先进的技术和管理手段,尤其是对组件软件工程的开发更需要强劲的技术给予支持,所以,对于这方面的工作需要我们在平时的工作中高度地重视起来。
作者:颜伟胜 单位:福建省泉州师范学院
引 言
随着软件在各种领域迅速发展,软件的类型、规模、复杂度都急剧增长,在有限的时间和成本约束下开发出高质量的软件被人们高度关注,冈此提高各类信息化系统开发人员的软件工程能力越来越受到普通和军队高等院校的普遍重视。然而,由于软件从业人员所需知识更新快以及大量软件开发人员接受软件工程教育的经历不足,仅靠传统的高校课堂内授课方式,难以满足社会和军队信息化快速发展对软件工程人员的需求。研究如何通过建设软件工程专业在线课程加快软件工程人才的培养、优化软件工程课程资源的配置,对于我们国家和军队未来的发展具有重要价值与深远意义。
1 软件工程教育的发展与主要问题
软件工程指将系统的、规范的、可量化的方法应用于软件的开发、运行和维护的过程。ACM和IEEE/CS成立联合工作组,在2004年制定了计算教程软件工程卷CCSE(computingcurriculum-software engineering),并把软件工程作为计算学科下与计算机科学、信息技术、信息系统、计算机工程等并列的学科。2014年,ACM和IEEE/CS推出软件工程知识体SWEBOK3.0版,知识领域与2004年版SWEBOK相比从10个增加到15个。此外,由ACM和IEEE主导,国际一些著名高校和企业的专家针埘软件工程硕士教育制定《软件工程研究生学位教程指南》(GSwE2009),描述软件工程硕上需掌握的核心知识体系和相应教程。我国从2001年开始建立示范性软件学院,并于2006年推出《计算机科学与技术本科专业规范(软件[r徉)》l512011年,软件工程专业经国务院批准增列为一级学科。
软件工程师目前在国内外都是最具吸引力的职业之一,如美国著名的就业网站CareerCast在2012年进行调查,从收入、工作环境、发展前景等因素评选出的十大最佳职业中,软件工程师名列第一;在我国近来对本科毕业生的职、业调查中,软件工程师的收入也一直名列前茅。尽管近年来软件工程教育有了很大发展,但国内外的软件工程教育还存在诸多挑战性问题,主要包括以下几方面。
(1)现有的软件工程课程从学时数、教学安排等方面都难以达到实际职业对软件工程深度、广度和实践能力的要求,相关培养方案的制订较少考虑企业的实际需要,针对性不强。
(2)尽管聘请企业中有丰富经验的软件工程师授课是一条有效措施,但整体来看,软件工程授课老师普遍缺乏软件开发实际经验,甚至很多都未从事软件工程领域的研究工作。
(3)软件工程目前存在众多不同的开发方法学,它们各有特点和优势,并且软件工程相关技术发展迅速,新的方法不断出现,这使得教学内容的选择和准备变得非常困难。
(4)当前国内外软件工程教材多是对众多方法和技术的描述,对具体技术的深入程度不足且无法适应软件技术、工具的快速变化,对学生进行实际项目开发帮助有限。
(5)企业的软件开发中使用了众多的软件工具,并且对于重要领域的软件开发,很多企业采用商业化工具。在教学过程中,这些昂贵的、专用的商业工具较为缺乏,并且在有限课程时间内学生难以接触到众多不同类型的软件开发工具。
(6)软件工程教育资源非常不平衡,在教育和经济发达地区,聘请优秀软件工程师进行授课、使学生参与到企业的实际开发中是可行的,但对于大量其他地区高校就难以实施。
(7)软件工程技术和工具发展迅速,很多软件从业人员从程序员开始起步,未接受过系统的软件工程教育或所受教育很快过时,因此需要持续性的、具有一定灵活性的优质教育资源适应这种情况。
由软件工程教育面临的以上挑战,我们可以看出传统的高校课堂内软件工程教育虽然还是必不可少的,但是必须找到新的软件工程专业课程教学方式,以满足其知识变化快、人员基数大、持续时间长、资源不平衡等特征。通过互联网在线课程的形式实施软件工程专业课程的教学,无疑是应对上述问题一种有效、可行的方式。
2 软件工程知识体对在线课程模式的影响
软件工程可以作为一门单独的课程进行讲授,而软件工程专业一般包含一系列的课程,如需求工程、软件设计与体系结构、软件构造、软件测试与验证等。软件工程专业课程如果作为在线课程进行建设会遇到众多问题,其中主要包括对实践环节的要求非常高、追求在真实平台中解决有一定规模的问题、需要团队合作以及项目管理等,而目前在线课程的教学方式和平台在这些方面有一定欠缺,需要我们进行深入的研究以提供解决方案。
软件工程课程应该覆盖一定的知识领域,表1对SWEBOK 3.0版中包含的15个知识领域和子域进行初步分析,判断其是否适合于目前一般性的MOOC在线课程教育模式和平台。表1中第2列的知识子域适合目前在线课程教学方式,第3列中的知识子域需要对当前在线课程模式进行适当改进才能适用,第4列中的知识子域则需要对当前在线课程模式和平台进行较大改进。对于不适合(需对模式和平台进行改进)的知识子域,笔者在第3节中将研究讨论应对方式和措施。
表l中最后两个知识领域计算基础和数学基础作为软件工程理论基础的一部分,由于一般放入与软件工程课程相独立的课程中讲授,如离散数学、编译原理、操作系统、数据库原理等,其相关课程也都有较为系统、完善的体系,因此这里我们不进行特别考虑。
3 软件工程专业在线课程的建设
目前已经出现一些软件工程的在线课程,如UC Berkeley的软件工程MOOC课程于2012年在Coursera、后来在EdX上线,并在此基础上发展、延伸出多个小规模私有在线课程(smallprivate online courses,SPOC)。国防科技大学也已有软件工程相关课程在内部网络上线,供部队和军队院校一定范围内的人员在线学习。
3.1 软件工程专业MOOC课程建设
从对相关知识领域的分析可以看到,目前一般性MOOC授课方式与平台难以适应的软件工程知识子域主要包含以下特点。
1)难以完全通过讲授使学生接受,如需要动手进行实践才能深入体会的技术以及与经验密切相关的过程、管理、度量等内容。
2)内容变化频繁的知识如一些软件开发技术、工具等总在持续发生变化或出现新的版本,课程每次新开时都可能需要调整。
3)需要团队式的协作与交流完成内容,如版本控制、需求获取、协同开发、团队交流等,仅靠讲授或个人作业难以达到效果。
4)软件工程教育强调具有一定规模和复杂性的项目实践,这对于教学辅导人员的数量和指导能力要求较高,不仅仅是普通答疑能完成的。
5)对于很多技术和实践来说,其结果是开放式的,软件设计、实现、测试、维护等任务一般不存在唯一结果,这给作业评价和成绩评定带来困难。
面向上述特点,根据目前国内外已有的相关实践、效果以及已经实施的建设情况,我们总结出一些供参考的解决方案。
(1)制订MOOC教学计划时应遵循持续改进的原则。传统课堂教学讲究制订教学计划时一次到位,但由于软件工程内容变化快,因此分解教学内容、视频、作业时应该使其能够适应快速变化,不要期望一次建设就大功告成。此外,在线课程需要了解大量学生的反馈意见和教学效果,这也需要不断的改进。如果可行,可采用自行编著的电子教材和参考文献,使得每次开课时学生教材也可以尽快进行相应修订。
(2)在线课程平台与软件协同开发环境的有机融合。对于需要协同、交流才能完成的内容,实际由于许多国际化企业的软件研发人员遍布全球,因此已有相应的平台(包括开源软件工具开源社区等)支持地域分布的人员进行协同开发。教师可选择所需的协同开发环境,与软件工程在线课程平台集成在一起,提高对团队和协同任务的支持。
(3)对课程进行分而治之的划分。教师可以把课程按照其内容是否适合在线授课划分为一些小的子课程,每个子课程更偏重于适合或不适合(如理论内容和实践教学内容分到不同子课程),以减少整个课程设计的复杂性。在线课程偏重适合讲授的子课程,不适合已有在线授课模式的内容,可以通过其他方式实施(如其他高校单独开设实践课程、采用适合的平台或投入更多教辅人员等)。
(4)采用新的教辅人员委托模式。由于软件工程课程的实践性强,对教辅人员数量和质量要求高,因此仅靠开课学校的课程组难以完成。教师在实践中可以考虑招募在高校内或通过在线课程已经完成课程学习、成绩优秀的志愿者,通过一定的激励或者提高影响力等方式激发他们的热情。事实上,从开源软件的蓬勃发展以及Berkeley软件工程MOOC课程的实际效果看,该方式完全可行、有效。
(5)加强自动化结果评估和成绩评定系统的开发与应用。教师可一方面采用各种自动化软件工具,如通过测试驱动的开发工具、软件编码规范检查工具、基于服务的方式等对课程作业进行自动评估;另一方面可以让学生参与到开源软件社区的开发活动中,通过开源项目对其完成工作和贡献采纳情况等进行评价。
软件工程专业MOOC课程建设面临的问题众多,需要教师通过具体实践逐步研究和完善其在线课程的建设过程。
3.2 软件工程专业SPOC课程建设
软件工程在实际实施中所面向的领域背景非常重要,而不同领域的软件系统各有特点,一个软件企业一般有其针对性的领域,采用的软件工程过程、方法、工具、管理等都有各自的特点。因此,非在校学生的软件工程在线课程学习者可能在一般性的理论之外,希望学习更多对其背景有促进作用的知识。再者,MOOC课程学习者中有相当一部分本身就是高校教师,他们会借用MOOC课程的内容,然后在自己的课程中进行一定改造并增加项目实习等内容,形成适合其学生学习的课程。此外,国防领域未来基于信息系统的体系中,软件工程人才将会包括科研人员、技术开发人员、管理人员、保障人员、作战和指挥人员等不同类型,还会针对战机控制、舰船控制、车辆控制、指挥自动化等不同应用背景,对软件工程知识的要求都有不同。上述情况都要求能够在MOOC课程的基础上进一步建设小规模私有在线课程(SPOC)。UC Berkeley就在其软件工程MOOC课程基础上发展了多个SPOC课程,包括在本校以及在其他高校中开设的课程。
对于建设软件工程SPOC课程,教师可以遵循以下一些原则和策略。
(1)对于公共的知识讲授,尽可能利用MOOC课程完成,以减少SPOC课程的建设工作量,充分利用优质资源,提高课程的复用程度。
(2)加强每门SPOC课程的针对性,如针对具体学校学生的培养目标或针对具体领域背景选择相应的软件工程技术、工具、标准规范进行讲授。
(3)加强课程实践和项目开发环节的建设,这是MOOC课程本身具有的不足之一,但在SPOC课程中可以进行有效的弥补。
(4)课程成绩的评定可以把MOOC和SPOC课程的学习情况结合起来考虑,对学习者对软件工程共性理论和特定目标知识的掌握情况进行综合评价。
在未来在线课程发展中,软件工程专业MOOC课程可能并不一定很多,由能提供优质师资资源的机构开设,但针对具体背景领域的SPOC课程可以更多,因为毕竟软件作为现代社会无所不在的组成,软件工程面向的领域众多,都需要有针对性地培养软件工程人才。
4 结语
软件工程专业课程具有变化快、对实践要求高、需要团队协作等特征,这些使建设软件工程专业在线课程具有更高的难度。MOOC课程和SPOC课程都是未来软件工程专业在线课程所需的模式,尽管已经有一些相关实践,但是如何建立较为系统、各门课程完善、质量高的软件工程专业在线课程,还需要更多的研究与实践。目前对SWEBOK中知识子域对在线课程建设影响的分析还较为初步,下一步还需要更具体地针对所包含的知识点研究如何通过在线课程进行讲授。此外,软件工程专业在线课程应该与软件协同开发环境有机结合,这还需要我们进一步进行研究,针对知识点要求形成科学的集成平台体系框架并进行建设。
【关键词】软件工程 模型 测试
随着软件技术的不断发展,研发具有不同系统性能的软件系统是当前软件技术发展所面临的主要问题,为此基于软件工程化的管理理念被应用与软件开发的中,进而产生了软件工程过程模型的概念。软件工程模型相对于软件开发其是一种手段,是能够根据软件设计的总体要求等帮助设计者设计开发软件的一种工具。软件的设计还需要进行相应的测试,以便检验软件的实用性,因此本文重点是通过阐述目前软件工程过程模型的种类,分析其存在的问题,并且提出相应完善软件工程过程模型的测试策略。
1 软件工程过程模型的种类
随着软件技术的不断发展,基于软件开发的工程过程模型种类在不断地增多,其主要由:一是瀑布模型。瀑布模型是目前最为基本的一种模型,其测试程序主要是对软件开发系统进行需求分析,然后根据需求分析进行相应的设计,并且进行编码,最后在测试软件性能。其中每个环节的测试都有着严格的规定,其目的是就是要保证设计出来的产物要符合生产设计标准,及时发现软件系统所存在的问题,但是瀑布模型在实践中存在一些问题,比如对于小型项目则会因为前期的设计需要将设计人员与开发人员共同投入到该项目中,结果导致出现人力资源闲置的问题,因此在选择该模型时要根据实际情况而定;二是螺旋模型。螺旋模型是依托瀑布模型而产生的,选择螺旋模型能够降低项目的风险,因为螺旋模型的测试具有阶段性,也就是在结束某一阶段后,要进行测试,如果测试的结果不合格那么该系统就会终止项目;三是RUP模型。该模型主要包括增量过程和迭代过程。该模型的优势是每一次迭代过程都是对前一次阶段的优化,其最大的优势就是保证了软件产品开发过程的质量;四是原型法。原型法一般采取生命周期形式,它是集合了上述几种模型的所有特点的基础上而形成的,其主要优点是能够快速的获悉用户的需求,进而使得开发的软件能够满足用户的要求。
2 目前软件工程模型测试存在的问题
2.1 测试活动比较晚
传统的软件测试过程模型主要是对软件产品设计完成以后而进行的测试方案,这样的测试模型会给软件工程测试带来一定的难度,尤其是不能及时的对软件工程过程中所存在的缺陷进行及时的更改,结果造成测试结果的问题更改难度比较大。
2.2 测试计划对软件开发的全过程覆盖不全
软件工程过程的测试主要分为静态测试和动态测试,其中很多模型的测试是人为的将软件工程过程开发划分为不同阶段,并且不能够迭代,这样即使在对软件的某个阶段进行测试并发现问题时,因为其不能及时的进行处理,结果导致其修复的成本比较大,进而这些缺点也不能根据软件开发的进度进行调整,结果给软件的质量造成巨大的影响。
2.3 可操作性差
软件工程过程的测试模型要具备加强的可操作性,只有这样才能保证及时的对软件进行测试,但是分析当前测试模型发现,这些模型基本上都存在可操作性差的问题,使得在实践中不能有效的对软件进行测试。
基于目前软件工程过程测试模型所存在的问题,需要我们设计一些新的软件工程测试模型,新的软件工程过程测试模型要集合所有模型的有点,并且消除现有模型所存在的问题,使得新设计的模型更加具有实用性。
3 新软件工程过程测试模型的实践研究
为了切实克服原有软件工程过程测试模型多存在的缺陷,本文提出了构建新型的软件工程过程测试模型,新的模型构建原则是:采取测试与开发并重的测试模式、使软件设计中的错误尽早的暴漏出来以及简单实用原则。新的软件工程测试模型的结构如图1所示。
3.1 新模型各组件之间的关系以及执行过程的描述
针对上述模型在测试过程中所存在的问题,我们要对软件在需求设计分析阶段就要根据软件所形成的的软件需求文档进行软件系统的测试方案进行评审,通过评审及时地发现问题,进而及时的进行更改,当然在更改的过程中,软件的过程开发仍然不间断。然后在软件开发进入到概要设计阶段后,测试人员要停止设计系统测试用例及方案,并且经过对测试方案进行评审,评审通过后,进入代码编写阶段后要对每个模块进行单元测试,并且进行测试,对测试过程中发现存在问题的要进行修改,随着单元模块测试的完成,集成好的模块就可以进行测试阶段,然后在完成系统的整体测试。
3.2 各种测试的实施
根据新模型测试的结构,对软件工程过程测试模型的实施主要分为:一是单元测试的实施。单元测试的主要对象就是软件中的最小单元,其主要是对模块的独立执行路径、接口以及局部数据结构等进行测试。新的软件工程过程测试模型突破了传统的在软件开发所有阶段后才进行单元测试的模式,将单元测试的设计和执行置前,也就是在设计阶段的后期就开始进行单元测试,在软件编码的进行中就已经完成了模块的单元测试,进而使得软件工程测试中存在的问题提前得以解决,有效的保证了软件工程开发的进度;二是集成测试的实施。集成测试就是讲已经测试好的各个模块进行组装后在进行的一个系统测试。集成测试的主要任务就是测试有不同模块之间的接口是否存在问题。集成测试的开始时间要比传统的测试时间要早,也就是在概要设计阶段就开始进行集成测试,具体的测试过程见图2;三是系统测试的实施。系统的测试主要是对软件在特殊环境中的运行效果的测试分析,也是检验软件设计质量的最为重要的环节,因为任何软件的设计与开发都需要应用到实践中去。系统测试是对于软件应用所有有关的因素进行整体的测试,其功能主要是评估系统环境下软件的性能,并且发现和捕捉软件中潜在的错误。测试的主要内容包括安全测试、恢复测试、强度测试以及性能测试。同样本文所构建的新模型对系统测试的时间也大大提前了,即在编码阶段完成后,就开始进行测试,同时新模型还采取了开发与测试同步进行的方式,使得开发的周期也大大缩短了。
4 改进后软件工程过程测试模型的应用实践
为了验证改进后的软件工程过程测试模型的性能,里哟没喝过该模型对移动通信系统中的账务管理系统项目进行了对比测试,移动通信财务管理系统主要分为记账、结算、营业以及账务管理等系统,它们之间通过接口实现数据的流通,因此加强对软件系统的测试具有重要的作用。根据应用系统的功能本软件模型主要分为财务管理和资源管理两个模块,本着软件模块之间的高聚合、低耦合的原则,本系统的结构尽量减少冗余的模块间的依赖关系。
4.1 单元测试
首先对各个单元进行结构测试。被测单元基本上含有一个或者多个相同的数据类型参数,具体的数据参数编码是:取各个数据的上届和下届,采取二进制对参数进行编码,然后在把各个参数编码进行整体构建;然后在对集成系统进行测试。对财务优惠政策的测试方法是通过集成测试函数对定义的对数据库进行的插入、删除、增加、减少等操作方法。中间阶段测试则是将数据中的各条数据记录与数据中现存方案标识的阈值对比,实现对页面输入方案的定义是否在系统进行重点测试。
4.2 系统测试
系统测试的主要功能是测试软件系统与计算机系统之间的协调工作,系统测试的主要目的就是要保证其安全性,并且能够在整个运行过程中,分析相应的文档和测试文档,以此实现错误纠正的目的。本文在系统测试中,编写了JAVA语言代码,以此实现在整个测试过程的正常结束。
通过一些系列的测试检验,新的软件工程测试模型相比其它模型能够及时测试出更多的软件错误,进而大大提高了软件运行的质量,提高了软件的工作效率。
5 结束语
总之,本文在对当前软件工程过程测试模型的种类分析的基础上,对当前软件工程测试模型所存在的问题进行全面分析后提出了新的软件测试模型,该模型能够更早的、更多的发现软件的错误,从而使得软件开发的时间大大缩短,并且节省了软件开发的费用、提高了软件开发的质量。
参考文献
[1]胡雪婧.软件工程过程模型及其选择[J]. 计算机光盘软件与应用,2014(10).
[2]乌萌,李娜,王成宾,管斌.测绘软件工程过程模型研究[J].测绘通报,2013(10).
[3] 樊学东.软件工程过程模型及其选择[J]. 西安外事学院学报 ,2008(12).
[4]董剑利,陈艳艳.基于产品线N-生命周期模型的集成化软件工程环境研究 [J]. 计算机工程与科学,2008(10).