真心想知道软件的开发过程

作者&投稿:第钱 (若有异议请与网页底部的电邮联系)
我想问一下软件是怎样开发出来的~

首先你的问题问的极为模糊,我告诉你吧,我是学计算机的,快毕业了!~
做一个大型软件,例如visul stdio,不是一两个人活几十个人能做的出来的,其次,做软件的过程很漫长,并不是说开发软件的代码很困难,而是在做软件之前你必须做需求分析,详细了解客户的需求,这样作出来的软件才不会不实用,其次再有架构设计、详细设计、编码和调试、测试、安装部署及项目管理等,做医疗软件的程序员,除了扎实的基础知识外,必须对医疗的知识很了解,这样你在框架设计是才不会盲目的设计!~在经过的了漫长的过程后,等软件发布后你还得做一系列的维护工作,比如更新!~
所以软件的开发不是一朝一夕能完成的,其中有一个环节出现问题都是很要命的!~
我回答的还可以吗^呵呵!~我可不是复制粘贴的哦!~

  一个软件从开始到最后一共需要以下几个流程:
  1、计划
  2、分析
  3、设计
  4、编码
  5、测试
  6、维护
  1、计划
  对所要解决的问题进行总体定义,包括了解用户的要求及现实环境,从技术、经济和社会因素等3个方面研究并论证本软件项目的可行性,编写可行性研究报告,探讨解决问题的方案,并对可供使用的资源(如计算机硬件、系统软件、人力等)成本,可取得的效益和开发进度作出估计,制订完成开发任务的实施计划。
  2、分析
  软件需求分析就是对开发什么样的软件的一个系统的分析与设想。它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。本阶段的基本任务是和用户一起确定要解决的问题,建立软件的逻辑模型,编写需求规格说明书文档并最终得到用户的认可。需求分析的主要方法有结构化分析方法、数据流程图和数据字典等方法。本阶段的工作是根据需求说明书的要求,设计建立相应的软件系统的体系结构,并将整个系统分解成若干个子系统或模块,定义子系统或模块间的接口关系,对各子系统进行具体设计定义,编写软件概要设计和详细设计说明书,数据库或数据结构设计说明书,组装测试计划。在任何软件或系统开发的初始阶段必须先完全掌握用户需求,以期能将紧随的系统开发过程中哪些功能应该落实、采取何种规格以及设定哪些限制优先加以定位。系统工程师最终将据此完成设计方案,在此基础上对随后的程序开发、系统功能和性能的描述及限制作出定义。
  3、设计
  软件设计可以分为概要设计和详细设计两个阶段。实际上软件设计的主要任务就是将软件分解成模块是指能实现某个功能的数据和程序说明、可执行程序的程序单元。可以是一个函数、过程、子程序、一段带有程序说明的独立的程序和数据,也可以是可组合、可分解和可更换的功能单元。模块,然后进行模块设计。概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库,常用方法还是结构化程序设计方法。
  4、编码
  软件编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的“源程序清单”。充分了解软件开发语言、工具的特性和编程风格,有助于开发工具的选择以及保证软件产品的开发质量。
  当前软件开发中除在专用场合,已经很少使用二十世纪80年代的高级语言了,取而代之的是面向对象的开发语言。而且面向对象的开发语言和开发环境大都合为一体,大大提高了开发的速度。
  5、测试
  软件测试的目的是以较小的代价发现尽可能多的错误。要实现这个目标的关键在于设计一套出色的测试用例(测试数据与功能和预期的输出结果组成了测试用例)。如何才能设计出一套出色的测试用例,关键在于理解测试方法。不同的测试方法有不同的测试用例设计方法。两种常用的测试方法是白盒法测试对象是源程序,依据的是程序内部的的逻辑结构来发现软件的编程错误、结构错误和数据错误。结构错误包括逻辑、数据流、初始化等错误。用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果。白盒法和黑盒法依据的是软件的功能或软件行为描述,发现软件的接口、功能和结构错误。其中接口错误包括内部/外部接口、资源管理、集成化以及系统错误。黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。
  6、维护
  维护是指在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后,对软件产品所进行的一些软件工程的活动。即根据软件运行的情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。编写软件问题报告、软件修改报告。
  一个中等规模的软件,如果研制阶段需要一年至二年的时间,在它投入使用以后,其运行或工作时间可能持续五年至十年。那么它的维护阶段也是运行的这五年至十年期间。在这段时间,人们几乎需要着手解决研制阶段所遇到的各种问题,同时还要解决某些维护工作本身特有的问题。做好软件维护工作,不仅能排除障碍,使软件能正常工作,而且还可以使它扩展功能,提高性能,为用户带来明显的经济效益。然而遗憾的是,对软件维护工作的重视往往远不如对软件研制工作的重视。而事实上,和软件研制工作相比,软件维护的工作量和成本都要大得多。
  在实际开发过程中,软件开发并不是从第一步进行到最后一步,而是在任何阶段,在进入下一阶段前一般都有一步或几步的回溯。在测试过程中的问题可能要求修改设计,用户可能会提出一些需要来修改需求说明书等。

