软件技术是一个发展变化非常快的行业,软件人才要按照企业和领域需求来确定培养的方向。下面是由我整理的软件技术论文范文,谢谢你的阅读。
浅谈软件项目估算技术
摘 要:由于软件产品自身的特殊性,导致软件项目的估算工作进行困难,估算结果准确性差。为了解决这一问题,产生了很多不同的软件项目估算技术,本文对各种估算技术的主要思想及其优缺点进行简单的阐述。尤其是对功能点估算技术,本文做了详细的介绍,并通过实例加以说明其应用方法。
关键词:规模估算;成本估算;实例应用
中图分类号:TP311.5
软件项目的估算历来是比较复杂的事,因为软件本身的复杂性、历史经验的缺乏、估算工具缺乏以及一些人为错误,导致软件项目的估算往往和实际情况相差甚远。因此,估算错误已被列入软件项目失败的四大原因之一。由此,也证明了正确对软件项目进行估算是何等重要。
在软件项目管理中,估算就是对项目将持续多长时间或花费多少成本的预测。所以说,估算正是一种对未来的预测。从这里也看以看出估算的重点就在“工作量估算”或“成本估算”,而在对这两者进行估算的过程中大多数情况下都少不了“软件规模”这个条件,所以本文将软件估算分为两种类型,第一个种是软件项目规模的估算,第二种是将估算得出的规模转换为工作量的估算或成本的估算。目前使用比较广泛的规模估算技术,如:代码行估算技术、功能点估算技术;而使用比较广泛的成本估算技术,如:COCOMO算法模型估算技术。
除了上述所列举的几种技术外,还有几种估算技术既可以用于估算规模,也可直接应用与估算工作量或估算成本,如:Delphi估算法、类比估算技术、PERT估算技术。这几种估算技术不似前面所列的技术,比较有针对行,且有具体的计算过程、计算公式。这几种技术只是一种思想,依据某个选定的科目进行估算。下面本文将简单介绍上述提到的几种估算技术,并通过具体的实例重点阐述功能点估算技术。
1 估算技术简介
1.1 代码行估算技术。代码行(LOC)指所有的可执行的源代码行数,包括可交付的工作控制语言(JCL:Job Control Language)语句、数据定义、数据类型声明、等价声明、输入/输出格式声明等[1]。代码行估算技术主要是估算软件的规模,即通过该技术估算待研发软件项目有多少行代码。一般为了方便表示,使用较大的单位千代码行(KLOC)来表示待研发软件项目的规模大小。这种方法比较适用于有经验积累和开发模式稳定的公司。如果是新成立公司,使用这种估算技术则会存在很大误差,加大项目失败的风险。
1.2 功能点估算技术。功能点法是一种经过实践验证的方法,但应用成本很高,估算的工作量投入也较大。功能点估算技术最终结果是规模,仍然需要知道项目的生产率数据才能得出实际的工作量。功能点估算技术将系统功能分为输入、输出、查询、外部文件和内部文件5种类型。其中,输入是一个数据跨越系统边界,从外部到内部的基本数据处理过程。数据的来源可以是人机输入界面/接口,或是另一个应用系统;输出是一个衍生数据跨越系统边界,从内部到外部的基本数据处理过程。这些输出的数据可能会产生报表,或发到其他外部系统的输出文件;查询是一个不包含衍生数据和数据维护的基本数据处理过程,包括输入和输出两部分;内部文件存在于系统边界之内,用户可识别的一组逻辑上相互关联的数据;外部文件存在于系统边界之外,用户可识别的一组逻辑上相互关联的数据。使用功能点估算技术估算的大概步骤为:
(1)通过需求分析将系统功能按照上述5种类型进行分类。
(2)分析每个功能项的复杂程度,大致分为一般、简单、复杂三种类型,每一种类型都对应一个权重值,具体如表1。
(3)根据每个功能项的复杂权重值,求出功能项的加权和,即为未调整功能点数(UFC)。
(4)分析该系统的技术复杂度,功能点估算将与系统相关的技术影响因素分为14组(用Ai表示),每个分为6个级别,权重分别从0至5。根据分析结果及公式计算技术复杂度因子(TCF),即TCF=0.65+0.01(SUM(Ai))。
(5)将UFC与TCF相乘即为功能点数。
1.3 COCOMO算法模型。Cocomo模像是一个分层次的系列软件成本估算模型,包括基本模型、中级模型和详细模型3个子模型。3个模型采用同一个计算公式,即E=asb×EAF[2]。其中,E是以人月为单位的工作量;S是以KLOC为单位的程序规模;EAF是一个工作量调整因子,在基本模型中该项值为1,中级模型和详细模型中根据成本驱动因素确定;a和b是随开发模式而变化的因子,这里开发模式被分为3中类型,即有机式、半分离式和嵌入式。
Cocomo算法模型是一种精确易用的估算方法,如果项目没有足够多的历史数据,会使得各调整因子和系数很难确定,进而使得估算比较困难。但是一旦项目建立起这种模型,则通过Cocomo模型得出的项目工作量和项目周期具有更高的准确度。
1.4 Delphi估算技术。Delphi估算技术又被成为专家估算技术,它是由一个被认为是该任务专家的人来进行估算,且估算过程很大一部分是基于不清晰,不可重复的推理过程,也就是直觉。所以该技术中专家“专”的程度及对项目的理解程度是该技术的重点,也是难点,它的好坏直接影响估算结果的准确程度。
Delphi估算技术估算过程并不像功能点估算技术或COCOMO算法模型那样,有明确的计算方法或计算公式。它是将待估算的项目的相关信息发给专家,专家估算后由专门的负责人进行汇总,然后再发给专家估算,反复几次后得到一个估算结果,可见只是一种思想,所以它除了用来估算规模,也可以用来估算成本、风险等,即对选定的某个科目进行估算。
1.5 类比估算技术。“类比估算”,顾名思义是通过同以往类似项目(如应用领域、环境和复杂程度等)相比较得出估算结果。类比估算技术是一种粗略的估算方法,它估算结果的精确度取决于历史项目数据的完整性和准确度。类比估算技术与Delphi估算技术类似,它的用途不仅仅用在规模估算上,也可以估算成本、工作量等。 1.6 PERT估算技术。PERT估算技术,又称为计划评审估算技术,它对需要估算的科目(如规模、成本、工期等)按三种不同情况估算:一个乐观估算结果,一个最可能估算结果,一个悲观估算结果。再通过这三个结果计算得到一个期望规模和标准偏差。这种估算技术可以用于估算规模,同样也可以用于估算工期,相比较来说PERT技术估算的结果比类比估算技术的结果要更准确。
2 功能点估算技术应用实例
假设某员工管理系统,经过需求分析得知,该系统所包含功能如下:
(1)员工信息维护:添加员工、修改员工信息、查询员工信息;
(2)部门信息维护:添加部门、修改部门信息;
(3)工资统计:统计员工年薪,并打印输出。
其中,在该系统中添加一个员工资料,会使用到员工的基本信息:员工ID(标签控件)、姓名、性别、年龄、婚否、部门ID;教育情况:学校名称、所学专业、学历。对部门的维护会使用到部门的信息:部门ID(标签控件)、部门名称。员工工资信息由另外一个财务系统提供,工资表信息有员工的基本信息:员工ID(标签控件)、姓名、部门名称;工资信息:工资级别、工资金额。
根据功能点估算技术估算步骤,首先计算未调整功能点数,即各种类型功能项的加权和,分析该系统6个功能项所属类型及其复杂权重值如表2:
假设该项目的14个技术复杂度因子均为“有一定影响”,即权重值均为2,则该项目功能点数为:FP=45×(0.65+0.01×14×2)=41.85。如果知道该项目使用何种语言,可以将功能点数转换为代码行数。
3 结语
本文对目前比较流行的几种软件项目估算技术做了简单介绍。重点讲述了功能点估算技术,并通过一个实例演示了功能点估算技术的应用方法。通过本文描述可以看出每种项目估算技术都有其自己的优缺点,如果想要得到比较准确的估算结果,不能仅靠一种估算技术,而应该综合运用各种估算技术,才能得到比较全面的信息和比较准确的结果。目前,也有一些基于这些估算技术的思想的自动化估算工具产生,相信通过不断的发展,将解决软件项目成本估算难的问题。
参考文献:
[1]朱少民.软件项目管理[M].北京:清华大学出版社,2009-11.
[2]覃征等.软件项目管理[M].北京:清华大学出版社,2004.
[3]李明树,何梅,杨达,舒风笛,王青.软件成本估算方法及应用[J].Journal of Software,Vol.18, No.4, April 2007,775-795.
[4]The David Consulting Group ,Function Point Counting Practices Manual Release 4.2.1,January 2005,
[5]刘谦.软件项目估算方法在敏捷开发中的实践.中国管理网,2010-06-18.
作者简介:王颖,女,研究生,软件工程专业;江文焱,男,研究生,软件工程专业。
点击下页还有更多>>>软件技术论文范文
数据挖掘在软件工程技术中的应用毕业论文
【 摘要 】计算机技术在发展,软件也发展的越来越复杂,而系统开发工作也显得更加重要。信息技术的广泛应用会产生大量数据,通过对数据进行挖掘,分析其存在的规律,对实现数据资源的有效利用意义重大。本文就数据挖掘技术在软件工程中的应用作简要阐述。
【 关键词 】数据挖掘技术;软件工程中;应用软件技术
随着信息技术发展而快速发展,但是其可控性并不是特别强。软件在应用过程中会产生大量数据,数据作为一种宝贵的资源,有效的利用可以带来价值增值。作为软件开发行业,数据挖掘技术应用则实现了数据资源的有效利用,通过对其中规律进行研究,为软件工程提供相应指导,并且对于系统故障能够有效处理,成本评估的有效性也能够提升。
1数据挖掘技术应用存在的问题
1.1信息数据自身存在的复杂性
软件工程所包含的数据可以分为两个类别,结构化与非结构化。在非结构化数据中软件代码发挥着重要作用。而对结构化数据产生影响的则是软件版本信息。结构与非结构化数据二者之间联系非常密切。实现数据有效利用就需要通过一定技术找出其中的规律。数据挖掘技术则刚好满足需求。利用该技术对结构与非结构化数据进行整合,提升其使用的有效性。
1.2在评价标准方面缺乏一致性
数据挖掘技术在生活中的应用比较广泛,通过该技术应用能够更好的对实际情况进行评价,从而对结果进行优化。但是由于没有统一标准,导致了软件信息复杂。而在表述方式方面自身又存有差异性。信息获取者无法有效的对信息进行应用及对比。而信息缺乏统一标准的原因就在于评价方式不一致。
2数据挖掘技术在软件工程中的应用
2.1数据挖掘执行记录
执行记录挖掘主要是对主程序的路径进行分析,从而发现程序代码存有的相关关系。其实质是通过对相关执行路径进行分析,并进行逆向建模,最终达到目的。作用在于验证,维护,了解程序。记录挖掘的过程通常是对被分析的系统进行初步插装,之后是记录过程,该过程在执行上一步程序后,对应用编程接口,系统,模块的状态变量记录,最后是对所得到的信息进行约简,过滤,聚类。最终得到的模型能够表达系统的特征。
2.2漏洞检测
系统或是软件自身都会存在漏洞,漏洞自身具一定的隐蔽性,由于人的思维存在某些盲区,无法发现漏洞的存在,就需要借助于某些软件。检测漏洞的目的就在于找出软件中存在的漏洞及错误,并对其进行修复,从而保证软件质量与安全。将数据挖掘技术应用于软件检测,首先要确定测试项目,结合到用户需要,对测试内容进行规划,从而确定测试方法,并制定出具体方案。测试工作环节主要是对数据进行清理与转换,其基础在于漏洞数据收集,通过对收集与采集的信息进行清理,将与软件数据有关联同时存在缺陷的数据筛选出来,而将剩余无数据清理,对丢失项目采取相应措施补充,将其属性转换为数值表示。之后是选择适当的'模型进行训练与验证,该环节要结合到项目实际的需要选择挖掘方式,通过对不同数据结果进行分析与比较找到最适合的方式。之后则是重复应用上述方法,对软件存在的漏洞进行定位与检测。并将与之对应的数据收集于软件库,在对漏洞进行描述的基础上分类,最后将通过挖掘得到的知识应用到测试的项目中.
2.3开源软件
对于开源软件的管理由于其自身的开放,动态与全局性,需要与传统管理软件进行区别对待,一般情况下,成熟的开源软件对于软件应用记录较为完整,参与的内容包括了错误报告,开发者活动。参与开发的工作人员会处在动态变化之中,存在动态变化的原因就在于软件的开放性。同时对于软件中动态性特征的挖掘,可达到对开源软件进行优质管理的目标。
2.4版本控制信息
为了保证参与项目人员所共同编辑内容的统一性,就需要对系统应用进行控制。软件开发工程应用中,开发工作管理与保护都会通过版本控制系统来实施。并且其应用方式主要是对变更数据挖掘,找出不同模块及系统存在关系,并对程序中可能会存在的漏洞进行检测。此类技术的应用,使得系统后期维护成本被有效的降低,而对后期变更产生的漏洞也有一定的规避作用。
3数据挖掘在软件工程中的应用
3.1关联法
该方法作用在于寻找数据中存在的相关联系与有趣关联。而体现的关联规则有两个明显的特征。①支持度;②信度。前者表示在某个事物集中,两个子集出现的概率是相同的。而后者则表明了某事物在事物集中出现的概率,而另一事物也会出现。
3.2分类方法
该方法主要是应用于分类标号与离散值的操作。该方法的操作步骤是,首先要建立相应的模型,对数据进行描述,并利用模型对其进行分类。在分类方法选择方面,常用的有判定树法,贝叶斯法,支持项量机法等。判定树法应用的基础是贪心算法。
3.3聚类方法
该方法常用的有划分方法,基于密度,模型,网格的方法与层次方法。聚类分析输入的是一组有序对,有序对中的数据分别表示了样本,相似度。其基本的应用理论是依据不同的对象数据予以应用。
4数据挖掘在软件工程中的应用
4.1对克隆代码的数据挖掘
在软件工程中最为原始的是对克隆代码的检查测试。就其方式而言有文本对比为基础,标识符对比为基础。前者是利用系统中程序代码包含的语句进行判断。该方法在后期改进过程中主要是对字符串匹配效率进行提升。实际应用过程中是通过相关函数匹配对效率进行优化。
4.2软件数据检索挖掘
该方法同样是软件工程中原始的挖掘需求之一。该方法在应用时主要有以下三个步骤。
①数据录入。其实质是对需要检索的信息录入,并结合到使用者需要在数据中查找使用者需要的数据。
②信息查找过程。确认了用户需要查找的信息后,系统将依据信息内容在数据库中进行查找,并分类罗列。
③信息数据导出与查看。用户可以依据自身需要将数据导出或者是在线查看。数据在导出时会形成相应的记录,客户再次进行查找时就会更加的方便与快捷。而将数据导出则需要利用到相关的软件。
4.3应用于设计的三个阶段
软件工程有许多关于软件的资料,资料通常是存放于代码库中。数据运用可以提升工作效率。软件工程每一次循环都会产生大量的数据。基于软件工程生命周期可以将其分为分析设计,迭代的开发,维护应用三个阶段。
4.4面向项目管理数据集的挖掘
软件开发工作到目前已经是将多学科集中于一体。如经济学,组织行为学,管理学等。对于软件开发者而言,关注的重点除过技术方面革新外,同时也需要科学规范的管理。除过对于版本控制信息挖掘外,还有人员组织关系挖掘。对于大规模的软件开发工作而言,对人力资源的有效分配与协调也是软件工作领域需要面对的问题。例如在大型系统开发过程中,往往会有许多人参与其中,人员之间需要进行沟通交流。交流方式包括了面对面沟通,文档传递,电子信息等。通过对人员之间的关系进行挖掘,有利于管理工作开展。员工群体存在的网络是社会网络。通过人员合理组织与分配,将会影响到项目进度,成本,成功的可能性。而对该方面实施研究通常采用的是模拟建模。
5结束语
软件工程技术在生活中许多领域都有广泛的应用,数据挖掘作为其中的一项技术,其重要性及作用随着技术发展而表现的越加明显。为了保证挖掘技术的可靠性与高效,与其它工程技术有一定融合性。数据挖掘在实际应用工作中体现出了巨大的经济效益,因此应该大力推进其应用的范围,并拓展其应用的深度与层次。
参考文献
[1]李红兰.试论数据挖掘技术在软件工程中的应用综述[J].电脑知识与技术,2016(34).
[2]雷蕾.关于数据挖掘技术在软件工程中的应用综述究[J].电子测试,2014(02).
[3]孙云鹏.数据挖掘技术在软件工程中的应用综述[J].中国新通信,2015(15).
软件工程论文题目
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科,我们看看下面的软件工程论文题目吧!
1、基于手机APP的中医移动健康管理平台探索
2、基于案例驱动法的软件工程课程影响因素实证分析
3、基于LAN的农业科技信息管理系统的研发
4、基于平板电脑的森林资源信息外业采集APP设计关键技术研究
5、基于物料的生产管理系统设计
6、ICE在模拟训练系统消息中间件中的应用
7、指纹考勤系统的设计与实现
8、基于Android平台的通用Adapter适配器的设计与实现
9、基于TMap的软件测试模型的分析研究
10、计算机软件开发技术现状及应用实践探究
11、基于SOC的智能野外目标监视和记录系统设计与实现
12、分析机械传动装置模块化设计系统的开发
13、舰船平台管理网络技术研究
14、基于分支相关性分析的不可达路径检测方法
15、基于求解开销预测的符号执行搜索策略研究
16、数字化装配管理系统研究与实现
17、基于小波神经网络对软件可靠性模型的研究
18、基于藏语学习的Android平台的研究与开发
19、基于交互技术移动端个人形象管理的应用与研发
20、基于JAVA+STRUTS的科技计划项目评估管理信息系统实现与安全设计
21、基于J2EE技术的计算机教研管理平台的设计与实现
22、采用COSMIC方法测量企业移动应用软件功能规模
23、基于Android平台的旅游系统的设计
24、基于SVG-JS技术的项目任务管理设计
25、基于凌一揆的中医药传承信息平台的构建
26、依托信息技术优化中药饮片发药流程
27、轨道交通工程Revit快速建模工具集开发
28、基于LabVIEW下嵌入式系统实验平台的设计与实现分析
29、多终端数字皮影交互系统的设计与实现
30、中小学食品配送质量管理及溯源系统开发与应用
31、CDIO理念下构建软件人才孵化中心
32、基于项目导向模式的软件技术专业教学方法探讨
33、基于Unity3D齿轮油泵交互式多媒体课件的设计与实现
34、基于文本服务框架的拼音输入法研究与实现
35、医院消毒器械管理追踪系统的设计与开发
36、面向Android的电子商务移动客户端的设计与开发
37、面向数据的软件工程方法研究
38、层次分析法在飞行模拟训练评价体系设计中的应用
39、基于ExcelVBA的企业员工年假统计系统设计与实现
40、PHP技术在在线考试系统开发中的应用研究
41、检察院审讯系统中即时通讯工具研究与实现
42、浅析移动实习就业跟踪系统的开发与应用
43、轨道交通工程Revit族库系统设计与开发
44、基于SSH的教室信息管理系统设计与实现
45、高校数字化校园中数据交换和共享平台的实现
46、软件算法相关技术探究
47、基于统计调查问卷的手机APP使用现状研究
48、关于对新形势下电子商务软件测试的`研究
49、软件项目管理中的进度管理
50、试析PLC和计算机间串行通讯方式及程序设计
51、浅析基于安卓系统的移动互联网集成平台开发设计
52、多线程技术在Android手机开发中的运用
53、JavaScript程序动态切片技术的研究
54、基于SmartAdmin的数据维护软件前台的快速构建
55、医院预授权结算系统的设计和实现
56、浅析计算机软件工程的管理和应用
57、生物计算下的分布式计算系统设计及实现
58、浅议广东省气象局科研管理系统管理技术
59、系统集成在城市轨道交通建设中的应用
60、JavaWeb开发中文件上传方法研究与实现
61、基于Web的Word文档管理系统设计
62、高校移动图书馆管理系统的设计与实现
63、基于移动互联网的考试平台设计与实现
64、智慧教室移动端管理平台开发
65、云计算环境下的软件测试服务分析
66、基于安卓系统的新能源电站移动数据库系统的设计
67、基于树型结构模型足球成绩系统的研究与设计
68、中小企业管理信息系统的功能设计
69、数据结构课程中栈和队列实验教学方案设计
70、基于需求模型的航天软件测试用例生成方法
71、酒店电能管理系统的设计与实现
72、基于VSTO技术的Office计时器插件的设计与实现
73、基于分布式结构的医学影像归档和通信系统设计
74、一种基于移动手机的大学生体质测试软件设计
75、移动APP在数字器检中的应用及意义
76、电子护理文书质控管理平台建设
77、基于手机客户端APP的移动学习资源开发研究
78、刍议软件无形性对计算机科学和软件工程教育的影响
79、电气技术人员提高PLC编程能力的思考
80、基于移动化、云化的轨道交通工程建设管理信息化架构设计
81、基于iOS的个人健康管理系统客户端的开发
82、预防性维护管理与设备管理系统的集成性分析
83、试论软件工程保护中软件防篡改技术
84、基于TCSP的实时并发系统测试方法
85、MapWindowGIS插件机制及应用
86、基于Android的手机助手设计的研究
87、档案自动化管理系统
88、基于LabVIEW技术的宏观观测动物信息管理系统研究
89、特种设备作业人员动态管理系统设计
90、基于时间索引的0-N数据结构在序列模式挖掘算法中的应用
91、基于Linux的USB摄像头驱动程序的实现
92、基于Android系统的主变差动保护装置调试软件研究及应用
93、环境保障信息传输与控制中间件研制综述
94、三维模型与属性数据同步的批处理方法研究
95、权限管理在成绩管理系统中的设计与实现
96、基于移动物联的安全生产数据服务云平台的设计与实现
97、单链表辅助教学系统的设计与实现
98、软件开发质量管理研究
99、影楼后期物件管理系统设计
100、一种基于三角形非结构化网格SIMPLE算法的程序设计
101、城市突发公共事件应急管理平台研究
102、河北省气象灾害预警应急服务系统
103、智能气象站气象要素数据测试软件设计
104、一种杀毒软件升级流程的安全性分析方法
105、基于IMS的气象信息传输智能语音通知系统设计与实现
106、电子商务平台的设计
107、计算机程序设计课程中计算思维的培养
108、基于Agent的微信平台自适应负载均衡算法
109、高等学校移动信息化建设的研究
110、软件构造课程设计及其课程群