时间:2023-12-08
天博软件开发过程包括项目启动、需求分析、产品设计、软件设计、软件开发、软件测试、上线、维护等阶段,每个阶段参与人员也不尽相同。
一般而言,公司启动一个项目,大多是自上而下的,公司领导确认项目团队组成,包括产品经理、研发工程师、测试团队等,通常还会有一个技术方向的项目研发经理,之后项目组共同完成项目开发上线)需求分析
产品经理进行需求调研,根据自己的经验和需求用Word或相关的工具写出功能需求文档(PRD),文档会清楚列出系统大致的大功能模块,大功能模块有哪些小功能模块,并且列出相关的界面和界面功能。
产品经理要提供最简单、尽可能接近成品的产品原型,使用线框图即可,在这个过程中还可能产生业务流程图和页面跳转流程图,业务流程图侧重在不同节点不同角色所进行的操作,页面跳转流程图指不同界面间的跳转关系。
首先,研发工程师需要对软件系统进行概要设计,包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为软件的详细设计提供基础。
接下来就是写代码的阶段了,程序员根据软件系统详细设计报告中对数据结构、算法分析和模块实现等方面的设计要求,开始具体的编写程序工作,分别实现各模块的功能,实现对目标系统的功能、性能、接口、界面等方面的要求。
测试工程师设计测试实例,进行测试,并将测试结果反馈给研发工程,研发工程师根据测试结果修改代码,测试、修改可能要反复进行。测试同样是项目研发中一个相当重要的步骤天博,对于一个大型软件,3个月到1年的测试都是正常的,因为永远都会有不可预料的问题存在。
软件测试完成,开发工作就基本完成了,之后就是系统进行试运行,稳定后上线。如果是交付给客户,还需要提交用户安装手册、用户使用指南、设计报告、测试报告等合同约定的文本。
系统维护本质上是做些“修修补补”的工作,主要有两方面的内容,一方面是修补系统运行过程中出现的BUG,另一方面是根据环境的变化,更新原系统。
一个庞大的软件系统可能有几十万行代码,有上百人参与,如何有效地开发软件并尽可能避免开发过程中的BUG,是让程序员头疼的问题。
软件开发模型可以在一定程度上解决这个问题,软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架,包括需求、设计、编码、测试、维护等阶段。 软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。
1970年温斯顿·罗伊斯(Winston Royce)提出了著名的“瀑布模型”,瀑布模型核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作。
敏捷模型以迭代模型为理论基础,相对于非敏捷,敏捷模型更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队,能够很好地适应需求变化,也更注重软件开发中人的作用。
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
好的开发模式可以提高开发效率,但生产优质的代码,还是需要优质的程序员、优质的开源项目和社区,瀑布模型 、迭代开发、敏捷开发等都是建立在程序员基础上的工具。
一个庞大的软件系统可能有几十万行代码,有上百人参与,如何有效地开发软件并尽可能避免开发过程中的BUG,是让程序员头疼的问题。
设计模式可以在某种程度上解决这个问题,所谓设计模式,就是在软件开发过程中面临的一般问题的解决方案,这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的,使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。
M(Model)模型层,处理业务逻辑和数据等,包括核心业务代码的编写,访问数据库,数据处理等很多方面。
1975年,不少程序员和产品经理还没有出生,IBM System/360系统之父佛瑞德·布鲁克斯写了《人月神话:软件项目管理之道》,在书中,布鲁克斯根据自己的从业经验天博,讲解软件工程、项目管理相关课题,这本书也被誉为软件领域的圣经。
书中的核心思想是人月神话,“人月”是一个单位,比如12人月表示一个程序员开发一个月,按照常规的理解,“人”和“月”可以互相弥补。
这个道理大家都懂,但在真正开发的时候,依然会碰到“人月”互相替换的情境。这是因为一方面,管理层可能并非技术出身,以为指派更多的人就可以获得更好的效果,并不了解“人月”是不能简单相乘。另一方面, 在项目设计、项目管理和公司的盈利需求面前,赶进度往往是更加重要的事情,有时候病急乱投医,愿意牺牲效率。
有个段子流传甚广,“我有一个想法,如果给我一个程序员,我觉得自己就可以干掉 Google,或可以将 Facebook 斩于马下,或者是改变我们现有的商业面貌。当然,我从来没想过自己去学会怎样编程天博,我有想法就足够了,我已经发现了‘下一个伟大事物’,有可能颠覆 Google 或是 Facebook”。
这个段子不只是调侃,在互联网创业大潮中,我们经常会听到“我有个绝妙的idea,就差一个程序员了”这句话。创业者们野心勃勃地想要改变世界,做电商的希望做成淘宝那样的软件,做社交的希望做成微信那样的APP,最好一周内上线,花费最多几万。