当前位置| 网站首页 全部百科 开发百科 软件开发

软件开发

软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。软件一般是用某种程序设计语言来实现的。 通常采用软件开发工具可以进行开发。软件分为系统软件和应用软件,并不只是包括可以在计算机上运行的程序,与这些程序相关的文件一般也被认为是软件的一部分。

开发 软件开发 软件开发报价 软件开发价格估算方法 软件开发成本 软件开发流程

软件开发

软件开发流程

1计划
对所要解决的问题进行总体定义,包括了解用户的要求及现实环境,从技术、经济和社会因素等三个方面研究并论证本软件项目的可行性,编写可行性研究报告,探讨解决问题的方案,并对可供使用的资源(如计算机硬件、系统软件、人力等)成本,可取得的效益和开发进度作出估计,制订完成开发任务的实施计划。


2分析
软件需求分析就是对开发什么样的软件的一个系统的分析与设想。它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。本阶段的基本任务是和用户一起确定要解决的问题,建立软件的逻辑模型,编写需求规格说明书文档并最终得到用户的认可。需求分析的主要方法有结构化分析方法、数据流程图和数据字典等方法。本阶段的工作是根据需求说明书的要求,设计建立相应的软件系统的体系结构,并将整个系统分解成若干个子系统或模块,定义子系统或模块间的接口关系,对各子系统进行具体设计定义,编写软件概要设计和详细设计说明书,数据库或数据结构设计说明书,组装测试计划。在任何软件或系统开发的初始阶段必须先完全掌握用户需求,以期能将紧随的系统开发过程中哪些功能应该落实、采取何种规格以及设定哪些限制优先加以定位。系统工程师最终将据此完成设计方案,在此基础上对随后的程序开发、系统功能和性能的描述及限制作出定义。


3设计
软件设计可以分为概要设计和详细设计两个阶段。实际上软件设计的主要任务就是将软件分解成模块是指能实现某个功能的数据和程序说明、可执行程序的程序单元。可以是一个函数、过程、子程序、一段带有程序说明的独立的程序和数据,也可以是可组合、可分解和可更换的功能单元。模块,然后进行模块设计。概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库,常用方法还是结构化程序设计方法。


4编码
软件编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的“源程序清单”。充分了解软件开发语言、工具的特性和编程风格,有助于开发工具的选择以及保证软件产品的开发质量。
当前软件开发中除在专用场合,已经很少使用二十世纪80年代的高级语言了,取而代之的是面向对象的开发语言。而且面向对象的开发语言和开发环境大都合为一体,大大提高了开发的速度。


5测试
软件测试的目的是以较小的代价发现尽可能多的错误。要实现这个目标的关键在于设计一套出色的测试用例(测试数据与功能和预期的输出结果组成了测试用例)。如何才能设计出一套出色的测试用例,关键在于理解测试方法。不同的测试方法有不同的测试用例设计方法。两种常用的测试方法是白盒法测试对象是源程序,依据的是程序内部的的逻辑结构来发现软件的编程错误、结构错误和数据错误。结构错误包括逻辑、数据流、初始化等错误。用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果。白盒法和黑盒法依据的是软件的功能或软件行为描述,发现软件的接口、功能和结构错误。其中接口错误包括内部/外部接口、资源管理、集成化以及系统错误。黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。


6维护
维护是指在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后,对软件产品所进行的一些软件工程的活动。即根据软件运行的情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。编写软件问题报告、软件修改报告。


一个中等规模的软件,如果研制阶段需要一年至二年的时间,在它投入使用以后,其运行或工作时间可能持续五年至十年。那么它的维护阶段也是运行的这五年至十年期间。在这段时间,人们几乎需要着手解决研制阶段所遇到的各种问题,同时还要解决某些维护工作本身特有的问题。做好软件维护工作,不仅能排除障碍,使软件能正常工作,而且还可以使它扩展功能,提高性能,为用户带来明显的经济效益。然而遗憾的是,对软件维护工作的重视往往远不如对软件研制工作的重视。而事实上,和软件研制工作相比,软件维护的工作量和成本都要大得多。


