引论:我们为您整理了13篇软件开发与定制范文,供您借鉴以丰富您的创作。它们是您写作时的宝贵资源,期望它们能够激发您的创作灵感,让您的文章更具深度。
篇1
1.定制开发软件的优缺点分析
不同的学校,在管理模式、办公流程上都存在很大差异,商品软件很难满足不同学校的需求,很多学校都希望按照自己的意图来定制开发软件。当然,学校在软件定制开发模式上有多种选择,一是学校自行组建开发团队定制开发;二是由软件公司根据学校的需求为学校量身定制开发;三是与软件公司合作,共同定制开发。下面对定制开发软件的优缺点作一个分析。
定制开发软件的优点:(1)能完全按照学校的实际管理模式进行开发,能很好的满足用户的个性化的需求;(2)功能模块清晰,冗余度低。
定制开发软件的缺点:(1)开发周期长,存在很高的研发失败的风险;(2)项目开发团队的开发经验和开发水平严重影响软件性能;(3)学校的需求只是近期需求,或是部分人的需求,根据学校发展或领导更换,需求会发生质的变化,会导致很多功能模块需要重新开发,增加开发成本;(4)无成型可参考的行业经验和管理思想,开发人员可能一味的听从使用部门或领导的要求,有可能把一些错误的或不合适的业务流程写到软件中去;(5)各功能模块的正确性需要长时间试用验证;(6)定制开发的软件不具备通用性,必须配备一个技术团队不断的开发维护系统,由于软件开发人员流动性大,后期维护难度很大,必定在人力成本和管理成本上付出巨大代价。
2.成熟商品软件优缺点分析
学校在成熟商品软件的选择上也有多种模式,一是采购成熟的商品软件,一次到位;二是采购成熟的商品软件,然后根据学校的一些特殊需求进行二次开发。下面对商品软件的优缺点作一个分析。
成熟商品软件的优点:(1)经过大量用户使用验证,产品具有稳定性、可扩展性、健壮性、通用性和易维护性。(2)能够快速实施部署上线运行,易于推广使用,见效快。(3)风险小,只要学校在考察软件时,选择知名软件商,在功能上能够满足学校的需要,能够跑通学校的基本流程,基本上不用担心软件存在问题。
成熟商品软件的缺点:(1)软件的操作流程与学校的办公流程不尽相同,需要学校改变观念,适应软件操作流程;(2)系统功能模块较多,存在一定的冗余模块。
3.高职院校数字化校园软件建设的建议
高职院校数字化校园建设是一个长期积累的过程,特别是软件建设,不能急于求成,在选择软件系统的时候要充分调研、综合衡量,要遵循一定的原则:(1)功能上不能一味的追求强而全,能够满足学校大多数需要,能够跑通学校的基本业务流程即可,百分之百满足用户需求的软件是不现实的;(2)便于软件能够在短时间内普及推广;(3)软件具体良好的扩展性;(4)强有力的后期维护保障。
高职院校软件建设到底选择哪种模式好?这不能一概而论。如果学校选择定制开发软件,笔者认为有实力的院校最好自己组建开发团队,自主定制开发。因为开发人员都是学校教职工,人员稳定、与业务部门沟通容易、便于各系统的集成并为后期系统维护、功能扩展提供强大的技术支持;如果学校开发水平有限,又想按自己的业务流程定制开发,则可选择与软件公司合作,联合定制开发,学校也要组建开发团队,全程参与整个软件的开发、测试、部署、培训、推广使用等整个流程,这样既可以锻炼队伍,也为软件的后期维护和功能扩展提供技术保障;笔者不建议学校全全委托软件公司定制开发,这种模式学校在经后的功能扩展和后期维护将会相当被动,因为软件公司人员流动性很大,经过一段时间,原班开发人员基本不在原公司,软件又是针对一个学校开发的,不具有通用性,软件公司不可能长期投入大量人力为学校免费维护,学校将会付出巨大的代价。
软件定制开发确实存在很大的风险,选择定制开发模式,学校一定要组织人力全程参与,为软件稳定运行和后期维护保驾护航。
如果学校购买成熟商品软件,各方面的风险将大大降低,由于软件具有通用性,有很多客户使用,容易发现问题,公司可批量修改,维护成本低,学校也不用投入太多的人力就能保证系统的正常运行,但学校在使用软件时,就得抛弃一些传统的办公模式,适应软件的操作流程,这只是一个习惯问题,很容易解决。
篇2
外压容器失稳教学实验是将容器在外压作用下造成失稳变形的一种典型实验,具有操作简单、结果直观等特点,故长期被作为过程装备与控制工程专业开设专业实验课的必选实验。由于早期实验测试程序是基于VB6.0开发的,一直以来存在两个显著的缺点:一是功能拓展性较差,测试数据和参量有限;二是兼容性不好,目前无法应用于Win7,Win8及64位系统。为此,笔者针对传统验证型外压容器失稳实验的不足,采用大型工程软件MATLAB开发外压容器稳定性实验测试程序和控制系统,便于监控外压容器稳定性,确保实验过程的安全性。
2.外压容器失稳理论及外压容器实验测试系统介绍
2.1外压容器及其稳定性说明
在外压作用下,筒体突然失去原有形状的现象称为弹性失稳。容器发生弹性失稳将使容器不能维持正常操作,造成容器失效。外压圆筒在失稳以前,筒壁内只有单纯的压缩应力。在失稳时,由于突然的变形,在筒壁内生了以弯曲应力为主的附加应力,而且这种变形和附加应力一直迅速发展到筒体被压瘪或发生褶绉为止。所以外压容器的失稳,实际上是容器筒壁内的应力状态由单纯的压应力平衡跃变为主要受弯曲应力的新平衡。
容器的失稳形式有整体失稳和局部失稳两种。本实验测试系统研究的是实验试件整体失稳的情况,整体失稳根据失稳方向分为侧向失稳和轴向失稳两种[1]。
容器由于均匀侧向外压引起的失稳叫做侧向失稳。侧向失稳时壳体横断面由原来的圆形被压瘪而呈现波形,其波形数可以等于两个、三个、四个。轴向外压则引起容器轴向失稳,变形为径线由直线变为曲线。
2.2外压容器实验及测试系统说明
外压容器失稳实验是将容器在外压作用下造成失稳变形的一种教学实验,也是压力容器失效破坏的一个典型教学演示实例,它具有操作简单、结果直观等特点,被作为过程装备与控制工程专业开设专业实验课的首选实验。国内高校如浙江大学、南京工业大学等一直致力于稳定性测试装置的研究和开发。
3.基于MATLAB软件开发外压容器稳定性实验控制系统
3.1MATLAB软件简介
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言的编辑模式,代表了当今国际科学计算软件的先进水平。
3.2基于MATLAB软件开发实验系统
以下为初始界面的源代码
functionvarargout = untitled1(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @untitled1_OpeningFcn, ...
'gui_OutputFcn', @untitled1_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
ifnargin&&ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
ifnargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
function untitled1_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
functionvarargout = untitled1_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
4.总结
篇3
随着信息技术的迅猛发展,“以电子政务带动信息化”已成为带动国民经济和社会信息化的一项基本策略。推进政务信息化、推广电子政务系统,不仅可以提高政务工作的效率,使政务工作更好地为居民和企业服务, 还可以使民众更好地参与各项决策活动,推动国家或地区的整体发展。而对于涉及众多业务对象的政府人事部门来说,想要实现公共人事管理,向公众提供高效、便捷的服务,人事行政手段的现代化和信息化迫在眉睫,电子政务系统的规划与实施的重要性与迫切性显得更加突出。
背景项目在规划与建设过程中,结合当地的经济发展水平,以及对人才的迫切需求,形成以业务需求为核心,以信息资源整合为基础,以服务社会为目的的人事人才服务管理理念,着力打造先进、实用、持久的人事部门电子政务系统,为解决软件开发过程中存在的复用性低、开发效率低下、业务与技术的高耦合度等问题,引入基础平台作为业务系统开发的技术框架,软件开发人员只需要集中精力处理底层功能复用问题,统一为各业务子系统扩展各种通用功能与接口,而由专门的定制开发人员根据接口规范,设置接口属性,处理各业务系统的业务逻辑,达到各业务子系统的建设目的。
2、 软件开发平台
软件开发平台是基于功能强大的开发平台之上生成的一个面向业务人员使用的工具,即:业务定制/开发基础平台,它以通用技术架构(如MVC)为基础,集成了常用工具、二次开发包、基础解决方案等内容。在软件的平台化和配置化的开发过程中,软件开发平台被定义为:软件开发平台=通用业务组件层+应用支撑层,即:通过业务组件实现软件的共性功能,而通过应用支撑层,将组成应用的业务组件整合在一起,显示给用户。软件开发平台的引入可以大幅缩减编码率,使开发者有更多时间关注客户需求。业务人员用简单易用的业务平台来完成一些基本的功能,技术人员用底层的平台来完成复杂多变的特性。如此,业务设计人员不需要考虑技术实现问题,而将注意力集中于业务逻辑上,通过设计更加有效的业务流程来提高客户的满意度;而软件开发人员则着眼于系统性能的提高和接口功能的扩展,为业务实现提供灵活、高效的实现途径。
3、 业务基础平台的总体设计
人事部门电子政务系统几乎涵盖了全市机关及企事业单位的所有人事业务,包括专业技术人员的职称评审、继续教育等,以及机关事业单位的单位及人员管理;涉及的用户包括:单位、个人、各级各类人事业务主管部门等。在项目建设过程中,为解决采用传统的“手工作业”方式独立开发、各自为战的情况下,可能存在的无法快速响应用户频繁的需求变化,开发质量难以保证,项目的开发周期长,学习与维护成本高昂,系统的可扩展性、可维护性与灵活性低等风险,引入了软件开发平台的思想,将业务系统的业务逻辑与技术平台相分离,开发过程采用模块化和构件化的开发思想,尽可能通过抽象公共模块与复用构件实现软件的重用,并通过使用分层次的开发方法,使系统对数据库的操作与业务处理逻辑分离,便于扩展与维护。本平台的架构图如图1所示:
图1 平台总体架构图
平台采用分层架构模式,其中:
* 表现层:通过业务系统展现、收集信息。因为平台采用所见即所得的处理方式,因此,对于系统管理员来说,可以随时调整应用系统的相关配置;而二次定制开发人员可根据平台提供的辅助工具,即时修改定制并查看结果;对于用户展示的功能,则永远保持最新状态。
* 业务层:用于处理应用系统的业务逻辑。通过配置底层平台提供的相关组件的开发接口,并接收由表现层输入的采集信息及交互控制,将完整的业务逻辑处理结果输送到表现层。
* 数据层:平台统一提供的数据访问接口,用于处理数据存储/数据转换及数据封装等功能。
* 资源层:数据存储中心,用于存储数据或提供与其它数据资源系统的连接,数据资源类型可以是数据库、外部系统或文件系统。
4、 业务基础平台的应用设计
业务系统及其功能模块的开发,主要是基于平台进行二次定制开发,其中,业务功能模块可以由开发人员进行自主开发,也可以由平台提供的定制开发工具进行构建。基于平台构建的业务功能模块采用参数法构建,如图2所示:
图2业务系统功能模块构建方案
业务系统功能模块的构建过程主要是通过平台定制开发工具将系统或者模块的各种参数保存在数据库中。用户通过身份认证、登录业务系统后,权限控制层根据用户的功能模块访问权限,读取数据库中该模块的配置信息,并最终将该功能模块展现到系统界面,从而完成模块与数据库的各种交互操作。
在业务基础平台与业务系统之间共分为四个层次,包括:定制开发层、业务组件层、功能模块层以及业务系统层。其中:在定制开发层,开发人员根据逻辑需求,在页面上拖拽、挂接由平台封装好的、特定逻辑与实现模型的业务组件,并设置其属性,从而完成该业务模块所提供的功能;在业务组件层,平台统一解析挂接在页面上的组件,完成相应的功能;在功能模块层,通过在页面挂接的组件的处理,实现与用户的交互,完成数据处理工作;业务系统层,由所有的功能模块按照层次关系整合在一起,最终形成业务系统。在整个业务系统的实现过程中,由于平台实现了对业务组件的封装,开发人员只需按照组件的接口规范,设置属性即可完成相应的业务逻辑处理。
5、 结论
电子政务是当前信息科学领域的一门重要学科,而软件开发平台又是当前软件开发模式的一种趋势。将业务基础平台构筑为人事部门电子政务系统的业务基础平台,一方面,充分利用软件复用思想,通过组件化、平台化与配置化的开发方式,为基于平台进行二次定制开发奠定了强有力的技术支撑;另一方面将业务与技术相分离,技术人员通过开发、维护底层平台来完成复杂多变的特性,大幅缩减了编码率,降低了开发难度与成本;而业务定制人员只需要关注业务需求的变化,并通过简单易用的平台定制工具即可轻松实现需求,应对变化与改革,从而降低了业务系统的开发难度,提高了业务的实现效率。
参考文献:
篇4
SaaS概述
由于SaaS的出现,企业管理软件行业正在经历一场深刻的变革。SaaS在西方国家已经流行,Salesforce、RightNow、Taleo等专业SaaS软件公司早已上市。在中国,自2004年出现了八百客和沃力森等专业公司,虽然近年增长迅速,但大多数企业对SaaS这种新模式还缺乏认识。
根据AMR研究机构的定义, SaaS 包括以下特点:没有大笔的软件授权费用,通常是按月收取使用费。除了个人电脑和互联网连接之外,客户不需要进行任何其它IT投资。通过互联网,多个公司多重租赁(Multi-tenancy)一套服务器软硬件设备,月租费包含服务和升级两项费用。
而SaaS之前的ASP(Application Service Provider)模式通常需要客户在购买时一次性支付应用软件和数据库的永久授权费用,然后另付服务器管理费用。通常还会有额外的软件升级费用。
伴随着J2EE和.NET等基于互联网浏览器的软件开发技术的诞生,真正意义上的SaaS模式的企业管理软件于2003年开始起步。由于互联网的特点,SaaS软件有许多区别于前一代软件的独特性,并涌现出了许多新名词和新标准。
SaaS运营架构
虽然主流的SaaS软件运营还是以网站直销为主,但一些后来者也在探索SDP(Service Delivery Platform:服务交付平台)的模式。这两种模式软件在架构上有很大区别。
SDP是由运营商提供硬件、互联网带宽、操作系统和运营管理软件,不同的软件开发商在此基础上提供多种应用软件。此模式类似于零售业的购物中心。
虽然SDP能够提供统一计费、短信等互联网服务,但SDP在具体实现上还存在很多争议。SDP是否应该包含数据库?终端客户的数据安全是由运营商负责还是由软件开发商负责?如SDP包含统一的用户和用户权限管理,不同软件开发商的软件如何共享数据继承权限?目前,成熟的SaaS业务应用软件种类并不多,SDP的效率还没有体现出来,反映在实际市场推广中也落后于直销模式。
而直销模式能够提供更专业的产品服务和更优良的软件稳定性,同时不同的厂商还可通过跨界混搭(Mash-up)技术捆绑销售。
多重租赁
SaaS作为一种基于互联网的软件交付模式,软件大规模应用后的性能和运营成本是架构师的核心任务。
现今,成熟的SaaS软件开发商多采用一对多的软件交付模式,也就是一套软件多个客户使用。此种方式也称为单软件多重租赁(Single Instance Multi-tenancy)。
在数据库的设计上,多重租赁的软件会有三种设计,每个客户公司独享一个数据库instance,或独享一个数据库instance中的一个表, 或多客户公司共享一个数据库instance的一个表。 几乎所有SaaS软件开发商选择后两种方案,也就是说,所有公司共享一个数据库license,从而降低了成本。
有些SaaS软件公司专门为单一企业提供软件服务,也就是一对一的软件交付模式,客户可以要求将软件安装到自己公司内部,也可托管到服务商那里。定制能力是衡量企业管理软件好坏的最重要指标之一,这也是为什么有些软件开发商在SaaS早期坚持采用单重租赁的软件设计方案。
相比之下, 多重租赁大大增强了软件的可靠性和可扩展性(Scalability)、降低了维护和升级成本。那么如何解决多重租赁的定制问题呢?多重租赁的定制能力是否比单重差呢?
自定制
多重租赁架构下的自定制或自定义功能是SaaS软件的另一核心技术,领先厂商的产品已经将自定制做到出神入化的地步。客户可以根据自己公司的业务流程,自定义字段、菜单、报表、公式、权限、视图、工作流和审批流等,做到SaaS软件的量身定制,而且不需要编程知识。
自定制的技术是通过在软件架构中增加了一个数据库扩展层、表现层和一套相关开发工具来实现的。目前世界上只有为数不多的几家厂商拥有此项核心技术,在中国,八百客公司也能够做到这些。
在线开发平台
在线开发平台技术是自定制技术的自然延伸,但标志着软件产业链一个新时代的开始。
传统软件的产业链是由操作系统供应商、编程工具供应商和应用软件开发商构成。而在线开发平台提供了一个基于互联网的“OS”和开发工具。
在线开发平台通常集成在SaaS软件中,最高权限用户在用自己的账号登录到系统后会发现一些在线开发工具。例如,“新建选项卡”等选项。每个选项卡可以有不同的功能。多个选项卡可以完成一项企业管理功能。 用户可以将这些新设计的选项卡定义为一个“应用程序”,起个名字。然后可以将这些“应用程序”共享或销售给其他在此SaaS平台上的公司用户,让其他公司也可以使用这些新选项卡的功能。
可扩展性
与传统企业管理软件相比,SaaS软件可扩展性可以更加强大。
“跨界混搭”(Mash-up)这个术语起源于流行音乐,编曲者把两张唱片混编以后重新制作出一首新歌。这个概念应用在SaaS上,就是指把多个不同的在线应用软件服务重新整合,形成一种新型的软件服务。比如,一种SaaS软件可以将令一个公司的在线地图或汇率转换服务通过互联网调用,嵌入到自己的软件中。
企业级管理软件的一些核心功能在SaaS软件中也有体现。这也包括参数应用(Parametric applications)、自定制控件和连接器(Connector)。
在传统软件模式下,如果软件的功能需要改变,那么相应的代码也需要重新编写,或者是留出一个编程接口让用户也可以进行二次开发。
篇5
产品化软件和定制化软件在流程电子化方面,尤其是管理支撑类流程方面存在一定程度的重叠,但两者的定位不管是从产品的体系架构,或者是在实施方法论等方面还是存在很大的差异。从更好地满足客户的核心业务需求的角度出发,相较于传统的产品化软件,定制化软件在满足企业核心业务流程管理方面是具有明显优势的。但是随着产品化软件的不断发展和完善,对于数据处理要求不是很高,业务逻辑相对简单的系统来说,产品化软件已经逐渐体现出它的优势。目前,主流的产品化平台软件中的一个核心功能应用在于流程管理,从专业角度来看,产品化平台软件已经含有流程管理的功能模型,并已经完全含有项目化平台软件的核心功能,例如表单建模、流程引擎、权限模型等核心功能点。
2 产品化软件与定制化软件优劣势分析对比
2.1 用户体验和页面友好性方面的对比
定制化开发软件随着使用年限的不断增加,软件开发技术的不断发展,导致系统兼容性、UI可用性和易用性不断下降,随着计算机操作系统、浏览器软件和OFFICE等办公软件的更新换代,经常发生按钮功能不正常,系统页面显示不正常等问题。大多数企业员工信息技术水平有限,很难自行对浏览器和操作系统进行兼容性调整和设置,从而降低了日常的工作效率,也加大了信息化部门的工作量。而产品化软件方面则不存在以上问题,由于产品版本迭代速度较快,能够做到持续改进,所以能很好的适应其周边软件的不断升级更新,系统页面友好美观,与日常办公软件能够良好衔接,基本上不会发生由于系统兼容性而导致系统功能不正常的问题。
2.2 系统功能、开发周期与开发成本方面
产品化软件其优点在于能够满足客户绝大部分通用的需求,且建设费用相对较低。由于事前已经有较为成熟的产品化功能模块,从而能够在需求分析阶段结束后直接进入系统的搭建与测试阶段,省略了传统软件开发生命周期中基本设计、详细设计、代码编写这几个最为耗时费力的工程段,能够做到快速搭建、快速部署、快速上线,大大加快了项目实施进度。由于有产品化功能模块和可视化系统搭建平台的存在,整个项目实施过程中不需要程序代码的编写,所以几乎不需要有很强技术功底的开发人员的参与其中,从而也降低了整个项目建设的人力成本。相对于业务简单通用,变化小,成熟性的公司,这种产品化软件的性能价格比还是很有吸引力的。
定制化软件方面,软件自身完全可以按照客户的需求来定制,能够做到量身定制,在客户一些细节需求的对应上较为灵活。但定制化软件的建设实施工作由于是从零开始,从无到有,所以需要经历完整的软件开发生命周期,相对于产品化软件来说开发周期长,对系统建设人员的技术水平要求较高。另外定制化软件实施的成功必须建立在两个前提条件下,一是客户有一套清晰成熟的管理方法,能够非常明确系统的提出自身的业务需求;二是供应商拥有一批既熟悉业务,又熟悉软件开发技术,而且要具有丰富的开发经验的业务技术专家。这两个条件缺一不可,项目实施的成功与否,周期长短,所实现功能与顾客需求的差异性,都取决于这两个方面。而作为在市场上被广泛接受的成熟的产品化软件来说,在一定程度上是为企业提供了一套管理的思路、管理方法的模板与建议,企业可以去主动地适应产品,把产品的设计理念、管理流程应用到企业自身的日常管理中。所以对于管理思路不是很清晰企业,购买产品化软件不仅是购买了一套软件更是购买了一套较为成熟的管理方法论,也是对成熟先进管理方法的一次学习和浸润。
3 系统维护方面的对比
3.1 新增、变更需求对应方面
对于定制化软件来说只要发生新增需求或者变更需求都必然需要通过修改代码的方式去应对,代码的修改和增加即会产生相应的开发工作量,则需按工作量付给供应商相应的开发费用。
而产品化软件由于采用可视化、配置化的系统搭建平台实现业务需求的理念,在流程的调整变更与新增、表单内容的调整变更、页面布局的调整变更等方面,全都可以通过系统管理员在可视化管理平台上自行调整,不需要通过修改增加代码的方式去实现,所以节省了很大一部分由需求变更所产生的开发费用。只有通过后台配置不能实现的新增、变更需求,才需要与供应商沟通进行定制化开发并产生相应的费用。另外,进入维护阶段后只需支付供应商一定数量的电话服务费用,不需要供应商提供专员在客户现场进行维护工作。
综上所述,产品化软件后期可以根据业务流程变化灵活调整,经过培训的企业信息化人员可自主完成,无需依赖厂商,基本不产生系统升级开发费用,与定制化软件相比大大节省了系统维护成本。
3.2 系统维护方式与服务响应时间方面
定制化软件维护方式的优势在于由于开发人员在长期客户的现场服务,且对系统架构和源代码以及公司业务相关业务较为熟悉所以响应速度较为迅速。但随着定制化软件使用年限的增加,维护人员的流动不可避免,所以会造成代码的健壮性与可读性不断下降,导致只有专门的对系统极为熟悉的供应商开发人员才能对系统进行维护工作。通常的项目化软件维护周期中,随着系统上线时间的增加,系统运行越发稳定,项目团队从维护成本上考虑通常会逐年递减系统维护人员,甚至最后整个系统的维护工作只有一个维护人员担当完成,如果维护人员较为单一,倘若此时人员发生变动,新的维护人员很难在短时间内理解系统实现方式以及所有源代码,很难在短期内开展相关维护工作,从而使系统维护工作出现空窗期,这对系统的稳定运行可能造成较大的影响。
篇6
“模式”就是微软多年下来所累积的工作方法,而“实践”就是如何将这些方法,具体地复制并落实到其它的开发团队中。形象来说,“模式与实践”的经验和指南打印到A4上,叠加起来可以绕地球2.6圈,而现在,微软把这些经验带到了中国,希望能够通过这个论坛,和中国的软件行业来共同分享。
谈到模式与实践,首先想到的就是方法论。通过“模式与实践”,企业可以通过构建软件业务程序来更好的实现商业价值。
这主要有三个方面,第一方面是开发,第二方面是IT的应用,第三方面是商业策略和技术策略完美统一,“模式与实践”在这三个领域里,经过总结微软30多年的经验,能够帮助软件开发者或者软件企业更好的在这三方面帮助他们去完成使命。
那么如何运用商业应用程序去实现商业价值呢?通常用户首先需要考虑几个问题。
首先是平台,无论用户构建怎样的商业应用程序,都必须运行该程序底层的基础平台,因此基础平台对用户的重要性不言而喻;其次就是工具,适合的工具能够帮助用户更好地构建商业应用程序。
在有了平台和工具以后,开发商在应用程序的时候还需要相应的指导,“模式与实践’正是集合了微软30多年软件开发历史过程中所提炼出来的实用模式和最佳实践的组合。微软把这些模式和经验总结成为“模式与实践”,做成一个可以向外提供给软件产业的一个工具包,希望大家能够跟微软共同成长,最终促进整个产业的发展。
在现在的经济环境下,优秀的企业意识到,此刻正是苦练“内功”的好时候,中国企业前几年都忙于扩张,现在反而是企业转型升级的好时机,企业练内功很重要一点就是为下一轮经济周期做准备。要练内功,创新是必要条件。
而最核心的创新在于生产力的创新。以用友为例,微软在和用友合作期间,把“模式与实践”软件工程的理念加入程序设计之中。
篇7
软件被用于创建更加高效的世界,驾驭以云计算和移动互联网为基础的信息大爆炸的发生,与无数移动设备、物联设备实现通信,同时,软件还不断促进产品差异化,为全球市场提供服务。现在全球经济体的发展和创新越来越依赖软件的发展,无论是在系统工程领域,还是在其他科学研究领域,全球创新在很大程度上都是以软件的开发、变更和监控为基础的。
软件定义的网络、软件定义的存储、软件定义的数据中心等又再次把软件推到了风口浪尖。“软件重塑IT”已经成为可以和“云计算、大数据、物联网、智慧地球”等媲美的IT行业热门词汇。越来越多的企业更加注重自身软件和系统交付的能力,无处不在的软件成为实现创新发展的基石。
“服务多租赁化、平台可伸缩性,以及资源虚拟化”这是被大家普遍认可的云计算的特性,这些云计算特性主要是靠软件来实现。比如,资源的虚拟化,虚拟化的实现必须靠软件的变化来实现,否则,无限和有限的资源便无法实现无缝衔接。软件在云计算时代将更加普遍存在,其作用也会更加举足轻重。
“云”改变软件开发
企业的云应用正从SaaS向PaaS和IaaS方向发展。用户需要可以结合自身企业特点的开发、测试、在线部署等功能的软件产品。而这就对云计算时代的软件开发提出了新的要求,软件开发人员要在架构设计上具有新的思路,要让软件能够实现从私有云向公有云的无缝迁移。
云计算时代的软件是运行在云平台上,并具有在线租赁、可伸缩性、按需定制等特性的软件。云计算下的软件开发打破了软件开发商与用户的二元格局,第三方云计算中心的作用更加重要。云计算模式下的软件开发和运行环境基本上都是由云计算中心来架构的,这些资源按照开发者的要求进行配置。在开发者一端省去了硬件设施架构、运行环境调试等工作,只需一个浏览器和一些简单的工具就可以实施开发。开发完成之后的测试以及运行和维护也全部由云计算中心负责。
其次,云计算改变着软件的开发方式。随着平台的开放,开源、开放的软件开发社区越来越多。开源厂商是联系社区和商业应用的企业,类似这样的企业可以捕捉社区内最新的需求和技术动向,实现开源软件产品的商业化,同时以商业上的利润和方式推动社区的运营。要知道社区中除了“极客”,用户也在其中。与需求的近距离接触,带来最直接的效果就是使得软件开发周期大幅缩短。
第三,软件运行在数据中心里,而不是在用户的服务器和计算机上,这是云计算时代必备的特征。而且云时代的软件还需要应对用量的变化。从制作网络镜像手工增删资源,到系统和平台的自动伸缩性,这些都是云计算时代软件必须具备的特征。云时代的软件还需要能够实现个性化的定制。对于同一个软件的同一个版本,用户可以根据自己的需要做一定程度的定制,这就要求软件具有很稳定的基础结构。还有,云计算时代还会要求软件的快速开发。随着技术水平的提高,快速开发的水平越来越高,云计算的资源共享,以及标准的服务集成让快速开发变得更加有效。
最后,软件和服务之间的界限也变得更加模糊,服务模式发生了很大的改变。在云计算的驱动下,软件销售采用“打包”方式,应该是比较务实的方式。比如一个方案中既包括可以进行IaaS或PaaS的软件产品,还包括提供云计算咨询的服务产品。同时也会提供相应的培训课程。基于云计算的咨询和服务将会成为软件企业的一个利润增长点。
软件开发新需求
云计算时代的软件需要新的开发技术。开发人员需要使用云计算时代的软件开发技术去提高开发能力。云计算时代要求软件开发人员思考架构设计,甚至需要考量运维模式和商业模式。
云计算是在分布式计算、并行计算和网络计算的基础上,经过一系列的创新融合而形成的。从开发技术的角度来看,云计算平台以及云计算平台上的应用软件开发都是使用分布式并行编程技术的。分布式并行编程的关键技术有三方面:分布式并行数据处理技术,分布式文件系统,分布式数据库。
从程序的架构设计方面来看,开发人员需要在程序筹建过程中,就要思考哪些应用能够实现私有云、公有云以及混合云之间的互用。需要开发人员设计出一种能够在功能上满足当前业务需求,又能够适应用户需求发生变化或者能够在可以预见的未来适应环境变化的应用。
从商业模式方面来看,以前,软件都是依靠软件授权模式来销售,或者直接是免费的。但是在云计算时代,认真思考盈利模式对于软件开发人员来说是一个更大的挑战。一旦具有了清晰的商业模式,就会很快地实现软件的盈利。
结语
篇8
案例:
高级电子表格软件的开发商RxLaser公司运用TechExcel的跟踪工具DevTrack,通过自动操作和控制软件开发及客户自定义过程,实现持续成长,提高产品质量,赢得客户的满意,是个具体而有借鉴意义的尝试。
开发规模增大带来的混乱
位于美国加利福尼亚州布瑞亚市的RxLaser公司作为高级电子表格软件的开发商,其软件产品通过一个服务器平台与客户使用的软件集成,支持打印、传真、收发电子邮件、EDI和数据存档,并可以按照每个用户的需要进行全方位定制。
过去的十年,众多公司用传真或电子邮件替代了点阵打印表格,不必再花费56美分邮寄一个发票的复印件,节约了大量成本。RxLaser公司将这种进步移植到电子表格上,成为业界领先者。
但成功和快速增长也带来了许多新的挑战,他们必须解决这些问题以保持其领先地位。他们曾使用过一个内部开发系统来跟踪所有的开发和定制化项目。随着业务量的快速增长,系统不堪重负。他们的客户数量在三年间从700多家增长到6000多家,如果没有一个可靠的跟踪解决方案,公司业务将处于危险之中。
“我们不能应对日常事务。”公司总裁罗伯特说:“形势已经不在控制中了。当我们拿到一份文件的时候,我们不知道这份单子已经搁置了多久,我们原本打算如何实施。我们的业务增长得太快了,而越来越多的客户感到不满意。我们只有两种选择:要么寻找合适的跟踪系统,要么被淘汰出局。”
精准问题跟踪避免重复作业
RxLaser公司的开发团队迅速评估和比较了市场上的许多跟踪工具。大约两周后,罗伯特发现他的所有员工都选用DevTrack。“每个人都很喜欢它,因为它快速轻松地满足了所有人的需求。”罗伯特说:“我的员工要求我购买它,他们甚至告诉我,如果我不这么做,他们就不能工作。”
现在,公司将其用于两个业务领域:开发团队和定制化编程,提高了软件开发的效率。开发团队负责运行、维护和管理电子表格软件系统,定制化团队则针对客户的具体细节要求编写对应的表格。
罗伯特认为,在任何软件开发项目中提高效率的关键,都是通过精确跟踪项目的每一部份来避免重复性工作。当把一个完整软件分解成许多程序片段,并把这些片段分配给不同的开发人员时,每个人的工作会有与其他人工作重叠的倾向。
而DevTrack就能使每个开发人员在任何时间都能清楚知道其他人在做些什么。当一些人完成一子项目,他们可以轻松地看到这个子项目和其它子项目如何连接,然后把这些片段无重叠地连接起来,避免了许多重复性工作。此外,管理者还可以看到每一个程序员在开发什么功能,这使得他们可以轻松地管理和跟踪整个项目。
“编写代码时,重复性的工作使公司既费时又费钱,并且不能按时交付。”罗伯特说:“重复是研发工作的最大破坏者。我们的产品需要多人参与,并要在规定日期前完成,如果我们不能按时完成,将损失数目可观的收入和机会,这是时间管理的问题,而DevTrack为我们很好地解决了这个问题。”
多人合作开发,项目很容易失去控制。每个人都在处理项目中相同部分的不同片段,这很容易让人产生混淆,很快他们就会发现不知道对方在做些什么。DevTrack协调团队工作,在任何时候都可以把一项编程工作转交他人。
延伸应用于内部沟通和客户服务
现在,RxLaser公司用DevTrack来制定工作进度,协调服务器产品的功能添加、缺陷修复以及功能增强工作。罗伯特介绍,DevTrack使整个修改工作的管理和协调非常容易,比如有一个开发人员负责项目中很大一块工作,利用DevTrack,他的上级就能准确地知道他当前的工作内容和时间限制,而其他人也都可以看到他每天的工作进程。
最初,RxLaser公司用它做问题跟踪,由于简单易用,后来被用来做工序跟踪。客户安装电子表格软件过程相当紧张,一旦有新客户登录,他们就会为客户发出标准表格,以基于客户独特的需要进行调整。经过相关人员设计调整和客户授权确认,该调整就发送给定制化编程部门,程序员采用修订过的标准,并将变化集成到用户自定义的表格,最后的产品再次发送给客户,等待最终的认可和安装。整个客户安装过程利用DevTrack管理和跟踪工作流和状态,程序员能准确地知道过去3-4个月里的工作,并能在停止的地方准确地重新启动。
罗伯特说:“使用DevTrack的最大收益,就是RxLaser的行业领先地位得以保持。除了帮助我们跟踪客户的优先级和需求,我们还可以使用它来管理设计员、程序员和客户之间的日常内部活动,管理并记录设计人员、编程人员以及客户间的日常交流,这样每个人都可以在任何时候知道问题的进展,并将其继续推进。生病的或是其他部门的员工也可以通过其中的记录,清楚地知道他下一步要为客户做什么,以及客户什么时候需要这些服务。”
研究视点一:跟踪工具的行业应用
工欲善其事,必先利其器。软件开发厂商也是一样,要做到高效的软件开发和过程管理,必须选择运用灵活先进的开发管理工具。早在30年前大师弗雷德里克・布鲁克斯就曾形象地论述说系统开发工作就像一个焦油坑,无论是大型、小型,庞杂、精干的开发团队都在其中挣扎,没有谁能挣脱束缚。这种情况到现在也还是如此――很少有软件项目满足目标、进度和预算的要求。做软件开发项目delay是正常的,这已是圈内人士的共识。
众所周知,对于传统制造企业,其流程和现场管理提高生产效率至关重要,在此基础上产生的JIT生产管理方式堪称一代经典。同样道理,对于人们看不见的产品――软件的设计开发过程来说,也是一样需要有方法、有工具来帮助实现提高其对应的生产效率。
作为问题跟踪功能实现的产品,目前市场上已经有几家或单独成品,或镶嵌在平台之内实现该功能(如TechExcel的DevTrack和IBM Rational的Clear Quest等)。TechExcel的DevTrack赢得RxLaser信赖的关键,是它通过对项目中的每一个任务或细节的精确跟踪,并借助可轻松配置的智能化工作流,使项目参与者能够清楚地知道并执行自己的工作,避免了重复劳动,增强了团队沟通,提高了开发效率。
在国外,整体信息化水平相对比较高,所以IT以外的行业的软件开发和项目管理也是很愿意用工具管理实现的。图一是DevTrack全球用户行业分布图,可以看得出软件厂商是其主要客户,但同时政府机关也在用其做流程管理,教育机构也可以买它做实验室的项目管理。
研究视点二:工具的集成
单打独斗的工具成不了气候,平台化的系列工具软件是其作用最大化的有效途径。DevTrack是TechExcel DevSuite产品系列中的一部分,该系列围绕知识核心,无缝集成了从设计规划到产品所需的所有ALM软件,帮助数以千计像RxLaser一样行业领先的企业实现了科学、愉悦、成熟的开发管理。厂商选择、运用适合自己的集成工具实现开发过程管理。根据发展历史和客户需求以及市场环境的不同,软件开发商的运用工具管理的模式也不同,下面以测试驱动的缺陷跟踪管理、规划驱动的项目管理、需求驱动的产品开发管理三种模式为例来阐述。
测试驱动缺陷跟踪管理模式:某全球领先的软件企业有超过3000多个程序员和测试员在使用DevSuite中的DevTrack和DevTest模块来分别跟踪编程缺陷和管理测试过程。测试团队可以建立各种测试模版并为各个和构建制订测试计划和项目,测试过程中所发现的缺陷能直接建立新的缺陷任务,开发团队解决的缺陷将进行新一轮的测试,如此往复直至完成。这种模式改善了大型开发团队和测试团队间的配合和沟通,确保每个缺陷得到有效的处理。但是项目管理层和设计人员却不能通过这样的模式来主动监控和指导项目的进展,只能根据测试结果做出被动的反应。
规划驱动项目管理模式:某大型的美国游戏企业通过使用DevSuite中的DevPlan和DevTrack模块组合来改善管理监控。这个模式中的DevTrack包括一个管理层工作项目和多个下属的开发组工作项目。项目经理用DevPlan来细分和规划项目,并与DevTrack中的管理层工作项目相连。而管理层工作项目中的每个功能或缺陷任务又与开发组工作项目中的多个工作任务相联系。这样,一个项目经理的每个工作任务都被细分并分派给多个程序员或小组,从而使他能有效确保按计划实施项目。这种模式能有效管理控制开发过程、周期、预算和人员,但是子任务的变化和新功能的增加给整个过程的效率带来挑战。
需求驱动产品开发管理模式:有些企业进一步要求把需求管理也纳入DevSuite系统,以提高整个应用生命周期的管理效率。DevSpec就是管理需求制订并整合项目规划和实施的模块。使用它,产品经理能够规划各个产品版本的功能要求并管理设计文档,以确保实施团队充分理解设计团队的概念产品,减少不必要的重复和废工,最终产生理想的实际产品。
这些模式其实难分优劣,实际运用效果取决于企业自身的开发环境和实施力度,是否选择了适合自己的模式和工具并恰当地运用。同类企业在不同阶段可以运用不同模式,而不同企业也可以统一模式,运用得当能帮助企业提高30%左右的开发效率。
研究视点三:本土软件厂商如何做
篇9
据悉,讯猫软件携旗下新产品推出品牌“+飞猫”,携新产品“+飞猫APP”APP震撼亮相于11月1-3日在广东惠州召开的2016第五届中国(惠州)物联网・云计算技术应用博览会(简称“云博会”)。作为本次云博会的高级参展商,讯猫软件拥有了特展和标展两个站展位,活动现场大的大赢得了各界人士关注,再次带来了一股“互联网+”软件定制的热潮。
讯猫软件CEO吴烁在接受本刊采访时表示,云博会现场,讯猫软件向到场嘉宾展示了主打的“+飞猫”互联网+软件定制平台;同时,还推出讯猫软件一系列成熟软件产品,讯猫软件一直以打造“软件行业互联网+”时代下的CMM标准为目标,秉承以技术为核心,依托自主研发的庞大软件产品库,为各行业提供了丰富的应用解决方案和产品应用。
作为本次参展主打的“+飞猫”APP。+飞猫APP一款为用户提供互联网咨询、互联网项目估价、以及软件定制开发等功能的APP。“+飞猫将重新诠释软件定制行业的新体验”。
吴烁指出,讯猫软件将以“服务造就品牌,创新赢取未来”为核心理念,未来我们将提供更多优秀的互联网产品和优质的软件服务,助力传统企业加速互联网的转型升级。
谈及+飞猫平台的核心竞争优势及商业模式时,吴烁坦诚明确提出,+飞猫平台与传统软件定制行业的大有不同,++飞猫(京东模式+众包):提供免费的成熟技术架构以及已有软件与互联网管理协作平台,接受客户多频次需求变更、提出创新的服务计费方式、更多的软件厂商(个人或团体供应商)提供成熟软件产品支撑,+飞猫平台将全面把控整个服务过程的咨询、定价、研发、测试、升级,+飞猫必将成为众多传统企业和创业者的技术背书。
节省40%升级成本,推动软件定制行业创新发展
另外,吴烁还特别指出,目前讯猫软件还整合了行业内大大小小的软件公司及规模不大的技术团队,再结合公司已有的的沉淀的技术模板模块,及公司再制定高端的标准化软件定制标准化服务。同时以通过最低的价格提供最好的服务,直接降低了传统企业和初创互联网企业的40%左右的技术研发成本。
提及其合作模式,吴烁指出,建议双方或多方重新组成一个新的主体公司,人员大约5-10个人,以新的主体公司来服务这家传统企业,其中,只需要20%的软件开发需要个性化制定软件开发,另外80%的技术模块的部分,完全可以使用+飞猫固有的已有的标准成熟服务体系和服务标准。其竞争优势表现两点,第一,大大减少了企业的升级成本,二来确保传统企业升级的可靠性、安全性、及实用性及可持续性。
篇10
1 构件定义
构件主要指软件系统中的单个元素,自身具备独立、可替换、满足功能和多次使用的特征;也是软件重复使用时,可以的准确被识别的软件实体,对此借助软件的独立和可重复使用的功能形式,构件完全被用来进行软件研发,使其外界的访问,可以利用构件提供的指定接口进行信息交换;构件之间会通过标准的接口进行信息转换,从而更好的保证软件开发的质量。同时基于构件软件开发,也应当具备应用程序是由构件组装,提供独立服务,以及通用构件设施和服务等相关的要素。
2 软件开发形式
基于软件构件的软件开发流程,主要体现在构件定制、构件独立以及接口统一几方面,其中构件定制,主要是指基于软件构件的软件开发,利用到构件或是面向构件,都是事前明确功能和编制好的,同时软件对于构件不同功能的需求,也可以通过构件版本的选择,从而实现功能拓展的目的。其中构件独立,主要是指将构件进行分解,这样就可以有效的避免构件难以维护的情况出现。其中接口通过统一,主要是指软件要想实现跨平台的交互,可以通过指定的接口,从而有效的突破硬件设备,以及空间等方面的限制。
3 构建模型分析
因为基于软件构件的软件开发,是在理想构件模型基础之上进行操作的,对此对于目前常用的几种构件模型分析,是非常有必要的;其理想的构件模型如下图所示;
目前常用的构件模型,主要包括OMG组织、SUN、Microsoft方面;其中OMG组织中的CORBA[1],是基于开放平台制定的对象体系,同时其分布计算技术们,更是多种厂商所支持的技术;自身具有支持性高、语言开发、系统平立,以及模型完整、效率高的特点。其中SUN中Java2技术,具有语言开发、以及满足不同的业务需求、简化构件服务器繁琐,以及应用广泛的特点。其中Microsoft中COM构件模型,实现了模型之间的相互操作,同时自身也是标准的构件接口,有效的用远程技术,使其构件技术被广泛的应用。
4 基于软件构件的软件开发流程研究
基于软件构件的软件开发流程,主要包括整体框架设计、构件库建立、获取构件、构件调整以及重组安装等过程。
4.1 整体框架设计
对于其整体框架设计,首先要对于业务需求进行有效的分析,然后找出与将要设计的软件功能需求的共性,然后将功能构件从系统中进行分解,最户将开发软件系统构件化。
4.2 构件库建立
构件库建立是为了使构件更好的符合软件开发需求,从而将构件进行统一管理,同时构件库对于软件的重复使用,起到支持、描述、分类、保存等作用;从而更好的保证软件开发的效率。
4.3 获取构件
需求分析后的构件,会将满足应用环境的构件选取出来,并进行适当的修改,最后使其组装到将要开发的软件系统中。其中构件的获取,可以通过发现阶段、评估阶段,利用以往开发过的构件,按照系统开发的需求进行选取,或是利用当前开发的系统功能模式,对于构件进行开发和获取,再就是利用购买、利用网络资源进行构件获取。
4.4 构件调整
当构件获取后,为了是获取的构件更加的满足系统开发的功能需求,使其符合设计规则,对此需要对于构件的功能,进行一系列的调整;调整的形式分为白盒法、黑盒法以及灰盒法,其中白盒法的主要形式,是通过对于构件源码的修改,使其构件之间的冲突降低,但是对于源码的调整会影响其使用特性,给后期维护造成影响,对此进行有效的维护是非常有必要的。其中黑盒法以及灰盒法,是将源码进行保留,提供构建的扩展机制,或是提供可编接口。
4.5 构件的组装
构件库中的构件按照应用环境进行调整,然后将构件的端口进行相互连接,或者将构件与开发软件元素进行连接,使其更好的进行软件开发;每个构件的作用发挥,是在与群体构件组合之后发挥功能的;对此在进行系统研发时要将单个构件进行整合,利用可以容纳不同性质构件的框架进行管理;同时对于构件的安装,可将通用性、功能性强的构件,布置在中央数据服务器上;最后进行粘接代码的编制的工作。
5 总结
综上所述,发现软件开发是一项复杂且繁琐的过程,相关设计人员不仅要掌握软件构件的基本性能,还要做好软件开发需求调研分析,工作任务繁重并且头绪杂乱。本文对基于软件构件的软件开发的流程进行梳理,开发人员可以参照整体框架设计、构件库建立、获取构件、构件调整以及重组安装等步骤进行标准化实施,一方面可以减轻开发人员繁杂的工作量,另一方面也能够更好的保证软件开发的质量和效率,希望对软件开发者有所帮助。
参考文献
[1]田容雨.基于软件构件技术的Web系统开发平台的研究[D].山东大学,2011.
[2]叶伟.构件化软件开发及系统测试技术探究[J].计算机光盘软件与应用,2012,03:176-177.
[3]沈拴喜.浅谈基于构件的软件开发方法和技术[J].计算机光盘软件与应用,2014,15:75-76.
篇11
教材编写:考虑到双语教学的需要,目前教学采用的是微软出版社出版的权威原版教材:由Douglas Boling编写的“Programming Microsoft Windows CE .NET”, Third Edition, Microsoft Press, 2003。同时,本课程主讲教师编写的本课程配套教材和中文版电子版也已完成,包括中英文两个版本的教材、实验指导书等都将在2006年正式出版。
主要工作业绩
何宗键,毕业于同济大学。国内首批微软Windows Embedded认证讲师。作为国内最早开设基于Windows CE的嵌入式系统课程的高校教师,在Windows CE嵌入式教学和研究领域已积累了相当丰富的经验。其在Windows嵌入式教学领域的工作和成绩主要包括:
2005年6月,在微软亚洲研究院与同济大学联合举办的“微软Windows Embedded教学研讨培训会”上作专题演讲,介绍本课程的教学经验,并对与会教师进行培训教学。
2005年6月,作为主要参加者之一,参与微软亚洲研究院的“国家发改委-微软嵌入式系统教学包”制作,负责Windows CE实验部分内容的编写。
2005年9月,在微软公司举办的Windows Embedded技术研讨会上作关于Windows CE系统定制的专题讲座。
2005年11月,在首届全国Modern C++ Design & Programming大会上作关于Embedded Software技术讲座。
篇12
清科锐华从2001年进入建筑施工企业管理软件领域,多年来一直专注于建筑行业企业级管理软件的开发,2001年就推出了基于B/S架构的软件产品版本。
清科锐华拥有自己自主研发的软件开发平台ReachFramework,所有产品和项目的研发都基于此平台。基于平台式的开发保证了软件开发质量和连贯性,同时有利于对用户个性化需求进行快速、高质量的定制开发和产品调整。
清科锐华建立了完整的软件开发质量保障管理体系,并总结出一套帮助客户实施信息化项目的方法论,包括一系列管理流程和文件模板,帮助客户快速高质量地推进信息化项目建设。
清科锐华是行业内最早开发出B/S架构的建筑施工企业级管理软件的厂商之一,为数百家建筑企业提品和服务,得到了众多客户的认可和好评。
清科锐华秉承“帮助客户把信息化系统真正用起来”以及“与客户建立长期合作伙伴关系,伴随企业共成长”的理念,总结了一整套建筑企业如何实施信息化的方法论,帮助企业把信息系统真正用起来而不是一个形象工程。
2009年度
篇13
1.合同中所约定的软件和硬件结合的紧密程度,例如软件是否为特定硬件和设备专门配套的嵌入式软件,还是可以在任何通用的硬件平台上运行;软硬件的集成和调试是否需要发生重大的工作量和成本;合同中对外购的通用设备和系统软件的报价是否与其单独采购时的市场价格基本一致。
如果软件和硬件结合紧密,集成和调试不需要重大的工作量和成本,外购的通用设备主要是为了系统配套,采用销售商品模式更符合会计准则的。
2.合同履行结果中软件、硬件两部分的互相影响程度。例如,如果硬件部分已经先行交货,并且硬件平台搭建完成,但后续软件实施过程中出现问题,则是否会影响到已确认的硬件收入,对方是否可能要求退货等。
如果软件、硬件两部分的互相影响程度互相影响程度比较高,才有建造合同方式比较合适。
3.硬件是否主要为通用设备;软件是否需在公司现有软件产品的基础上作出大量的定制修改(二次开发)以符合客户的具体要求。
如果需要软件作出大量的定制修改(二次开发)才能符合客户的具体要求,应考虑采用建造合同。
4.合同总价中以下几部分的相对价值大小:①外购的硬件、通用设备和系统软件;②根据客户需求定制的专用设备和硬件;③公司自行研发的应用软件。另外,公司在整个项目中的主要利润来源(按照不同部分的合同定价与各该部分的成本测算确定)是否为公司自行研发的应用软件。
如果软件不是整个项目的主要利润来源,且硬件安装工作量不大,采用销售商品模式更为合适。
实务中应综合考虑上面几个因素,选取最适合的收入确认方式。
为方便读者理解,举例说明如下:
1.甲公司从事系统集成业务,包括基于公司自主开发的软件提供一体化解决方案(软件、硬件系统集成)的业务。如果公司自行开发的软件是此类业务的核心部分,并且需对自行开发的软件进行大量的定制修改(二次开发)以满足客户的特定需求,则该种业务模式在会计上采用建造合同模式的更为适合。
在同时符合以下条件的前提下,结合合同中对于交货条件(所有权及相关风险转移时点)的约定,该类业务中的硬件和系统软件等外购的通用部分可以与企业自行研发的专用应用软件相分离,对外购的硬件和系统软件按照销售商品模式,在交付时确认收入;对提供自行开发的专用应用软件以及系统集成的相关服务按建造合同模式确认收入:
(1)合同中约定的硬件和软件结合不紧密,软件可以在任何符合条件的通用硬件平台上运行,无需依赖于某项特定的专用硬件或者设备。
(2)合同条款并未约定:如果所提供的软件及其实施服务存在瑕疵,则买方有权退回卖方已经交付的外购硬件和系统软件,或者有权要求对硬件和系统软件部分的价款作出调整或者退款。即合同的软件部分的履行结果不会影响到硬件和系统软件部分已确认的收入。
(3)合同的应用软件部分的履行结果能够可靠估计。根据公司的技术实力和以往类似项目的实施经验,判断其实施的成功具有合理的保证,不存在重大不确定性。
(4)合同中的应用软件部分,涉及对自行开发的软件进行大量的定制修改(二次开发)以满足客户的特定需求,同时在软硬件集成过程中也涉及大量的工作量,实施周期较长。
在上述前提下,对于提供自行开发的专用应用软件以及系统集成的相关服务,可按建造合同(或提供劳务)方式确认收入,即根据合同履行结果能否可靠估计来确定能否采用完工百分比法。
2.乙公司从事硬件和设备销售业务(含公司研发的嵌入式软件和专用设备)。如果所提供的软件和硬件结合紧密(例如该软件是嵌入于某一特定的专用设备中的,软硬件必须作为一个整体才能使用),并且软件在合同总价中所占的比重明显低于硬件和设备价格,则软件的销售事实上附属于硬件销售,整体上构成了一项需要安装和检验的商品销售。这类合同在法律上也通常表现为设备采购合同或买卖合同。这种合同的销售收入应采用“销售商品模式”,在货物已经交付、安装调试完成,获得买方验收确认时一次性全额确认收入。
需要注意的是,无论在上述哪一种模式下,按收款进度确认收入,或者将部分尾款递延到以后年度确认收入的做法,在现行会计准则下都是不恰当的。
参考文献:
[1]财政部.企业会计准则,(2006)