软件工程毕业设计论文
大学生涯就要结束,大家是不是都在忙着自己的毕业论文呢?软件工程专业的同学们,我为大家整理了该专业相关的论文,供大家参考!
一、软件工程专业毕业设计存在的主要问题
(一)毕业设计题目设置与选题方面
题目设置不合理,类别与层次不清晰,选题匹配效果差[2]。学生的毕业设计课题一般都按照指导老师的研究方向和实际工程项目提供,但每年真正来源于工程实践题目比例较少。部分题目理论性强,学生根据所学知识不能很好理解;部分题目开发工具复杂,占用了毕业设计的大部分时间。在选题时可能导致学生想选的题目选不上,能力差的学生所选题目难度大,影响学生的积极性,导致选题效果差,造成毕业设计很难完成。
(二)毕业设计过程监控方面
毕业设计监控工作实施困难,效果较差。软件工程专业毕业设计一般包含选题、开题、中期检查、程序测试、撰写毕业论文、答辩、成绩评定。但对这些环节的监控有时候会形成空白带,毕业设计不在实验室进行,有的学生在实习单位实习,有的学生在外地找工作,老师不能定时与学生见面,老师无法了解学生的具体情况,且学生提交的各阶段文档流于形式,只有指导教师在进行监控,未形成完善的监控体系,导致监控不到位,监控效果较差[3]。
(三)毕业设计论文答辩方面
答辩考核方法单一,答辩仅由学生的讲解和老师的提问两个环节组成,考核准确度低。答辩通过门槛较低,答辩只对学生的毕业设计进行排名,一般排名在最后的学生才可能不及格,不利于提高学生毕业设计积极性,造成大部分同学仅以答辩及格为目标,思想上不重视,答辩准备工作不扎实。再由于软件工程专业特点,毕业设计软件作品评分标准难于量化,考核具有一定难度,也造成答辩效果不好。同时为了提高学生毕业率和就业率,毕业答辩的质量控制有所放松,直接导致了软件工程专业毕业设计质量难以保障。
二、软件工程专业毕业设计的教学改革
针对上述各项实际问题,主要进行的相关工作具体如下:
(一)合理设置毕业设计题目,动态选题
依照软件工程专业的以市场需求为导向,培养应用型软件工程人才的培养目标,在毕业设计题目设置环节,紧紧围绕工程实际型、创新项目型、竞赛题目型、科研项目型等类型进行题目设置,以适应市场动态需求。同时着力避免在毕业设计题目中设置虚拟型题目、理论研究型题目、综述型题目、分析设计型题目等。在选题过程中,通过毕业设计管理系统(如图1所示)进行多轮双向动态选择,动态调整题目各项技术参数以保证学生能选择一个适合自己能力且能有利于自己以后工作的题目[4]。这样,在选题之后,每个指导老师就可以根据学生不同能力进行分别指导,使不同能力的学生都能够运用其所学知识解决工程实际问题,都能够通过毕业设计增强工程实践能力、工程设计能力与创新能力。近四学年软件工程专业毕业设计各类题目汇总。
(二)毕业设计过程实行三级监控管理机制
学校成立以主管副校长为组长的毕业设计工作领导小组以加强毕业设计宏观调控,学院成立以教学副院长为组长的`毕业设计工作领导小组以加强毕业设计协调与监控工作,软件工程专业成立以专业负责人为组长的毕业设计工作小组落实并实施毕业设计各环节具体工作[2]。具体参见下图2。在实现毕业设计过程管理的三级管理机制的同时,为保障毕业设计工作质量,软件工程专业要求所有指导教师必须具有中级以上技术职称或硕士以上学位且有一定工程实践经验,具有较高教学、科研水平和创新能力,师德良好,工作态度认真负责。在每年的毕业设计指导工作开始前都对指导教师进行资格审查,择优任用,且每位教师指导的学生不超过6人,以保证指导教师对学生的充分指导[5]。
(三)毕业设计过程量化考核
以往软件工程专业毕业设计成绩通常由三部分组成:一是学生的平时表现由指导老师把握;二是学生的毕业论文成绩。由专业其他指导老师进行评阅;三是现场答辩成绩。由所在组的指导教师按照相关评分标准打分并取平均分。这样基本能够保证毕业设计成绩的公正,但是由于只有毕业答辩环节具有约束力即答辩未通过则总成绩不及格,其他环节不具约束力,因此造成毕业设计前期、中期工作流于形式,前期、中期阶段提交的文档趋于应付、质量不高,最终导致毕业论文质量较低[6,7]。为此,软件工程专业经过几年的探索与实践,实施了毕业设计各阶段的软件工程生命周期量化考核法即各个阶段量化考核,且考核成绩不合格者不能进行下阶段毕业设计工作,必须加以整改,整改通过后才能进入下一阶段毕业设计工作。经过几年的实践证明该考核方法切实可行,能够保证毕业设计各个环节的质量,最终提高毕业设计总体质量。
(四)在毕业设计过程中进一步提高学生工程能力与创新能力
辽宁工业大学于2011年制定并实施了大学生创新团队机制,建立了大学生创新项目申报机制引导大学生开展创新活动;引导学生每年都参加校级、省级、国家级软件设计大赛等各类各级比赛[8]。随着学校和学院创新教育活动多年持续深入开展,软件工程专业学生的创新与创业活动取得了显著成果。超过1/4的软件工程专业学生能够独立主持创新性项目,并以该项目为原型申报毕业设计题目[9],同时参加省级、国家级计算机竞赛并获得奖项。通过主持校级及省级创新项目既毕业设计题目,学生工程能力、创新能力得到极大锻炼与提高,本专业毕业生就业率与就业质量明显提高。软件工程专业学生主持参加创新项目既毕业设计题目情况见表3。
三、结束语
软件工程专业毕业设计是一个极具综合性、实践性的重要环节,是对学生大学四年学习后面向社会与企业前的有且仅有的一次大检验,它不仅检验了学生所学知识、能力与综合素质,还检验了软件工程专业的培养目标、培养模式、课程体系、实践体系、创新体系等相关环节[10]。经过几年的探索与实践证明,软件工程专业所做的系列教学改革工作中的毕业设计教学改革工作有利于进一步增强学生的工程实践能力和创新能力,有利于提高软件工程专业毕业设计质量,有利于提高软件工程专业学生就业率与就业质量。虽然软件工程专业毕业设计教学改革工作取得了一定的成绩,社会认可度逐年稳步提高,但如何动态调整教学计划以跟进市场需求变化;如何深入开展大学生创新创业教育活动以进一步增强更多软件工程专业学生的实践能力及创新能力;如何进一步加强专业教师工程实践能力、工程设计能力与工程创新能力以提高毕业设计指导效力;如何提高毕业设计过程管理效率等问题仍然是软件工程专业所面临的严肃课题[11]。因此,软件工程专业的毕业设计教学改革工作也一定会紧跟时代变化,与时俱进。
软件工程论文题目
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科,我们看看下面的软件工程论文题目吧!
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、软件构造课程设计及其课程群
一、论题提出的背景和意义(即国内外现状) 随着我国加入WTO和我国工业的迅猛发展,为了抓住机遇,在竞争中占得先机,作为生产企业的一个必不可少的重要环节——库存管理的信息化、计算机化也就迫在眉睫了。开发库存管理信息系统既有宏观上的意义,那就是顺应时代信息化、现代化潮流,提高效益,促进国民经济结构优化;也有微观上的意义,那就是可以提高管理的现代化程序,加强管理的信息化手段,提高工作效率,增加单位效益。 库存管理的对象是很多的,广而言之,它可以包括:商业、企业库存的商品,图书馆库存的图书,博物馆库存的展品等。在这里本文仅涉及工业企业的产品库存。它主要包括下列三部分: 1.没有经过企业加工,而为企业生产或其他其他各方面所需要的原材料、燃料、半成品、部件等,如钢材、承轴、发动机、电动机等。 2.已经过企业加工,但尚未加工完毕的在制品。 3.企业已加工完毕,储而待销的成品与备件等。 库存管理系统按分类、分级的模式对仓库进行全面的管理和监控,缩短了库存信息流转时间,使企业的物料管理层次分明,井然有序,为采购、销售和生产提供依据;智能化的预警功能可自动提示存货的短缺、超储等异常状况;系统还可以材料库存ABC汇总,减少资金积压。完善的库存管理功能,可对企业的存货进行全面的控制和管理,降低库存成本,增加企业的失常竞争力。 库存管理信息系统研究的内容涉及库存管理的全过程,包括入库、出库、退货、订货、库存统计查询等。 下面介绍库存管理的工作流程: 1.入库 供货单位发货——运输——货物到达后测试检验——送货单——库存管理员查收入库——入库单 处理各种入库业务,如:工业企业的生产入库、委外加工入库、其他入库等入库业务;按出库类型可以分别在不同模块录入入库单据信息 2.出库 库存统计表——各使用单位——领料单——库管人员出库——出库单 处理各种出库业务,如:工业企业的生产领料、委外领料、其他出库等出库业务;按出库类型可以分别在不同模块录入出库单据信息。 3.退货 产品不合格通知书——各使用单位——领料单存根——库管人员退货——退货单 4.订货 库存管理部门向采购部门发出采购单——采购部门向供应单位传递订货单——供应单位组织发货——运输——货物到达后测试检验——入库 5.盘点 备份库存数据,打印盘点表,可按仓库、批次进行盘点,并根据盘点表生成盘盈,盘亏表,调整库存账。 盘点的功能是检查仓库现有库存量与帐面数量是否一致。若盘点结果是仓库现有库存量大于帐面数量,则盘盈;盘点结果是仓库现有库存量小于帐面数量,则盘亏;它们的差异量都记录在盘点调整单上。 二、目前工作中存在的主要问题 1.国内外现状研究: 计算机在方面管理中的应用开始于1954年,当时美国首先用计算机处理工资单。50多年来,计算机在处理管理信息方面发展迅速,例如:60年代美国计算机在管理中应用项目不到300项,到1975年达到2670项。而现在,美国财务会计上90%的工作由计算机来完成;物资管理中80—100%的信息处理由计算机完成;计划管理中是80—90%。据计算机应用方面发展较快的国家统计,计算机应用于经济管理的约占80%;用于科技运算的占8%;用于生产控制的占12%。)因此,经济管理是计算机应用的主要领域。当然,由于库存管理在经济管理中占重要地位,其计算机化在发达国家中也已经达到了相当高的水平。我国在全国范围内推广计算机在经济管理中的应用,是在70年代末开始的,虽然起步较晚,今几年发展却较快,特别是微型计算机的出现和普及,为信息处理提供了物美价帘的手段,对于推动我国管理信息处理的现代化起了重要的作用。 2.目前存在的问题: 库存管理对企业来说是一项繁琐复杂的工作,每天都要处理大量的单据数据。为及时结清没笔业务,盘点库存和和货物流通情况,保证企业生产用料以及货物安全,库管人员要花费大量的人力物力和时间来做数据记录统计工作。 在世界发达国家,库存管理的计算机水平已经很高了,尽管我国的生产企业在这方面也有了很强的意识和长足的进步,但仍存在这样那样的一些问题。 表现之一:有的企业单位的库存管理部分目前仍为手工半手工操作。从供应单位办理入库登记开始,到使用单位输领料出库手续为止,所有的操作基本上都是由仓库管理员笔写,手理,加上算盘或计算器来完成。这不仅繁琐效率低,而且缺乏库存管理的一些基本手段,如库存状况统计,查询经济订货量计算等,这给企业在一定程度上造成了管理上的落后,及经济利益上的损失。 表现之二:有的单位的库存管理部已上了微机,但对微机的利用效率极低,有的在用他打游戏,有的仅仅把它当作计算机或打字机来用。 表现之三:有的企业单位既有了微机的同时也有了库存管理软件,但硬件上去了,软件上不去。因为他门用的库存管理软件大多为自己的工作人员及其他的一些非专业人员所开发的简单的管理软件,很难称的上是“库存管理信息系统软件”这些程序的弱点大多表现为:1)系统开发时无科学的理论支持。2)开发过程的调研不全面。3)软件编写时的模型不清晰完整。4)所用的开发工具落后(如FOXBASE等) 三、统计与分析系统的必要性和可行性(研究解决方法及思路) 根据我国国内库存管理信息系统在企业中应用普及时出现的各种问题,我将用我所学的知识,利用当前的管理信息系统的理论,开发一套基于NET的库存管理系统,以求能对我国的库存管理现代化水平的提高贡献一份微薄力量。 具体的方法及计划如下: 全论文将分为三个部分。第一部分为引论,阐明所开发的项目要满足用户哪些要求,并给出全文的摘要。第二部分为实际开发过程,这将是论文的核心内容分为理论支持,系统分析,系统设计,软件编写,软件安装,系统维护七章。第三部分为结束语部分,分为经验教训和注意问题及作者的建议,参考资料二章。作为作者的心得体会与读者共享。
软件工程论文题目
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科,我们看看下面的软件工程论文题目吧!
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、软件构造课程设计及其课程群
[编辑本段]基本信息软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己的定义: 软件工程(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业务风险总结开发(或不开发)该产品有关的主要业务风险,例如市场竞争、时间问题、用户的接受能力、实现的问题或对业务可能带来的消极影响。预测风险的严重性,指明你所能采取的减轻风险的措施。 项目视图陈述编写一个总结长远目标和有关开发新产品目的的简要项目视图陈述。项目视图陈述将考虑权衡有不同需求客户的看法。它可能有点理想化,但必须以现有的或所期待的客户市场、企业框架、组织的战略方向和资源局限性为基础。 主要特性包括新产品将提供的主要特性和用户性能的列表。强调的是区别于以往产品和竞争产品的特性。可以从用户需求和功能需求中得到这些特性。 假设和依赖环境在构思项目和编写项目视图和范围文档时,要记录所作出的任何假设。通常一方所持的假设应与另一方不同。 首次发行的范围总结首次发行的产品所具有的性能。描述了产品的质量特性,这些特性使产品可以为不同的客户群提供预期的成果。随后发行的范围如果你想象一个周期性的产品演变过程,就要指明哪一个主要特性的开发将被延期,并期待随后版本发行的日期。 局限性和专用性明确定义包括和不包括的特性和功能的界线是处理范围设定和客户期望的一个途径。列出风险承担者们期望的而你却不打算把它包括到产品中的特性和功能。 客户概貌客户概述明确了这一产品的不同类型客户的一些本质的特点,以及目标市场部门和在这些部门中的不同客户的特征。 项目的优先级一旦明确建立项目的优先级,风险承担者和项目的参与者就能把精力集中在一系列共同的目标上。达到这一目的的一个途径是考虑软件项目的五个方面:性能、质量、计划、成本和人员。e.产品成功的因素明确产品的成功是如何定义和测量的,并指明对产品的成功有巨大影响的几个因素。不仅要包括组织直接控制的范围内的事务,还要包括外部因素。如果可能,可建立测量的标准用于评价是否达到业务目标. 3)用户群分类:产品的用户在很多方面存在着差异,例如:用户使用产品的频度、他们的应用领域和计算机系统知识、他们所使用的产品特性、他们所进行的业务过程、他们在地理上的布局以及他们的访问优先级。根据这些差异,你可以把这些不同的用户分成小组。用户类不一定都指人,你可以把其它应用程序或系统接口所用的硬件组件也看成是附加用户类的成员。以这种方式来看待应用程序接口,可以帮助你确定产品中那些与外部应用程序或组件有关的需求。将用户群分类并归纳各自特点为避免出现疏忽某一用户群需求的情况,要将可能使都有所差异。详细描述出它们的个性特点及任务状况,将有助于产品设计。 4)选择产品代表:择每类用户的产品代表为每类用户至少选择一位能真正代表他们需求的人作为那一类用户的代表并能作出决策。这对于内部信息系统的开发是最易实现的,因为此时,用户就是身边的职员。而对于商业开发,就得在主要的客户或测试者中建立起良好的合作关系,并确定合适的产品代表。他们必须一直参与项目的开发而且有权作出决策。每一个产品代表者代表了一个特定的用户类,并在那个用户类和开发者之间充当主要的接口。 5)建立核心队伍:建立起典型用户的核心队伍把同类产品或产品的先前版本用户代表召集起来,从他们那里收集目前产品的功能需求和非功能需求。这样的核心队伍对于商业开发尤为有用,因为你拥有一个庞大且多样的客户基础。与产品代表的区别在于,核心队伍成员通常没有决定权。 6)确定使用实例:让用户代表确定使用实例从用户代表处收集他们使用软件完成所需任务的描述-使用实例,讨论用户与系统间的交互方式和对话要求。在编写使用实例的文档时可采用标准模版,在使用实例基础上可得到功能需求。 一个单一的使用实例可能包括完成某项任务的许多逻辑相关任务和交互顺序。因此,一个使用实例是相关的用法说明的集合,并且一个说明是使用实例的例子。在描述时列出执行者和系统之间相互交互或对话的顺序。当这种对话结束时,执行者也达到了预期的目的。 对于一些复杂的使用实例,画出图形分析模型是有益的,这些模型包括数据流程图、实体关系图、状态转化图、对象类和联系图。 使用实例的描述并不向开发者提供他们所要开发的功能的细节。为了减少这种不确定性,需要把每一个使用实例叙述成详细的功能需求。每一个使用实例可引伸出多个功能需求,这将使执行者可以执行相关的任务;并且多个使用实例可能需要相同的功能需求。使用实例方法给需求获取带来的好处来自于该方法是以任务为中心和以用户为中心的观点。比起使用以功能为中心的方法,使用实例方法可以使用户更清楚地认识到新系统允许他们做什么。 每一个使用实例都描述了一个方法,用户可以利用这个方法与系统进行交互,从而达到特定的目标。使用实例可有效地捕捉大多数所期望的系统行为,但是你可能有一些需求,这些需求与用户任务或其他执行者之间的交互没有特定的关系。这时你就需要一个独立的需求规格说明。 7)召开应用程序开发联系会议:召开应用程序开发联系会议应用程序开发联系会议是范围广的、简便的专题讨论会,也是分析人员与客户代表之间一种很好的合作办法,并能由此拟出需求文档的底稿。该会议通过紧密而集中的讨论得以将客户与开发人员间的合作伙伴关系付诸于实践。 8)分析用户工作流程:分析用户工作流程观察用户执行业务任务的过程。画一张简单的示意图(最好用数据流图)来描绘出用户什么时候获得什么数据,并怎样使用这些数据。编制业务过程流程文档将有助于明确产品的使用实例和功能需求。你甚至可能发现客户并不真地需要一个全新的软件系统就能达到他们的业务目标。 9)确定质量属性:确定质量属性和其它非功能需求在功能需求之外再考虑一下非功能的质量特点,这会使你的产品达到并超过客户的期望。对系统如何能很好地执行某些行为或让用户采取某一措施的陈述就是质量属性,这是一种非功能需求。听取那些描述合理特性的意见:快捷、简易、直觉性、用户友好、健壮性、可靠性、安全性和高效性。你将要和用户一起商讨精确定义他们模糊的和主观言辞的真正含义。 10)检查问题报告:通过检查当前系统的问题报告来进一步完善需求客户的问题报告及补充需求为新产品或新版本提供了大量丰富的改进及增加特性的想法,负责提供用户支持及帮助的人能为收集需求过程提供极有价值的信息。 11)需求重用:跨项目重用需求如果客户要求的功能与已有的产品很相似,则可查看需求是否有足够的灵活性以允许重用一些已有的软件组件。
现在的期刊,都是以赚钱为目的,只要你肯出版面费,都没有问题的。by 文天下论文检测网
期刊本身这样操作,即便是有学术学问的,也得这样来。但是也是有认真做学术的期刊的,不收费的也是有的价钱取决于四个方面,论文质量,论文作者身份,期刊的地位和论文所属领域论文发表方面有什么问题的话可以找向品 优刊 了解。
软件工程硕士论文要求与模板
软件工程硕士论文要求有哪些,有具体的模板可以借鉴吗?下面是我为大家收集的关于软件工程硕士论文要求与模板,欢迎大家阅读借鉴!
软件工程硕士论文要求主要包括:字数要求与书写格式要求,一般软件工程专业研究生论文字数要求3万--5万之间,字数太少无法将课题研究透彻,字数过多会显得繁杂,因此,在撰写软件工程硕士论文时,要抓住研究核心,阐述清楚研究问题,适当减少一些常识性知识,特别重要的常识原理,可以在附录中体现;其次论文完成后,要按照论文格式标准进行排版,具体格式要求见下:
1 软件工程硕士论文基本结构
软件工程硕士论文基本结构包括前置部分、主体部分和结尾部分。
前置部分
(1) 封面
(2) 原创性声明和《中国优秀博硕学位论文全文数据库》投稿声明
(3) 序或前言(可根据需要)
(4) 摘要及关键词
(5) 目次页
(6) 插图和附表清单(可根据需要)
(7) 符号、标志、缩略词、首字母缩写、计量单位、名词、术语等的注释表(可根据需要)
主体部分
(1) 引言(或绪论)
(2) 正文
(3) 结论
(4) 参考文献
(5) 注释(可根据需要)
(6) 附录(可根据需要)
结尾部分
(1) 作者简介及在学期间所取得的科研成果
(2) 后记和致谢
(3) 封底
2 软件工程硕士论文编写规范与要求
前置部分
封面
封面(含扉页)包括以下要素:
论文分类号:采用《中国图书资料分类法》(第四版),可到图书馆查询。
单位代码: ××××。
密级:密级一般设定为公开,涉密级别分为秘密、机密、绝密。凡涉密论文需根据《××大学研究生涉密论文暂行规定》(校研院字[2007]18号)办理审批手续。
研究生学号:填写由研究生管理处统一编排的研究生学号。
学位类别:按申请专业的学科门类和学位级别进行分类。
专业学位直接写上专业学位名称,“软件工程硕士”.
校徽:蓝色,大小为3×3cm.
论文题目:应准确反映论文的核心内容,简明扼要,必要时可加副标题。论文题目(包括副标题)总长度不要超过30个汉字。论文题目需同时翻译成英文,写在汉语题目之下。论文题目在封面中间居中排列。
作者姓名:姓名所使用的汉字必须与本人有效身份证件完全一致。
专业名称:必须严格按照“研究生教育管理信息系统”中的专业名称填写,不得使用简称。
导师姓名:导师姓名后附职称,姓名与职称之间应空一个汉字的位置。
培养单位:填写研究生的具体培养单位,“计算机科学与技术学院”.
论文完成时间:在论文封面下部,居中填写论文打印成稿的年月。
××××大学博士、硕士学位论文封面及扉页格式请分别参考学院论文封面格式样本。
原创性声明和《中国优秀博硕学位论文全文数据库》投稿声明
本部分使用统一的'格式,具体内容见附件。
序或前言
学位论文的序或前言,一般是作者对本篇论文基本特征的简介,如说明研究工作缘起、背景、主旨、目的、意义、编写体例,以及资助、支持、协作经过等。这些内容也可以在正文引言(或绪论)中说明。
摘要及关键词
摘要是对论文主要内容的概述,是一篇完整的短文,可以独立使用。摘要应阐明研究的目的,所获得的主要成果,学位论文的论点及论据。同时也应客观地阐述成果的创造性及新发现、新见解和所取得的成果在研究领域中的地位、意义及其价值。除了实在无变通办法可用以外,摘要中不用图、表、化学结构式、非公知公用的符号和术语。硕士学位论文摘要以汉字1000字左右为宜,博士学位论文摘要以汉字2000字左右为宜。学位论文摘要分为中文摘要和英文摘要。英文摘要根据中文摘要进行翻译。
在中、英文摘要之后要附关键词。关键词是为了文献索引而从学位论文中选取出来的、用以表示全文主题内容信息的单词或术语。一般选用3-8个关键词,要求所选词汇能准确反映概括全文的主要内容。
使用非汉语语言撰写的学位论文,应写出详细的中文摘要,硕士中文摘要不少于3000字,博士中文摘要不少于5000字。
目次页
论文中内容标题的集合,另起页。目次页每行均由标题名称和页码组成,包括引言(或前言),主要内容的篇、章、条、款、项序号和标题,小结,(引文)参考文献、注释、附录,可供参考的文献题录、索引等。
插图和附表清单
论文中如图表较多,可以分别列出清单置于目次页之后。图的清单应有序号、图题和页码。表的清单应有序号、表题和页码。
符号、标志、缩略词、首字母缩写、计量单位、名词、术语等的注释表
符号、标志、缩略词、首字母缩写、计量单位、名词、术语等的注释说明,如需汇集,可集中置于图表清单之后。
可以发表软件工程类的论文,如自制一个带有某功能的某工程。针对软件开发这个专业,很容易想出来的论文类别就是软件工程,这种论文也非常好写,只需要开发一个软件并对其进行阐述即可。软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。
软件工程毕业设计论文
大学生涯就要结束,大家是不是都在忙着自己的毕业论文呢?软件工程专业的同学们,我为大家整理了该专业相关的论文,供大家参考!
一、软件工程专业毕业设计存在的主要问题
(一)毕业设计题目设置与选题方面
题目设置不合理,类别与层次不清晰,选题匹配效果差[2]。学生的毕业设计课题一般都按照指导老师的研究方向和实际工程项目提供,但每年真正来源于工程实践题目比例较少。部分题目理论性强,学生根据所学知识不能很好理解;部分题目开发工具复杂,占用了毕业设计的大部分时间。在选题时可能导致学生想选的题目选不上,能力差的学生所选题目难度大,影响学生的积极性,导致选题效果差,造成毕业设计很难完成。
(二)毕业设计过程监控方面
毕业设计监控工作实施困难,效果较差。软件工程专业毕业设计一般包含选题、开题、中期检查、程序测试、撰写毕业论文、答辩、成绩评定。但对这些环节的监控有时候会形成空白带,毕业设计不在实验室进行,有的学生在实习单位实习,有的学生在外地找工作,老师不能定时与学生见面,老师无法了解学生的具体情况,且学生提交的各阶段文档流于形式,只有指导教师在进行监控,未形成完善的监控体系,导致监控不到位,监控效果较差[3]。
(三)毕业设计论文答辩方面
答辩考核方法单一,答辩仅由学生的讲解和老师的提问两个环节组成,考核准确度低。答辩通过门槛较低,答辩只对学生的毕业设计进行排名,一般排名在最后的学生才可能不及格,不利于提高学生毕业设计积极性,造成大部分同学仅以答辩及格为目标,思想上不重视,答辩准备工作不扎实。再由于软件工程专业特点,毕业设计软件作品评分标准难于量化,考核具有一定难度,也造成答辩效果不好。同时为了提高学生毕业率和就业率,毕业答辩的质量控制有所放松,直接导致了软件工程专业毕业设计质量难以保障。
二、软件工程专业毕业设计的教学改革
针对上述各项实际问题,主要进行的相关工作具体如下:
(一)合理设置毕业设计题目,动态选题
依照软件工程专业的以市场需求为导向,培养应用型软件工程人才的培养目标,在毕业设计题目设置环节,紧紧围绕工程实际型、创新项目型、竞赛题目型、科研项目型等类型进行题目设置,以适应市场动态需求。同时着力避免在毕业设计题目中设置虚拟型题目、理论研究型题目、综述型题目、分析设计型题目等。在选题过程中,通过毕业设计管理系统(如图1所示)进行多轮双向动态选择,动态调整题目各项技术参数以保证学生能选择一个适合自己能力且能有利于自己以后工作的题目[4]。这样,在选题之后,每个指导老师就可以根据学生不同能力进行分别指导,使不同能力的学生都能够运用其所学知识解决工程实际问题,都能够通过毕业设计增强工程实践能力、工程设计能力与创新能力。近四学年软件工程专业毕业设计各类题目汇总。
(二)毕业设计过程实行三级监控管理机制
学校成立以主管副校长为组长的毕业设计工作领导小组以加强毕业设计宏观调控,学院成立以教学副院长为组长的`毕业设计工作领导小组以加强毕业设计协调与监控工作,软件工程专业成立以专业负责人为组长的毕业设计工作小组落实并实施毕业设计各环节具体工作[2]。具体参见下图2。在实现毕业设计过程管理的三级管理机制的同时,为保障毕业设计工作质量,软件工程专业要求所有指导教师必须具有中级以上技术职称或硕士以上学位且有一定工程实践经验,具有较高教学、科研水平和创新能力,师德良好,工作态度认真负责。在每年的毕业设计指导工作开始前都对指导教师进行资格审查,择优任用,且每位教师指导的学生不超过6人,以保证指导教师对学生的充分指导[5]。
(三)毕业设计过程量化考核
以往软件工程专业毕业设计成绩通常由三部分组成:一是学生的平时表现由指导老师把握;二是学生的毕业论文成绩。由专业其他指导老师进行评阅;三是现场答辩成绩。由所在组的指导教师按照相关评分标准打分并取平均分。这样基本能够保证毕业设计成绩的公正,但是由于只有毕业答辩环节具有约束力即答辩未通过则总成绩不及格,其他环节不具约束力,因此造成毕业设计前期、中期工作流于形式,前期、中期阶段提交的文档趋于应付、质量不高,最终导致毕业论文质量较低[6,7]。为此,软件工程专业经过几年的探索与实践,实施了毕业设计各阶段的软件工程生命周期量化考核法即各个阶段量化考核,且考核成绩不合格者不能进行下阶段毕业设计工作,必须加以整改,整改通过后才能进入下一阶段毕业设计工作。经过几年的实践证明该考核方法切实可行,能够保证毕业设计各个环节的质量,最终提高毕业设计总体质量。
(四)在毕业设计过程中进一步提高学生工程能力与创新能力
辽宁工业大学于2011年制定并实施了大学生创新团队机制,建立了大学生创新项目申报机制引导大学生开展创新活动;引导学生每年都参加校级、省级、国家级软件设计大赛等各类各级比赛[8]。随着学校和学院创新教育活动多年持续深入开展,软件工程专业学生的创新与创业活动取得了显著成果。超过1/4的软件工程专业学生能够独立主持创新性项目,并以该项目为原型申报毕业设计题目[9],同时参加省级、国家级计算机竞赛并获得奖项。通过主持校级及省级创新项目既毕业设计题目,学生工程能力、创新能力得到极大锻炼与提高,本专业毕业生就业率与就业质量明显提高。软件工程专业学生主持参加创新项目既毕业设计题目情况见表3。
三、结束语
软件工程专业毕业设计是一个极具综合性、实践性的重要环节,是对学生大学四年学习后面向社会与企业前的有且仅有的一次大检验,它不仅检验了学生所学知识、能力与综合素质,还检验了软件工程专业的培养目标、培养模式、课程体系、实践体系、创新体系等相关环节[10]。经过几年的探索与实践证明,软件工程专业所做的系列教学改革工作中的毕业设计教学改革工作有利于进一步增强学生的工程实践能力和创新能力,有利于提高软件工程专业毕业设计质量,有利于提高软件工程专业学生就业率与就业质量。虽然软件工程专业毕业设计教学改革工作取得了一定的成绩,社会认可度逐年稳步提高,但如何动态调整教学计划以跟进市场需求变化;如何深入开展大学生创新创业教育活动以进一步增强更多软件工程专业学生的实践能力及创新能力;如何进一步加强专业教师工程实践能力、工程设计能力与工程创新能力以提高毕业设计指导效力;如何提高毕业设计过程管理效率等问题仍然是软件工程专业所面临的严肃课题[11]。因此,软件工程专业的毕业设计教学改革工作也一定会紧跟时代变化,与时俱进。
软件技术是一个发展变化非常快的行业,软件人才要按照企业和领域需求来确定培养的方向。下面是由我整理的软件技术论文范文,谢谢你的阅读。
浅谈软件项目估算技术
摘 要:由于软件产品自身的特殊性,导致软件项目的估算工作进行困难,估算结果准确性差。为了解决这一问题,产生了很多不同的软件项目估算技术,本文对各种估算技术的主要思想及其优缺点进行简单的阐述。尤其是对功能点估算技术,本文做了详细的介绍,并通过实例加以说明其应用方法。
关键词:规模估算;成本估算;实例应用
中图分类号:
软件项目的估算历来是比较复杂的事,因为软件本身的复杂性、历史经验的缺乏、估算工具缺乏以及一些人为错误,导致软件项目的估算往往和实际情况相差甚远。因此,估算错误已被列入软件项目失败的四大原因之一。由此,也证明了正确对软件项目进行估算是何等重要。
在软件项目管理中,估算就是对项目将持续多长时间或花费多少成本的预测。所以说,估算正是一种对未来的预测。从这里也看以看出估算的重点就在“工作量估算”或“成本估算”,而在对这两者进行估算的过程中大多数情况下都少不了“软件规模”这个条件,所以本文将软件估算分为两种类型,第一个种是软件项目规模的估算,第二种是将估算得出的规模转换为工作量的估算或成本的估算。目前使用比较广泛的规模估算技术,如:代码行估算技术、功能点估算技术;而使用比较广泛的成本估算技术,如:COCOMO算法模型估算技术。
除了上述所列举的几种技术外,还有几种估算技术既可以用于估算规模,也可直接应用与估算工作量或估算成本,如:Delphi估算法、类比估算技术、PERT估算技术。这几种估算技术不似前面所列的技术,比较有针对行,且有具体的计算过程、计算公式。这几种技术只是一种思想,依据某个选定的科目进行估算。下面本文将简单介绍上述提到的几种估算技术,并通过具体的实例重点阐述功能点估算技术。
1 估算技术简介
代码行估算技术。代码行(LOC)指所有的可执行的源代码行数,包括可交付的工作控制语言(JCL:Job Control Language)语句、数据定义、数据类型声明、等价声明、输入/输出格式声明等[1]。代码行估算技术主要是估算软件的规模,即通过该技术估算待研发软件项目有多少行代码。一般为了方便表示,使用较大的单位千代码行(KLOC)来表示待研发软件项目的规模大小。这种方法比较适用于有经验积累和开发模式稳定的公司。如果是新成立公司,使用这种估算技术则会存在很大误差,加大项目失败的风险。
功能点估算技术。功能点法是一种经过实践验证的方法,但应用成本很高,估算的工作量投入也较大。功能点估算技术最终结果是规模,仍然需要知道项目的生产率数据才能得出实际的工作量。功能点估算技术将系统功能分为输入、输出、查询、外部文件和内部文件5种类型。其中,输入是一个数据跨越系统边界,从外部到内部的基本数据处理过程。数据的来源可以是人机输入界面/接口,或是另一个应用系统;输出是一个衍生数据跨越系统边界,从内部到外部的基本数据处理过程。这些输出的数据可能会产生报表,或发到其他外部系统的输出文件;查询是一个不包含衍生数据和数据维护的基本数据处理过程,包括输入和输出两部分;内部文件存在于系统边界之内,用户可识别的一组逻辑上相互关联的数据;外部文件存在于系统边界之外,用户可识别的一组逻辑上相互关联的数据。使用功能点估算技术估算的大概步骤为:
(1)通过需求分析将系统功能按照上述5种类型进行分类。
(2)分析每个功能项的复杂程度,大致分为一般、简单、复杂三种类型,每一种类型都对应一个权重值,具体如表1。
(3)根据每个功能项的复杂权重值,求出功能项的加权和,即为未调整功能点数(UFC)。
(4)分析该系统的技术复杂度,功能点估算将与系统相关的技术影响因素分为14组(用Ai表示),每个分为6个级别,权重分别从0至5。根据分析结果及公式计算技术复杂度因子(TCF),即TCF=(SUM(Ai))。
(5)将UFC与TCF相乘即为功能点数。
COCOMO算法模型。Cocomo模像是一个分层次的系列软件成本估算模型,包括基本模型、中级模型和详细模型3个子模型。3个模型采用同一个计算公式,即E=asb×EAF[2]。其中,E是以人月为单位的工作量;S是以KLOC为单位的程序规模;EAF是一个工作量调整因子,在基本模型中该项值为1,中级模型和详细模型中根据成本驱动因素确定;a和b是随开发模式而变化的因子,这里开发模式被分为3中类型,即有机式、半分离式和嵌入式。
Cocomo算法模型是一种精确易用的估算方法,如果项目没有足够多的历史数据,会使得各调整因子和系数很难确定,进而使得估算比较困难。但是一旦项目建立起这种模型,则通过Cocomo模型得出的项目工作量和项目周期具有更高的准确度。
Delphi估算技术。Delphi估算技术又被成为专家估算技术,它是由一个被认为是该任务专家的人来进行估算,且估算过程很大一部分是基于不清晰,不可重复的推理过程,也就是直觉。所以该技术中专家“专”的程度及对项目的理解程度是该技术的重点,也是难点,它的好坏直接影响估算结果的准确程度。
Delphi估算技术估算过程并不像功能点估算技术或COCOMO算法模型那样,有明确的计算方法或计算公式。它是将待估算的项目的相关信息发给专家,专家估算后由专门的负责人进行汇总,然后再发给专家估算,反复几次后得到一个估算结果,可见只是一种思想,所以它除了用来估算规模,也可以用来估算成本、风险等,即对选定的某个科目进行估算。
类比估算技术。“类比估算”,顾名思义是通过同以往类似项目(如应用领域、环境和复杂程度等)相比较得出估算结果。类比估算技术是一种粗略的估算方法,它估算结果的精确度取决于历史项目数据的完整性和准确度。类比估算技术与Delphi估算技术类似,它的用途不仅仅用在规模估算上,也可以估算成本、工作量等。 PERT估算技术。PERT估算技术,又称为计划评审估算技术,它对需要估算的科目(如规模、成本、工期等)按三种不同情况估算:一个乐观估算结果,一个最可能估算结果,一个悲观估算结果。再通过这三个结果计算得到一个期望规模和标准偏差。这种估算技术可以用于估算规模,同样也可以用于估算工期,相比较来说PERT技术估算的结果比类比估算技术的结果要更准确。
2 功能点估算技术应用实例
假设某员工管理系统,经过需求分析得知,该系统所包含功能如下:
(1)员工信息维护:添加员工、修改员工信息、查询员工信息;
(2)部门信息维护:添加部门、修改部门信息;
(3)工资统计:统计员工年薪,并打印输出。
其中,在该系统中添加一个员工资料,会使用到员工的基本信息:员工ID(标签控件)、姓名、性别、年龄、婚否、部门ID;教育情况:学校名称、所学专业、学历。对部门的维护会使用到部门的信息:部门ID(标签控件)、部门名称。员工工资信息由另外一个财务系统提供,工资表信息有员工的基本信息:员工ID(标签控件)、姓名、部门名称;工资信息:工资级别、工资金额。
根据功能点估算技术估算步骤,首先计算未调整功能点数,即各种类型功能项的加权和,分析该系统6个功能项所属类型及其复杂权重值如表2:
假设该项目的14个技术复杂度因子均为“有一定影响”,即权重值均为2,则该项目功能点数为:FP=45×(×14×2)=。如果知道该项目使用何种语言,可以将功能点数转换为代码行数。
3 结语
本文对目前比较流行的几种软件项目估算技术做了简单介绍。重点讲述了功能点估算技术,并通过一个实例演示了功能点估算技术的应用方法。通过本文描述可以看出每种项目估算技术都有其自己的优缺点,如果想要得到比较准确的估算结果,不能仅靠一种估算技术,而应该综合运用各种估算技术,才能得到比较全面的信息和比较准确的结果。目前,也有一些基于这些估算技术的思想的自动化估算工具产生,相信通过不断的发展,将解决软件项目成本估算难的问题。
参考文献:
[1]朱少民.软件项目管理[M].北京:清华大学出版社,2009-11.
[2]覃征等.软件项目管理[M].北京:清华大学出版社,2004.
[3]李明树,何梅,杨达,舒风笛,王青.软件成本估算方法及应用[J].Journal of Software,, , April 2007,775-795.
[4]The David Consulting Group ,Function Point Counting Practices Manual Release ,January 2005,
[5]刘谦.软件项目估算方法在敏捷开发中的实践.中国管理网,2010-06-18.
作者简介:王颖,女,研究生,软件工程专业;江文焱,男,研究生,软件工程专业。
点击下页还有更多>>>软件技术论文范文
图书馆自动化系统开源软件的比较研究摘要〕在调研与实际操作的基础上,对国外三种比较有代表性的图书馆自动化系统开源软件(Koha, PHPMyLibrary,PMB)进行介绍,并从基本技术特征、系统功能和技术服务三方面对这三个系统进行比较分析,以期深入理解图书馆自动化开源软件的设计理念,为开源软件在国内图书馆自动化系统建设中的推广应用提供参考。〔关键词〕图书馆自动化系统;开源软件; Koha; PHPMyLibrary; PMB1引言图书馆自动化系统,又叫图书馆集成管理系统(Inte-grated Library System),始于20世纪70年代,是实现图书馆业务与服务自动化管理的软件系统。长期以来,自动化系统的建设是图书馆建设的重要工作,但商业自动化系统的高额费用和非个性化服务使图书馆的自动化建设受到很大阻碍。而近年来在全球广泛兴起的开源软件为图书馆提供了新的选择。所谓开源软件,是在新型的———并行的、点对点的、动态的软件开发模式〔1〕下开发出来的软件,它鼓励软件开发者相互协作,开放软件的源代码,并允许任何人基于任何目的使用、拷贝、修改及重新分发软件。国外图书馆界对开源软件的研究始于1998年,美国耶鲁大学医学图书馆的系统馆员Daniel Chudnov在《图书馆杂志》(Library Jour-nal)上发表了名为“开源软件:图书馆系统的未来”的研究论文,引起了图书馆界的广泛关注,他指出“尽管开源软件至今仍未进入图书馆软件的主流市场,但这种开发模式对于图书馆软件市场的发展有着巨大的竞争力,新时期的图书馆应该把更多的资源用于用户与馆员的培训,而非购买昂贵的系统”〔2〕。目前,在国际范围内,已有十几种采用开源软件模式进行开发和应用的图书馆自动化系统,主要侧重于编目、公共存取等基本功能的实现。如: Koha系统、Avanti系统、Evergreen系统、LearningAccess ILS、PHP-MyLibrary系统、OpenBiblio系统等。这些系统在设计目标、采用标准、实现技术、系统规模以及数据的组织方式、发布方式等很多方面都不尽相同。本文在调研与实际操作的基础上,选择了3个比较有代表性的图书馆自动化系统开源软件进行比较分析。2系统介绍2·1Koha集成图书馆自动化系统Koha系统产生于1999年,被业内人士认为是全球第一个自动化开源软件,由Katipo通信公司采用Perl语言和MySQL数据库开发完成。该系统不仅集成了图书馆的传统业务流程,包括采购、编目、流通、OPAC、读者管理,同时还为用户提供个性化的定制机制。Koha系统是基于Web的客户/服务器体系结构。该系统中的perl脚本是Koha系统的核心部分,它是图书馆用户与后台系统交互作用的核心,包括OPAC系统、Intranet系统、Daemons系统以及DB系统〔3〕。OPAC系统是Koha系统中的重要组成,其开发基于标准的WWW技术,如XHTML、CSS和JavaScript,因而用户可以通过基于Web浏览器的用户端,很容易地找到特定资源。Intranet系统则是后台事务与前台操作的接口,图书馆员无需安装其它软件,直接利用浏览器便可以实现图书馆自动化的基本业务,如用户的登入、登出管理、虚拟书架的管理、图书馆资源采购、资源流通的管理,以及资源数据的导入、导出等。Daemons系统为利用Z39·50协议查询资源的用户提供到Z39·50服务器的连接。而DB系统则为数据库的存取操作提供支持。目前Koha系统主要安装在公共图书馆、个人和高校图书馆的系部。而公司等赢利性机构使用得不多。2·2PHPMyLibrary系统PHPMyLibrary系统是一个基于PHP语言和MySQL数据库的图书馆自动化应用系统,它包括编目、流通、WebOPAC、输入/输出和论文管理模块。主要具有如下特征:(1)基于Web编目并存储相关的书目信息。图书馆员不仅可以对数据库中的信息进行编辑、修改、检索、添加与删除操作,还能通过动态按钮很容易地增加或编辑新的书目格式。(2)提供基于USMARC标准的输入/输出。(3)提供ISIS2MARC程序,实现从ISIS数据库的系统导入功能〔4〕。(4)支持多语言管理,用户可以管理包含多种语言的信息,包括汉语、俄语、西班牙语、法语、德语等,并可以支持对这些语种的数据库进行检索。2·3PMB系统PMB系统,原名PhpMyBibli,自2002年在法国立项以来,受到国际同行的广泛关注。该系统由PHP和MySQL编写完成,目前已能实现资源订购、资源编目(主要是书籍与期刊编目)、资源流通以及授权管理和串行数字接口中(SDI)管理等功能。该系统支持UNIMARC标准,运行在Linux或Windows操作系统下。由于该项目源于法国,因此很多相关信息都以法语提供,为该系统的推广宣传带来障碍,但来自波多黎各的Jesir Vargas已把该系统翻译成英语和西班牙语,拓宽其使用范围, 2004年,该项目的用户社区在比利时成立。3系统比较与分析3·1基本技术信息基本技术信息包括软件所遵循的许可证类型、所支持的客户端与服务器端系统类型以及图书馆标准等,它们是评判系统的可扩展性和易用性的有效标准。通过比较,可以看出这三个图书馆自动化开源软件都具有较好的通用性、开放性和可扩展性。主要体现在: (1)都可以在当前的主流操作系统平台上运行; (2)都支持图书馆编目标准MARC、检索协议Z39·50; (3)都是基于Web的系统,为用户提供了简单的操作接口,极大提高了系统的操作性能。这与传统的基于CS架构的图书馆自动化系统不同。面对网络环境的日益渗透,传统图书馆自动化系统不得不考虑向Web系统转型,这无疑为本土企业和图书馆用户带来大量工作。而开源软件大多从一开始设计就是基于Web的客户/服务器体系结构,开发语言(如PHP等)普遍具有良好的可扩展性,这也是开源自动化系统区别于传统自动化系统的最大优势。3·2系统功能系统功能是图书馆选择自动化系统的重要依据,是系统功能模块有效实现的直接反映。作者参阅2005年国家工程技术图书馆发表的关于“图书馆自动化系统的调研报告”〔5〕中的用户需求,对上述三个开源系统进行了功能比较,帮助读者对这些系统所能实现的功能进行客观把握。从笔者的实际操作来看, Koha几乎具有用户所需的各项功能,包括多样的检索接口,对资源流通过程的系统跟踪;对采购过程的系统管理,如资源编目数据的获取、资源获取的预算与实际资金管理,同时该系统还为小型图书馆提供了简单的采购模块,另外,该系统还提供对期刊与网络资源的编目,因此, Koha系统是值得图书馆界关注的一个重要系统。而PHPMylibrary和PMB系统缺乏对期刊和成员馆的管理,系统功能不如Koha系统完善,因而更适合中小型图书馆选择利用。3·3技术服务系统的维护与服务是关系到图书馆自动化系统是否能长期有效运行的重要因素之一,是图书馆选择这类软件所必须考虑的因素,与商业软件相比,开源软件的技术服务有其特殊之处。面对各种市场需求,越来越多的商业软件许可证中包含了如安装、培训、运行支持、排错性维护和版本升级等技术服务内容,而由于开源软件的开放与自由获取性,用户通常需要自己在相关网站中下载安装与操作文档,当用户在使用过程中遇到问题时,可以通过邮件列表或是其它方式(如由专业软件公司提供的正式支持)获得相应的帮助,这种多样的服务方式为用户提供了个性化的选择。虽然上述三个系统都拥有正式的服务团队,而且Koha系统的技术力量相当强大,不仅由多国专家共同组成,同时还有全球的众多厂商参与,包括新西兰、法国、美国、英国、阿根廷等国家的软件服务公司。但由于地域、语言、时间等限制,国内用户很难真正及时有效获得帮助。尤其是PMB系统,其很多资料都是法语文献,严重影响用户对系统的参与和理解。4结论自从2000年初奥本大学(Auburn University)图书馆成功安装图书馆自动化开源软件以来,国际上许多知名图书馆陆续开始采用开源软件来改善已有的图书馆自动化系统。目前已有数百个图书馆采用Koha系统,散布全球五大洲,包括澳大利亚、美国、加拿大、爱沙尼亚、印度、尼日利亚、波兰等国家。其中美国的Ohio Nelsonville公共图书馆,有7个分馆,馆藏30万册,读者5万人,年流通量62万册,是Koha的最大客户。另外中国台湾地区的仁德医护管理专科学校、南投县南港国小等多个学校使用该系统获得了较好效果〔6〕。而PHPMylibrary和PMB系统用户相对较少,PHPMylibrary目前在坦桑尼亚、印尼和菲律宾等国开始使用。北苏门答腊大学(USU: University of Sumatra Utara)图书馆在线拥有70, 920件馆藏,是到目前为止利用该系统的较大在线馆藏〔7〕, PMB系统目前在全球的用户仅100余个〔8〕。通过对这些软件的比较分析,以期深入理解图书馆自动化开源软件的设计理念,为开源软件在国内图书馆自动化建设中的应用提供参考。传统的图书馆自动化系统开发过程,基于商业利益和技术保密的考虑,仅由开发商负责。由于无缘参与开发,图书馆只能在功能和性能上对软件的质量进行评价,却无法从更深的技术层面来研究软件,导致软件中的错误或低效率逃过检测而进入实际使用,最终延长了软件达到预期目标的周期。开源软件的开发模式令图书馆能够在更大范围和更深层次上参与软件的开发与维护,而用户的参与将有助于全面查找并快速修正软件中的错误,完成软件的多样性和适应性测试,并能根据特殊需求定制或集成软件,从而促使图书馆软件系统趋向成熟。〔参考文献〕〔1〕Eric S. Raymond. The Cathedral and the Bazaar〔EB/OL〕.〔2008-05 - 30〕. http: //www. firstmonday. org/issues/issue3-3/ray-mond/.〔2〕Daniel Chudov. Open Source Software: The Future of Library System〔J〕. Library Journal, 1999, 124 (13): 40-43.〔3〕Nicholas Rosasco, Erik Bakke. Koha architecture study〔EB/OL〕.〔2008-04-20〕. http: //www. kohadocs. org/.〔4〕About PhpMyLibrary〔EB/OL〕.〔2008-04-10〕. http: //phpmyli-brary. com/pml/? page-id=2.〔5〕国家工程技术图书馆信息服务中心.图书馆自动化系统调研报告〔R/OL〕.〔2008-05-03〕. http: //168. 160. 16. 228/libauto/wp-content/uploads/2006/04/dybg. pdf.〔6〕Koha: Documentaiton Subsite〔EB/OL〕.〔2008-04-05〕. http: //www. kohadocs. org/.〔7〕PhpMyLibrary Users〔EB/OL〕.〔2008-04-10〕. http: //phpmyli-brary. org/index2. php? option=com-content&do-pdf=1&id=16.〔8〕PMB users〔EB/OL〕.〔2008-04-20〕. http: //www. sigb. net.
[编辑本段]基本信息软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己的定义: 软件工程(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业务风险总结开发(或不开发)该产品有关的主要业务风险,例如市场竞争、时间问题、用户的接受能力、实现的问题或对业务可能带来的消极影响。预测风险的严重性,指明你所能采取的减轻风险的措施。 项目视图陈述编写一个总结长远目标和有关开发新产品目的的简要项目视图陈述。项目视图陈述将考虑权衡有不同需求客户的看法。它可能有点理想化,但必须以现有的或所期待的客户市场、企业框架、组织的战略方向和资源局限性为基础。 主要特性包括新产品将提供的主要特性和用户性能的列表。强调的是区别于以往产品和竞争产品的特性。可以从用户需求和功能需求中得到这些特性。 假设和依赖环境在构思项目和编写项目视图和范围文档时,要记录所作出的任何假设。通常一方所持的假设应与另一方不同。 首次发行的范围总结首次发行的产品所具有的性能。描述了产品的质量特性,这些特性使产品可以为不同的客户群提供预期的成果。随后发行的范围如果你想象一个周期性的产品演变过程,就要指明哪一个主要特性的开发将被延期,并期待随后版本发行的日期。 局限性和专用性明确定义包括和不包括的特性和功能的界线是处理范围设定和客户期望的一个途径。列出风险承担者们期望的而你却不打算把它包括到产品中的特性和功能。 客户概貌客户概述明确了这一产品的不同类型客户的一些本质的特点,以及目标市场部门和在这些部门中的不同客户的特征。 项目的优先级一旦明确建立项目的优先级,风险承担者和项目的参与者就能把精力集中在一系列共同的目标上。达到这一目的的一个途径是考虑软件项目的五个方面:性能、质量、计划、成本和人员。e.产品成功的因素明确产品的成功是如何定义和测量的,并指明对产品的成功有巨大影响的几个因素。不仅要包括组织直接控制的范围内的事务,还要包括外部因素。如果可能,可建立测量的标准用于评价是否达到业务目标. 3)用户群分类:产品的用户在很多方面存在着差异,例如:用户使用产品的频度、他们的应用领域和计算机系统知识、他们所使用的产品特性、他们所进行的业务过程、他们在地理上的布局以及他们的访问优先级。根据这些差异,你可以把这些不同的用户分成小组。用户类不一定都指人,你可以把其它应用程序或系统接口所用的硬件组件也看成是附加用户类的成员。以这种方式来看待应用程序接口,可以帮助你确定产品中那些与外部应用程序或组件有关的需求。将用户群分类并归纳各自特点为避免出现疏忽某一用户群需求的情况,要将可能使都有所差异。详细描述出它们的个性特点及任务状况,将有助于产品设计。 4)选择产品代表:择每类用户的产品代表为每类用户至少选择一位能真正代表他们需求的人作为那一类用户的代表并能作出决策。这对于内部信息系统的开发是最易实现的,因为此时,用户就是身边的职员。而对于商业开发,就得在主要的客户或测试者中建立起良好的合作关系,并确定合适的产品代表。他们必须一直参与项目的开发而且有权作出决策。每一个产品代表者代表了一个特定的用户类,并在那个用户类和开发者之间充当主要的接口。 5)建立核心队伍:建立起典型用户的核心队伍把同类产品或产品的先前版本用户代表召集起来,从他们那里收集目前产品的功能需求和非功能需求。这样的核心队伍对于商业开发尤为有用,因为你拥有一个庞大且多样的客户基础。与产品代表的区别在于,核心队伍成员通常没有决定权。 6)确定使用实例:让用户代表确定使用实例从用户代表处收集他们使用软件完成所需任务的描述-使用实例,讨论用户与系统间的交互方式和对话要求。在编写使用实例的文档时可采用标准模版,在使用实例基础上可得到功能需求。 一个单一的使用实例可能包括完成某项任务的许多逻辑相关任务和交互顺序。因此,一个使用实例是相关的用法说明的集合,并且一个说明是使用实例的例子。在描述时列出执行者和系统之间相互交互或对话的顺序。当这种对话结束时,执行者也达到了预期的目的。 对于一些复杂的使用实例,画出图形分析模型是有益的,这些模型包括数据流程图、实体关系图、状态转化图、对象类和联系图。 使用实例的描述并不向开发者提供他们所要开发的功能的细节。为了减少这种不确定性,需要把每一个使用实例叙述成详细的功能需求。每一个使用实例可引伸出多个功能需求,这将使执行者可以执行相关的任务;并且多个使用实例可能需要相同的功能需求。使用实例方法给需求获取带来的好处来自于该方法是以任务为中心和以用户为中心的观点。比起使用以功能为中心的方法,使用实例方法可以使用户更清楚地认识到新系统允许他们做什么。 每一个使用实例都描述了一个方法,用户可以利用这个方法与系统进行交互,从而达到特定的目标。使用实例可有效地捕捉大多数所期望的系统行为,但是你可能有一些需求,这些需求与用户任务或其他执行者之间的交互没有特定的关系。这时你就需要一个独立的需求规格说明。 7)召开应用程序开发联系会议:召开应用程序开发联系会议应用程序开发联系会议是范围广的、简便的专题讨论会,也是分析人员与客户代表之间一种很好的合作办法,并能由此拟出需求文档的底稿。该会议通过紧密而集中的讨论得以将客户与开发人员间的合作伙伴关系付诸于实践。 8)分析用户工作流程:分析用户工作流程观察用户执行业务任务的过程。画一张简单的示意图(最好用数据流图)来描绘出用户什么时候获得什么数据,并怎样使用这些数据。编制业务过程流程文档将有助于明确产品的使用实例和功能需求。你甚至可能发现客户并不真地需要一个全新的软件系统就能达到他们的业务目标。 9)确定质量属性:确定质量属性和其它非功能需求在功能需求之外再考虑一下非功能的质量特点,这会使你的产品达到并超过客户的期望。对系统如何能很好地执行某些行为或让用户采取某一措施的陈述就是质量属性,这是一种非功能需求。听取那些描述合理特性的意见:快捷、简易、直觉性、用户友好、健壮性、可靠性、安全性和高效性。你将要和用户一起商讨精确定义他们模糊的和主观言辞的真正含义。 10)检查问题报告:通过检查当前系统的问题报告来进一步完善需求客户的问题报告及补充需求为新产品或新版本提供了大量丰富的改进及增加特性的想法,负责提供用户支持及帮助的人能为收集需求过程提供极有价值的信息。 11)需求重用:跨项目重用需求如果客户要求的功能与已有的产品很相似,则可查看需求是否有足够的灵活性以允许重用一些已有的软件组件。
软件工程导论 第6版 免费下载
链接:
《软件工程导论》是2009年1月清华大学出版社出版的图书,作者是朱少民。
软件工程导论(第六版).ppt免费下载
链接:
《软件工程导论》是2009年1月清华大学出版社出版的图书,作者是朱少民。