在实际开发过程中,软件开发并不是从第一步进行到最后一步,而是在任何阶段,在进入下一阶段前一般都有一步或几步的回溯。在测试过程中的问题可能要求修改设计,用户可能会提出一些需要来修改需求说明书等。

软件开发类型

1、手机
Mac OS(苹果的),Linux,Palm(最大特色是不能后台),BlackBerry(黑莓)Windows Phone(WP,不错的系统,)Android(安卓,07年兴起的,很好的系统),还有几个新系统,三星与intel联合开发的tizen,Mozilla 公司的FireFox OS ,N900的maemo。


2、电脑
企业管理软件,如:如MES系统软件、OA系统软件、CRM系统软件、HR系统软件、ERP系统软件

软件开发合同协议

委托开发软件一般是应用户(委托方)需要,编制适用于其生产或经营特点的软件,这种软件一般在市场上见不到或在市场上买到需经修改后才能使用,但是该用户没有开发或修改软件的能力,必须委托一定软件中其他具有开发、修改软件能力的机构从事该项工作。被委托方虽然是开发软件方面专家,但他可能对委托方所从事的行业或具体的生产或经营特点、方式了解甚少。因此,双方签订的软件合同就有许多事项需要明确。


委托人注意事项
1、合同双方应明确约定受托人对委托人进行项目培训,以及培训费用的支付问题。
2、合同双方应明确约定开发软件的总价款以及各个部分的价格。
3、合同双方应明确约定受托人向委托人提供进度报告的方式和时间。
4、委托人在领受了受托人交付件后,应立即对该交付件进行测试和评估,以确认其是否符合开发软件的功能和规格。
5、委托人应向受托人提供有关信息与资料,特别是有关委托人对开发软件的功能和目标需求方面的信息和资料,明确质量要求。
6、合同双方应明确约定委托人对于委托人提交的有关需求说明、资料和信息所涉及的软件功能、目标、需求构成及相关技术问题向受托人咨询或征求意见的权利。
7、委托方应明确约定受托方向委托方进行软件维护和支持服务的时间和内容。


受托人的注意事项
1、受托人在完成软件开发后,需要增加开发费用时,该怎么处理,应与委托人进行明确约定。


2、应在合同中约定完成软件开发的弹性时间,避免由于委托人计算失误,未能在合同规定的时间内完成软件开发而承担的违约责任。


3、合同双方应明确约定受托人提交需求说明书、概要设计说明书、详细设计说明书的具体时间。


4、合同双方应明确约定委托人在受托人提交进度报告后答复的时间和方式。


5、明确所开发软件的版权归属。

软件版权的归属有两种处理方法:其一是软件版权归委托方;其二是软件版权归被委托方。实践中可采取以下办法解决,即软件版权归委托人,反过来委托人给予被委托人在一定范围内使用软件的许可,如允许被委托人使用例行程序开发其他软件等,由此双方都能各得所需。
6、受托人应约定委托人检验软件后出具书面领受文件或递交缺陷报告及领受或出具缺陷报告时间。


委托人和受托人的注意事项
1、合同双方应明确约定合同项目是否可以分包,如果可以,应写明可分包的范围。
2、合同双方应明确约定软件开发的目的、处理对象、软件的主要功能和目标以及应达到的技术指标。
3、开发进度
①合同双方应明确约定合理的软件系统试运行的时间。
②合同双方应明确约定开发软件的交付时间和进度。


4、知识产权归属
①若合同约定软件系统的知识产权归一方所有时,应明确约定另一方所拥有的使用权及权限范围。
②合同双方应明确约定所开发软件的知识产权的权属,是共同所有还是一方所有。