软件系统的开发是按阶段进行的,一般划分为以下阶段:可行性讨论;需求分析;系统设计(概要设计、详细设计);程序开发;编码,单元测试;系统测试;系统维护。
软件开发过程中要明确各阶段的工作目标、实现该目标所必需的工作内容以及达到的标准。只有在上一个阶段的工作完成后,才能开始下一阶段的工作。

1.可行性讨论

明确系统的目的、功能和要求,了解目前所具备的开发环境和条件,论证的内容有:① 在技术能力上是否可以支持;② 在经济上效益如何;③ 在法律上是否符合要求;④ 与部门、企业的经营和发展是否吻合;⑤ 系统投入运行后的维护有无保障。

可行性讨论的目的是判定软件系统的开发有无价值。分析和讨论的内容形成“系统开发计划书”,主要内容有:

(1) 开发的目的及所期待的效果;
(2) 系统的基本设想,涉及的业务对象和范围;
(3) 开发进度表,开发组织结构;
(4) 开发、运行的费用;
(5) 预期的系统效益;
(6) 开发过程中可能遇到的问题及注意事项。

2、系统需求分析

系统需求分析是软件系统开发中最重要的一个阶段,直接决定着系统的开发质量和成败,必须明确用户的要求和应用现场环境的特点,了解系统应具有哪些功能、数据的流程和数据之间的联系。需求分析应有用户参加,到使用现场进行调研学习,软件设计人员应虚心向技术人员和使用人员请教,共同讨论解决需求问题的方法,对调查结果进行分析,明确问题的所在。需求分析的内容编写成“系统需求分析报告”。

3.系统设计

可根据系统的规模分成概要设计和详细设计两个阶段。

概要设计包括:① 划分系统模块;② 每个模块的功能确定;③ 用户使用界面概要设计;④ 输入输出数据的概要设计;⑤ 报表概要设计;⑥ 数据之间的联系、流程分析;⑦ 文件和数据库表的逻辑设计;⑧ 硬件、软件开发平台的确定;⑨ 有规律数据的规范化及数据惟一性要求。

系统的详细设计是对系统的概要设计进一步具体化,其主要工作有:① 文件和数据库的物理设计;② 输入输出记录的方案设计;③ 对各子系统的处理方式和处理内容进行细化设计;④ 编制程序设计任务书。程序说明书通常包括程序规范、功能说明、程序结构图,通常用HPIPO(Hierarchy Plus Input Process Output)图描述。

4、程序开发

根据程序设计任务书的要求,用计算机算法语言实现解题的步骤,主要工作包括:① 模块的理解和进一步划分;② 以模块为单位的逻辑设计,也就是模块内的流程图的编制;③ 编写代码,用程序设计语言编制程序;④ 进行模块内功能的测试、单元测试。

程序质量的要求包括:① 满足要求的确切功能;② 处理效率高;③ 操作方便,用户界面友好;④ 程序代码的可读性好,函数、变量标识符合规范;⑤ 扩充性、维护性好。

降低程序的复杂性也是十分重要的。系统的复杂性由模块间的接口数来衡量,一般地讲,n个模块的接口数的最大值为n(n-1)/2;若是层次结构,n个模块的接口数的最小值为n-1。为使复杂性最小,对模块的划分设计常常采用层次结构。要注意编制的程序或模块应容易理解、容易修改,模块应相互独立,对某一模块的修改应对其他模块的功能不产生影响,模块间的联系尽可能少。

5.系统测试

测试是为了发现程序中的错误,对于设计的软件,出现错误是难免的。系统测试通常由经验丰富的设计人员设计测试方案和测试样品,并写出测试过程的详细报告。系统测试是在单元测试的基础上进行的,包括:① 测试方案的设计;② 进行测试;③ 写出测试报告;④ 用户对测试结果进行评价。

6、文档资料

文档包括开发过程中的所有技术资料以及用户所需的文档,软件系统的文档一般可分为系统文档和用户文档两类。用户文档主要描述系统功能和使用方法,并不考虑这些功能是怎样实现的;系统文档描述系统设计、实现和测试等方面的内容。文档是影响软件可维护性、可用性的决定因素,有句话讲,系统编程人员的每一张纸片都要保留,所以文档的编制是软件开发过程中的一项重要工作。

系统文档包括:开发软件系统在计划、需求分析、设计、编制、调试、运行等阶段的有关文档。在对软件系统进行修改时,系统文档应同步更新,并注明修改者和修改日期,如有必要应注明修改原因,应切记过时的文档是无用的文档。

用户文档包括:① 系统功能描述;② 安装文档,说明系统安装步骤以及系统的硬件配置方法;③ 用户使用手册,说明使用软件系统方法和要求,疑难问题解答;④ 参考手册,描述可以使用的所有系统设施,解释系统出错信息的含义及解决途径。

