[编辑本段]基本信息软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己的定义: 软件工程(1)、BarryBoehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。 (2)、IEEE在软件工程术语汇编中的定义:软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究 (3)、FritzBauer在NATO会议上给出的定义:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。 目前比较认可的一种定义认为:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。 (4)、《计算机科学技术百科全书》中的定义:软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。[编辑本段]目标软件工程的目标是:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用软件工程性、可适应性、可移植性、可追踪性和可互操作性并且满足用户需求的软件产品。追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。下面分别介绍这些概念。 (1)可修改性(modifiablity)。容许对系统进行修改而不增加原系统的复杂性。它支持软件的调试与维护,是一个难以达到的目标。 (2)有效性(efficiency)。软件系统能最有效地利用计算机的时间资源和空间资源。各种计算机软件无不将系统的时/空开销作为衡量软件质量的一项重要技术指标。很多场合,在追求时间有效性和空间有效性方面会发生矛盾,这时不得不牺牲时间效率换取空间有效性或牺牲空间效率换取时间有效性。时/空折衷是经常出现的。有经验的软件设计人员会巧妙地利用折衷概念,在具体的物理环境中实现用户的需求和自己的设计。 (3)可靠性(reliability)。能防止因概念、设计和结构等方面的不完善造成的软件系统失效,具有挽回因操作不当造成软件系统失效的能力。对于实时嵌入式计算机系统,可靠性是一个非常重要的目标。因为软件要实时地控制一个物理过程,如宇宙飞船的导航、核电站的运行,等等。如果可靠性得不到保证,一旦出现问题可能是灾难性的,后果将不堪设想。因此在软件开发、编码和测试过程中,必须将可靠性放在重要地位。 (4)可理解性(understandability)。系统具有清晰的结构,能直接反映问题的需求。可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植或重用。 (5)可维护性(maintainability)。软件产品交付用户使用后,能够对它进行修改,以便改正潜伏的错误,改进性能和其他属性,使软件产品适应环境的变化,等等。由于软件是逻辑产品,只要用户需要,它可以无限期的使用下去,因此软件维护是不可避免的。软件维护费用在软件开发费用中占有很大的比重。可维护性是软件工程中一项十分重要的目标。软件的可理解性和可修改性有利于软件的可维护性。 (6)可重用性(reusebility)。概念或功能相对独立的一个或一组相关模块定义为一个软部件。软部件可以在多种场合应用的程度称为部件的可重用性。可重用的软部件有的可以不加修改直接使用,有的需要修改后再用。可重用软部件应具有清晰的结构和注解,应具有正确的编码和较低的时/空开销。各种可重用软部件还可以按照某种规则存放在软部件库中,供软件工程师选用。可重用性有助于提高软件产品的质量和开发效率、有助于降低软件的开发和维护费用。从更广泛的意义上理解,软件工程的可重用性还应该包括:应用项目的重用,规格说明(也称为规约)的重用,设计的重用,概念和方法的重用,等等。一般来说,重用的层次越高,带来的效益也就越大。 (7)可适应性(adaptability)。软件在不同的系统约束条件下,使用户需求得到满足的难易程度。适应性强的软件应采用广为流行的程序设计语言编码,在广为流行的操作系统环境中运行,采用标准的术语和格式书写文档。适应性强的软件较容易推广使用。 (8)可移植性(portability)。软件从一个计算机系统或环境搬到另一个计算机系统或环境的难易程度。为了获得比较高的可移植性,在软件设计过程中通常采用通用的程序设计语言和运行环境支撑。对依赖于计算机系统的低级(物理)特征部分,如编译系统的目标代码生成,应相对独立、集中。这样,与处理机无关的部分就可以移植到其他系统上使用。可移植性支持软件的课重用性和课适应性。 (9)可追踪性(tracebility)。根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行逆向追踪的能力。软件可追踪性依赖于软件开发各个阶段文档和程序的完整性、一致性和可理解性。降低系统的复杂性会提高软件的可追踪性。软件在测试或维护过程中或程序在执行期间出现问题时,应记录程序事件或有关模块中的全部或部分指令现场,以便分析、追踪产生问题的因果关系。 (10)可互操作性(interoperability)。多个软件元素相互通信并协同完成任务的能力。为了实现可互操作性,软件开发通常要遵循某种标准,支持折衷标准的环境将为软件元素之间的可互操作提供便利。可互操作性在分布计算环境下尤为重要。 软件工程活动是“生产一个最终满足需求且达到工程目标的软件产品所需要的步骤”。主要包括需求、设计、实现、确认以及支持等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件体系结构,包括子系统、模块以及相关层次的说明、每一模块接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。支持活动包括修改和完善。伴随以上活动,还有管理过程、支持过程、培训过程等。[编辑本段]过程生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。[编辑本段]原则软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。软件工程的原则有以下四项软件工程师基本原则:1)选取适宜开发范型该原则与系统设计有关。在系统设计中,软件需求、硬件需求以及其他因素之间是相互制约、相互影响的,经常需要权衡。因此,必须认识需求定义的易变性,采用适宜的开发范型予以控制,以保证软件产品满足用户的要求。2)采用合适的设计方法在软件设计中,通常要考虑软件的模块化、抽象与信息隐蔽、局部化、一致性以及适应性等特征。合适的设计方法有助于这些特征的实现,以达到软件工程的目标。3)提供高质量的工程支持“工欲善其事,必先利其器”。 在软件工程中,软件工具与环境对软件过程的支持颇为重要。软件工程项目的质量与开销直接取决于对软件工程所提供的支撑质量和效用。4)重视开发过程的管理软件工程的管理,直接影响可用资源的有效利用,生产满足目标的软件产品,提高软件组织的生产能力等问题。因此,仅当软件过程得以有效管理时,才能实现有效的软件工程。 这一软件工程框架告诉我们,软件工程的目标是可用性、正确性和合算性;实施一个软件工程要选取适宜的开发范型,要采用合适的设计方法,要提供高质量的工程支撑,要实行开发过程的有效管理;软件工程活动主要包括需求、设计、实现、确认和支持等活动,每一活动可根据特定的软件工程,采用合适的开发范型、设计方法、支持过程以及过程管理。根据软件工程这一框架,软件工程学科的研究内容主要包括:软件开发范型、软件开发方法、软件过程、软件工具、软件开发环境、计算机辅助软件工程(CASE) 及软件经济学等。[编辑本段]基本原理自从1968年提出“软件工程”这一术语以来,研究软件工程的专家学者们陆续提出了100多条关于软件工程的准则或信条。美国著名的软件工程专家巴利·玻姆(Barry Boehm)综合这些专家的意见,并总结了美国天合公司(TRW)多年的开发软件的经验,于1983年提出了软件工程的七条基本原理。 玻姆认为,这七条原理是确保软件产品质量和开发效率的原理的最小集合。它们是相互独立的,是缺一不可的最小集合;同时,它们又是相当完备的。 人们当然不能用数学方法严格证明它们是一个完备的集合,但是可以证明,在此之前已经提出的100多条软件工程准则都可以有这七条原理的任意组合蕴含或派生。下面简要介绍软件工程的七条原理:1、用分阶段的生命周期计划严格管理这一条是吸取前人的教训而提出来的。统计表明,50%以上的失败项目是由于计划不周而造成的。在软件开发与维护的漫长生命周期中,需要完成许多性质各异的工作。这条原理意味着,应该把软件生命周期分成若干阶段,并相应制定出切实可行的计划,然后严格按照计划对软件的开发和维护进行管理。 玻姆认为,在整个软件生命周期中应指定并严格执行6类计划:项目概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划、运行维护计划。2、坚持进行阶段评审统计结果显示: 大部分错误是在编码之前造成的,大约占63%错误发现的越晚,改正它要付出的代价就越大,要差2到3个数量级。 因此,软件的质量保证工作不能等到编码结束之后再进行,应坚持进行严格的阶段评审,以便尽早发现错误。3、实行严格的产品控制开发人员最痛恨的事情之一就是改动需求。但是实践告诉我们,需求的改动往往是不可避免的。这就要求我们要采用科学的产品控制技术来顺应这种要求。也就是要采用变动控制,又叫基准配置管理。当需求变动时,其它各个阶段的文档或代码随之相应变动,以保证软件的一致性。4、采纳现代程序设计技术从六、七时年代的结构化软件开发技术,到最近的面向对象技术,从第一、第二代语言,到第四代语言,人们已经充分认识到:方法大似气力。采用先进的技术即可以提高软件开发的效率,又可以减少软件维护的成本。5、结果应能清楚地审查软件是一种看不见、摸不着的逻辑产品。软件开发小组的工作进展情况可见性差,难于评价和管理。为更好地进行管理,应根据软件开发的总目标及完成期限, 尽量明确地规定开发小组的责任和产品标准,从而使所得到的标准能清楚地审查。6、开发小组的人员应少而精开发人员的素质和数量是影响软件质量和开发效率的重要因素,应该少而精。 这一条基于两点原因:高素质开发人员的效率比低素质开发人员的效率要高几倍到几十倍,开发工作中犯的错误也要少的多; 当开发小组为N人时,可能的通讯信道为N(N-1)/2, 可见随着人数N的增大,通讯开销将急剧增大。7、承认不断改进软件工程实践的必要性遵从上述六条基本原理,就能够较好地实现软件的工程化生产。但是,它们只是对现有的经验的总结和归纳,并不能保证赶上技术不断前进发展的步伐。因此,玻姆提出应把承认不断改进软件工程实践的必要性作为软件工程的第七条原理。根据这条原理,不仅要积极采纳新的软件开发技术,还要注意不断总结经验,收集进度和消耗等数据,进行出错类型和问题报告统计。这些数据既可以用来评估新的 软件技术的效果,也可以用来指明必须着重注意的问题和应该优先进行研究的工具和技术。[编辑本段]方法学软体工程的方法有很多方面的意义。包括专案管理,分析,设计,程序的编写,测试和质量控制。 软件工程师软体设计方法可以区别为重量级的方法和轻量级的方法。重量级的方法中产生大量的正式文档。 著名的重量级开发方法包括ISO9000,CMM,和统一软体开发过程(RUP)。 轻量级的开发过过程没有对大量正式文档的要求。着名的轻量级开发方法包括极限编程(XP)和敏捷流程(AgileProcesses)。 根据《新方法学》这篇文章的说法,重量级方法呈现的是一种防御型的姿态。在应用重量级方法的软体组织中,由于软体项目经理不参与或者很少参与程序设计,无法从细节上把握项目进度,因而会对项目产生恐惧感,不得不要求程式设计师不断撰写很多“软体开发文档”。而轻量级方法则呈现“进攻型”的姿态,这一点从XP方法特别强调的四个准则—“沟通、简单、反馈和勇气上有所体现。目前有一些人认为,重量级方法合于大型的软体团队(数十人以上)使用,而“轻量级方法”适合小型的软体团队(几人、十几人)使用。当然,关于重量级方法和轻量级方法的优劣存在很多争论,而各种方法也在不断进化中。 一些方法论者认为人们在开发中应当严格遵循并且实施这些方法。但是一些人并不具有实施这些方法的条件。实际上,采用何种方法开发软体取决于很多因素,同时受到环境的制约。[编辑本段]主要课程外语、高等数学、线性代数、高等代数、电子技术基础、离散数学、计算机引论(C语言)、数据结构、C++程序设计、JAVA程序设计、Delphi程序设计、汇编语言程序设计、算法设计与分析、计算机组成原理与体系结构、数据库系统、计算机网络、软件工程、软件测试技术、软件需求与项目管理、软件设计实例分析、CMM/ISO9000等。 另外,还包括操作系统、软件体系结构概论、设计模式、多媒体技术基础、UML建模、概率论、大学英语等,部分院校还会包括大学物理,工程制图,数值分析等。[编辑本段]发展方向敏捷开发(Agile Development)被认为是软体工程的一个重要的发展。它强调软体开发应当是能够对未来可能出现的变化和不确定性作出全面反应的。 敏捷开发被认为是一种“轻量级”的方法。在轻量级方法中最负盛名的应该是“极限编程”(Extreme Programming,简称为XP)。而与轻量级方法相对应的是“重量级方法”的存在。重量级方法强调以开发过程为中心,而不是以人为中心。重量级方法的例子比如CMM/PSP/TSP。 面向侧面的程序设计(Aspect Oriented Programming,简称AOP)被认为是近年来软体工程的另外一个重要发展。这里的方面指的是完成一个功能的对象和函数的集合。在这一方面相关的内容有泛型编程(Generic Programming)和模板。[编辑本段]需求分析软件工程中包含需求、设计、编码和测试四个阶段,其中需求工程是软件工程第一个也是很重要的一个阶段,本文以医院管软件工程需求分析理系统为例详细介绍了需求工程的构成和进行方法。 首先人们必须了解需求工程和其他项目过程的关系: 图1需求与其他项目过程的关系 软件需求包括三个不同的层次-业务需求、用户需求和功能需求-也包括非功能需求:业务需说明了提供给客户和产品开发商的新系统的最初利益,反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明;用户需求文档描述了用户使用产品必须要完成的任务,这在使用实例文档或方案脚本说明中予以说明;功能需求定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。 需求工程分为了需求开发和需求管理两个阶段:下面就以这两个阶段说明: 一,需求开发 需求开发又分为需求获取、需求分析、编写规格说明书和需求验证。以下列出和讲解分析常规的步骤,当然应按照项目的大小和特点等实际情况我们应该自己确定合适的步骤。 1.需求获取: 1)确定需求开发过程:确定需求开发过程确定如何组织需求的收集、分析、细化并核实的步骤,并将它编写成文档。对重要的步骤要给予一定指导,这将有助于分析人员的工作,而且也使收集需求活动的安排和进度计划更容易进行。 2)编写项目视图和范围文档:项目视图和范围文档应该包括高层的产品业务目标,所有的使用实例和功能需求都必须遵从能达到的业务需求。项目视图说明使所有项目参与者对项目的目标能达成共识。而范围则是作为评估需求或潜在特性的参考。 表1项目视图和范围文档的模板 a、1背景在这一部分,总结新产品的理论基础,并提供关于产品开发的历史背景或形势的一般性描述。 a、2业务机遇描述现存的市场机遇或正在解决的业务问题。描述商品竞争的市场和信息系统将运用的环境。包括对现存产品的一个简要的相对评价和解决方案,并指出所建议的产品为什么具有吸引力和它们所能带来的竞争优势。 a、3业务目标用一个定量和可测量的合理方法总结产品所带来的重要商业利润,把重点放在给业务的价值上。 a、4客户或市场需求描述一些典型客户的需求,包括不满足现有市场上的产品或信息系统的需求。提出客户目前所遇到的问题在新产品中将可能(或不可能)出现的阐述,提供客户怎样使用产品的例子。确定了产品所能运行的软、硬件平台。 a、5提供给客户的价值确定产品给客户带来的价值,并指明产品怎样满足客户的需要。 a、6业务风险总结开发(或不开发)该产品有关的主要业务风险,例如市场竞争、时间问题、用户的接受能力、实现的问题或对业务可能带来的消极影响。预测风险的严重性,指明你所能采取的减轻风险的措施。 b.1项目视图陈述编写一个总结长远目标和有关开发新产品目的的简要项目视图陈述。项目视图陈述将考虑权衡有不同需求客户的看法。它可能有点理想化,但必须以现有的或所期待的客户市场、企业框架、组织的战略方向和资源局限性为基础。 b.2主要特性包括新产品将提供的主要特性和用户性能的列表。强调的是区别于以往产品和竞争产品的特性。可以从用户需求和功能需求中得到这些特性。 b.3假设和依赖环境在构思项目和编写项目视图和范围文档时,要记录所作出的任何假设。通常一方所持的假设应与另一方不同。 c.1首次发行的范围总结首次发行的产品所具有的性能。描述了产品的质量特性,这些特性使产品可以为不同的客户群提供预期的成果。c.2随后发行的范围如果你想象一个周期性的产品演变过程,就要指明哪一个主要特性的开发将被延期,并期待随后版本发行的日期。 c.3局限性和专用性明确定义包括和不包括的特性和功能的界线是处理范围设定和客户期望的一个途径。列出风险承担者们期望的而你却不打算把它包括到产品中的特性和功能。 d.1客户概貌客户概述明确了这一产品的不同类型客户的一些本质的特点,以及目标市场部门和在这些部门中的不同客户的特征。 d.2项目的优先级一旦明确建立项目的优先级,风险承担者和项目的参与者就能把精力集中在一系列共同的目标上。达到这一目的的一个途径是考虑软件项目的五个方面:性能、质量、计划、成本和人员。e.产品成功的因素明确产品的成功是如何定义和测量的,并指明对产品的成功有巨大影响的几个因素。不仅要包括组织直接控制的范围内的事务,还要包括外部因素。如果可能,可建立测量的标准用于评价是否达到业务目标. 3)用户群分类:产品的用户在很多方面存在着差异,例如:用户使用产品的频度、他们的应用领域和计算机系统知识、他们所使用的产品特性、他们所进行的业务过程、他们在地理上的布局以及他们的访问优先级。根据这些差异,你可以把这些不同的用户分成小组。用户类不一定都指人,你可以把其它应用程序或系统接口所用的硬件组件也看成是附加用户类的成员。以这种方式来看待应用程序接口,可以帮助你确定产品中那些与外部应用程序或组件有关的需求。将用户群分类并归纳各自特点为避免出现疏忽某一用户群需求的情况,要将可能使都有所差异。详细描述出它们的个性特点及任务状况,将有助于产品设计。 4)选择产品代表:择每类用户的产品代表为每类用户至少选择一位能真正代表他们需求的人作为那一类用户的代表并能作出决策。这对于内部信息系统的开发是最易实现的,因为此时,用户就是身边的职员。而对于商业开发,就得在主要的客户或测试者中建立起良好的合作关系,并确定合适的产品代表。他们必须一直参与项目的开发而且有权作出决策。每一个产品代表者代表了一个特定的用户类,并在那个用户类和开发者之间充当主要的接口。 5)建立核心队伍:建立起典型用户的核心队伍把同类产品或产品的先前版本用户代表召集起来,从他们那里收集目前产品的功能需求和非功能需求。这样的核心队伍对于商业开发尤为有用,因为你拥有一个庞大且多样的客户基础。与产品代表的区别在于,核心队伍成员通常没有决定权。 6)确定使用实例:让用户代表确定使用实例从用户代表处收集他们使用软件完成所需任务的描述-使用实例,讨论用户与系统间的交互方式和对话要求。在编写使用实例的文档时可采用标准模版,在使用实例基础上可得到功能需求。 一个单一的使用实例可能包括完成某项任务的许多逻辑相关任务和交互顺序。因此,一个使用实例是相关的用法说明的集合,并且一个说明是使用实例的例子。在描述时列出执行者和系统之间相互交互或对话的顺序。当这种对话结束时,执行者也达到了预期的目的。 对于一些复杂的使用实例,画出图形分析模型是有益的,这些模型包括数据流程图、实体关系图、状态转化图、对象类和联系图。 使用实例的描述并不向开发者提供他们所要开发的功能的细节。为了减少这种不确定性,需要把每一个使用实例叙述成详细的功能需求。每一个使用实例可引伸出多个功能需求,这将使执行者可以执行相关的任务;并且多个使用实例可能需要相同的功能需求。使用实例方法给需求获取带来的好处来自于该方法是以任务为中心和以用户为中心的观点。比起使用以功能为中心的方法,使用实例方法可以使用户更清楚地认识到新系统允许他们做什么。 每一个使用实例都描述了一个方法,用户可以利用这个方法与系统进行交互,从而达到特定的目标。使用实例可有效地捕捉大多数所期望的系统行为,但是你可能有一些需求,这些需求与用户任务或其他执行者之间的交互没有特定的关系。这时你就需要一个独立的需求规格说明。 7)召开应用程序开发联系会议:召开应用程序开发联系会议应用程序开发联系会议是范围广的、简便的专题讨论会,也是分析人员与客户代表之间一种很好的合作办法,并能由此拟出需求文档的底稿。该会议通过紧密而集中的讨论得以将客户与开发人员间的合作伙伴关系付诸于实践。 8)分析用户工作流程:分析用户工作流程观察用户执行业务任务的过程。画一张简单的示意图(最好用数据流图)来描绘出用户什么时候获得什么数据,并怎样使用这些数据。编制业务过程流程文档将有助于明确产品的使用实例和功能需求。你甚至可能发现客户并不真地需要一个全新的软件系统就能达到他们的业务目标。 9)确定质量属性:确定质量属性和其它非功能需求在功能需求之外再考虑一下非功能的质量特点,这会使你的产品达到并超过客户的期望。对系统如何能很好地执行某些行为或让用户采取某一措施的陈述就是质量属性,这是一种非功能需求。听取那些描述合理特性的意见:快捷、简易、直觉性、用户友好、健壮性、可靠性、安全性和高效性。你将要和用户一起商讨精确定义他们模糊的和主观言辞的真正含义。 10)检查问题报告:通过检查当前系统的问题报告来进一步完善需求客户的问题报告及补充需求为新产品或新版本提供了大量丰富的改进及增加特性的想法,负责提供用户支持及帮助的人能为收集需求过程提供极有价值的信息。 11)需求重用:跨项目重用需求如果客户要求的功能与已有的产品很相似,则可查看需求是否有足够的灵活性以允许重用一些已有的软件组件。
软件工程论文参考文献范文
在学习和工作中,大家或多或少都会接触过论文吧,通过论文写作可以培养我们的科学研究能力。相信写论文是一个让许多人都头痛的问题,以下是我帮大家整理的软件工程论文参考文献范文,欢迎阅读,希望大家能够喜欢。
[1]刘洪峰,陈江波.网络开发技术大全[M].人民邮电出版社,2005:119-143.
[2]程成,陈霞.软件工程[M].机械工业出版社,2003:46-80.
[3]舒红平.Web 数据库编程-Java[M].西安电子科技大学出版社,2005:97-143.
[4]徐拥军.从档案收集到知识积累[M].是由工业出版社,2008:6-24.
[5]纪新.转型期大型企业集团档案管理模式研究[D].天津师范大学,2008:46-57.
[6]周玉玲.纸质与电子档案共存及网络环境电子档案管理模式[J].中国科技博览,2009:44-46.
[7]张寅玮.甘肃省电子档案管理研究[D]. 兰州大学,2011:30-42
[8]惠宏伟.面向数字化校园的档案信息管理系统的研究与实现[D]. 电子科技大学,2006:19-33
[9]刘冬立.基于 Web 的企业档案管理系统的设计与实现[D].同济大学,2007:14-23
[10]钟瑛.浅议电子文件管理系统的功能要素[J]. 档案学通讯,2006:11-20
[11]杜献峰 . 基于三层 B/S 结构的`档案管理系统开发 [J]. 中原工学院学报,2009:19-25
[12]林鹏,李田养. 数字档案馆电子文件接收管理系统研究及建设[J].兰台世界,2008:23-25
[13]汤星群.基于数字档案馆建设的两点思考[J].档案时空,2005:23-28
[14]张华丽.基于 J2EE 的档案管理系统设计与实现[J].现代商贸工业. 2010:14-17
[15]Gary P Johnston,David V. Bowen.he benefits of electronic recordsmanagement systems: a general review of published and some unpublishedcases. RecordsManagement Journal,2005:44-52
[16]Keith Gregory.Implementing an electronic records management system: Apublic sector case study. Records Management Journal,2005:17-21
[17]Duranti Luciana.Concepts,Principles,and Methods for the Management of Electronic RecordsR[J].Information Society,2001:57-60.
[18]Lynn C Westney.Intrinsic value and thepermanent record the preservation conundrum[M].International digital library perspectives,2007:34-89.
[19]Aleksej Jerman Blai.Long-term trustedpreservation service using service interaction proto-col and evidence records[J].Computers and Standards,2007:23-29.
[20]Carmela Troncoso.Improving Secure Long-Term Archival of Digitally Signed Documents[M].Proceedings of the4th ACM international workshop on Storage secu-rity and survivability,2008:102-134.
[1]Schiller J H, Voisard A. Location-Based Services [C]. San Francisco: Morgan Kaufmann,2004
[2]Jiang B, Yao X. Location-based services and GIS in perspective [C]. Computers,Environment and Urban System, 2006, 30(6): 712-725[3]王惠南编著.GPS导航原理与应用[M].科学出版社,2003
[3]C.Drane, M.Vfacnaughtan and C.Scott. Positioning GSM Telephones [J], IEEE Comm.Magazine, pp.46-59, 1998[4]R.Klukas, G.Lachapeile and M.Fattouche. Cellular Telephone Positioning Using GPS TimeSynchronization [C], GPS World, pp.49-54 1998
[4]Christie J, Fuller R, Nichols J. Development and deployment of GPS wireless devices forE911 and location based services. Position Location and Navigation Symposium [C], 2002, 60 - 65
[5]胡加艳,陈秀万,吴雨航,吴才聪.移动位置服务在应急救援中的应用[J].中国应急救援.2008(05)
[6]冯锦海,杨连贺,刘军发等.基于WLAN移动定位的个性化商品信总推荐平台[J].计算机工程与科学.2014(10)
[7]张寅宝,张威巍,孙卫新.面向位置服务的室内空间数据模型研宂[J].测绘与空间地理信息.2014(11)
[8]ZhongLiang Deng, Weizheng Ren, Lianming Xu. Localization Algorithm Based onDifference Estimation for Wireless Sensor Networks in Pervasive Computing Environment.Pervasive Computing and Applications [C], 2008, p.479-484.
[9]Stoyanova T, Kerasiotis F, Efstathiou K. Modeling of the RSS Uncertainty for RSS-BasedOutdoor Localization and Tracking Applications in Wireless Sensor Networks. Sensor Technologiesand Applications (SENSORCOMM) [C], 2010, 45 - 50
[10]Jun-yong Yoon, Jae-Wan Kim, Won-Hee Lee. A TDoA-Based Localization Using PreciseTime-Synchronization. Advanced Communication Technology (ICACT) [C]3
[11]韩霜,罗海勇,陈颖等.基于TDOA的超声波室内定位系统的设计与实现[J].传感技术学报.2010(03)
[12]Hee-Joong Kim, Jihong Lee. Stereo AoA system for indoor SLAM [C]. Control,Automation and Systems (TCCAS), 2013 13th, 1164-1169
[13]张明华.基于WLAN的室内定位技术研究[D],上海,上海交通大学,2009,36-38
[14]Weston J L, Titterton D H. Modern Tnertial Navigation Technology and Its Application [J].Electronics & Communication Engineering Journal, 2000, 12(2):49-64
[15] A.Taheri, A.Singh, A.Emmanuel. Location Fingerprinting on Infrastructure 802.11Wireless Local Area Networks (WLANS) Using Locus [C], Local Computer Networks, 2004. 29thAnnual IEEE International Conference on. IEEE, 2004, pp. 676-683.
[16]王赛伟,徐玉滨,邓志安等.基于概率分布的室内定位算法研究[C].国际信息技与应用论坛文集,2009.
[17]宁静.采用红外织网的室内定位技术[J].激光与红外.2011(07)
[18]卜英勇,王纪婵,赵海鸣等.基于单片机的高精度超声波测距系统[J].仪表技术与传感器.2007(03)
[19]HyungSoo Lim, ByoungSuk Choi, JangMyung Lee. An Efficient Localization Algorithmfor Mobile Robots based on RFID System [C]. SICE-ICCAS,Oct. 2006 pp. 5945-5950
[20]N4air N, Mahmoud Q.H. A collaborative Bluetooth-Based Approach to Localization ofMobile Devices [C]. Collaborative Computing: Networking, Applications and Worksharing(CoIlaborateCom), 2012,363 - 371
[21]Si nan Gezici, Zhi Tian, Georgios B. Biannakis, et al. Localization via Ultra-WidebandRadios [C]. IEEE Signal Processing Magazine July 2005.
[22]陈文周.WiFi技术研究及应用[J].数据通信.2008(02)
[23]李红,郭大群.WiFi技术的优势与发展前景分析[J],电脑知识与技术,2013(5)
[24]石欣,印爱民,张琦.基于K最近邻分类的无线传感器网络定位算法[J].仪器仪表学报,2014(10)
[25]Christopher J.C. Burges. A Tutorial on Support Vector Machines for Pattern Recognition[J]. Data Mining and Knowledge Discovery. 1998 (2)
[26]Asano S,Wakuda Y’ Koshizuka N. A robust Pedestrian Dead-Reckoning PositioningBased on Pedestrian Behavior and Sensor Validity [C]. PLANS’ 2012,328 - 333
[27]Alvarez D, Gonzalez R.C, Alvarez J.C. Comparison of Step Length Estimators fromWearable Accelerometer Devices [C]. Proc.IEEE EMBS, 2006:5964-5967.
[28]刘长征,李纬,丁辰等.多种定位技术融合构建LBS体系[J].地理信息世界.2003(03)
[29]张世.基于惯性传感器和WiFi的室内定位系统的设计与实现[D],北京,北京邮电大学,2012.
[30]周傲英,杨彬,金澈清等.基于位置的服务:架构与进展[J].计算机学报.2011(07)
[31 ] W3C, Scalable Vector Graphics (SVG) [OL],
[32] Eisa S, Peixoto J. Meneses F. Removing Useless APs and Fingerprints from WiFi IndoorPositioning Radio Maps [C]. Indoor Positioning and Indoor Navigation (IPIN), 2013, 1-7
软件前景还是很不错的。我国进入新时代了,对第三产业,服务业需求日益增多,大家花在手机上的时间也越来越多这些都需要软件提供服务,不断发展的文化产业对软件需要也很多,如动漫设计,片头片尾设计,虚拟现实等。前景好,还要个人业务过硬,毕竟软件行业技术更新快,需要不断学习的。
有招编辑部这边做过类似的文章通过的哦,小编全程 免费 提供专业写作思路和构建框架, 在线构题辅导,这样能更准确的解决同学的问题哦,望采纳哦,,麻烦同学了。
1、软件工程专业简介 软件工程是研究大规模软件开发方法、工具和管理的一门工程科学,其特点是按工程化的原则和方法来组织和规范软件开发过程,软件工程技术则主要研究与软件开发各个工作流程相关的、先进实用的软件开发方法、技术和工具;软件工程技术专业面向国民经济电子信息化建设和发展的需要,培养具有扎实的软件理论和知识基础,对整个软件过程有整体了解、掌握软件工程领域的前沿技术,具有国际竞争能力,能从事大型软件项目系统分析、设计、编程、测试和软件项目管理等工作的复合型、实用型的高层次软件工程技术人才;主要涵盖软件工程学科和计算机学科的基本理论、基础知识、基本技能的研究,软件的分析与开发,计算机应用系统、计算机网络系统的设计与开发等专业内容。 2、软件工程专业就业方向 本专业学生毕业后可在计算机软件专业公司﹑信息咨询公司﹑以及金融等其它独资、合资企业工作。 从事行业: 毕业后主要在新能源、计算机软件、互联网等行业工作,大致如下: 1 新能源2 计算机软件 3 互联网/电子商务4 电子技术/半导体/集成电路5 计算机服务(系统、数据服务、维修) 从事岗位: 毕业后主要从事软件工程师、项目经理、软件开发工程师等工作,大致如下: 1 软件工程师2 项目经理3 软件开发工程师4 测试工程师5 java开发工程师 工作城市: 毕业后,北京、上海、深圳等城市就业机会比较多,大致如下: 1 北京2 上海3 深圳4 广州 5 杭州6 武汉7 成都8 南京 3、软件工程专业就业前景 中国的软件行业规模不是很大,有些软件企业在软件制作上,也只是采用了一些软件工程的思想,距离大规模的工业化大生产比较还是有一定的差距;原因有管理体制的问题,市场问题,政策问题,也有软件工程理论不全面和不完善的问题。 所以软件工程的研究和应用,以及中国软件行业的进一步发展,都需要一定的既有软件工程的理论基础和研究能力,又有一定的实践经验的软件工程科学技术人员来推动。软件工程的前途是光明的。 软件服务外包属于智力人才密集型现代服务业。大量著名外包企业落户宁波。主要就业去向包括软件外包与服务企业、信息产品与服务企业,担任程序员、软件测试员、项目经理等工作岗位。
摘要: CMMI为软件产品及软件过程提供了一套定量的表示和分析,即软件度量的模型。有效的软件度量过程能促进组织的软件过程能力的改进。文章结合国内应用特点,介绍了基于CMMI的多层架构软件产品的度量模型,并着重讨论了基于CMMI的软件过程度量,总结了软件过程度量的工作方法和思路,提出了解决国内软件度量的一般性方法,为软件过程改进提供了可行的方法和实践。
关键词: CMMI;软件度量;软件过程能力;度量项;门限值
引言
软件度量的目的是为项目管理提供项目的执行情况的充分可见性,并使项目管理者了解项目实际进展与项目计划之间的偏差,以便采取纠正行动,保证项目的顺利进行。有效的软件度量过程促进组织的软件过程能力的改进。软件度量是软件特性的定量表示和分析方法;软件度量可分为软件产品度量和软件过程度量两类。软件产品度量(定量表示和分析软件产品特性)是独立于产品生产过程的度量;软件过程度量(定量表示和分析软件过程特性)是为管理者提供产品生产过程的状态信息和指导依据。
软件产品度量的要素为质量要素、评价准则、度量元。这里软件过程度量主要通过需求度量、规模度量、进度度量、工作量度量、风险管理度量、质量保证度量来分析。
1 三层架构软件产品度量
1.1质量要素
软件质量可分解成六个要素,这六个要素是软件的基本特征。功能性:软件所实现的功能满足用户需求的程度;可靠性:在规定的时间和条件下,软件所能维持其性能水平的程度;易用性:对于一个软件,用户学习、操作、准备输入和理解输出时所做努力的程度;效率:在指定的条件下,软件实现某种功能使用计算机资源(包括时间)的有效程度;可维修性:为了满足用户需求、环境改变或发生软件错误时,对软件进行相应修改所需的努力程度;可移植性:软件从一个计算机系统或环境转移到另一个计算机系统或环境的难易程度。
1.2评价准则
评价准则包括:精确性、健壮性、安全性、通信有效性、处理有效性、设备有效性、可操作性、培训性、完备性、一致性、可追踪性、可见性、硬件系统无关性、软件系统无关性、可扩充性、公用性、模块性、清晰性、自描述性、简单性、结构性、产品文件完备性。
1.3度量元
根据软件的需求分析、概要设计、详细设计、实现、组装测试、确认测试和维护与使用七个阶段,制定针对每一个阶段的度量元。
2 基于CMMI软件过程度量
从软件企业的观点出发,软件度量(software Measurement)是通过各种不同的量度对软件生命周期中的各个元素进行度量(Measure),为项目管理者提供有关项目的各种重要信息,也是进行软件评估活动的基础。
Carnegie Mellon大学的SEI提出了以下的一个软件度量过程体系结构图:
图1 软件度量过程体系结构
下面我们就上面的体系结构进行分析。
制定度量过程的计划包括两个方面的活动,一是确认范围,二是定义程序步骤。确认范围:明确度量需求的大小,以限定一个适合于企业本身需求的度量过程。因为在整个度量过程中是需要花费人力物力等有限资源的,不切实际的大而全或不足以反映实际结果的需求都会影响度量过程的可靠性以及企业的发展能力。定义程序步骤:在确认了范围后,定义操作及度量过程的步骤,同时成文立案。主要工作包括定义完整、一致、可操作的度量;定义数据采集方法以及如何进行数据记录与保存;定义可以对度量数据进行分析的相关技术,以使用户能根据度量数据得到实质性的结果。
过程的实施包括两方面的活动,一个是数据的采集,一个是数据的分析。数据的采集:根据已定义的度量操作进行数据的采集、记录及存储;此外,数据还应经过适当的校验以确认有效性。在进行该项活动时应具有一定的针对性,应注意到不同的项目或活动所需要的实际数据量是有差别的,对活动状态的跟踪是非常重要的。数据的分析:包括分析数据及准备报告、提交报告,并进行评审以确保报告足够准确。这些程序步骤可能需要反复,因为报告可能没有为使用者提供有益的帮助或使用者对报告中的内容不理解,在这两种情况下,都应回馈并重启度量过程以再进行数据分析。
过程的'改善仅包含一个方面的活动,即优化过程。优化过程:用于动态地改善过程并确保提供一个结构化的方式综合且处理多个涉及过程改进的问题。除此以外,该活动要对度量过程本身进行评估,报告的使用者会对数据的有效性进行反馈。这些反馈可能来自其他的活动,但一般都会溶入到新一轮度量过程的生命周期中,对度量过程进行新的确认及定义。
在实现项目中,项目启动之后,项目度量工作就正式展开。项目经理在项目计划阶段要针对项目的特点制订相应的度量计划,制定度量数据收集和量化分析与控制的策略。在项目实施的过程中,项目相关成员按照预先设定的周期收集各项度量数据,填写相关软件度量记录表。度量负责人根据项目度量表采用适当的方法比较和分析项目级的度量数据,得出度量分析报告。在必要时采取纠正措施,如修正项目计划、进行相关培训等。项目结束时,度量负责人及相关人员对度量规程及有关文件、度量采集的数据、分析结果及报告进行验证后,将其放入相应度量数据库。
确定度量项要根据实际软件项目情况。如果我们比较关注项目进度、工作量和质量,可以将项目进度偏差不超过25%,项目工作量偏差不超过20%,项目的缺陷修复率不低于90%这三项指标作为度量目标。
2.1需求度量
需求的稳定度在极大程度上影响项目的规模、工作量和进度。不稳定的需求将带来负面影响,例如软件产品质量下降、项目成本增高、项目进度延迟等。跟踪分析需求的稳定性能够体现项目成员管理和控制软件需求的能力。目前国内软件项目对需求的分析和控制比较薄弱,开发人员付出了加倍的努力,用户满意度仍不理想。因此有必要对项目需求进行有效的度量和管理。
需求度量项主要包括:原始需求总数、本阶段新增需求的数目、本阶段删除需求的数目、本阶段修改需求
的数目、本阶段需求变更数目、本阶段需求总数目、项目结束时变更的需求总数、项目结束时需求总数、需求变更比例、需求实现率等。
需求变更可能直接导致规模的增长、进度的延迟、成本的增加以及返工。项目成员应周期性地度量需求变更(包括新增、修改和删除需求)和需求总数的变化,控制需求变更并采取相应行动。图2表现了需求的稳定度,两条折线分别表示监控过程需求总数的变化以及需求变更数目的变化。假设需求基线化评审发生在第3次项目监控时,该图显示,需求评审之后,第4次的需求总数以及第4、5、6次需求变更数都有明显增长,在第7次以后需求趋于稳定。说明在需求基线化评审结束之后相当一段时间需求仍然不稳定。产生的原因可能有以下几种:(1)需
本文原文求调研不充分、误解、歧义、不完整、不正确等;(2)客户需求变化频繁。解决措施:在进行需求调研时充分挖掘客户的需求,进行需求确认。对于频繁变更的需求,项目成员可能要采取诸如重新分配资源及重新估算规模、工作量和进度等措施。
图2需求变化趋势图
2.2规模度量
规模是项目的基本度量项,是决定软件项目成本的最基本因素,是估算工作量和进度、计算生产率、缺陷密度及其它项目评估指标的基础。对规模的有效估算、跟踪和控制,一方面使得项目得以按照预定计划顺利开展,另—方面也也保证机构盈利目标的实现。
监控实际规模与估算规模的偏差。如果需要,重新估算工作量和进度。
在里程碑处(如需求阶段、设计阶段)以及大的需求变更发生时,或进行项目情况汇总时,项目经理需要分析规模变化率并监控产品有效规模的偏差。
如果规模变化率在上下控制限范围内,则度量结果是可以接受的。
如果规模变化率超出上下控制限范围,则分析原因并采取相应措施。
度量项主要包括:项目估计规模、项目实际规模、规模变化率、项目估计成本、项目实际成本、可复用的代码行等。可以根据实际情况取舍。
2.3进度度量
保证软件项目的进度是控制项目成本,赢得用户满意的关键。软件项目容易在进度上发生问题,对项目的进度进行定量的高透明度的管理,可以尽早发现进度的延误,迅速做出相应的调整。具体度量项包括:项目估计进度、项目实际进度、进度偏差、里程碑计划总天数、里程碑实际总天数、里程碑差异天数、项目计划总天数、项目实际总天数、项目总的差异天数。如果进度偏差超出控制界限,则分析原因,采取措施,跟踪进度,直至进度得到控制。
2.4工作量度量
追踪工作量的目的是评估项目人力是否充分以及分配给每个阶段的工作量是否合适。对工作量的正确估计和控制,有利于为项目配置合适的人力资源,也便于控制项目成本。统计汇总各个阶段、各项活动工作量在总工作量中所占比例,并与计划比例相对照,可以发现项目执行上的偏差;总结经验教训,有利于逐步形成适合软件企业开发团队特点的最佳工作量组合。
工作量度量的具体方法是:确定工作量度量的基本度量项,由相关人员选择基本度量项填写工作日志,在一定时间统计各基本度量项及计算相关派生度量项。相关的度量项有:各类活动的总工作量、各阶段的总工作量、各类活动的工作量分布、各阶段的工作量分布、项目估计(总)工作量、项目实际(总)工作量、工作量偏差等。
图3 返工工作量分析图
分析:从数据和图表来看,返工工作量在16%左右,属正常范围。没有超过门限值。
2.5风险管理度量
对风险进行识别与度量,统计识别的风险和转化为问题的风险的数目,供以后的项目参考。风险度量项主要包括:本阶段识别的风险数目、本阶段转化为问题的风险数目、项目识别的风险总数、项目转化为问题的风险总数等。
风险管理是对项目潜在问题进行识别,以便在项目生命周期内对处理这些问题制订管理计划,减少潜在问题发生的影响和概率。风险度量将为以后的项目的风险管理提供参考数据。
图4 项目风险和问题趋势图
2.6质量保证度量
通过对软件质量保证过程中不合格项的有关统计,可以发现项目成员对软件开发过程规范的遵从程度,预防缺陷,改进过程。通过对质量保证活动的工作量进行统计,可以积累项目支持类活动的工作量数据。
图5 不符合项解决率趋势图
度量项主要包括:QA活动的工作量、不符合项总数目、各类问题不符合项数目、新增不符合项数目、已解决不符合项数目、当前未解决不符合项数目、不符合项解决率、解决不符合问题的时间延迟、解决不符合问题的工作量、剪裁组织标准过程集合的工作量等。
3 实践结果
如何提高软件质量始终是软件工程领域研究的重要方向。基于度量的量化管理是目前最有效的质量保证手段之一,国内很多软件企业也在做这方面的研究和实践。本度量分析模型已经使用于多个具体的项目应用中,并经过了SEI专家测评,通过了CMMI3正式评估。本文在软件过程改进和软件度量分析上作了一定的探索和实践,结合具体软件项目进行了具体实践的描述,对以后国内软件度量分析应用,改进软件过程有一定现实意义。
4 结束语
在接下来的工作中,我们要加强软件度量库(如电子政务应用安全软件度量库)的建设和应用,将软件度量分析工作作为一个长效机制坚持下去,保证软件过程有序、健康地发展。
软件测试被定义为是以评价一个程序或者系统属性为目标的任何一种活动,测试是对软件质量的度量。下面我给大家分享软件技术论文2000字,大家快来跟我一起欣赏吧。
软件测试技术研究
摘 要:软件测试是软件工程范畴的一项重要工作,与软件质量密切相关。本文就软件测试的概念、分类和方法等几个方面进行了论述。
关键词:软件测试;黑盒测试;白盒测试
中图分类号:TP311.52
软件测试是软件生产过程中的一个重要环节,是伴随着软件的产生而发展的,它并不是不能正常运行的软件的专利,而是为了发现所有软件缺陷而执行程序的过程。软件测试贯穿于软件开发的到投入使用的各个过程中,不同阶段的测试手段各不相同,测试成为软件产品质量控制和管理的重要手段之一。大量资料表明,软件测试的工作量占软件开发总工作量的40%以上,测试成本也占总成本的30%―50%。
1 软件测试的目标和重要性
1.1 软件测试的定义
看待软件测试的角度不同,软件测试的定义也各不相同。总的说来,软件测试就是利用测试工具按照预先设定好的方案和流程对产品进行功能和性能测试,甚至根据需要重新编写测试代码,对测试过程中可能出现的问题进行分析和评估。它是帮助识别开发完成的计算机软件的正确度、完全度和质量的软件过程,是保证软件质量的重要内容。
1.2 软件测试的目标
软件测试的正确定义是“为了发现程序中的错误而执行程序的过程”。而测试的目的决定了如何去组织测试。测试的目标是什么?G.Myers曾给出了关于测试的一些规则,这些规则可以看作是软件测试的目标:
(1)软件测试并不是为了验证软件的正确性,而是为了发现错误而执行程序的过程。(2)好的测试方案是尽可能发现目前尚未发现的错误的测试方案。(3)成功有效的测试是发现了至今尚未发现的错误的测试。从以上规则可以看出,测试是以查找错误为中心,和人们通常想象的“测试是为了验证程序的正确功能”,“成功的测试是没有发现错误的测试”等是完全相反的。所以,近年来,正确软件测试目标如下:(1)软件测试并不仅仅是为了查找出软件的错误,而是要通过进一步分析错误产生的原因和错误的发展趋势,发现一些可以通过测试避免的开发风险;(2)通过测试能够帮助测试人员设计出适合该软件更加有效的测试方法,进一步提高测试效率,缩短测试实践,降低测试费用;(3)结果完全正确的测试也是有价值的,是软件质量的一种评价,但并不是测试正确就说明该软件没有错误,随着使用的深入,功能的扩充等会逐步暴露出更多的问题,实践证明,完全没有错误的软件世间难求。
1.3 软件测试主要包括
(1)正确性和精确性测试:如果软件的运行结果不正确和不精确,那么会给用户带来很大的麻烦,甚至造成不可估量的损失,因此是保证软件质量的最重要因素。(2)容错性测试:容错性测试是在认可错误的情况下进行的测试,是检查软件在异常条件运行,是否具有防护性和能否自我恢复。容错性测试能确保系统不发生无法意料的事故,从而提高软件的安全性和可靠性。(3)性能与效率测试:用户都希望软件的运行速度更高一些,并且占用的资源更少些,性能与效率测试主要是优化软件的算法,数据结构和代码组织来提高软件的性能和效率。(4)易用性测试:易用性测试是测试软件的易用程度,就像一个常用扳手工具,拿到就能明白怎么去使用,因此易用性测试没有一个量化的指标,主观性较强。在平时使用中,当用户不能正确使用软件中的某个功能时,大多数人首先会通过各种方式学习、请教,或者向产品支持部门打电话,还有一部分用户会查阅用户手册。通常认为,用户不通过翻阅用户手册就能使用的软件易用性较好。(5)文档测试:文档测试主要检查文档的正确性、完备性和可理解性。
1.4 软件测试的基本原则
(1)尽早并不断地进行软件测试;(2)程序员或程序设计机构避免测试自己的软件;(3)测试前应当设置合理的测试用例,测试用例的设计不仅要有合法的测试数据,也要有非法的测试数据;(4)对程序修改之后要进行回归测试;(5)妥善保留测试计划、严格按照计划测试,排除测试的随意性,全部测试用例、出错统计和最终分析报告,并对每一个测试结果做全面检查。
1.5 软件测试的地位
软件的开发过程包括需求分析、设计、实现和测试四个阶段。软件测试在软件生命周期中占重要地位,是软件交付用户使用前保证软件质量的重要手段。在系统发布之前,从客户的需求出发,尽早发现问题,修改的成本越低,破坏性也越小。一旦系统投产后发现问题,其危害性被成倍放大,甚至会给双方造成不可估量的损失。
2 软件测试方法
按照不同的分类方法,软件测试可以分为多种类型。
2.1 从是否需要执行被测试软件的角度分类
静态测试:是指不需要实际运行软件,主要对软件的编程格式、程序逻辑结构等方面进行测试。静态测试是通过对源程序进行语法检查,静态结构分析、代码质量等方面找出缺陷和可疑之处,例如变量定义和生命周期检查、模块接口的正确性、是否允许递归、程序逻辑和结构审查等。
动态测试:通常的上机运行软件而进行的测试,这种方法是使程序有控制地运行,并从多种角度观察程序的行为,以发现其中的错误。在软件维护阶段,当修改软件后,除了对修改部分的软件进行常规的测试外,还应对软件的其他部分进行回归测试,所谓回归测试是指全部或部分地重复已做过的测试,它主要检查软件的修改是否在软件的未修改部分引入了新的错误。
2.2 从是否针对软件结构与算法的角度分为
白盒测试,主要是对软件的逻辑结构进行的测试。白盒测试要求测试人员对程序内部逻辑结构及有关信息来设计和选择测试用例,对程序的逻辑路径进行测试,不需测试软件产品的功能。测试过程是基于覆盖全部代码、分支、路径和条件。白盒测试是指在知道产品内部工作过程,通过设置测试用例来检测产品内部动作是否按照规格说明书的规定正确进行,检验程序是否都能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑覆盖、基本路径测试等。
黑盒测试:指测试来检测每个功能是否可以正常使用。执行严格的测试,通过对整个软件或某些软件功能,但不检查程序的源代码还是非常清楚的了解该软件的源代码程序具体如何设计。通过输入测试数据,并通过分析的结果输出到测试人员了解软件是如何工作的。在测试中,主要的功能是用来检查是否正确的程序或缺少的功能,用户界面是正确的,错误的数据结构或外部数据库访问错误,性能是正确与否,程序是否有初始化和终止错误的存在。
2.3 从测试的不同阶段分类
单元测试:指的是对每一个工作单元进行测试,了解其运行结果是否符合我们的预期。它对测试人员的要求比较高,要求测试人员对程序代码比较熟悉;一般由程序员自己编完某个单元后,先自我检查通过后,再将测试代码交给测试人员进行审核,如果发现缺陷,原开发者应当及时修正程序,这样可以尽快的发现程序中存在的错误,及时修正以提高程序开发的效率。
集成测试:是在单元测试的基础上,测试再将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动。也就是说,在集成测试之前,单元测试已经完成,集成测试中所使用的对象,已经是经过单元测试的软件单元。
系统测试:是将已经确认的计算机软件和硬件设备、网络和外围设备等元素组合在一起,对已经集成好的系统进行测试,找出所开发的系统与用户需求不符或矛盾的地方,从而提出更加完善的方案.它的任务是尽可能彻底地检查出程序中的错误,提高软件系统的可靠性。
验收测试:也称为交付测试,完成了功能和系统测试后、产品发布之前所进行的测试活动,它是技术测试的最后一个阶段。
总之,随着软件开发和测试技术的不断发展,测试方法也越来越多样化,针对性更强;选择合适的软件测试方法可以让我们事半功倍。
参考文献:
[1]张永梅.软件测试技术研究[J].测试技术学报,2002,6.
[2]刘继华.软件测试技术的研究进展[J].微计算机信息,2012,10.
[3]瞿莉丽.浅析软件测试技术[J].硅谷,2010,4.
点击下页还有更多>>>软件技术论文2000字
论文对于硕士,尤其博士,是必须的一种技能,也是一道难关。所谓大道无形,小道可走。下面给出一些博士期间的写作心得,希望能有所裨益。论文可以有三个境界:毕业、科研、贡献。 现在只说第一个,为了毕业。 把论文分成三个阶段:读、写、改。 一、读 即:读哪些论文(对象),读论文的目的是什么(目标),怎么读(方法)1.读什么论文。 读论文,需要读经典的专业基础论文、survey(概述)论文,及5-10篇左右读新的高质量的专业论文。 好的论文怎么找?首先找专业领域中好的会议、期刊;其次,经常访问专业领域有名的实验室、研究员的主页,关注其发表的论文方向及内容;50-100篇,半年;就可以开始动手写论文了。 2.读论文的目的。 读论文的目的有两个主要目的: 一是了解世界上本专业领域的内容和发展情况; 二是在了解过程中,产生自己的idea,进入这个领域。 什么是idea?怎么样产生?idea一般是在读论文的过程中产生的,给出三种比较简单产生idea的方法。(1)第一种弥补缺陷法。即去发现别人论文中的weakness(缺陷)。你在读很多个论文时候,就会逐渐发现,每一篇论文都不是完美的,解决的都是某一方面的问题。很多论文,尤其是经典论,都有很多论文跟着去提高和改善原来论文的效率、方法什么的。因此,你可以根据这个特点,去找你感兴趣的论文的weakness,你提出相应的弥补缺陷的解决方案; (2)第二种新型方案法。就是提出与论文不同的解决方案,你觉得你在性能、方法、效益等方面有新的方法,那就产生了新的idea,不断地磨合,修正,完善你的idea,就慢慢成为一篇比较好的论文; (3)第三种减少约束法。即减少论文中的assumption(假设),一般来说,所有的假设都是约束条件,去除约束条件就是形成新的方法的过程。这三种方法是比较简单的、操作性比较强的方法,比较有针对性的产生idea,避免看论文中的茫然状态。值得注意的是,在产生idea过程中,不要想着憋大的idea,不要试图完全推翻或者建立自己的体系。在目前阶段,对大多数人来说,这是不可能的。好高骛远,往往会半途而废。你有一点点的贡献就好。没有一篇论文是完美的,而任何人的工作都必须在其他人工作基础上进行的。 3.怎么读论文。 (1)首先,最忌讳的是一篇论文反复读前面的几段。要读,尽量一次性读完,不管理解多少,尽量一次读完,你可以一篇论文多读几遍。不要放。很多人都是,觉得读起来难,读一读,放一放,然后再从头读。好像烧开水,没等开锅呢,就凉凉了,然后再烧。 (2)第二,读的时候带着想法读。读论文不是相面,你要看看内容是什么,和以前的有没有区别,有什么不同,有没有weakness。但是在阅读的过程中,往往就忘了这个事情。怎么办呢,就是每次看完,对这篇论文做个summary,总结一下论文的主要阐述的内容和方法,和以前的对比一下,这样,就把论文吃透了。好的论文不妨隔三差五的多读几次。 (3) 第三,看到好的句子,记下来,然后自己写论文时候改一下就可以用的。尤其是读native的论文,非常必要。论文的文风怎么样,整个文章的版式,句子的书写,词汇的使用。论文读多了,就很容易把专业词汇积累下来,所以,尤其在开始的时候,一定要把好的句子、单词记下来。好记性不如烂笔头,非常推荐大家这样去做。二、写写论文和读论文过程类似,包括确定论文的性质,论文的目标(发表到哪里),写论文的方法。要了解论文的组成是什么,每一部分应该怎么写,然后再进入写论文的过程。 在具体写作的时候,需要考虑下面的过程: 1.写什么性质的论文。 如会议论文、期刊论文、letter、regular paper,或者写的是综述(survey)、方法、理论等等。不同的论文的对象,载体,篇幅,侧重点是不一样的。比如,会议论文、短论文等对新的要求比较高,比较短,其他的次之,所以论文写作要集中在新的方面;而期刊论文等对新的要求之外,还要求完善、高质量,所以写作时候要系统性和创新性并重。 2.写论文的目的是什么。 第一,你想要发表的地方是什么,会议还是期刊。不同的地方有不同的要求,尤其是期刊论文。所以,在写论文之前,尽量确定要投的期刊或会议。然后,去阅读几篇最新的该期刊或者会议的论文,明确一下体例和内容大致规划。重要的是,你选择的题目和投稿对象的要求尽量切合。第二,你想要发表的时间,一定要有个发表的时间点。一方面,人都是有惰性的,你限制了时间点,就能很好的督促你,你可以多选择几个,这样你就会处于忙碌和兴奋状态,成果就会快而且好,否则非常容易消极怠工。另一方面,很多毕业生,需要在写大论文之前,需要得到论文的接收函。在时间规划上也是有要求的。如果想在时间上快一些,可以找一下相关刊物的special issue或者special section等,一般这特刊,出版的速度相对快些。一定要提前谋划,无论是会议还是期刊,一般要提前半年以上。 3.写论文的方法。 首先了解一下论文的结构。通常一篇论文包括7个大的部分,每页大概10段,每段大概4,5个句子。所以,一篇会议论文大概200-300个句子罢了。一小时写5句,一天写一页也就差不多了,一周也就写一篇论文吧,当然前提是idea什么都比较成熟后。其实,如果真的想明白了,差不多2-3天也就可以了。 4.论文的组成。 下面,针对论文给出7个大部分的一些内容组成:(1) Abstract—— 对自己工作及其贡献的总结:a)阐述问题;b)说明自己的解决方案和结果。(150-200words) (2)Introduction——背景,以及文章的大纲、你的贡献:a)题X是重要的;b)前人的工作A、B曾经研究过这个问题;c)A、B有一些缺陷;d)我们提出了方法D;e)D的基本特征,和A、B进行比较;f)实验证明D比A、B优越;g)文章的基本结构,大纲。(1page) (3)Previous Work——说明自己与前人的不同:a)将历史上前人的工作分成类别;b)对每项重要的历史工作进行简短的回顾(一到几句),注意要回顾正确,抓住要点,避免歧义;c)和自己提出的工作进行比较;d)不要忽略前人的重要工作,要公正评价前人的工作,不要过于苛刻;e)强调自己的工作和前人工作的不同,最好举出各自适用例子。 (4)Our Solution——描述自己的工作,可分成多个部分:a)从读者角度阐明定义和表示法;b)提供算法的伪码,图解和相应解释;c)用设问的方式回答读者可能提出的潜在问题;d)复杂的冗长的证明和细节可以放在附录中,这里关键是把问题阐述清楚;e)特例和例外应该在脚注中给予说明。 (5) Performance Analysis——验证提出的方法和思路:a)合理地设计实验(简洁的实验和详尽的实验步骤);b)必要的比较,突出科学性;c)讨论,说明结果的意义;d)给出结论。 (6) Conclusion——总结、前景及结文:a)快速简短的总结;b)未来工作的展望;c)结束全文。 (7) References——对相关重要背景文献的全面引用:a)选择引文(众所周知的结论不必引用,其他人的工作要引用,经典的和新的论文要引用);b)与前文保持一致。然后我们就开始写论文了。 1.写论文时候,最好一气呵成。千万不要犹豫,今天写点,明天写点的样子。那样往往写不好论文。一篇SCI论文,我想,一般最多用一周多一点的时间写完主题部分;而一般会议论文2,3天即可。当然,一些实验可能需要时间长些。无论如何,不可以拖延。可以说,每篇论文都可以发表,所以你写出的论文肯定是有成果的。 2.写论文时候,有些需要注意的语言表述的地方。首先,尽量拼写、语法正确。保证全文没有单词错误和明显的语法错误,这个非常重要。论文学术是非常严谨的,错误拼写容易让人觉得水平不高。另外,写作句子尽量简单,每个句子只包含一个意思,这个和中文论文差别很大。记住一定用简单的句子,一般情况下,即使算上从句也尽量不要超过两句话。第三,避免用口语。例如so、the same as、one hand…on theother hand等等。从native和好的论文里面,把重要的连词的应用学好。如therefore,however,moreover等等,尽量装着学术化一些。第四,尽量避免第一人称,we怎么怎么地。 3.论文的组成元素。通常,包括图形、公式、算法、证明等等。论文应该是图文并茂的。通常情况下,如果读者是同一领域的研究人员,他们看完论文的图片及图注就可以知道这篇文章大体所做的工作。因此,要标注好每一幅图片所展示的信息,但尽量简洁。图和文本要保持一致,并且互为补充,所有图在论文中都是必须提及的。不同的图有不同的要求:(1)对于说明性、功能性和流程性等的图,我建议一般先自己在纸上手绘大框,这样方便设计、修改,等定型后,在用专业工具绘画,这样一般效果很好而且节省时间。 (2)另外,当采用柱状图、折线图等,优先用黑白色,然后是灰色或阴影的,最后才是彩色的。据说有大概10%的男性是红/绿色盲,因此要避免使用红/绿色,而且打印时候大多时候是黑白的,所以,在采用颜色标识的同时,尽量加一些标识性的线条标志,要有区别于其他区域的大小和形状。对于这些性能分析、对比等,在解释时候一定要尽量说明图的形成原因,并包括数据。如与谁相比,能效提高百分之多少,什么原因造成的等等。 (3) 第三,作图工具一定要专业,尽量避免用excel等做,通常做的不是很好看。图的质量一般是300dpi以上,所以如果可能,尽量用专业工具作图,然后粘贴。在论文录取后,尤其期刊论文,一般需要提交高质量的图片,尽量是jpg和tif格式的。 (4)最后,论文排版要尽量和论文要求一致,直接使用投稿对象的模板。如果latex等熟悉的朋友,尽量用latex,排版的质量非常棒的。除了图,论文里面还应该有公式、算法、证明、定义等。一定尽量用专业的东西编写,这些地方尽量不要用图片。整篇论文要尽量用多种元素说明,避免整篇大片大片的文字描述。 最后,好的论文要有好的明确的题目,我一般是先写一个然后整篇论文写好后,再修改、定稿。三、改好的论文不是写出来的,是改出来的。完成一篇论文后,先通读一下,看看有没有什么要更改的。一般来说,更改有本人更改和他人更改两种。写完之后通读一次,先不要再读,放两三天再说。这样容易产生新的更好的想法,然后再仔细更改。更改是个打磨的过程,必须字斟句酌,可以参考其他好的文章,对照写。改论文绝对不是查缺补漏那么简单,要从审稿人、读者多个角度去看,想想读者能从你这个论文里面获得多少、想看的是什么。另外,一定请领域朋友帮助审查一下,以便检验论文的正确性和新鲜性,而且可以对一些术语用词进行改善。 改好之后,就是投稿。 一定要选择和自己论文非常搭的期刊或者会议投稿。如果是正常期刊的论文,一般随时都可以投稿。但是对于特刊、会议一般是有时间限制的。对有时间限制的,建议尽量提前一两天投稿。我见过很多人,都是非得到最后那天才投稿,这样如果发生意外就不好补救了。另外,有些期刊为了增加公正性,要求匿名投稿,这个一定要注意。 最后,不管论文接受还是被拒,都会有比较好的意见回来,一定要认真阅读这些意见并做相应的修改及反馈。 一些需要注意的地方 (1)论文的滚动问题。一个方向,发表一篇论文后,不是就完成大吉了。还有尽量深挖你这个课题。一个主题多种实现方法。一个好的idea,我觉得怎么应该发一到两篇conference和一个journal (2)论文合作:在质量和数量上大幅提高。 (3)作者排序的问题,为以后工作做准备。 (4)项目申请问题。 (5)最低满足论文之后,是为以后铺路的问题。平实心态,积极争取。 以上是自己在做研究时候的一点点小心得,为写而写,寸光短视,指望有所裨益。
先选好自己要写的方向吧,然后多参看一些别人的论文中找找灵感,比如软件工程与应用里面就有一些可以借鉴
软件工程硕士论文要求与模板
软件工程硕士论文要求有哪些,有具体的模板可以借鉴吗?下面是我为大家收集的关于软件工程硕士论文要求与模板,欢迎大家阅读借鉴!
软件工程硕士论文要求主要包括:字数要求与书写格式要求,一般软件工程专业研究生论文字数要求3万--5万之间,字数太少无法将课题研究透彻,字数过多会显得繁杂,因此,在撰写软件工程硕士论文时,要抓住研究核心,阐述清楚研究问题,适当减少一些常识性知识,特别重要的常识原理,可以在附录中体现;其次论文完成后,要按照论文格式标准进行排版,具体格式要求见下:
1 软件工程硕士论文基本结构
软件工程硕士论文基本结构包括前置部分、主体部分和结尾部分。
1.1 前置部分
(1) 封面
(2) 原创性声明和《中国优秀博硕学位论文全文数据库》投稿声明
(3) 序或前言(可根据需要)
(4) 摘要及关键词
(5) 目次页
(6) 插图和附表清单(可根据需要)
(7) 符号、标志、缩略词、首字母缩写、计量单位、名词、术语等的注释表(可根据需要)
1.2 主体部分
(1) 引言(或绪论)
(2) 正文
(3) 结论
(4) 参考文献
(5) 注释(可根据需要)
(6) 附录(可根据需要)
1.3 结尾部分
(1) 作者简介及在学期间所取得的科研成果
(2) 后记和致谢
(3) 封底
2 软件工程硕士论文编写规范与要求
2.1 前置部分
2.1.1封面
封面(含扉页)包括以下要素:
论文分类号:采用《中国图书资料分类法》(第四版),可到图书馆查询。
单位代码: ××××。
密级:密级一般设定为公开,涉密级别分为秘密、机密、绝密。凡涉密论文需根据《××大学研究生涉密论文暂行规定》(校研院字[2007]18号)办理审批手续。
研究生学号:填写由研究生管理处统一编排的研究生学号。
学位类别:按申请专业的学科门类和学位级别进行分类。
专业学位直接写上专业学位名称,“软件工程硕士”.
校徽:蓝色,大小为3×3cm.
论文题目:应准确反映论文的核心内容,简明扼要,必要时可加副标题。论文题目(包括副标题)总长度不要超过30个汉字。论文题目需同时翻译成英文,写在汉语题目之下。论文题目在封面中间居中排列。
作者姓名:姓名所使用的汉字必须与本人有效身份证件完全一致。
专业名称:必须严格按照“研究生教育管理信息系统”中的专业名称填写,不得使用简称。
导师姓名:导师姓名后附职称,姓名与职称之间应空一个汉字的位置。
培养单位:填写研究生的具体培养单位,“计算机科学与技术学院”.
论文完成时间:在论文封面下部,居中填写论文打印成稿的年月。
××××大学博士、硕士学位论文封面及扉页格式请分别参考学院论文封面格式样本。
2.1.2 原创性声明和《中国优秀博硕学位论文全文数据库》投稿声明
本部分使用统一的'格式,具体内容见附件。
2.1.3 序或前言
学位论文的序或前言,一般是作者对本篇论文基本特征的简介,如说明研究工作缘起、背景、主旨、目的、意义、编写体例,以及资助、支持、协作经过等。这些内容也可以在正文引言(或绪论)中说明。
2.1.4 摘要及关键词
摘要是对论文主要内容的概述,是一篇完整的短文,可以独立使用。摘要应阐明研究的目的,所获得的主要成果,学位论文的论点及论据。同时也应客观地阐述成果的创造性及新发现、新见解和所取得的成果在研究领域中的地位、意义及其价值。除了实在无变通办法可用以外,摘要中不用图、表、化学结构式、非公知公用的符号和术语。硕士学位论文摘要以汉字1000字左右为宜,博士学位论文摘要以汉字2000字左右为宜。学位论文摘要分为中文摘要和英文摘要。英文摘要根据中文摘要进行翻译。
在中、英文摘要之后要附关键词。关键词是为了文献索引而从学位论文中选取出来的、用以表示全文主题内容信息的单词或术语。一般选用3-8个关键词,要求所选词汇能准确反映概括全文的主要内容。
使用非汉语语言撰写的学位论文,应写出详细的中文摘要,硕士中文摘要不少于3000字,博士中文摘要不少于5000字。
2.1.5 目次页
论文中内容标题的集合,另起页。目次页每行均由标题名称和页码组成,包括引言(或前言),主要内容的篇、章、条、款、项序号和标题,小结,(引文)参考文献、注释、附录,可供参考的文献题录、索引等。
2.1.6 插图和附表清单
论文中如图表较多,可以分别列出清单置于目次页之后。图的清单应有序号、图题和页码。表的清单应有序号、表题和页码。
2.1.7 符号、标志、缩略词、首字母缩写、计量单位、名词、术语等的注释表
符号、标志、缩略词、首字母缩写、计量单位、名词、术语等的注释说明,如需汇集,可集中置于图表清单之后。
是计算机,所以基础太大,工程硕士论
[编辑本段]基本信息 软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己的定义: 软件工程(1)、BarryBoehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。
(2)、IEEE在软件工程术语汇编中的定义:软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究 (3)、FritzBauer在NATO会议上给出的定义:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。 目前比较认可的一种定义认为:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
(4)、《计算机科学技术百科全书》中的定义:软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本。
其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。 [编辑本段]目标 软件工程的目标是:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用软件工程性、可适应性、可移植性、可追踪性和可互操作性并且满足用户需求的软件产品。
追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。下面分别介绍这些概念。
(1)可修改性(modifiablity)。容许对系统进行修改而不增加原系统的复杂性。
它支持软件的调试与维护,是一个难以达到的目标。 (2)有效性(efficiency)。
软件系统能最有效地利用计算机的时间资源和空间资源。各种计算机软件无不将系统的时/空开销作为衡量软件质量的一项重要技术指标。
很多场合,在追求时间有效性和空间有效性方面会发生矛盾,这时不得不牺牲时间效率换取空间有效性或牺牲空间效率换取时间有效性。时/空折衷是经常出现的。
有经验的软件设计人员会巧妙地利用折衷概念,在具体的物理环境中实现用户的需求和自己的设计。 (3)可靠性(reliability)。
能防止因概念、设计和结构等方面的不完善造成的软件系统失效,具有挽回因操作不当造成软件系统失效的能力。对于实时嵌入式计算机系统,可靠性是一个非常重要的目标。
因为软件要实时地控制一个物理过程,如宇宙飞船的导航、核电站的运行,等等。如果可靠性得不到保证,一旦出现问题可能是灾难性的,后果将不堪设想。
因此在软件开发、编码和测试过程中,必须将可靠性放在重要地位。 (4)可理解性(understandability)。
系统具有清晰的结构,能直接反映问题的需求。可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植或重用。
(5)可维护性(maintainability)。软件产品交付用户使用后,能够对它进行修改,以便改正潜伏的错误,改进性能和其他属性,使软件产品适应环境的变化,等等。
由于软件是逻辑产品,只要用户需要,它可以无限期的使用下去,因此软件维护是不可避免的。软件维护费用在软件开发费用中占有很大的比重。
可维护性是软件工程中一项十分重要的目标。软件的可理解性和可修改性有利于软件的可维护性。
(6)可重用性(reusebility)。概念或功能相对独立的一个或一组相关模块定义为一个软部件。
软部件可以在多种场合应用的程度称为部件的可重用性。可重用的软部件有的可以不加修改直接使用,有的需要修改后再用。
可重用软部件应具有清晰的结构和注解,应具有正确的编码和较低的时/空开销。各种可重用软部件还可以按照某种规则存放在软部件库中,供软件工程师选用。
可重用性有助于提高软件产品的质量和开发效率、有助于降低软件的开发和维护费用。从更广泛的意义上理解,软件工程的可重用性还应该包括:应用项目的重用,规格说明(也称为规约)的重用,设计的重用,概念和方法的重用,等等。
一般来说,重用的层次越高,带来的效益也就越大。 (7)可适应性(adaptability)。
软件在不同的系统约束条件下,使用户需求得到满足的难易程度。适应性强的软件应采用广为流行的程序设计语言编码,在广为流行的操作系统环境中运行,采用标准的术语和格式书写文档。
适应性强的软件较容易推广使用。 (8)可移植性(portability)。
软件从一个计算机系统或环境搬到另一个计算机系统或环境的难易程度。为了获得比较高的可移植性,在软件设计过程中通常采用通用的程序设计语言和运行环境支撑。
对依赖于计算机系统的低级(物理)特征部分,如编译系统的目标代码生成,应相对独立、集中。这样,与处理机无关的部分就可以移植到其他系统上使用。
可移植性支持软件的课重用性和课适应性。 (9)可追踪性(tracebility)。
根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行逆向追踪的能力。软件可追踪性依赖于软。
软件工程可以写的题目多啊。开始也不怎么懂,还是学姐给的文方网,写的《基于Windows平台的HIPS系统设计与实现》,靠谱的说
研究生教育网络管理系统的设计与实现
WMS-2000A轮机模拟器数据通信系统设计与实现
洗衣机模拟运行控制系统的设计与实现
机车信号记录器数据分析处理系统的设计与实现
分布式自动检测系统RS485通信网络的设计与实现
计划生育管理信息系统的设计与实现
医院“一卡通”系统的设计与实现
列车三维驾驶仿真系统的设计与实现
一种图书外采查重系统的设计与实现
基于C/S模式的网络文件管理系统的设计与实现
自动化仓库管理系统的设计与实现
四川省卫生统计数据采集与决策支持系统设计与实现
ATM应用系统EMV迁移的设计与实现
基于B/S模式的药品信息咨询系统的设计与实现
基于LFAP的网络流量统计分析系统的设计与实现
传真管理信息系统的设计与实现
工业机器人三维仿真系统的设计与实现
单位网络设备环境智能监控系统设计与实现
基于CC1020芯片无线传输系统的设计与实现
公安派出所综合信息管理系统设计与实现
基于WEB的库存管理系统设计与实现
基于工作流的AUTOBANK管理系统设计与实现
具有主动功能的连锁经营企业配送中心管理信息系统的设计与实现
基于JavaEE技术的在线考试系统的设计与实现
学生评教系统的设计与实现
微小型电动无人机动力系统试验台的设计与实现
基于F1103 GPRS MODEM的家校通系统设计与实现
基于嵌入式Linux的远程家庭医疗监护系统设计与实现
基于Windows操作系统的智能建筑物综合布线管理系统的设计与实现
基于.NET技术的网上购物管理系统的设计与实现
变电检修管理信息系统设计与实现
天津地铁1号线车站乘客向导系统的设计与实现
基于B/S结构的电路分析网上答疑系统的设计与实现
应用PDA组建无线IC卡表抄收系统的设计与实现
非计算机专业计算机课程考试系统设计与实现
基于GPRS网络的煤矿瓦斯监控系统的设计与实现
惯性组合导航系统接口子系统的设计与实现
人寿保险老业务综合处理系统的设计与实现
FORTRAN语言题库管理系统的设计与实现
楼宇信息系统的设计与实现
倒闸实训系统无线遥控的设计与实现
C/S模式下的电子邮件系统设计与实现
基于LINQ三层架构仓库管理系统的设计与实现
一种宽带无线移动视频调度系统的设计与实现
浅谈远程监控机房温湿度报警系统的设计与实现
学术论文共词分析系统的设计与实现
基于Web的SQLServer远程备份管理系统的设计与实现
基于Spring框架的北京林业大学图书馆门户系统设计与实现
基于XML的研究生网络选课系统设计与实现
最低0.27元开通文库会员,查看完整内容> 原发布者:北大青鸟广安门校区 软件工程师应该具备的技能有哪些 软件工程师应该具备的技能有哪些?我认为,软件工程师用该具备的技能主要为以下几点: 1.编程语言能力 作为一名专业的软件工程师,应该能够熟练掌握JAVA语言,并且能够深入理解OOP、OOA、OOD等编程思想。
精通一门编程语言能为以后的软件开发打下坚实的基础。 2.编码能力 这里说的编码可不是照着书本敲代码,而是能够独立的运用代码,编写一个程序出来。
有很多软件工程师,他们都是随意堆砌网上搜来的代码,根本不管可读性和可维护性,只要能实现功能就行了,缺乏最基本的职责素养。 我认为,对于软件工程师或程序员来说,代码就像自己的孩子一样,一定要付出感情,这样才能编写出好的程序。
3.学习能力 IT技术可谓是更新换代最快的了,从市面上的电脑和手机就可以看出来。所以,只依靠自己之前学到的知识,很快就会被这个时代所淘汰,软件工程师应具备的技能里很重要的一点就是学习能力。
因为只有具备了学习能力,才能在离开学校之后仍然能够独立地学习最新的技术,同时能够自主的发现现在有什么新技术,市场上流行的技术元素与市场需求的变化。 4.设计能力 一个优秀的软件工程师不仅仅具备扎实的专业知识与技能,而且还要具备一定的设计能力。
因为只有这样,才能使一个软件或者应用更加完美,更加容易受到人们的欢迎,从而获得更广阔的市场。 5.团队协作能力 软件开发并不是孤军奋战,很多时候一个软件需要几个人。
当今中国软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己的定义: 软件工程(1)、BarryBoehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。
(2)、IEEE在软件工程术语汇编中的定义:软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究 (3)、FritzBauer在NATO会议上给出的定义:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。 目前比较认可的一种定义认为:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
(4)、《计算机科学技术百科全书》中的定义:软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本。
其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。[编辑本段]目标 软件工程的目标是:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用软件工程性、可适应性、可移植性、可追踪性和可互操作性并且满足用户需求的软件产品。
追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。下面分别介绍这些概念。
(1)可修改性(modifiablity)。容许对系统进行修改而不增加原系统的复杂性。
它支持软件的调试与维护,是一个难以达到的目标。 (2)有效性(efficiency)。
软件系统能最有效地利用计算机的时间资源和空间资源。各种计算机软件无不将系统的时/空开销作为衡量软件质量的一项重要技术指标。
很多场合,在追求时间有效性和空间有效性方面会发生矛盾,这时不得不牺牲时间效率换取空间有效性或牺牲空间效率换取时间有效性。时/空折衷是经常出现的。
有经验的软件设计人员会巧妙地利用折衷概念,在具体的物理环境中实现用户的需求和自己的设计。 (3)可靠性(reliability)。
能防止因概念、设计和结构等方面的不完善造成的软件系统失效,具有挽回因操作不当造成软件系统失效的能力。对于实时嵌入式计算机系统,可靠性是一个非常重要的目标。
因为软件要实时地控制一个物理过程,如宇宙飞船的导航、核电站的运行,等等。如果可靠性得不到保证,一旦出现问题可能是灾难性的,后果将不堪设想。
因此在软件开发、编码和测试过程中,必须将可靠性放在重要地位。 (4)可理解性(understandability)。
系统具有清晰的结构,能直接反映问题的需求。可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植或重用。
(5)可维护性(maintainability)。软件产品交付用户使用后,能够对它进行修改,以便改正潜伏的错误,改进性能和其他属性,使软件产品适应环境的变化,等等。
由于软件是逻辑产品,只要用户需要,它可以无限期的使用下去,因此软件维护是不可避免的。软件维护费用在软件开发费用中占有很大的比重。
可维护性是软件工程中一项十分重要的目标。软件的可理解性和可修改性有利于软件的可维护性。
(6)可重用性(reusebility)。概念或功能相对独立的一个或一组相关模块定义为一个软部件。
软部件可以在多种场合应用的程度称为部件的可重用性。可重用的软部件有的可以不加修改直接使用,有的需要修改后再用。
可重用软部件应具有清晰的结构和注解,应具有正确的编码和较低的时/空开销。各种可重用软部件还可以按照某种规则存放在软部件库中,供软件工程师选用。
可重用性有助于提高软件产品的质量和开发效率、有助于降低软件的开发和维护费用。从更广泛的意义上理解,软件工程的可重用性还应该包括:应用项目的重用,规格说明(也称为规约)的重用,设计的重用,概念和方法的重用,等等。
一般来说,重用的层次越高,带来的效益也就越大。 (7)可适应性(adaptability)。
软件在不同的系统约束条件下,使用户需求得到满足的难易程度。适应性强的软件应采用广为流行的程序设计语言编码,在广为流行的操作系统环境中运行,采用标准的术语和格式书写文档。
适应性强的软件较容易推广使用。 (8)可移植性(portability)。
软件从一个计算机系统或环境搬到另一个计算机系统或环境的难易程度。为了获得比较高的可移植性,在软件设计过程中通常采用通用的程序设计语言和运行环境支撑。
对依赖于计算机系统的低级(物理)特征部分,如编译系统的目标代码生成,应相对独立、集中。这样,与处理机无关的部分就可以移植到其他系统上使用。
可移植性支持软件的课重用性和课适应性。 (9)可追踪性(tracebility)。
根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行逆向追踪的能力。软件可追踪性依赖于软件开发各个阶段文档和程序的完整性、一致性和可理解性。
降低系统的复杂性会提。
01立项调查报告
02立项建议书
03立项评审报告
04项目设计开发任务书
05项目计划
06质量保证计划
07配置管理计划
08需求分析说明书
09概要设计说明书
10详细设计说明书
11数据库设计说明书
12数据库表详细设计
13单元测试计划
14测试脚本
15单元测试报告
16系统测试计划
17验收申请书
18验收评审报告
19客户验收报告
21审核反馈表
22软件评审报告
23变更需求报告
24设计变更报告
26项目管理报告
27项目总结报告
一共这么多,三大报告是
需求分析说明书
概要设计说明书
详细设计说明书
1、论文题目:要求准确、简练、醒目、新颖。
2、目录:目录是论文中主要段落的简表。(短篇论文不必列目录) 3、提要:是文章主要内容的摘录,要求短、精、完整。
字数少可几十字,多不超过三百字为宜。 4、关键词或主题词:关键词是从论文的题名、提要和正文中选取出来的,是对表述论文的中心内容有实质意义的词汇。
关键词是用作机系统标引论文内容特征的词语,便于信息系统汇集,以供读者检索。 每篇论文一般选取3-8个词汇作为关键词,另起一行,排在“提要”的左下方。
主题词是经过规范化的词,在确定主题词时,要对论文进行主题,依照标引和组配规则转换成主题词表中的规范词语。 5、论文正文: (1)引言:引言又称前言、序言和导言,用在论文的开头。
引言一般要概括地写出作者意图,说明选题的目的和意义, 并指出论文写作的范围。引言要短小精悍、紧扣主题。
〈2)论文正文:正文是论文的主体,正文应包括论点、论据、论证过程和结论。主体部分包括以下内容: a.提出-论点; b.分析问题-论据和论证; c.解决问题-论证与步骤; d.结论。
6、一篇论文的参考文献是将论文在和写作中可参考或引证的主要文献资料,列于论文的末尾。参考文献应另起一页,标注方式按《GB7714-87文后参考文献著录规则》进行。
中文:标题--作者--出版物信息(版地、版者、版期):作者--标题--出版物信息所列参考文献的要求是: (1)所列参考文献应是正式出版物,以便读者考证。 (2)所列举的参考文献要标明序号、著作或文章的标题、作者、出版物信息。
需要掌握以下的知识 : (一).NET方面的开发⒈熟悉开发体系,熟悉C# ASP .NET;⒉熟悉SQLServer,Oracle数据库开发;⒊具有企业管理系统项目经验;4.了解企业ERP及财务管理软件(用友,金蝶)者优先;5.善于沟通,能独立撰写方案。
为人诚实,善于学习,做事认真负责,积极主动,具有敬业精神,有团队精神。(二)JAVA应用程序开发1.熟练使用Struts2+Spring+Hibernate2.掌握Jquery3.掌握Java4.熟悉Oracle5.掌握xml/webservice6.掌握OOD、OOP7.基本文档写作能力(三)web、数据库方面的开发⒈练掌握ASP,NET;等编程语言,熟悉.Net开发环境,理解.Net Framework,理解并能熟练使用WebService、O/R mapping、Remoting、多线程等技术;2.热衷于互联网WEB开发,热衷于钻研最新的前沿技术,精通XML,Javascript,CSS,AJAX等WEB前端技术;3.熟练的技术文档编写能力,熟练使用Rose,Power Design,Visio等建模和设计软件,有一定的架构设计能力;4.精通SQL server数据库技术,了解数据库性能调优者优先.(四)php项目开发⒈使用PHP语言开发互联网应用程序;⒉网站产品和网站功能模块的开发与维护;⒊与页面设计师协调沟通,编写部分Javascript和HTML;⒋参与底层MVC框架的编写与维护。
软件工程师一般指从事软件开发职业的人。软件工程师是一个认证考试,具体地说是从事软件职业的人员的一种职业能力的认证,通过它说明具备了工程师的资格。
软件工程师的技术要求是比较全面的,除了最基础的编程语言(C语言/C++/JAVA等)、数据库技术(SQL/ORACLE/DB2等)等,还有诸多如JAVA SCRIPT、AJAX、HIBERNATE、SPRING等前沿技术。此外,关于网络工程和软件测试的其他技术也要有所涉猎。
对于软件工程师,不太重视学历,但并不是对学历没有要求,重点关注项目的经验和学习知识的能力,能否利用软件工程专业知识来解决问题,根据岗位不同,对软件工程师的要求也有所不同。具体能力要根据岗位和自己的兴趣爱好选定自己的职业规划方向,一方面要详细了解软件工程师的要求,可以关注企业的招聘信息;一方面自己要贮备通用的知识技能,广泛阅读相关的计算机材料对自己以后的发展大有帮助。
可以确定的是软件工程师的前途在未来的发展依然是不断升温的职业,比较需要有技术和良好前景的专业之一。工作内容:1、指导程序员的工作;2、参与软件工程系统的设计、开发、测试等过程;3 、协助工程管理人保证项目的质量;4 、负责工程中主要功能的代码实现;5 、解决工程中的关键问题和技术难题;6 、协调各个程序员的工作,并能与其它软件工程师协作工作;7、还要编写各种各样的软件说明书,如:需求说明书,概要说明书等考试科目。
工程师是中级职称,考试的题目包括了计算机体系结构、软件工程、数据库、数据结构、编译原理等计算机学科的基础课程。
计算机软件开发论文软件开发论文:软件工程用于多媒体课件开发的研究摘要:随着计算机技术和通信技术的快速发展,多媒体课件在教育领域中的使用已经非常广泛。由于开发团队及开发方法的不足,导致课件开发的软件危机,体现为开发成本高、周期长、质量低、使用困难等。基于软件工程开发的模式,可以缓解软件危机,提高开发的效率及软件的质量。关键词:软件工程;多媒体课件;软件危机随着计算机技术的突飞猛进,多媒体技术也快速发展着,既而计算机辅助教学广泛普及,各类学科的教学课件应运而生。从理论上讲,大量的教学课件地运用可以减轻教师的工作量,提高教学质量,但实际上,在教学中真正用得好,用得巧的教学课件并不多。开发成本高,软件质量低,重复开发的现象屡见不鲜,很难满足当前日益增长的教学课件的需求。此种不良现象我们称之为“教学软件危机”。要消除此种软件危机,就要有正确的软件开发理念。应用软件工程的思想,可以有效地缓解软件危机,提高多媒体课件开发的成功率[1]。1软件工程基本概念1.1软件工程软件工程(Software Engineering,简称为SE),目前比较认可的定义为:研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,主要应用工程的方法和技术研究软件开发与维护的方法、工具和管理的一门计算机科学与工程学交叉的学科。它涉及计算机、数学及管理学等多个学科,以便帮助人们缓解软件危机带来的问题。1.2软件危机软件危机是指在计算机软件开发和维护过程中出现的一系列严重问题[2],致使整个开发过程混乱不堪,导致开发陷入无法自拔的困境,经济危机主要表现在以下几个方面:1)对软件开发成本和进度难以估量,通常会大幅度超出预期;2)对“已完成的软件”,用户通常不满意;3)软件质量无法保证;4)软件不可维护,升级要重头来过;5)软件没有完整的文档资料。为了缓解软件危机,能够开发出更高质量的软件,软件工程技术的理论充分用于软件开发及维护的整个过程。1.3软件周期软件生命周期(SDLC,软件生存周期)是软件的产生直到报废的生命周期,周期内有需求分析、设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。但随着新的面向对象的设计方法和技术的成熟,软件生命周期设计方法的指导意义正在逐步减少。2多媒体课件的概念课件是凡具备一定教学功能的教学软件都称之为课件[3]。课件像学习者呈现出学习的内容,学习质量的检测、反馈和指导。多媒体课件是将多媒体技术引入到计算机辅助教育的课件中。课件的形式内容单调,如练习程序、测试程序以及现在出现的大量面向信息的产品,如电子百科等。多媒体课件表现内容的形式多姿多彩,多媒体技术在计算机辅助教学的人-机交互中的巨大潜力主要在于它能提高对信息表现形式的选择和控制能力,同时也能提高信息表现形式与人的逻辑思维和创造能力的结合程度,在顺序、符号信息等方面扩展人的信息处理能力。为了适应教育教学的发展,越来越需要更丰富多彩的多媒体课件,这就对多媒体课件有了更多的需求,为了开发出更高质量的多媒体课件,我们就需要从软件工程的角度来进行开发。3基于软件工程的多媒体课件开发过程多媒体课件设计是课件开发的重要环节,多媒体课件设计的好坏直接决定着课件的质量。多媒体课件也是一种软件,我们可以从软件工程的角度来开发多媒体课件,其必须遵从软件生命周期。同时我们要从教育学和心理学的角度来充分考虑相关的因素。多媒体课件的开发通常划分为以下5个阶段。3.1教学需求分析需求分析是把软件功能和性能的总体概念描述为具体的软件需求规格说明,以此奠定软件开发的基础。教学需求分析仍然遵循软件工程的思想,它的主要任务是论证多媒体课件开发的可行性和必要性。3.1.1问题的定义这个阶段要弄清的是“要解决的问题是什么”[3]。要清晰地知道这个课件的开发要解决什么教学问题。如果不弄清楚,而盲目的开发,只会浪费时间资金等等资源。所以这个阶段一定要确定的得出问题的定义。这是此次多媒体课件开发的首先要弄清楚的问题。3.1.2可行性分析既然已经知道了“问题的定义”,接下来就要进行可行性分析,解决这个课件开发的必要性和可行性。为了文成这个任务,需要专职人员进行大量的市场调查和研究,初步给出整个课件的开发的概况,一个雏形。这个阶段进行的比较短,主要是研究问题是否有解,是否有可行的办法。这个阶段决定了多媒体课件是否继续的关键。3.2课件的教学设计经过需求分析阶段的工作,系统必须做什么已经清楚了,总体设计阶段就是决定怎么做的时候了。总体设计的基本目的就是回答“概括的话,系统该如何实现?”这个问题[4]。这个阶段主要是:1)划分出组成系统的物理元素———程序、文件、数据库、人工过程和文档等;2)设计系统的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。4总体设计阶段的工作步骤1)寻找实现系统的各种不同的解决方案,参照需求分析阶段得到的数据流图来做。2)分析员从这些供选择的方案中选出若干个合理的方案进行分析,为每个方案都准备一份系统流程图,列出组成系统的所有物理元素,进行成本\效益分析,并且制定这个方案的进度计划。3)分析员综合分析比较这些合理的方案,从中选择一个最佳方案向用户和使用部门负责人推荐。4)对最终确定的解决方案进行优化和改进,从而得到更合理的结构,进行必要的数据库设计,确定测试要求并且制定测试计划。从上面的叙述中不难看出,在详细设计之前先进行总体设计的必要性,经过需求分析,确定课件开发的目标与规模。继而进行教学设计,教学设计也遵循软件工程的思想,是分为教学的逻辑设计和教学单元设计。比如《软件工程》这门课的教学软件按照其目标和功能划分为以下模块。5教学逻辑设计教学逻辑设计的主要任务是按照教学需求分析所确定的开发目标,对课件进行总体设计,分为教学设计和风格设计两个部分[5]。5.1教学设计1)确定教学目标;2)划分教学单元;3)编排教学单元顺序绘制教学单元流程图;4)确定课件的教学方式和结构类型;5)确定学生信息模型。5.2风格设计指的是课件在展现教学内容、人机交互活动、调度控制方式等有关问题的处理时遵循的格调。1)教学单元课时的长短;2)人机界面;3)交互活动层次;4)教学单位的调度方式;5)课件运行的系统环境;6)课件发行的文字资料。6教学单元设计教学单元设计解决的是课件的详细设计的问题。教学单元是课件进行教学的基本单位,在教学设计中要确定各教学单元的信息结构,详细列出所包含的教学内容,确定它们的屏幕设计和呈现顺序。7多媒体素材的采集和加工前期工作已完成,接下来要进入程序的编制过程,根据脚本的要求,搜集整理相关的媒体素材,素材尽量做到积件式,以便提高素材的重用率,降低软件文本的体积。8合成工作人员根据前期的设计,即框架及表现风格等内容,对其进行编程,将确定的素材进行制作运用,然后把各个子模块分别进行测试和调试,以便进行综合测试,进行调整[6]。9运行维护教学软件运行正常,可对其发布,学科是不断变化的,教学软件也是应运而生的,所以要对其进行不断的完善和维护。10小结软件开发是一项系统工程,需要各个方面的积极配合,方可开发出高质量的教学课件。在开发过程中,软件的方法极为重要,那么软件方法也是人们在长期的工作中不断积累的宝贵经验。把软件工程的理论用于多媒体教学课件的开发中,有利于提高软件成功率,以便摆脱教学软件的危机的出现,提高教学软件的质量。参考文献:[1]陈兵.软件工程在教学软件开发中的应用[J].广西教育学院学报,2007(2).[2]金铁.用软件工程学原理提高多媒体软件开发质量[J]电脑知识与技术,2009 5(11).[3]林士敏,朱新华,覃德泽,等.计算机辅助教学[M].广西:广西科学技术出版社,2007:66-70.[4]郑人杰,殷人昆.软件工程概论[M].北京:清华大学出版社,1998.[5]陈雄峰.多媒体课件设计与制作[J].福建电脑,2003(2):41-43.[6]檀兴邦.多媒体课件制作略谈[J].陕西教育,2003(3):36.
这事还是得靠自己。。