5、验收
验收对委托开发软件合同双方都非常重要,它关系到如何确认以下几个问题。
①、委托方在收到软件程序以及第一批文档后多长时间内完成对软件的测验,以及在多长时间内委托方有权以软件程序质量未达到合同所规定的技术标准要求为由,要求被委托方对程序进行修改使其达到合同规定的标准。
②、对程序进行修改费用应哪方负责。
③、被委托方应在多长内完成修改程序的工作,并且应在何时、何地以及以何种方式将修改后的软件交会给委托方。
④、委托方收到修改过的软件之后应在多长时间完成第二次测验,并应在多长时间内委托方应将第二次测验的结果通知被委托方。
⑤、如第二次测验计算机程序仍未达到合同规定的技术标准要求,委托方是否有权拒绝拒绝接受程序,交且是否有权要求被委托方按合同规定的索赔条款进行赔偿。
⑥、如果委托方要按期将首次或者第二次测验的结论通知被委托方,是否可以视为委托方已接受被委托方开发的软件。
⑦、如果程序文档分为两次交付,在委托方实际接受软件后多长时间内被委托方应将第二批文档交付给委托方。


6、交付说明书
①合同双方应明确约定交付的文档的形式和内容。
②合同双方应明确约定委托人对受托人提交的各种说明书的审核时间。
③合同双方应明确约定委托人对受托人提交的说明书有异议,双方应如何解决等问题。
合同双方没有明确约定当委托人对受托人提交的说明书有异议时,双方应如何解决。导致合同双方对此发生争议,引起纠纷。


7、证据
①合同签订后,双方应该妥善保管合同书以及主合同、相关凭据、有关会计资料以及其它承诺函、约定书等合同附件。
②对方拒绝接受函件等其他文书时,应当向公证机构或其他部门公证或提存保留证据。
③应严格按照法律法规的规定进行证据的公证和提存保留。
④当事人一方依照约定解除合同或依照法定事项主张解除合同,应保存通知对方解除合同的证据。
8、合同双方应明确约定项目变更的条件。


9、合同双方应明确约定软件开发系统的名称,分属于不同当事人的软件。


10、保密
①保密对象:合同双方应明确约定保密对象,应该对保密对象加以细化,以例举的方式列出,还应约定特定情况下的一些例外事项。
②保密责任:当事人应当明确约定双方对商业秘密都负有保密义务,任何一方都不得擅自泄漏,否则承担相应责任。
③保密期限:应约定对合同中的保密事项的具体保密期限,或只是有个概述而未明确具体的时间段、时间点。
④保密条款的独立性:双方可以约定,不论合同是否变更、解除或终止,合同保密条款不受其限制而继续有效,各方均应继续承担约定的保密义务。


11、合同双方的权利义务是否可以转让。


12、签约细节
①合同中应当说明双方当事人信息。如当事人名称,住所,法定代表人或主要负责人,开户金融机构,帐号,电话,邮政编码,签订合同日期。签订合同地点等。
②双方均应签署清楚无误的签名,当事方是单位的还应加盖公章。
③签订时间:双方应在合同尾部标明清楚无误的签约时间。
④合同用语要力求达到条款明确、具体、措辞确切,防止“基本”、“尽可能”、“如有可能”“应该”“最新”等不确切的条款和字眼在合同中出现。


13、不可抗力
①一方发生不可抗力时应当按照约定及时向对方告知、证明,并应及时采取措施防止损失扩大。
②双方当事人应当明确约定不可抗力的范围、遭遇不可抗力后的通知办法和证明方法、双方可否因不可抗力解除合同、可否因不可抗力造成的履行问题要求赔偿、在何种情况下解除合同等。
③一方发生不可抗力后应依约及时向对方告知、证明时应保存证据。


14、履行过程中双方都应注意相对方主体变更情况,若有变更解散情形的,应注意哪个法人或组织继受其权利义务,并应收集相关证据证明以上事实。


15、争议解决方式
①如约定诉讼管辖法院,只能约定由被告住所地、合同履行地、合同签订地、原告住所地、合同标的物所在地法院管辖,且只能约定其中一个法院管辖。如果约定不明确、选择两个以上法院管辖、或约定上述5个法院以外的法院,或既约定仲裁又约定诉讼的,这样解决争议的条款是无效的。
当事人选择管辖法院时,选择一个以上的法院;或者选择仲裁,却同时约定由法院管辖。 这样解决争议的条款是无效的,可能会增加当事人争议解决成本(时间、金钱),不符合当事人初始意图,不利于争议有效率地解决。


