蔷薇朵朵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)。根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行逆向追踪的能力。软件可追踪性依赖于软件开发各个阶段文档和程序的完整性、一致性和可理解性。降低系统的复杂性会提高软件的可追踪性。软件在测试或维护过程中或程序在执行期间出现问题时,应记录程序事件或有关模块中的全部或部分指令现场,以便分析、追踪产生问题的因果关系。 (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方法特别强调的四个准则—“沟通、简单、反馈和勇气上有所体现。目前有一些人认为,重量级方法合于大型的软体团队(数十人以上)使用,而“轻量级方法”适合小型的软体团队(几人、十几人)使用。当然,关于重量级方法和轻量级方法的优劣存在很多争论,而各种方法也在不断进化中。 一些方法论者认为人们在开发中应当严格遵循并且实施这些方法。但是一些人并不具有实施这些方法的条件。实际上,采用何种方法开发软体取决于很多因素,同时受到环境的制约淡然最重要还是自己的努力和勤奋。
咪咪妈咪贝贝哄
数据挖掘在软件工程技术中的应用毕业论文
【 摘要 】计算机技术在发展,软件也发展的越来越复杂,而系统开发工作也显得更加重要。信息技术的广泛应用会产生大量数据,通过对数据进行挖掘,分析其存在的规律,对实现数据资源的有效利用意义重大。本文就数据挖掘技术在软件工程中的应用作简要阐述。
【 关键词 】数据挖掘技术;软件工程中;应用软件技术
随着信息技术发展而快速发展,但是其可控性并不是特别强。软件在应用过程中会产生大量数据,数据作为一种宝贵的资源,有效的利用可以带来价值增值。作为软件开发行业,数据挖掘技术应用则实现了数据资源的有效利用,通过对其中规律进行研究,为软件工程提供相应指导,并且对于系统故障能够有效处理,成本评估的有效性也能够提升。
1数据挖掘技术应用存在的问题
信息数据自身存在的复杂性
软件工程所包含的数据可以分为两个类别,结构化与非结构化。在非结构化数据中软件代码发挥着重要作用。而对结构化数据产生影响的则是软件版本信息。结构与非结构化数据二者之间联系非常密切。实现数据有效利用就需要通过一定技术找出其中的规律。数据挖掘技术则刚好满足需求。利用该技术对结构与非结构化数据进行整合,提升其使用的有效性。
在评价标准方面缺乏一致性
数据挖掘技术在生活中的应用比较广泛,通过该技术应用能够更好的对实际情况进行评价,从而对结果进行优化。但是由于没有统一标准,导致了软件信息复杂。而在表述方式方面自身又存有差异性。信息获取者无法有效的对信息进行应用及对比。而信息缺乏统一标准的原因就在于评价方式不一致。
2数据挖掘技术在软件工程中的应用
数据挖掘执行记录
执行记录挖掘主要是对主程序的路径进行分析,从而发现程序代码存有的相关关系。其实质是通过对相关执行路径进行分析,并进行逆向建模,最终达到目的。作用在于验证,维护,了解程序。记录挖掘的过程通常是对被分析的系统进行初步插装,之后是记录过程,该过程在执行上一步程序后,对应用编程接口,系统,模块的状态变量记录,最后是对所得到的信息进行约简,过滤,聚类。最终得到的模型能够表达系统的特征。
漏洞检测
系统或是软件自身都会存在漏洞,漏洞自身具一定的隐蔽性,由于人的思维存在某些盲区,无法发现漏洞的存在,就需要借助于某些软件。检测漏洞的目的就在于找出软件中存在的漏洞及错误,并对其进行修复,从而保证软件质量与安全。将数据挖掘技术应用于软件检测,首先要确定测试项目,结合到用户需要,对测试内容进行规划,从而确定测试方法,并制定出具体方案。测试工作环节主要是对数据进行清理与转换,其基础在于漏洞数据收集,通过对收集与采集的信息进行清理,将与软件数据有关联同时存在缺陷的数据筛选出来,而将剩余无数据清理,对丢失项目采取相应措施补充,将其属性转换为数值表示。之后是选择适当的'模型进行训练与验证,该环节要结合到项目实际的需要选择挖掘方式,通过对不同数据结果进行分析与比较找到最适合的方式。之后则是重复应用上述方法,对软件存在的漏洞进行定位与检测。并将与之对应的数据收集于软件库,在对漏洞进行描述的基础上分类,最后将通过挖掘得到的知识应用到测试的项目中.
开源软件
对于开源软件的管理由于其自身的开放,动态与全局性,需要与传统管理软件进行区别对待,一般情况下,成熟的开源软件对于软件应用记录较为完整,参与的内容包括了错误报告,开发者活动。参与开发的工作人员会处在动态变化之中,存在动态变化的原因就在于软件的开放性。同时对于软件中动态性特征的挖掘,可达到对开源软件进行优质管理的目标。
版本控制信息
为了保证参与项目人员所共同编辑内容的统一性,就需要对系统应用进行控制。软件开发工程应用中,开发工作管理与保护都会通过版本控制系统来实施。并且其应用方式主要是对变更数据挖掘,找出不同模块及系统存在关系,并对程序中可能会存在的漏洞进行检测。此类技术的应用,使得系统后期维护成本被有效的降低,而对后期变更产生的漏洞也有一定的规避作用。
3数据挖掘在软件工程中的应用
关联法
该方法作用在于寻找数据中存在的相关联系与有趣关联。而体现的关联规则有两个明显的特征。①支持度;②信度。前者表示在某个事物集中,两个子集出现的概率是相同的。而后者则表明了某事物在事物集中出现的概率,而另一事物也会出现。
分类方法
该方法主要是应用于分类标号与离散值的操作。该方法的操作步骤是,首先要建立相应的模型,对数据进行描述,并利用模型对其进行分类。在分类方法选择方面,常用的有判定树法,贝叶斯法,支持项量机法等。判定树法应用的基础是贪心算法。
聚类方法
该方法常用的有划分方法,基于密度,模型,网格的方法与层次方法。聚类分析输入的是一组有序对,有序对中的数据分别表示了样本,相似度。其基本的应用理论是依据不同的对象数据予以应用。
4数据挖掘在软件工程中的应用
对克隆代码的数据挖掘
在软件工程中最为原始的是对克隆代码的检查测试。就其方式而言有文本对比为基础,标识符对比为基础。前者是利用系统中程序代码包含的语句进行判断。该方法在后期改进过程中主要是对字符串匹配效率进行提升。实际应用过程中是通过相关函数匹配对效率进行优化。
软件数据检索挖掘
该方法同样是软件工程中原始的挖掘需求之一。该方法在应用时主要有以下三个步骤。
①数据录入。其实质是对需要检索的信息录入,并结合到使用者需要在数据中查找使用者需要的数据。
②信息查找过程。确认了用户需要查找的信息后,系统将依据信息内容在数据库中进行查找,并分类罗列。
③信息数据导出与查看。用户可以依据自身需要将数据导出或者是在线查看。数据在导出时会形成相应的记录,客户再次进行查找时就会更加的方便与快捷。而将数据导出则需要利用到相关的软件。
应用于设计的三个阶段
软件工程有许多关于软件的资料,资料通常是存放于代码库中。数据运用可以提升工作效率。软件工程每一次循环都会产生大量的数据。基于软件工程生命周期可以将其分为分析设计,迭代的开发,维护应用三个阶段。
面向项目管理数据集的挖掘
软件开发工作到目前已经是将多学科集中于一体。如经济学,组织行为学,管理学等。对于软件开发者而言,关注的重点除过技术方面革新外,同时也需要科学规范的管理。除过对于版本控制信息挖掘外,还有人员组织关系挖掘。对于大规模的软件开发工作而言,对人力资源的有效分配与协调也是软件工作领域需要面对的问题。例如在大型系统开发过程中,往往会有许多人参与其中,人员之间需要进行沟通交流。交流方式包括了面对面沟通,文档传递,电子信息等。通过对人员之间的关系进行挖掘,有利于管理工作开展。员工群体存在的网络是社会网络。通过人员合理组织与分配,将会影响到项目进度,成本,成功的可能性。而对该方面实施研究通常采用的是模拟建模。
5结束语
软件工程技术在生活中许多领域都有广泛的应用,数据挖掘作为其中的一项技术,其重要性及作用随着技术发展而表现的越加明显。为了保证挖掘技术的可靠性与高效,与其它工程技术有一定融合性。数据挖掘在实际应用工作中体现出了巨大的经济效益,因此应该大力推进其应用的范围,并拓展其应用的深度与层次。
参考文献
[1]李红兰.试论数据挖掘技术在软件工程中的应用综述[J].电脑知识与技术,2016(34).
[2]雷蕾.关于数据挖掘技术在软件工程中的应用综述究[J].电子测试,2014(02).
[3]孙云鹏.数据挖掘技术在软件工程中的应用综述[J].中国新通信,2015(15).
你好,我在中国知网搜的[1] 朱利娜,周宁. 软件项目管理的思考[J]. 平原大学学报, 2007,(02) . [2] 罗铁清,王莹,王如龙. 软件项目管理流
有,最起码了解项目进程及项目阶段性的进展过程。另外在软件测试中遇到的问题,在项目管理中可以提前规避。
这里可以下载到
工程管理是保障工程项目顺利进行的贡必要条件,是工程质量、工程进度和工程投资效益取得成效的基础,有效的采取及利用工程管理技术进行工程建设管理,有利于提高工程管理的
探析软件项目管理中的PERT技术应用论文 软件项目管理是通过对项目参与人员、项目目标产品、实施过程和项目本身进行前期评估和开发阶段的管理等方式,确保项目能够在规