7、系统的运行与维护

系统只有投入运行后,才能进一步对系统检验,发现潜在的问题,为了适应环境的变化和用户要求的改变,可能会对系统的功能、使用界面进行修改。要对每次发现的问题和修改内容建立系统维护文档,并使系统文档资料同步更新。

1,软件计划
2,软件需求分析
3,软件总体设计
4,软件详细设计
5,软件编码
6,软件测试
7,软件维护
总体而言,花在文档和维护的时间最长

你得有丰厚的支持,还得有很多钱支持你开发软件
软件开发出来,性质不错,技术好,可以通过媒体渠道打广告,上市后,效果嘛,偷着乐吧

软件测试需要什么能力
答:1、软件测试的基本方法(边界值、等价类、错误分类、流程分析等等黑盒、白盒测试方法要有了解,并且掌握)这个不难,但请务必牢记在心中,它是你去建立自己世界观的基础,所有的测试逃不出这些方法 2、会写的基础的测试文档(测试用例、缺陷报告等) 3、会看开发文档(需求说明书、操作手册) 4、知道软件工程中,测试...

找小程序开发公司应注意的事项
答:1、找公司或者团队。多找一些渠道,找一些觉得靠谱的开发公司,多接触,创始人最好是技术出身,有技术基因的公司才能保证项目的开发质量。很多的做销售出身的公司,技术能力真心没有办法保证。2、合同签订。合同内容一定要细致,需要有比较详细的列表和功能描述,这样才能保证后期不会出现扯皮。因为软件开发...

java好还是嵌入式好 做IT开发该如何选择
答:Java在中国发展已10几年时间,虽然所学的内容较多,但入门较容易,初中、高中、中专基础的都能学习,但是有发展瓶颈,就是上升空间不大,且生命周期比较短(大概有7年左右的时间),感觉做几年之后没什么可做的了,做java(应用软件)开发的35岁以上的基本很少了,就是常说的“吃青春饭”,且软件更新快...

API有什么作用,他的工作原理是什么?
答:在了解API之前,先打开你的VB书,翻到过程函数这章来,在搞清楚API之前应该先搞懂过程函数是怎么一回事!如果你还不知道过程的工作方式,那么请先不要急着...API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需...

找软件开发公司开发软件,甲方需要注意什么?
答:因此,主张有开发需求的企业慎重考虑模板类APP,且在开发完成后向服务企业索取源码,以供后期应用 4、 不好单纯性以价钱廉价为决定因素 看似简单的APP,在实践开发过程中将会需求团队中好几个岗位互相配合,在其中包含项目经理、产品经理、UI设计师、开发工程师、测试工程师等。而在较小的软件开发公司,...

web前端开发都需要什么应用软件(web前端开发可以做什么)
答:如果你真的想学习网页制作这门技术,你可以来这个裙,最前面的是49四中间是灵六思最后是久三思!在这里有最新的HTML课程学习也有很多人指导你进步,不需要你付出什么,只要你是真心想学习的,随便看看的就不要加了,加了也是浪费大家的时间。Web前端开发在产品开发环节中的作用变得越来越重要,而且需要...

想知道学习编程的路线
答:同样的薪资待遇也是,所以许多人想去学习WEB前端开发.前端开发工程师是Web前端开发工程师的简称,是近五年才开始受到重视的一个 新兴职业。Web前端开发技术是一个先易后难的过程,主要包括三要素:HTMLCSS,JavaScript,这就要求前端开发工程师不仅要掌握基本的 Web前端开发技术,网站性能优化、SEO和服务器端...

女生学习软件开发难度大吗?
答:如何学习软件开发专业课程:1、首先,你一定要有坚持下去的觉悟,不然,根本不可能,软件开发课程的内容非常之庞大,要坚持好久 2、多练习,软件开发过程与其说是一门学问,不如说是一门技能,多练习才是王道,3、要稳住心态,细心,因为你在学习的时候肯定会遇到各种的困难,各种的错误,如何克服与修改...

WEB前端开发
答:如果你真的想学习网页制作这门技术,你可以来这个裙,前面是49四,中间是06思,最后是934!在这里有最新的HTML课程免费学习 也有很多人指导你进步,不需要你付出什么,只要你是真心想学习的,随便看看的就不要加了,加了也是浪费大家的时间。Web前端的学习建议 Web前端的学习误区入门快、见效快让我们在...

软件测试工程师应该学些什么方面的知识?
答:而且在软件测试工作中,要编写一些辅助测试的小工具,都需要有软件开发基础。象测试过程管理工具、测试用例管理工具、缺陷跟踪工具、性能检测工具等等。不要老是认为软件开发难,什么事都是从不会到会,从不精通到精通,都需要一个过程。没有人一生下来就什么都会的,都需要自己的不断努力才能成功。(2)...