软件项目与工程管理论文栏目提供最新软件项目与工程管理论文格式、软件项目与工程管理硕士论文范文。详情咨询QQ:1847080343(论文辅导)

软件项目论文下载:了解大型软件项目的开发流程从实战中提高软件开发能力

日期:2018年01月15日 编辑: 作者:无忧论文网 点击次数:1456
论文价格:免费 论文编号:lw201112311148166238 论文字数:0 所属栏目:软件项目与工程管理论文
论文地区:中国 论文语种:中文 论文用途:职称论文 Thesis for Title

Abstract:Professional degree,relative to the academic degree in terms of degree type,is to train high-levelapplication talent with solid theoretical foundation and adaptable to specific trade or occupation.In order to reach thisaim,in last one year,our master students have contacted large-scaled software development in the cooperation withthe company and college of USA;they are aware of the development process of large-scaled software developmentand improved their software development ability by the real practice.This paper introduces the procedure andsummarizes some experiences.

 

Key words:professional degree;software development;customer requirement;software architecture;codequality

 

摘要:专业学位(professional degree),是相对于学术性学位(academic degree)而言的学位类型,其目的是培养具有扎实理论基础,并适应特定行业或职业实际工作需要的应用型高层次专门人才。如何到达这个目标,我们在培养计算机工程硕士的这一年多时间里,通过与美国的IT业软件项目硕士论文公司和大学的合作,让工程硕士参与到软件中介发标的项目中,从中接触一些大型软件项目的开发,了解大型软件项目的开发流程,从实战中提高软件开发能力。文章介绍了这一过程,并进行经验总结。

 

关键词:专业学位;软件开发;客户需求;软件构架;代码质量

 

