前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇软件开发范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
给记者留下深刻印象的是,软件开发者大会并没有一味地讲解软件开发的方法和软件工具,而是更多地从应用的角度出发,将应用与软件技术相结合,深入探讨软件技术如何为热点应用服务,比如移动互联网、大数据等。除了技术与应用之外,大会更加关注软件开发者这个群体,包括软件开发人员的生存状态、软件开发者的创业等。
研究人和行
在本次大会上,与大数据相关的主题演讲和讨论很多。我们已经步入了大数据时代。为了让大数据更好地服务于企业、社会和人,我们有必要先搞清大数据时代人与机器所扮演的角色,以及人与机器之间的关系。
奇虎360高级总监、商业产品首席架构师刘鹏十分肯定地表示:“大数据主要服务于机器。大数据服务于人不是不可能,但大数据服务的这些人主要是那些具有高专业素养的数据科学家或数据统计工作者。实际上,企业建立一支专业的数据科学家队伍的难度比建立一套大数据系统或平台更大。另外,人只能在宏观上或对部分场景做出判断和决策,而机器可以针对个体或全量的场景做出决策。”
奇虎360目前对数据进行加工和分析,主要目的是想提升广告的效果,帮助广告主更精准地找到目标客户。也有一些中国的大型互联网公司和第三方数据服务公司正在研究直接通过数据加工和交易来实现数据变现。不过,这一研究目前还处于起步的阶段。今年,贵阳、武汉等地的大数据交易所陆续挂牌。12月初,河北一家大数据交易所也正式启动。
“5年前,人们已经开始利用大数据来改善企业内部的管理流程,优化运营效果。相关的产品和解决方案已相当成熟。”刘鹏告诉记者,“现在,我们将主要精力放在研究用户跨企业、跨地域的行为数据,并根据用户的整体行为数据建模,然后有针对性地为他推荐新业务。这与企业内部利用大数据的模式不同。在广告业务中,我们已经把自有的数据用到了极致,进行全量、实时分析,并在基础设施和大数据工具方面不断创新。”
以前,由于技术的限制,人们只能利用数据做浅层的挖掘。现在,随着企业IT基础设施能力的增强,以及云计算、深度学习等技术的出现,人们可以针对全量数据进行更深入的挖掘。“我们正在研究利用更复杂的模型深入地分析用户的行为数据,以便更准确地找到其兴趣点和特征。这才是未来几年中国大型互联网公司要做的事,大规模的数据交易和合作并不是重点。”
为了每天3000万活跃用户
今日头条有一个口号:您关心的,才是头条。今日头条技术副总裁杨震原解释说:“所谓读者关心的新闻,是指读者喜欢看和想看的,而且看完之后还想回来再继续看的新闻。我们通过不断改进推荐算法,优化内容的筛选,为读者推荐其真正关心的新闻。”
目前,今日头条每天的活跃用户数超过3000万。如此庞大的用户量,人工推荐新闻的方式根本是不可能的。今日头条通过专门的兴趣探索方式,借助机器推荐和大数据分析实现优质内容的筛选。
曾经在百度工作过的杨震原十分感谢百度对他的培养和那一段时期的历练。百度的网页搜索与今日头条的内容搜索既有相同之处,也有很大不同。“今日头条将内容推荐作为一个主要的应用场景,呈现给读者的内容几乎100%是通过推荐方式。这样的产品在业内是非常少见的。”杨震原介绍说,“早期的信息传播方式是根据订阅的需求,先对信息进行分类,然后再进行搜索。这种方式是十分有效的。现在,我们在这种方式的基础上,通过机器推荐的方式,分析用户的阅读行为,然后判断应该推荐什么样的内容。这种模式未来还有很大的发展空间,可以做很多以前不能做的事。这种模式不仅适用于新闻推荐,也可以用于其他很多方面。”
今日头条采用的这种机器推荐的方式,说到底还是以大数据为基础,通过分析用户的行为数据,达到为用户精确推荐内容的目的。
“85后”开始挑大梁
本次大会的一场重头戏就是CSDN历时一年制作的《2015年中国软件开发者白皮书》(以下简称《白皮书》)的。《白皮书》对中国软件开发者的生存现状,以及数据库应用开发、大数据应用、云计算应用、移动开发技术、Web应用开发的现状和发展进行了研究和分析,得出了以下几点结论。
第一,“85后”甚至“90后”的软件开发者正在崛起,已成为软件开发群体的主力军。他们更具创新和开拓精神,但也面临开发经验不足、专业技能欠缺等瓶颈。
第二,中国的移动互联网市场在蓬勃发展,相当数量的开发人员已由传统的Web应用、数据库等领域转向移动应用类软件的开发。选择合适的产品推广渠道、提供差异化的产品和服务是中小型的移动应用开发者团队要解决的问题。
第三,开发者利用第三方云服务加速应用开发已经成为趋势,但如何保证云平台数据的安全性,以及企业业务如何平滑地向云平台迁移,并与企业现有IT环境进行整合是亟待解决的问题。
第四,随着互联网、智能设备的普及,对海量用户的行为数据进行快速、准确的分析并加以利用是一项巨大的挑战。CSDN的调查数据显示,七成以上的企业已经开始利用各种大数据处理技术和数据分析产品驱动企业的产品开发和运营。专业大数据技术人才的缺乏是大数据应用快速发展的一个主要障碍。
CSDN的调查数据显示,平均每3个月就会有一款App面世。这就要求在软件开发速度,产品的功能、质量、稳定性等多个方面实现质的飞跃。这是对软件开发者提出的最大挑战。
移动互联网是风口
2008年的那届中国软件开发者大会邀请了时任金山副董事长的雷军做主题演讲。他当时就提到,移动互联网是一个好机会。现在,没有人会怀疑,移动互联网就是那个可以“让猪飞起来的风口”。CSDN的调查数据显示,中国移动应用领域的开发者有80万之多。新技术革命正在打破旧的技术和商业体系,同时也引发了云计算、移动互联网、大数据等新兴领域的激烈竞争。
对于创业者来说,基于移动的企业和行业服务是很大的机会。CSDN的调查显示,超过70%的软件开发者从事的都是与企业和行业服务相关的开发工作。美国的前十大电商中, 除了亚马逊和eBay以外,其他都是传统企业,包括百货公司和大型连锁零售企业。但是,中国的前十大电商中根本找不到传统企业的身影。中国的传统企业只是利用信息化工具实现了企业内部的业务数字化,而没有在商业价值上带来很大提升。进入“互联网+”时代,传统企业必须迎头赶上,要善于利用云计算、移动化等技术和工具改造自己的企业,创造出新的价值,最终转变成数据驱动型的企业。
CSDN创始人蒋涛总结出软件开发者在创业时应该注意的几个问题:第一,创业者应该选择一个更大的市场;第二,找到这个行业中最大的应用痛点,然后努力攻关;第三,不要贪大求全,专心做好一个产品模块或解决一个具体问题,然后深入下去;第四,注重产品的用户体验,持续进行产品改进;第五,产品设计和业务运营很重要,建立团队更重要,创业企业一定要有一个结构合理的团队;第六,顺势而为。
关键词:敏捷软件开发;XP;SCRUM
中图分类号:TP31 文献标识码:A 文章编号:1007-9416(2017)02-0189-01
1 引言
在最初的传统软件开发中,瀑布模型是最常用的软件生命周期模型。瀑布模型将软件开发过程划分为可行性研究与计划、需求分析、设计、编码、测试、运行与维护这样几个阶段,并且规定这几个阶段是自上而下、相互衔接的固定次序。作为最早出现的软件开发模型,瀑布模型在软件工程中占有重要的地位,但是瀑布模型中阶段之间的依赖关系非常强烈,如果上一个A段没达到目标要求,那么将会导致下一个阶段工作的停滞,从而导致软件开发周期延长。而且,如果项目的早期需求在后期发生变化,那么项目付出的代价将会非常高。有数据显示有70%的采用瀑布模型开发的软件项目均以失败告终。正因为产品需求的瞬息万变,同时也因为技术发展的日新月异,敏捷软件开发方法诞生了。
2 敏捷软件开发
敏捷软件开发,又称敏捷开发,是从90年代开始逐渐引起关注的一种新型软件开发方法,能够应对快速变化的需求,它强调程序员团队与业务专家之间的紧密协作、面对面的沟通、频繁交付新的软件版本、紧凑而自我组织型的团队、能够适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。
敏捷软件开发方法重视软件生产效率,非常适用于软件需求不确定、用户易沟通并且能参与开发、开发人员有责任感并且积极向上、十个人以下的小项目的开发。敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。
3 常用的敏捷方法
在软件项目开发中,比较常用的敏捷方法主要有:Scrum、极限编程、水晶方法、特征驱动开发、统一过程和动态系统开发方法等。这些方法基本都相继兴起于20世纪90年代的不同时期,主要是作为瀑布方法失败的一种应对,它们在思想和技术上有着大量的相互交流。
Scrum是一种灵活的敏捷软件开发管理过程,它将软件开发团队比作橄榄球队,全队有明确的最高目标:产品的重要性高于一切。团队高度自治,队员们熟悉开发过程中涉及到的各种技术,紧密合作,确保每个迭代都朝着最高目标推进。而且每隔2至6周,每个人都能看到能实际工作的软件,并且据此决定是这个版本还是继续开发以加强它的功能。对于功能需求可能经常发生变化的项目来说,Scrum是它们最为理想的选择之一。Scrum是目前使用最广泛的敏捷方法,由于它没有规定工程实践,所以通常Scrum实施过程中会应用XP中提出一些的工程实践,比如持续集成、结对编程等。
极限编程是在需要加强开发者与用户的沟通需求下诞生的,它可以让客户全面参与软件的开发设计,保证客户变化的需求及时得到修正,它也非常注重用户的反馈,这与让客户加入开发是一致的,让客户参与就是随时反馈软件是否符合客户的要求。通过沟通和反馈,双方可以清楚地了解开发进度、变化、困难和急需解决的问题等,并及时地调整开发过程。沟通、简单、反馈、勇气、谦虚是极限编程的核心价值。使用极限编程的软件开发人员只需要开发初期编写一些文档,而且因为测试优先,这样可以把开发后期缺陷的出现降到最低。
水晶方法是一些敏捷方法系列,包含具有共性的核心元素,每个都含有独特的角色、过程模式、工作产品和实践,实际上是一组经过证明、对不同类型项目非常有效的敏捷过程,它的发明使得敏捷团队可以根据其项目和环境选择最合适的水晶方法家族成员。
特征驱动开发是敏捷开发的流程之一,其核心理念是先集中精力创建待开发系统的领域模型,然后,围绕实现这些领域模型的特征来组织开发,可运用于小项目和大型项目,统一过程是一种流行的构造面向对象系统的迭代软件开发过程,是一种用例驱动的迭代式增量开发过程,每次迭代过程中主要的工作流包括捕获需求、分析、设计、实现和测试等。统一过程多种变种产生,如Rational统一过程、敏捷统一过程,以及企业统一过程。
动态系统开发方法倡导以业务为核心,快速而有效地进行系统开发,它全面定义了多种不同的角色、过程和工件,比大多数其他敏捷方法显得更加正规。实践证明它是成功的敏捷开发方法之一,其中一个重要的特征是根据"MoSCoW法则"来进行需求优先级排序:M表示必不可少的需求;S表示如果可能,尽量具备;Co表示可以有,但并非关键;W表示目前不需要,但可能以后需要。
4 结语
本文简单介绍了的几种常见敏捷开发方法,它们之间相通的,所以应该采取兼容并蓄的态度,根据自己的具体情况,具体剪裁。在实际的软件开发中,开发团队应该根据项目规模、开发环境,在实践中选择恰当的方法。
参考文献
[1]杨帆,徐俊刚.一种改进的Scrum敏捷软件开发方法[J].电子技术,2011.
关键词:XP SCRUM DSDM Crystal FDD ASD
中图分类号:TP2 文献标识码:A 文章编号:1007-9416(2014)05-0188-01
1 引言
自从软件工程产生以来,我们在降低软件开发项目的风险过程中尝试过多种方法,虽然面向对象、结构化、CMM等技术有利于帮助软件危机的解决,然而其复杂的过程使软件行业陷入低效泥沼中。2001年Kent beck Martin Fowler Robert Martin等经验论阵营的头领发起了敏捷联盟向全世界了他们的宣言:个体和交互胜过过程和工具;工作软件高于理解文档;客户合作胜过合同谈判;响应变化胜过遵循计划。宣言体现了软件开发方法必须去适应软件变化的特征,在宣言的基础上就提出了敏捷软件开发方法。
2 敏捷方法概述
截止现在敏捷软件开发方法还没有一个确定的定义。但它的特点是重视软件生产效率的,适用于软件需求不确定、用户易沟通并且能参与开发、开发人员有责任感并且积极向上、十个人以下的小项目的开发,是以保证软件开发有成功产出为前提的,尽可能减少在开发过程中制成品的方法,体现“刚刚够”(Just enough)的观点。
人作为核心、循序渐进和迭代算法是敏捷软件开发的宗旨。在敏捷软件开发过程中,软件项目被分解成很多个小项目,每个小项目的成果都经过测试,再把他们集成起来。它的灵活性、协作性和软件的商业价值上作出的贡献是敏捷软件开发方法的优势。这都在“敏捷宣言”的核心原则中得到了体现:交互和独立工作是建立在工具和过程基础上的、软件使用是建立在文档基础上的、客户的协作是建立在合同谈判基础上的、对变更做出的响应是建立在遵循计划基础上的。
3 几种常用的敏捷方法比较
3.1 极限编程(XP)
极限编程(简称XP)是由KentBeck于1996年提出的,极限编程要求把它列出的每一个思想和方法都做到极限、做到最好。
极限编程的核心价值是我们在开发中必须注意的:Communication(沟通)、Simplicity(简单)、Feedback(反馈)、Courage(勇气)、此外还有第五个价值: Modesty(谦虚)。因为计划赶不上变化,使用极限编程的软件开发人员只需要在开发的初期做出一些文档。极限编程把软件测试放在首位,这样以后出现漏洞的几率就会降到最低。
极限编程是一种近螺旋式的开发方法,它把复杂的开发分解为相对比较简单的小软件;通过沟通、反馈和其它的方法,客户和开发人员就可以清楚的了解到开发进度、变化、困难和急需解决的问题等,并及时地调整开发过程。
3.2 SCRUM
SCRUM的宗旨是发挥构件技术和面向对象的开发方法,对迭代式面向对象方法进行改进,适用于需求不确定的产品的开发。是迭代的增量化过程,便于工作管理和产品研发。更综合了各种开发的经验。
SCRUM把项目分成N个为期15-30天的迭代阶段,称之为“冲刺”(sprint)。每个“冲刺”之前,你明确这一个“冲刺”需要实现的功能,然后让开发人员去完成。但是,在“冲刺”时,SCRUM的核心是所有开发都围绕着迭代,需求是固定的。SCRUM方法中只有3中角色:SCRUM主管、开发团队、产品负责人。
3.3 动态系统开发方法(DSDM)
开发一种面向领域的快速开发方法是产生动态系统开发方法的原因,动态系统开发方法在技术支持、应用推广、研究改进培训认证和培训认证等方面都比其他方法要完善,适用于对时间要求很紧的开发项目,动态系统开发方法应用范围不再仅仅局限于IT行业。
DSDM方法提倡以业务为核心,快速而有效地进行系统开发,并提出了探索式开发方法的概念。强调软件使用者一开始就预见所有需求是不可能的。该方法中,只要进能入下一步,当前的算法就是可行的。
3.4 水晶方法(Crystal)
水晶方法是Alistair Cockburn于上世纪90年代末提出的,水晶方法目的是发展一种提倡“机动性的”方法。
Crystal是根据项目重要性和规模来区别项目的,并给出相应的办法。所以,crystal是多种方法的组合.它阐明了要把对话和交流放在第一位的观点。Crystal方法中有两条准则:(1)应用反思工作室促使方法学的自适应,(2)使用的增量式循环不超过4个月。
3.5 特性驱动开发(FDD)
特性驱动开发是一个强调快速迭代、特性驱动的软件开发方法,适用于周期短的开发。它既能保证文档和质量,又能保证软件的快速开发,并提出划分的每一个功能开发时间不超过两星期,要求两星期内生产出可见的、能运行的代码。
特性驱动开发方法认为简单的过程和良好的定义就能很好地被执行,它强调的是实用、简化、易于被开发人员接受,是一个特性驱动快速迭代的过程,适用的项目为软件需求经常变动。
3.6 自适应软件开发(ASD)
自适应软件开发方法的理论来源是复杂自适应系统理论,目的是通过提高自适应性用来应对互联网时代下的软件需求难于预测并高速变化的软件开发,它与水晶方法正在相互借鉴和融合。
在一个环境中,结果是不可预测的,把计划看成是一个自相矛盾的。在计划中,偏离计划就是错误的,要纠正。而在一个适配性环境里,偏离计划恰恰是在引导开发人员走向正确的目标。在不可预测的环境中,需要我们用各式各样的方法来应对不确定性。在管理中,重点在于鼓励大家交流沟通,而不是告诉大家需要做什么,从而使开发人员能自己提出具有创造性的解决方案。
4 结语
不同的开发方法对于不同的开发人员来说,意义是不同。不同的项目规模,不同的开发环境,也决定了开发团队采用哪种开发方法,本文仅仅对敏捷开发方法做了一个简单介绍,相信能为开发团队在实践中选择方法提供一个比较客观的参考。
参考文献
为加大项目管理的力度,多数企业或项目组应用CMM的标准来管理项目的开发,并达到了一定的成效。但是应用CMM标准之后,给项目经理提出了太多的要求。但是,能够胜任的项目经理目前又非常紧缺。如何让传统的项目经理胜任其岗位,是一个值得探讨的问题。
CMM后项目经理难当
在项目开发和管理中应用CMM标准之后,对传统的软件项目经理又提出了新的更高的要求。
首先,项目经理必须非常熟悉CMM管理规范,又有较高的开发技术。而实际情况是有实践经验又有理论知识的项目经理少之又少,所以“勉强的项目经理”比比皆是。他们有一定的开发经验,程序写得很好,有一定资历,没有受过正规训练,也可能没有做过管理人员。
其次,加强项目管理的力度。技术型的项目经理往往爱才,对于技术非常好的项目成员,一般都比较迁就,只要他能够按期完成任务,可以不按照规定提交文档(如周报),或事后补交,甚至是找人。最终的结果就是CMM成了文档化的形式。
第三, CMM要求完成大量的文档,往往需要项目经理投入较多的精力和时间来完成,以至占用了大量的技术研发的时间,项目进度可能由此拖延,造成项目经理常常难于兼顾项目的质量和进度。
第四,项目经理要有较强的组织协调能力。项目经理不仅要善于处理项目组内部成员、公司部门之间的矛盾和冲突,还要处理与客户之间的关系。这一点,对技术型的项目经理来说,这个人际交往的难题,而且“伺候”客户也需要大量时间。
CMM后宜采用双PM模式
为既保证项目的进度又确保项目产品的质量,管理上符合CMM要求,建议项目开发采用双PM模式。双PM模式,即是项目组设立两个经理:项目经理和产品经理。
项目经理负责对项目日常事务管理,主要是负责产品研发以外的事情,包括市场调研、客户关系、项目组内部的组织与协调、人员管理、项目计划、风险管理等等;产品经理则专职负责技术研发,包括需求调研、需求分析、概要设计、详细设计、数据库设计、编码、测试、部署实施等。
实际开发过程中,许多活动是并行或迭代的。项目经理和产品经理两者各司其职,相辅相成。通过双PM模式管理软件项目开发,由项目经理处理项目组的日常事务,指导项目组按照规范进行开发,完善项目组的各种文档,及时解决项目组内部的问题,协调客户关系。这样,产品经理就可以专注于技术研发工作,有效提高软件开发的效率。
据不完全统计,在软件项目开发过程中,技术类文档的数量一般有二十余份,管理类文档的数量绝对超过四十份,而管理类文档至少一半需要由项目经理完成,大部分需要项目经理参与评审。试想,按照传统的开发模式,项目经理如何应付如此大量的文档工作?因此,传统的软件开发,文档工作往往流于形式,大多数是在项目开发结束后,专门组织几个“”补充项目的过程文档和技术文档。一旦项目经理或关键技术人员中途辞职,公司和项目组就会元气大伤,项目开发陷于瘫痪状态。
传统的软件开发模式是“以技术为主、以管理为辅”,项目经理的管理能力不一定行,但他是项目组中绝对是技术权威。实施CMM的标准进行管理之后,完全可以实现软件开发的“政企分开”的管理模式―双PM模式,将传统的软件管理模式转变为“以过程为核心、以度量为基础”软件项目管理。
当然,双PM模式下的项目经理同样也有很高的要求,要有丰富的软件开发经验和CMM的理论知识,同样也需要具备技术、工具、过程、资源管理等要素,但技术并不是占主导地位,最重要的一点,就是能够严格按照公司的软件工程规范执行。而传统开发模式下的项目经理这一角色就转变为专门负责技术的产品经理。
乙方:_________________________
上述甲,乙双方经友好协商一致,达成以下协议。双方申明,双方都已理解并认可了本协议的所有内容,同意承担各自应承担的权力和义务,忠实地履行本协议。
第一条协议项目
甲方为乙方开发_________________软件(单机版/网络版)_________套。
第二条软件价格,付款方法
1.软件价格:甲方向乙方开发的_________软件(单机版/网络版)定价为_________元人民币/套。
2.付款方法:在本协议签定的_______天内,乙方必须向甲方交付软件定价的_________的定金,即_________元人民币。软件由甲方开发完毕,并由乙方检验通过后,乙方一次性向甲方付清剩余的_________软件开发款项,即_________元人民币。
第三条软件开发时间
在本协议签定当日起,甲方开始软件的开发。开发时间为_____个月。即从______年____月____日起至______年____月_____日止。经双方协商一致,可以延长或缩短该期限。
第四条软件验收标准
乙方验收软件的标准以双方合拟的协议附件功能说明书作为通过的根据。
第五条售后服务条款及时间
甲方为乙方免费培训一定人数的软件使用人员。
甲方提供一年的免费软件系统维护服务。包括数据整理,备份等。该时间为软件由乙方验收通过之日开始的一年。免费服务期满后,另签服务协议。
甲方在软件验收通过之日起的两年期间,如对软件系统进行版本更新,将免费为乙方提供系统升级服务。期满后,甲方将对有需要的用户提供系统最新版本的升级服务,统一收取费用。
第六条乙方运行软件的电脑硬件设备及操作系统由乙方自行解决。甲方不会替乙方的电脑平台提供升级或维护,并不会为乙方其它软件版权等事宜负任何责任。
第七条乙方在软件使用过程中,如果要增加协议附件(功能设计书)之外的其它功能,则要另行支付甲方开发费用;如属软件本身质量问题,甲方免费为乙方修正。
第八条甲方为乙方开发的软件只能使用在协议乙方单位范围内。乙方对甲方所开发之软件产品应作妥善保管,尊重甲方所有的版权,不得对甲方销售之软件产品进行反向工程,反向编译,反汇编或出租。
否则乙方愿意承担由此给甲方带来的一切损失,甲方保留追究乙方法律责任的权利。
第九条其它
1.甲方只负责开发软件,乙方使用该软件做其他事务,后果由乙方承担。
2.除在不可抗力或双方协议的情况下,本协议书不能取消。
3.如双方在协议期内有任何争议,应友好协商解决。若协商不成,可提交深圳市经济仲裁机构促裁。