谢邀,科普来了。软件种类过多,每一种软件在每一家公司有不同的开发方式,不过大致开发过程殊途同归。 开发软件,一般不是说一想到要开发系统就开始敲代码,毕竟你要明确你需要做什么软件,软件的使用人群是怎样的,软件需要什么功能,软件需要怎样的规模,进行一定的可行性分析和调研后,进行软件开发步骤。这里以开发企业级web系统为例: 第一步,往往是进行需求分析,一般面向企业的软件需要跟甲方确认需求,这需要消耗一两个月甚至更久。 第二步,进行原型设计,设计出符合需求的软件的样子,有的公司可能直接没原型图靠草图。 第三步,详细设计,这是很重要的一步,数据库设计,接口设计,开发者都会根据详细设计进行编程。 第四步,开发与测试,程序猿这时候上场了,开始写bug了,你懂的。其实测试和修bug是齐头并进的,往往是开发完测一下,有bug修bug,没bug开发下一个任务。 第五步,迭代,需求不是一下子就确认完,会不断有新需求或者需求变更,这就需要不断的重复上述过程。 第六步,当软件需求做完了,测试也没什么问题了,基本上是可以进入用户测试阶段然后上生产环境了。算是软件开发完毕咯。觉得程序员宇文笑的观点有道理的点点关注 这个问题比较笼统。 我可以以我个人的理解简单的回答一下。 如果提出这个问题,说明你没有软件开发的经验。 软件开发可以从最基本的可以简单理解成为,用一种规定的语言系统写出来的东西。 我们经常看到的有用中文英文各种语言写出来的小说,或者是写出来的故事。软件呢,就相当于是一个成熟的故事,而你怎么把它写出来呢?就是你用了什么样的语言。 开发语言主要分为三大类: 1。网络开发现在网络已经成为世界通讯的一座桥梁,好像Javascript、PHP、Ruby这几类开发语言大部分是用作网络开发方面。 2。企业软件开发JAVA、C、VB这几类开发语言都实现了面向对象开发的目标,更多时候用于企业系统的开发。 3。系统软件C语言、C、ObjectiveC这些软件更多是用在系统软件开发,嵌入式开发的方面。当然,像JAVA、C、VB很多时候也用于动态网站的开发。在很开发项目都会使用集成开发的方式,同一个项目里面使用多种开发语言,各展所长,同步开发。但所以在刚入门的时候,建议您先为自己选择一种合适的开发工具,专注地投入学习,全力一击。 上面说的是基本的语言,不同的语言有不同的特点,就像中文,英语,俄语,法语一样。语言和语言之间会有不同的语系,这个就不多细说了。 我们可以从最基本的数学,简单的数学,11等于2这种。我们电脑手机上用到的各种计算器,就属于这种简单的软件,他只是把数学的相关东西放进去了而已。开发软件也可以涉及到各方各面。我们平常说的ps这种软件也是要有语言开发包开发出来的。它里面涉及到的数学公式,就不会像11这么简单,它可能会涉及到各种的颜色数值的加减运算。它里面也可能就不会涉及到数学运算,它可能会涉及到函数运算,矢量运算等等的一些计算方式,总之你可以把它理解成它就是一种计算出来的一种东西。只是最后呈现到你面前的呢,是一种可以互动的啊,你可以下达什么命令,它可以完成什么命令的一种这种系统软件。 比如说我们打开电脑上的ps软件他可能后台要进行的操作有很多步,比如说他会先启动主程序,然后再启动主程序下面,带动了其他子程序,或者它里面设置了各种预设的东西。这个时候在编写软件的时候,他会根据需要把这些东西都会写进去,他可能会给你留个后门,和通道。 总之你只要知道软件是通过一种特殊的语言来写成了一种成熟的工具就行了。 开发一款软件大致要经历如下七个重要步骤: 1收集用户需求(相当于制定造人计划) 首先要有用户需求。可以是用户提供的,比如XX银行系统,也可以是软件公司根据市场需求,写的用户需求,通用软件就如此,比如Word,PPT等。 2项目可行性分析(讨论造人计划是否可行) 重点考虑技术、经济、政治、股东权益等各方因素。 3详细分析用户需求(用户业务),规划各功能模块(执行造人计划) 4详细设计软件系统(相当于制定造人计划) 4。1开发工程师详细设计软件系统各功能模块,测试工程师制定测试用例反复测试,开发工程师再修改,测试工程师再测试,如此反复,直到没有问题。 4。2涉及第三方软件系统(如Mysql数据库)、中间件等需采购、安装。 4。3有硬件(如服务器)的需准备采购、安装、调试和交付确认。 5系统联调(孕期的胎儿检查) 各软件系统、网络和硬件联合调试运行,修改存在的问题。 6试运行系统,用户验收确认(胎儿出) 7系统维护与升级(胎儿成长、学习完善自已)。 开发流程 一、需求分析 1。相关系统分析员向用户初步了解需求,然后用相关的工具软件列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。 2。系统分析员深入了解和分析需求,根据自己的经验和需求用WORD或相关的工具再做出一份文档系统的功能需求文档。这次的文档会清楚列出系统大致的大功能模块,大功能模块有哪些小功能模块,并且还列出相关的界面和界面功能。 3。系统分析员向用户再次确认需求。 二、概要设计 首先,开发者需要对软件系统进行概要设计,即系统设计。概要设计需要对软件系统的设计进行考虑,包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为软件的详细设计提供基础。 三、详细设计 在概要设计的基础上,开发者需要进行软件系统的详细设计。在详细设计中,描述实现具体模块所涉及到的主要算法、数据结构、类的层次结构及调用关系,需要说明软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,以便进行编码和测试。应当保证软件的需求完全分配给整个软件。详细设计应当足够详细,能够根据详细设计报告进行编码。 四、编码 在软件编码阶段,开发者根据《软件系统详细设计报告》中对数据结构、算法分析和模块实现等方面的设计要求,开始具体的编写程序工作,分别实现各模块的功能,从而实现对目标系统的功能、性能、接口、界面等方面的要求。在规范化的研发流程中,编码工作在整个项目流程里最多不会超过12,通常在13的时间,所谓磨刀不误砍柴功,设计过程完成的好,编码效率就会极大提高,编码时不同模块之间的进度协调和协作是最需要小心的,也许一个小模块的问题就可能影响了整体进度,让很多程序员因此被迫停下工作等待,这种问题在很多研发过程中都出现过。编码时的相互沟通和应急的解决手段都是相当重要的,对于程序员而言,bug永远存在,你必须永远面对这个问题! 五、测试 测试编写好的系统。交给用户使用,用户使用后一个一个的确认每个功能。软件测试有很多种:按照测试执行方,可以分为内部测试和外部测试;按照测试范围,可以分为模块测试和整体联调;按照测试条件,可以分为正常操作情况测试和异常情况测试;按照测试的输入范围,可以分为全覆盖测试和抽样测试。以上都很好理解,不再解释。总之,测试同样是项目研发中一个相当重要的步骤,对于一个大型软件,3个月到1年的外部测试都是正常的,因为永远都会有不可预料的问题存在。完成测试后,完成验收并完成最后的一些帮助文档,整体项目才算告一段落,当然日后少不了升级,修补等等工作,只要不是想通过一锤子买卖骗钱,就要不停的跟踪软件的运营状况并持续修补升级,直到这个软件被彻底淘汰为止。 六、软件交付 在软件测试证明软件达到要求后,软件开发者应向用户提交开发的目标安装程序、数据库的数据字典、《用户安装手册》、《用户使用指南》、需求报告、设计报告、测试报告等双方合同约定的产物。 《用户安装手册》应详细介绍安装软件对运行环境的要求、安装软件的定义和内容、在客户端、服务器端及中间件的具体安装步骤、安装后的系统配置。 《用户使用指南》应包括软件各项功能的使用流程、操作步骤、相应业务介绍、特殊提示和注意事项等方面的内容,在需要时还应举例说明。 六、用户验收 七、维护 根据用户需求的变化或环境的变化,对应用程序进行全部或部分的修改。 首先看你自己会不会编程序,再有看你需要什么功能,软件开发也是一个很累人的事情 开发软件这个词语太笼统,我不知道怎么回答,楼主是想开发前端还是后端,楼主对开发语言有多少了解,开发不是说稍微学学就能学会,需要下功夫,如果楼主真心想学的话可以关注我,我现在是从java基础开始讲起。可以一步一步教楼主怎么开发。 一,软件定义 问题分析 可行性分析 需求分析 二,软件开发 总体设计 详细设计 编码 单元测试 综合测试 3三,运行维护 理论上是这样的 首先,软件是一系列按照特定顺序组织的计算机数据和指令的集合。它也是一种产品,是为了满足某种需求而生的,通常可以分为系统软件、应用软件和介于这两者之间的中间件。软件还包括文档,也就是说,程序和文档加起来才是软件的完整定义。 那软件是如何开发出来的呢?通常一款软件的开发流程是这样的,对软件先进行需求分析,设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编码和调试、程序联调和测试以及编写、提交程序等一系列操作以满足客户的需求并且解决客户的问题,如果有更高需求,还需要对软件进行维护、升级处理,报废处理。 这样说或许比较抽象,下面以一款反黑粉的软件为例简要说明。既然软件是满足某种需求的产品,那肯定是有需求在先的,比如说你的朋友A喜欢刘亦菲,但微博上总有黑粉黑她。微博的机制是一条微博举报人数足够多的时候才会进行处理,因此A成立了一个反黑组,将黑刘亦菲的微博汇总发出来,让大家一起举报。但A发现这样效率很低,于是他想,要是有一个软件,能自动识别黑粉微博,然后粉丝都到这个软件上去举报就好了。 但A不会做软件,于是将这个想法跟你说并委托你来做。其实A的想法就是一个需求,但是不够具体,所以你要跟他确认好他想做的东西是什么样的,比如大体功能、软件形态(Web、APP、小程序、桌面应用等),然后你需要做一些可行性分析,如经济可行性(比如只给1000块钱让你开发个百度、经济效益等)、技术可行性(能否自动识别)等方面确定这款软件是否可以开发。确定好可以开发之后需要做具体的需求分析。需求分析其实也是一个很复杂的过程,需要经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么。同时在需求分析阶段,还要确实好团队组成,包括产品经理、研发项目经理、研发工程师、测试团队等。确定好团队之后,产品经理要向团队进行整个需求的讲解,然后使用BalsamiqMockupAxure等工具以线框图的形式设计完整的原型图。 需求分析做好之后差不多就可以进入设计阶段了,这一阶段UI设计师根据原型图设计出完整的UI交付件。然后研发工程师们要做出需求规格说明书、概要说明书、接口规范(有些软件还有通讯协议)、数据建模等等。 之后就是就可以行软件的编码工作了,也就是大家熟悉的写代码的阶段,这个阶段还需要进行后端和前端的联调,这里的前端可能是Web、APP、小程序或者桌面应用。最后,还需要进行功能评审。 软件编码工作结束以后,就可以提交给测试团队进行测试了,现在一般是做自动化测试。对于测试发现有问题的部分还要重新提交给开发人员进行修改后重新测试。最后一般会有一个测试报告。 这一系统工作结束之后还需要与你的朋友A进行最后的确认,如果你开发的产品确实就是他想要,就可以进行试运行。运行稳定后可以就可以发布到线上了。 至此,一个软件开发完成。总结来说,一个软件的开发过程大致如下图所示: 帮您介绍一下企业app的好处 企业APP可以提高企业的品牌高度和信誉度。 可以快速精准把最新信息传达给目标客户,实现精准营销。 可以降低广告成本,宣传效果更佳。 可以客户的粘度。 信息传播不受时间和空间的局限。 快速有效地收集客户反馈信息。 喜望软件基于十年的软件应用开发经验给大家详细讲一下我们的App标准化开发流程。 我们按工作的性质不同先把App开发分成三个阶段:售前、售中、售后,每个阶段包括了多个步骤,循序渐进,最终完成项目的开发。 一、售前 1。需求沟通 在意向客户提出有项目需求时,我们的产品经理会跟售前顾问一起跟客户进行沟通。有些客户对于自己的需求通常只是一个大方面的想法,这个时候就需要我们专业的产品经理帮他整理出项目的具体需求和功能列表清单,并帮客户分析出没有考虑到的或能否实现的需求。 2。项目可行性分析 客户自身和产品经理都需要清晰了解该项目的功能特点、用户痛点、行业需求和为用户提供的服务内容等,每一点都要做出详细的调查分析,尤其是客户痛点这块。如果开发出来的App存留很多痛点,那么就算开发成功,也没多长时间的存活时间。因为任何一个App最终的成功都是建立在用户基础之上的。 (喜望某项目的解决方案) 3。功能流程梳理 (1)整理架构 整理架构的过程就像是修房子打地基,产品经理会梳理产品整体功能架构,整理出核心内容,打造产品的地基,以确保客户以后可以在这个原有的基础上进行调整,更为方便、更具有扩展性。 (2)功能列表 接下来,产品经理会做出更详细的功能列表,添加每个模块的细节内容及具体功能,比如注册用哪种注册方式,短信验证码还是第三方注册等。这部分就像你在装修毛坯房时,首先要考虑加上门窗、水电改造等。 (3)梳理流程 产品经理会根据客户的需求梳理出产品的核心业务,会帮客户提前考虑到他们现有的流程是否可以在互联网上进行操作,例如一些传统行业转互联网的企业客户,产品经理会站在移动互联网的专业角度帮客户梳理并优化流程。 4。量身定制实施方案 当需求文档确认完毕之后,售前顾问会根据客户需求量身定制一套App开发方案和报价清单,包括项目组人员安排、时间节点安排和技术方案等,待客户确认完之后就可以开始正式签约合作了。 二、售中 1。产品设计 (1)原型设计与评审 喜望产品经理根据需求文档设计出高保真原型图,包括功能的结构性布局、各分页面的设计、界面交互逻辑的设计等。高保真原型图将需求文档转换为更直观的软件demo版本,这样即可以确认更多的细节,保证项目研发的效果,也能避免沟通不畅或沟通不到位而引发的纠纷问题。 (喜望某项目的高保真原型图) (2)UI设计与评审 原型图设计确认好之后,UI设计师会根据产品的定位和原型图设计UI界面效果图了,相当于是在原型图的基础上加上颜色、确定产品整体风格、功能具象化处理、交互设计和排版布局等,使客户更直观的可以看到App的雏形,具有极高的还原度,能够为用户带来更高的体验度。一个完整的App需要一个吸引用户眼球的创意,这就需要产品经理和UI设计师在创意策划上有着独到的见解。 (3)需求详细讲解 产品经理会跟项目经理对接需求和原型图UI图,讲解客户的详细需求、功能板块、跳转页面等,项目经理需要细化需求,将这些需求和图片翻译成工程师们能更好理解的语言。接着,项目组会搭配着原型图UI图来召开技术会议,统一进行项目需求讲解。 (4)技术标准制定 项目经理在了解清楚整个项目的需求后提供易扩展、可持续迭代的技术框架方案,比如是原生开发还是混合开发、用Java还是PHP、还有第三方选型等。 2。敏捷开发 (1)迭代开发计划 在正式进入项目开发之前,项目组会对项目本身进行评估,对研发周期、提测时间、预发布时间点进行初步的判断。接着对项目功能进行分解,把项目需求划分成45个节点,比如1号9号做第一个功能模块,10号15号做第二个功能模块项目组把迭代开发计划发给客户确认后,就开始按着这个计划做节点研发了。 (喜望某项目的开发节点计划表) (2)节点研发 按照需求分析整理出来的功能数据处理情况,项目组会建立合理的数据库表结构,优化数据算法,提升数据的处理效率,保证后期App使用过程中数据的安全性、准确性、稳定性和及时性。 一个完整的App项目一般包含以下几个模块: 服务器端:编写接口协议文档,服务器环境架设(国内一般都是用阿里云服务器,国外一般用亚马逊),设计数据库和编写API接口,业务功能实现及接口封装、管理后台的开发。 App端:根据UI设计图进行界面开发,UI开发完成后对接服务器接口,通过服务端接口获取数据,编写功能上的逻辑代码。 Web管理端:根据前端的业务逻辑,后台会有相应的功能与之匹配,同样需要编写功能上的逻辑代码。 在项目研发阶段,项目经理进行技术攻关,流程助理同时跟踪进度,项目组也会每周向客户进行开发进度汇报,并协助客户申请软著。 (喜望某项目的总进度甘特图) (3)单元测试 以前的开发流程就是工程师从头写到尾,把App功能全部开发完成后再进行系统测试,这样就很容易出现以下几个问题:修改了一处bug却在另一处地方引发了新的bug、扩展新功能的同时导致旧代码出现bug等等,这个时候就需要引入单元测试。 单元测试简单来说就是工程师做一个节点研发,测试工程师就测试一个节点,这样就能够清晰的知道是否破坏了老的业务逻辑,容易排除掉一些非常低级的错误,大大减少回归出错的可能性和调试的时间,提高代码质量。 (喜望正在测试某项目) (4)系统测试 App功能开发完成之后,测试人员会对整个项目进行系统性测试。而完成项目测试调试最重要的环节是问题的管理,追踪各个bug的进度以及状态,包括指派给谁、优先级、修复状态等,以便有质量地完成问题的处理。 产品面向的平台多机型同步测试,包括:App内容测试、App性能测试、App功能测试、App视觉测试,对BUG调试修复。测试合格,确认没有bug后与客户进行沟通,开始验收,再由客户进行测试,提出修改意见。 3。上线交付 01。用户体验测试 喜望在2018年新设了一个创新性人才岗位用户体验官,这是移动互联网行业首创的从功能试错服务到运营实践服务。 用户体验官的工作就是用户体验测试,从用户体验、产品、易用性、颜值、App设计还原度等多个维度进行体验性测试,并通过后台上传真实的前期种子数据,让整个App的内容很丰满,互动性强。用户体验测试是从项目本身的用户群体和运营逻辑来帮助客户打造好整个App的调性。 02。部署上线 在代码开发和测试完成后,就进入了后期上线的阶段。 (1)部署正式服务器:将数据库、后台系统部署到正式的服务器上面,并录入正式的上线数据到app系统后台。 (2)准备上架相关的资料:如软件著作权、应用说明、App界面截图和打包版等。 (3)发布App应用到市场:根据App端口选择发布iOS或Android应用市场。 Android:涉及的应用市场很多,主流市场是腾讯应用宝、手机百度助手、360手机助手、91手机助手,不同的应用市场的受众属性和流量会有所不同,需要根据客户需求和项目实际情况来选择。一般来说,12个工作日就可以通过审核上线。 iOS:发布到AppStore,提交后一般最快都需要5个工作日左右才可以通过审核上架。因为AppStore审核比较严格,比如是否符合最新的上架要求、是否涉及到虚拟货币、是否支持最新环境等很多问题都会决定审核能否通过。 但有可能会遇到这种情况:比如某App存在3个导致不通过的问题,AppStore只要找到其中一个问题就不会通过,不会把3个问题都找出来告诉你为什么拒绝,所以如果经验不足,上架N次花费几个月都是很有可能的。 发布小程序到微信公众号:需要把小程序发布提交给微信团队审核并上架,一般12个工作日就可以通过审核上线。 03。源码交付 APP开发测试上线后,要进行终验交付,即按照合同规定,将源码、说明文档、操作文档等所有项目的相关资料交付给客户。 包括但不限于: 1前后端项目的所有最新源代码(含注释) 2数据库设计文档 3API设计文档 4所有的开发者账号资料 5测试文档 6原型设计稿 7UI设计稿 8项目相关文档等资料 04。项目运营培训 在交付源码时,喜望的项目经理会给客户针对项目的所有功能操作进行培训,比如优惠券怎么发、司机怎么核审、怎么查看用户注册等。我们也会根据客户需求,让品牌设计师和新媒体运营官为客户设计上线海报和新媒体运营方案。 三、售后 1。前期维护 一般的App开发完后都需要进行维护,即便是已经达到相对稳定的阶段,也可能随着手机系统的升级或长时间的使用等,出现一些小问题或隐藏得比较深的bug。 喜望会免费赠送客户三个月的维护期,一个项目正式上线运营了3个月左右的时候就已经清楚了整体的运营模式和部分功能欠缺,接下来想要继续运营app就需要迭代开发、优化功能模块。 在此期间,我们会解答客户的疑问、指导软件的使用和内容的上传等事项,以及修复程序Bug、突发情况发生后紧急维修等。 2。定制更新 在App投放到市场后,会得到用户以及市场本身的一些反馈,从而知道该如何修正或者调整运营策略,当目前系统的功能无法满足项目需求时,就需要规划新一版本功能的迭代问题了,也就是开发项目2。0。 喜望会帮助客户进行定制更新,也就是继续App开发前期售前所做的工作:需求沟通、可行性分析、功能流程梳理以及量身定制实施方案。 这个迭代方案一般根据以下2点进行制定: 未完善的BUG 比如上线后的App在运营过程发现的一些BUG,或者逻辑错误的一些地方,如果我们想要修复这些逻辑错误问题和功能BUG,就必须进行App的迭代。 App数据分析 数据是极其重要的衡量标准,通过分析App的投放资源、用户激活率、转化率、留存率和用户进入使用不同功能的占比、各个环节的流失,寻找对App体验影响较大的指标,分析自查功能设计上的优劣,以便进行功能上的版本迭代。 3。迭代开发 同样的,当项目进行迭代开发时,也会重新经历售中的全部过程,包含产品设计、敏捷开发和上线交付等所有的产品生命周期。 4。项目维护回访 当项目运营过一段时间(免费维护期结束)后,喜望会对客户进行回访,询问运营情况等。当然了,如果后续客户需要我们继续提供运维支持,我们也是很乐意的,因为在App运营的过程中需要与时俱进、维护更新,App才能长存。 5。新媒体运营 成功上线后的App可以通过企业的运营推广,发展用户数量,得以长久的运营。推广运营的方式有很多种,比如进行线下推广、投入广告、新媒体运营推广等。 贴心的喜望根据九年的从业经验以及目前市场情况,会推荐客户做成本相对较低的新媒体运营推广。 从上面的App开发流程来看,每一个项目研发都要经历以上3个阶段22环节,这其实是一条完整的流水线,做到这样往往能达到较高水准的项目质量。但是如何保证流程顺畅进行?如何使项目成员的工作效率最大化?这就十分考验开发公司的专业度和项目成员的规划能力了。 之前有讲到过,一款App开发的时间也会影响到App开发的价格,所以,了解一下App的标准开发流程还是很有必要的哟。 如果您想开发App软件,或者想了解更详细的开发流程、开发方案、报价等等相关内容,欢迎咨询成都喜望软件,有专业的售前顾问、产品经理为您详细解答App相关疑问。