专业学位与学术性学位在培养规格上各有侧重,在培养目标上有明显差异。专业学位以专业实践为导向,重视实践和应用,培养在专业和专门技术上受到正规的、高水平训练的高层次人才,授予学位的标准要反映该专业领域的特点和对高层次人才在专门技术工作能力和学术能力上的要求。专业学位教育的突出特点是学术性与职业性紧密结合,获得专业学位的人,主要不是从事学术研究,而是从事具有明显的职业背景的工作。
武汉大学计算机学院从2009年开始招收计算机工程硕士,以培养能够从事软件开发的应用型人才。软件工程相关知识是各个公司在开发大型商业软件项目当中总结出来的,具有很强的实践性。如果单独通过课本的讲授,工程硕士难以获得深刻的印象,而且难以达到教学目的。因此,必须让工程硕士接触到真正的商业软件项目,并且参与到软件开发的各个过程,让他们更加深刻地体会课程中讲授的知识点,提高其软件开发能力。
为了达到这个目标,我们在开始培养计算机工程硕士的这一年多时间里,通过与TRILOGY/GDEV合作,让工程硕士参与到当前主流大型商业软件的开发过程当中,从而更好地掌握软件工程课程教授的知识,并且了解当今软件开发中应用的主流技术和开发模式,从实战中提高软件开发能力。
1背景介绍
成立于1989年的Trilogy公司,总部位于德州奥斯丁,在印度和中国均设有分支机构。Trilogy公司在全球拥有600多名业内精英和超过500项的专利技术,有着17年与世界500强企业成功合作并获利的经验,曾被福布斯、财富、商业周刊、哈佛商业评论等著名商业杂志誉为高度创新和高瞻远瞩的公司。
Trilogy公司当前专注于数据挖掘和用户体验相关的业务,倡导新型的商业服务和技术支持,为客户提供完全的商业价值保障。其主要客户包括:FordMotor,General Electric Healthcare,Daimler-Chrysler,Nissan,Goodyear Tire&Rubber,Prudential,TravelersInsurance,Gateway,IBM等公司。
至2006年止,Trilogy公司已为汽车、保险、消费电子等行业提供多个商业服务项目,如:FordDirect.com,Goodyear,TTG,Chrysler.com,Prelaunch,Gateway,TIS等。我们通过网上投标,参与这些项目的开发。
项目开发的过程主要包括:下载PIP(Product InfoPage)和RFP(Request For Proposal)文档、虚拟机(以及SVN代码)和程序文档。PIP是一个网页,是项目的需求;RFP文档是关于项目使用的技术概述;虚拟机是模仿对方开发环境的平台;程序文档放在网站上一个固定位置,如Bundle Location。发标的公司会提出:
“Deliverables”:是最终需要提交的东西,一项都不能少,否则算失败。
“Acceptance Criteria”:对方接收的标准,符合标准的就算通过。
“Deadline”:提交时间,超过这个时间即为失败。
项目提交后,如果判为失败,开发者还可以申诉(Rebut)。
2项目开发的收获
通过参与这些项目的开发,工程硕士主要在以下几个方面有所提高。
2.1锻炼工程硕士与客户沟通的能力
客户的需求是基于其公司的商业逻辑,如何准确无误地获得客户的需求,并且从软件开发的角度将需求进行规范化,这是软件开发中必须解决的首要问题。
由于是跟美国IT业公司进行合作,所以该案例采用的交流方式是线上交流,而非传统的面对面交流。线上交流的主要方式是使用美国公司提供的Issuetracking system(http://en.wikipedia.org/wiki/Issue_tracking_system),完全是通过英文交流。长期的网上交流,锻炼工程硕士的英语交流能力和业务逻辑的理解能力。
2.2学习当前主流技术
在项目开发过程中,工程硕士能够接触到当前IT业主要使用的各种技术。同时,结合项目地学习可以让工程硕士更好地了解这些技术应用的场景、目的以及作用。下面列举项目中用到的一些技术。
1)编程语言:主要采用Java,便于上手,以免工程硕士花太多时间在学习语言上。
2)构建工具:Ant是一种基于Java的build工具,用于自动化调用程序完成项目的编译、打包、测试等。脚本格式基于XML,便于维护,而且基于Java的,具有平台无关的特点。
3)虚拟机:要求配置模拟各种平台的虚拟机环境。
4)数据库:采用Oracle、DB2、PostgreSQL和SQLServer,均是当前主流数据库管理软件。
5)数据库查询语言:SQL以及OQL。其中项目中主要使用OQL(http://en.wikipedia.org/wiki/Object_Query_Language)即对象查询语句,使用OQL有利于软件开发过程中的效率和规范化。
6)测试工具:JUnit,Selenium。JUnit是由ErichGamma和Kent Beck编写的一个回归测试框架,广泛应用于单元测试当中。Selenium是一个用于Web应用程序测试的工具,通过编写模仿用户操作的Selenium测试脚本,可以从终端用户的角度来测试应用程序,能够支持不同的浏览器,以及能够使用各种编程语言编写,广泛应用于UI测试当中。
7)XML技术:XML是一种平台无关的表示数据的方法。使用XML创建的数据可以被任何应用程序在任何平台上读取。甚至可以通过手动编码来编辑和创建XML文档。XML在网络应用和信息共享上方便、高效,可扩展。所以,可以XML作为一种先进的数据处理方法,使网络跨越到一个新的境界。在本项目中,XML主要用于书写配置文件。
2.3熟悉软件构架
众所周知,软件架构是一个软件先进性集中体现的地方。通过外包软件的开发,能够了解软件项目的架构,分析软件中应用的各种框架,理解应用的设计模式。下边是Java EE项目中常用的一些开源的框架。
1)Hibernate是一种Java语言下的对象关系映射解决方案。它是使用GNU宽通用公共许可证发行的自由、开源的软件。它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。Hibernate也是目前Java开发中最为流行的数据库持久层框架。它的设计目标是将软件开发人员从大量相同的与数据持久层相关的编程工作中解放出来。无论是从设计草案还是从一个遗留数据库开始,开发人员都可以采用Hibernate。
2)Spring是一个开源框架[1-2],它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring通过一种称作控制反转(IoC)的技术促进了松耦合。Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计和事务管理)进行内聚性的开发。应用对象只完成业务逻辑,并不负责其他的系统级关注点,例如,日志或事务支持[3-4]。
3)Struts有一组相互协作的类、Serlvet以及JSPTagLib组成[5]。基于Struts构架的Web应用程序基本上符合JSP Model2的设计标准,可以说是MVC设计模式的一种变化类型。我们参与的软件外包项目很容易理解为什么Struts是一个Web软件开发框架,而不仅仅是一些标记库的组合,理解理解Stru