②发生争议后当事人双方可以平等协商达成共识,也可以由人民调解委员会调解或者向人民法院起诉以及依约定申请仲裁。人民法院的裁判、调解以及仲裁机构的裁决、调解都是具有强制力;当事人双方协商达成的共识和人民调解委员会的调解没有强制力但是其效力等同于签订了新的合同。


③如约定仲裁,应当明确约定具体的仲裁机构和仲裁事项。仲裁机构约定明确的标准为:仲裁机构所在地明确,同一地点有两个以上仲裁机构的应当写明约定的仲裁机构的详细名称。


16、合同双方当事人应该在涉外合同中明确约定一旦发生争议应该适用的法律,而且这种约定要切实可行。


17、在诉讼中,应权衡利弊,最大限度要求对方承担所有损失,不能主动放弃任何有利于己方的诉讼请求。


18、受到对方欺诈、胁迫,被人趁人之危签订合同的当事人应当保存好证据并且在一年之内向人民法院起诉或者依约向仲裁机构申请仲裁主张撤销或者变更合同


19、在签订合同时,应当附带合同使用说明。如:合同的适用范围,条款术语的理解等方面。


20、在合同履行过程中一方违约,另一方应采取措施提请对方注意并与对方进行协商,确定责任的负担。


21、当双方对合同内容协商一致进行变更时应重新订立书面合同或达成书面协议。


22、签约主体
①合同双方应正确区分单位与单位负责人的关系,应明确认识到单位负责人不能以其个人名义代表单位。


②一方当事人与对方当事人的委托代理人签订合同时,应该事先确认代签约的人是否持有对方当事人的授权委托书。


③应对各自内部人员的权限作出规定,禁止无权人员滥用单位公章、签字等与对方履行各项合同事宜,尤其不能作出不符合合同内容和己方利益的意思表示。
④双方当事人应当调查签约对方的签约主体资格。
23、应在合同中写明主合同、相关凭据、有关会计资料以及其它承诺函、约定书等为本合同附件。


24、违约责任
①合同双方应在合同中约定,如一方违反合同约定,另一方可追究违约方的责任,并要求违约方承担违约金或赔偿损失。


② 合同双方只要约定了违约金或赔偿损失的,就要约定具体数额或计算方法。在约定违约金时,数额约定不能过高或过低,约定数额过低,损失得不到补偿,约定数额过高,会因数额过高得不到法律支持无法实现。一般而言,约定的违约金数额不能超出合同标的额,若一方的损失确实超过合同标的,可直接约定赔偿损失。


25、当事人一方依照约定解除合同或依照法定事项主张解除合同的,应当通知对方。合同自通知到达对方时解除。


26、双方在合同中应明确约定合同履行中若一方组织解散,其合同权利义务的承担者。若在合同订立时一方正处于解散的变动期内且能预见其权利义务的继受者,则应在合同中明确约定具体的继受者名称。同时须约定一方发生组织解散情形应及时告知相对方及违反此告知义务的责任。


27、双方在签订合同时,合同用语的一定要准确、清楚,对一些专业性较强的关键性的名词术语要在合同开头作出必要的定义或解释,以免发生歧义或造成理解障碍。


28、双方应在合同中约定,合同未尽事宜依照有关法律法规执行,法律法规未作规定的,双方可另行协商签订书面补充协议作为本合同的附件,补充协议与本合同具有同等法律效力。


29、双方应在合同中明确约定合同生效与终止的条件、时间和事由等。


30、合同双方应约定一方若变更通讯地址,应在变更之日起几日内以书面形式通知对方及未通知对方应承担的责任。


31、合同双方应在合同中明确约定双方的文件往来应采取何种形式。宜采书面形式,包括:书信、传真、电报、当面送交等方式。


32、一方接到另一方解除合同的通知时如有异议,可及时请求人民法院或者仲裁机构确认解除合同的效力。


以上细节问题,双方在签订软件开发合同时,应当加以重视,应严格按照法律规定办理相关手续,从而最大限度规避法律风险。

联系客服:136 68935 929