互联网产品研发流程概论

互联网业务不尽相同,因此各个公司采用的研发模型自然也各有千秋。但是大致的研发流程和各个角色的执行方法论,却是大同小异。

一、研究背景1、提高研发计划性

2、提高研发效率

通过明确开发团队每个角色的职责和协作方式,让每个成员只需严格按照规范做好自己的工作即可高效协作,降低沟通成本。

3、保证产品质量

通过确保每个环节的输入输出结果,让最终产出的产品得到有效保证。

4、及时发现问题

通过各环节过程数据,方便管理人员深入了解问题。

二、研发流程要点1、明确团队角色责权利

每个角色都有明确分工和职责,以及业绩和晋升规则,从根本上保障团队执行力。

2、明确项目管理工具

3、明确研发流程

最重要的是针对每个环节明确该环节的上下游关系,以及该环节作业的输入和输出内容。

三、产品研发团队

研发团队是产品研发管理的核心,建立强有力的产品研发核心团队是成功的关键步骤。

1、组建团队

产品研发核心团队通常由产品经理(1名)、研发经理(1名)、研发人员(5-10名)组成。产品开发涉及的职责分配到各位成员身上。

2、角色与分工

(1)产品经理

(2)研发经理

(3)产品设计师

产品设计师是产品策划职位,负责将客户需求转换为具体的产品形态。

(4)架构师

架构师是软件系统和网络系统的设计师,负责确认和评估产品需求、搭建软件研发和网络系统的核心构架、并扫清主要难点。架构师着眼于“技术实现”,能对常见场景快速给出最恰当的技术解决方案,并能评估团队实现功能需求的代价。

架构师分为软件架构师和系统架构师两类,分别专注于软件开发和系统运维两个阶段的系统设计。

(5)交互设计师

交互设计师是功能设计职位,负责根据需求文档设计交互原型。

(6)视觉设计师

视觉设计师是界面设计职位,负责根据需求文档和交互设计文档设计出产品视觉界面。

(7)Web前端工程师

Web前端工程师是界面研发职位,负责根据架构设计文档和界面设计稿,使用Web技术(HTML/CSS/JavaScript等)进行Web产品界面开发,并调用Server端接口实现Web应用。

(8)APP开发工程师

APP开发工程师是APP界面研发职位,负责根据需求文档和界面设计稿开发出APP客户端界面,并调用Server端接口实现APP应用。

(9)测试工程师

测试工程师是软件质量的把关者,负责根据需求文档编写测试用例、执行测试任务、提交测试Bug、跟进Bug修正等。

(10)运维工程师

运维工程师是产品发布职位,负责维护并确保整个服务的高可用性,同时不断优化系统架构、提升部署效率、优化资源利用率提高整体ROI。

四、项目管理工具

1.打开TAPD平台首页

2.注册系统帐号

4.支持需求研发全流程管理

贯穿敏捷研发生命周期,帮助团队敏捷迭代,小步快跑。

通过迭代进行目标制定与计划评审,完成工作分配,使用故事墙与燃尽图进行研发过程跟踪。迭代全程目标清晰,进度可控,研发过程敏捷迭代,小步快跑。

支持Web版本、PAD版、手机版。

五、主要流程环节

产品研发流程分为以下阶段:立项阶段、设计阶段、开发阶段、测试阶段、上线阶段、磨合阶段、运营阶段、总结阶段。

1、立项阶段

立项阶段从公司战略分解开始,然后通过市场调研获取客户需求,然后梳理产品方向形成产品提案给产品委员会审批,审批通过后正式进入产品研发阶段。

(1)市场调研

需求调研就是通过调研筛选典型客户,并对这些客户的需求细节进行汇总和梳理。

典型客户一般都通过用户画像的形式进行描述。对已有产品,可以直接通过数据统计部门拿到用户画像数据。用户画像一般都是通过抽样方法,随机抽取一批客户(例如1%或者1万个以下)进行问卷调查。

对新产品则需要先约定大致客户群特征,然后针对这个群体做抽样问卷调查。问卷设计一般都需要产品经理完成,然后可以找专业调研公司去实施。

(2)客户需求分析

客户需求分析就是将调研过程中涉及的需求信息,根据需求重要程度分级,优先满足客户基础需求,也就是我们常说的客户痛点。

腾讯视频的需求层次分析V1.0

(3)编写产品提案

立项阶段主要是要输出产品提案,提交给公司产品委员会决策。产品提案也就是“商业需求文档”,简称BRD(BusinessRequirementDocument),是基于商业目标或价值所描述的商业需求。其核心用途是用于在投入研发之前,为企业高管层提供决策评估依据。其内容涉及产品概述、市场需求、竞争环境、重要性、成功要素、营销策略、盈利预测等内容,一般比较短小精炼,不包含产品细节。

支付宝用户事业部产品提案模板

(4)提交产品决策委员会评审

提案评审主要是判断以下要点:与战略关联关系是否紧密?产品价值有多大?资源投入有多大?

公司产品决策委员会根据提交的产品提案进行评估,评估流程如下图所示:

产品决策委员会决策流程

2、产品设计

产品设计分为输出概念设计、输出功能清单、输出需求概要文档、输出需求详情文档等步骤。

(1)产品概念设计

概念设计是非常关键的产品环节,简单明确的概念不仅让客户更容易理解,也让产品研发过程思路清晰、少走弯路。而且,概念设计也是软件架构师将产品概念转化为技术对象化模型的关键环节。

以支付宝产品为例,就是采用了“钱包”概念模型。钱包里有现金、银行卡,也可以放身份证、名片、照片、小票、发票等。区分好需求层级,产品交互体验的层次和用力程度自然就出来了。

支付宝钱包用户产品模型

(2)确定产品功能组合

根据产品概念模型和需求优先级,确认关键性的功能要点。

(3)确定功能清单

然后对功能进行树状化梳理,把所有功能点都整理到一个列表里。

这些功能点后续都作为需求点加入项目管理系统TAP中,方便团队所有成员沟通和完善这个功能清单。形成功能清单初稿后,产品经理需要先在产品团队中组织讨论完善,然后再找运营团队沟通完善,然后是找交互视觉团队补充完善,最后再找研发项目经理、研发、测试、运维等角色沟通完善。

这个过程既是帮产品经理完善的过程,也是形成团队共识、激发团队热情的过程。

(4)输出需求概要文档

概要文档明确某个功能模块下的功能介绍,一般是多个功能点的描述。需求概要一般由产品经理负责撰写,不包含功能细节描述。为了方便与产品设计师们沟通需求,可以将主要功能界面草稿加入该文档中,用原型草图能更好地描述主要功能。

腾讯视频PC版播放模块的需求概要文档

会后主架构师根据需求概要做架构设计框架,研发工程师也可以针对自己负责的模块做技术预研。有经验的工程师,往往在这个阶段就开始试着做个Demo,把主体功能流程跑通,这样在正式进入研发时就会比较轻松,专注于细节完善和产品质量。

(5)输出需求详情文档

需求详情文档由产品设计师负责编写。需求概要中的需求点,每个都需要单独编写需求详情文档,而不是把所有的需求详情都写在一个文档里。这样会导致需求详情文档非常长,内容庞杂,这个会导致后续很多问题。需求点最好都能拆分到1周内能完成研发测试比较好,这样才能有效实现敏捷开发。

需求文档并不是产品设计师一个人闭门造车就能写出来的。产品设计师需要频繁与交互、运营、视觉、用户研究(UER)、架构师、测试经理、开发、运维等人员沟通。沟通的过程更多是产品设计师学习和融合各个角色思考的过程,同时也让各个角色的工作更加明确。

一般需求文档的编写分成以下步骤:

(6)需求评审

如果之前编写过程与每个角色都有了充分的沟通,需求评审就会变得很轻松愉快。否则,产品经理和产品设计师将会陷入无止境的辩论中,往往动辄就让整个团队消耗了几个小时还无法形成结论。

因此,需求评审的关键就是产品设计师事先做好评审会的一切准备。提前准备好所有资料并提前发给团队所有成员,并事先与所有角色都逐一确认过关键问题,而且得到了产品经理和研发项目经理的确认。在评审会上,先讲总体,再讲重要细节,再讲次重要细节,并层层确认。

3、交互设计

交互设计主要是将产品经理的功能设计,用原型图和交互流程的形式展现出来,方便与用户及团队进行沟通。交互设计原型将产品经理提供的产品原型草图具象化,减少了需求不确定性,保证产品功能可用性。

腾讯设计完整流程图

(1)交互设计需求分析

交互设计需求分析主要是要回答以下问题:

A)重点是给哪些角色看?

涉及交互稿的角色很多,几乎每个角色都需要,但是只要有专业细致的交互稿,也就能满足所有角色的需求了,无需针对每个人提供不同的交互稿版本。

B)用户场景是什么?

确定是要做什么场景下的交互设计。具体包括用户画像、主要功能流程等。

C)采用什么样的形式?

交互文档大多都采用Axure进行设计,一般都采用线框稿的形式。

使用Axure创建交互设计文档

D)要达到什么标准?

一般衡量交互水平的指标,是整个功能操作流程的流量转化率。

(2)功能交互设计

功能交互设计主要是将软件界面之间的跳转关联关系表达清楚。

(3)交互细节设计

交互细节涉及点非常多,不同公司、不同类型的产品都会有自己不同的交互设计风格和细节处理方式。为了保证产品交互细节上的统一和规范,互联网公司一般都会制定自己的交互设计规范,以便指导设计师完成交互设计。

腾讯网站产品交互设计规范V1.0

交互细节设计,一般涉及交互控件元素、交互文案、装饰图形等内容。

每个看似很小的功能细节,都往往需要花费大量精力去做细。为了节省成本,在这样的功能开发出来后,都最好对象化模块化,其他场景只需调用这个模块即可快速创建类似的功能。

网页翻页功能细节交互设计

4、视觉设计

(1)视觉设计需求分析

视觉设计需求分析主要是明确视觉设计需要达到的目的。

以Logo设计为例,最常见的需求要点是两个:明确表义、吸引视线。因此在设计过程中,通过把竞品和不同设计方案可以放到一起,从而找到最优的设计方案。

百度输入法Logo设计需求调研

(2)视觉概念设计

视觉概念设计建立在视觉风格推导基础上,用以描绘出产品视觉风格的基本方向。

该步骤需要确定产品风格,为后续确

定设计元素、明度、色调、质感等设计细节奠定基础。

(3)主界面设计

主视觉设计师拿到交互稿后,针对主要功能界面设计风格定位稿。

百度影音播放器主界面

(4)视觉细节设计

然后针对界面中的每个控件,都按照像素级标准进行绘制。

每个空间的分层素材都需要通过PSD文档进行保留,色块区域的颜色值需要标注,按钮的每个状态都需要单独设计,每个控件的尺寸也需要明确标注。交互设计中的每个细节设计状态,也都应该有对应的设计稿。

腾讯视频播放器内容库视觉细节设计

(5)视觉设计规范

与交互设计类似,视觉设计涉及点也非常多。为了保证产品视觉细节上的统一和规范,互联网公司一般都会制定自己的产品视觉设计规范,以便指导设计师完成视觉设计。

5、架构设计

架构设计是架构师对各个子系统关系的抽象模型,用于指导大型系统的开发和运维。

架构设计主要包括三项工作:系统架构设计、软件架构设计、网络架构设计三个部分。

系统架构设计一般都会采用MVC(Model-View-Controller)模型,将业务逻辑模型、软件界面、控制器逻辑层进行分层处理,然后通过控制器逻辑层确保业务逻辑层和软件界面层的同步。MVC模型的好处是在优化界面及用户交互的同时,无需重新编写业务逻辑。同时也有助于管理复杂的应用程序,可以在不依赖业务逻辑的情况下专注于视图设计,不同开发人员可以同时开发界面、控制器逻辑和业务逻辑,同时也让测试变得更加容易。

(1)系统架构设计

如果整个系统研发是从零开始的,架构设计则需要从概况图开始梳理,然后再补充各个模块的架构图。这部分一般由首席架构师牵头,属于整个产品技术架构的总纲。

支付宝平台系统架构概况图

一般而言,子系统名称都会与产品概念保持一致。子系统不论是应用前台还是后台,通过公共服务层、业务逻辑层、基础业务逻辑层关联到一起。这种对象化的架构设计方法,会让整个团队使用同一种语言在沟通,相互理解起来更容易,有利于提高协作效率。

支付宝财会系统架构图

(2)软件架构设计

软件架构设计一般采用分层架构设计模型。

软件架构设计时,需要主要做到以下几点:支持模块化、高内聚、低耦合、可伸缩性,同时也要防止过度设计。已上线软件如果要新增某个功能,则需要针对该功能进行软件架构设计,并最终形成软件架构设计图。

腾讯视频邮件推荐功能软件架构设计图

然后针对这个软件架构图进行细化,先明确系统涉及的所有基础逻辑层模块(对象),以及该模块的输入和输出项,并明确模块内部的基本处理逻辑。这些模块有的有可能已经存在,则无需再开发,单独标注出来即可;还没有开发的模块,则可以交给软件项目经理指派给工程师开发。

然后明确界面上可以直接调用的各个业务逻辑层模块(对象)名称,以及对应接口、属性、方法。

上面介绍的只是最基础的软件架构设计流程,为了保证软件的柔性可用,经常还会RPC服务组件(让网络分布式应用开发变得更容易)、消息中间件(将模块之间的交互异步化)等方案。

(3)网络架构设计

A)运维架构

架构设计需要保证每个环节都能快速迭代配置,尤其是在服务器CPU、内存、存储、带宽几个方面需要做到高可用性。

以新零售个性化推荐动态Feed为例,我们梳理下整个网络结构设计的流程。首先需要根据业务数据分析网络系统需求。一般Feed信息流前3页访问量往往占了90%以上,因此在做缓存设计的时候,我们完全可以在缓存数据中只保存每个用户最近的100条数据,其他的需要用户下拉再从数据库中实时生成。

然后需要从技术上解决高并发和高性能的问题。因为Feed性能压力主要集中在查询请求量上,而且一条Feed数据经常是数百甚至上百万人访问,因此Feed很适合采用缓存系统。当访问压力不大时,采用单层缓存数据就可以了。如果日均访问量达到了百万人次而且峰值非常明显,则最好采用双层缓存机制以增加系统扩容的灵活性。当写入Feed量很小但是访问量暴增时,只需扩容L1层服务即可;写入量暴增,则对L2层服务快速扩容。缓存扩容主要是提升QPS、带宽瓶颈以及缓存数据库性能。

如果希望降低研发成本,也可以考虑购买腾讯云个性化推荐服务,这些中间处理过程就全部交给云服务去处理,这样可以集中力量解决业务层问题。

Feed中除了文本数据外,还会有大量图片甚至视频数据,此时可以采用该CDN做文件缓存。LocalCache+分布式缓存,这是常见CDN缓存策略。此时比较经济的选择,是购买CDN云服务,发布Feed时,把这些图片和视频数据先Post到服务器,然后再同步到CDN云服务中去。

B)服务拨测系统

运维发布系统后,运维团队的压力才真正开始。随着用户量的不断增加,稳定性、性能和监控成了刚需。每个客户请求过来,都需要在后台不同机器之间不停地调用并返回。只要有1个接口出现问题,就会导致整个系统出现性能下降、服务延时甚至崩溃。

此时,就需要有效的服务追踪系统。对新零售企业而言,最经济有效的办法是采用腾讯云拨测系统。通过部署抽样接口到云拨测系统,特别是在高峰时段进行监测,即可通过手机短信或邮件监控服务异常。

C)日志统计系统

日志统计系统建议直接采用腾讯云日志服务。

6、创建版本计划

当架构设计完成并评审后,研发项目经理开始对需求和架构进行切分,形成版本计划。

版本主要作用是用来明确研发节奏,方便团队协作,特别是方便测试和产品发布。

一般产品研发节奏都是按每周1个小版本,以便安排和协作。但是因为APP有发布周期和推广成本的考虑,因此会每隔几周发布一个大版本。

每个版本都包括若干需求点,因此自然就明确了测试范畴,这样测试范围就不会无限制蔓延,可以让产品节奏非常明确,形成快速迭代和敏捷开发的研发风格。

版本落地到代码管理层面上,关键就是代码管理系统(一般都选用Git)中的Trunk版本。首先项目经理需要在Git中创建Trunk版本,并为每个研发人员创建分支版本。研发人员在分支版本中测试没有问题的版本代码,将由架构师或项目经理合并到Trunk版本中,这个版本经过编译后进行功能和系统测试,没问题后再同步到运维发布系统中发布。

7、开发阶段

(1)开发测试环境准备

主要是部署Web、APP开发测试环境,以及部署需求管理系统、代码管理系统Git等。

(2)开发设计文档

开发工程师拿到架构师设计文档后,就可以将自己负责的部分拆分出来,然后提前对这部分的开发细节进行补充和完善,形成开发设计文档。开发设计文档主要用来提高软件开发效率,保证软件质量,并有利于后续产品客服文档的编写,也非常有利于后续的研发迭代和代码维护工作。

前端开发、APP客户端开发、后台开发完善的内容和细节各不相同,但是内容主要集中在开发环境、开发语言、使用框架、对象属性方法、接口封装、数据结构设计、界面开发、编译发布等方面。

(3)前端开发

前端开发工程师通过使用JavaScript来编写和封装具有良好性能的前端交互组件,并通过CSS+XHTML输出Web操作界面。前端工程师经常不仅要考虑前端实现,很多时候也需要了解后台研发,从而能不断优化前端代码分层架构,让Web产品的稳定性和可用性不断提升。

(4)APP客户端开发

(5)后台开发

后台开发主要是指的服务器端的程序开发,包括Web后台开发、组件开发两类。两者之间其实本质上一体的,web后台可以看作是组件的前端。Web后台解析了HTTP请求,然后通过层层转发给了后面分布式系统的多个组件并调用服务。

因为互联网公司的server一般都是Linux,因此还会涉及到Shell脚本编写、Linux环境编程等内容,需要熟悉Linux/Unix下各种环境编程的API。

(6)开发工程师自测

开发工程师可以一边研发一边自测,完成所负责功能模块的开发后再进行完整功能模块的自测。

开发自测和测试的重点不一样,是为了减少不必要成本,而不是要替代测试工程师的工作。因为代码是开发自己写的,自测可以发现的问题,就完全没必要让测试工程师去发现。而且发现问题马上就可以自己修改自己验证,减少了沟通和返工成本。

8、测试阶段

从需求详情文档经过评审,测试工作就开始了。

(1)测试用例

测试经理组织测试工程师,根据需求详情文档撰写测试用例。

测试用例是软件测试质量稳定的保障,用于指导测试的实施、规划测试数据、设计测试脚本、评估测试结果、分析缺陷标准等。测试用例一般都详细记录测试工程师应该有的操作信息,这样可以帮助测试工程师参与测试。

测试用例文档一般包括修订记录、测试用例、测试数据等内容。测试用例可以直接在项目管理系统TAPD中批量创建。TAPD可以快速编写并管理测试用例,制定测试计划并执行,然后利用Bug跟踪管理进行问题跟踪与解决。

TAPD平台中的测试用例列表与详情页

注册功能的测试用例规范(部分)

(2)功能体验测试

功能测试就是对产品功能进行验证,根据功能测试用例逐项测试,检查产品功能是否达到用户要求。功能测试主要采用黑盒测试方法,把测试对象看作黑盒子,主要测试功能而不考虑软件内部结构及代码。一般从软件产品的界面、架构出发,按照需求编写出来的测试用例,输入数据在预期结果和实际结果之间进行评测,进而提出更加使产品达到用户使用的要求。

黑盒测试试图发现以下类型的错误:功能错误或遗漏、界面错误、数据结构或外部数据库访问错误、性能错误、初始化和终止错误等。

这部分测试除了测试工程师需要参与外,产品、交互、视觉设计师也需要深度参与,因为很多隐性信息都很难在需求文档中写得无一遗漏,但是产品设计师一看就能看出很多的问题,而这些问题测试工程师却难以判断,因为他们经常不知道产品设计师怎么想的。

功能体验测试最好是与研发同步。Web测试提供测试环境,产品设计团队通过配置host即可访问测试环境,随时能看到开发进展情况。对客户端的开发,则每天定时合并代码到trunk并提供dailybuild版本,产品设计团队及时下载体验,并在下班前将体验问题通过工作群告知研发人员,以便研发人员第2天及时改进。这样可以及时纠偏,减少研发憋大招。这个地方看似很小的工作习惯改变,但是会产生天壤之别的结果。所谓敏捷开发,也体现在这些协作细节里。

(3)性能测试

性能测试方案模板(大纲部分)

性能测试主要步骤如下:

A)罗列主要用户场景及相应负载量

重点针对可能出现性能瓶颈的场景,逐项分解和预估负载量。

为了让系统抗压能力更大一些,一般都会多预估一定比例的负载量,以防出现意外情况。

B)识别稳定性的主要性能指标

C)单元性能测试与改进

在准备好测试环境后,使用测试工具对每个接口按照合法输入格式进行压力测试,确保在目标负载量都不会导致出现问题。比较常用的压力测试工具是Loadrunner。

如果系统出现响应延迟或崩溃的情况,则需要运维和研发快速迭代。然后再次测试,直到系统性能指标达标为止。

D)客户端兼容性测试

Web界面的兼容性测试,可以直接用Chrome内置开发工具即可完成。

APP兼容性测试,最好借用第三方工具(例如Testin云测),提交APP后,Testin云测将会部署APP到数百款手机,然后自动输出兼容性稳定性报告。也可以根据测试工程师提供的测试用例,针对每款手机批量进行功能和体验测试。

E)整体系统测试与改进

当每个场景下的单元测试完成后,再针对整个系统进行完整的压力测试。

同样,如果出现响应延迟或崩溃的情况,则需要运维和研发快速迭代,找到出问题的后台接口或前台模块进行优化,直到系统性能指标达标为止。

(4)数据初始化运营

数据初始化首先是数据库工程师根据产品和运营人员的需求,对基础数据进行完善和补充,以达到能用户能正常使用的状态。

比较麻烦的是以往旧系统的数据迁移,由于旧系统和现有系统的字段,类型,日期格式,数字格式等差异,需要抽丝剥茧一层层把数据注入到对应的数据表里,特别是表间关系需要继续保留下来。

然后是运营人员通过运营后台,手动修改部分有问题的数据。

(5)产品内部测试

测试工程师完成所有测试用例的测试工作,研发人员将所有必须完成的Bug修正修正完成,其他待修正bug完成转需求后,就可以启动产品内部测试了。

员工反馈的问题如果是之前没有发现的缺陷,就需要尽快改进修正。如果对当前版本影响不大,就可以放到以后版本Bug转需求,并记录下反馈人信息和详细沟通结论。

等员工完成内测后,产品经理可以将产品内部测试版发到核心用户群里,以有奖测试的形式刺激大家提交缺陷。如果线上反馈不够深入,可以由UER调研小组邀请用户当面沟通交流,找到更深入的缺陷。这些问题汇总提交到Bug列表中,可以马上修正的尽快修正,可以放下个版本的Bug转需求。

9、发布上线阶段

发布环境的搭建,包括预发布环境、生产环境、灰度发布环境的准备等工作。

而正式上线的工作,则包括数据库上线、程序文件上线等工作。

推荐腾讯云毫秒服务引擎,这是一个开源框架,适用于在廉价机器组成的集群上开发和运营分布式后台服务。毫秒服务引擎集RPC、名字发现服务、负载均衡、业务监控、灰度发布、容量管理、日志管理、key-value存储于一体,非常适合中小型互联网公司部署发布分布式应用。

(1)发布环境准备

预发布环境准备:预发布环境是跟生产环境配置一模一样的系统,只是往往只有一个测试节点,但是它后面调用的是正式生产环境的资源(例如DB、Cache、队列等)。

预发布环境主要是要在正式发布前,做一次完整回归测试。测试人员可以通过地址参数、Cookie、请求头参数、VPN等工具,接入预发布环境进行系统整体回归测试。预发布环境下,最常见的Bug如下:生产环境代码已更新到最新版本了,但是数据库变更却忘了操作生产数据库。这个情况下,测试环境很可能都是正常的,但是预发布环境就可以很好的发现bug。

跟开发环境不同,预发布环境不允许开发人员直接接触,以防因为开发人员提交代码的瑕疵影响预发布环境里的系统。因为这是运维人员保障上线质量的最后一道屏障,运维标准也基本等同于生产环境。

正式生产环境准备:生产环境包括发布产品所需要的所有服务器资源,包括Web服务器、数据服务器、CDN服务等。

灰度发布环境准备:每个项目一般都会部署到多台机器,所以一般会拿1-3台服务器看看是否可用,如果失败则只需要回滚这几台服务器,比较方便。灰度发布需要使用跳板机并进行域名绑定,这样才能保证用户访问到的只有最新代码的服务器。

(2)数据库上线

生成数据库项目时,可以先从测试环境导出数据库对象定义脚本,然后再将预先部署脚本、数据库对象定义和后期部署脚本合并为一个生成脚本,再将该脚本拿到主数据库服务器上生成数据库。然后通过主数据库备份到各台从属数据库。

如果系统对读取及时性要求非常高,则可在数据库层之上架构Redis这样的分布式缓存,其性能肯定远高于从数据库读取数据。

(3)程序文件编译上线

(4)上线版本整体评估

上线评估阶段需经过市场、产品、运营、开发、测试等对于上线做出整体评估后才能正式上线运营。这个过程一般是由产品经理先在全员群里提醒大家最后一次确认还有什么问题。

如果每个人都没有提出异议则发出上线版本发布告知邮件,进入正式发布流程。

(5)灰度发布

Web前端灰度发布:对比较小的Web应用,在页面javascript或服务器端实现分流即可。但对于大规模用户的Web应用,采用分流发布引擎很有必要。

组件灰度发布:

IOSAPP灰度发布:常见做法是制作一个带数字签名的测试版,然后提供给测试用户使用。

AndroidAPP灰度发布:由于Android没有统一的发布渠道,因此只需逐个替换发布渠道的安装包即可。

10、优化阶段

(1)研发工作总结

产品上线后需要对产品研发过程做总结,不论是产品上的还是流程配合上的,为后续加强沟通协作、产品运营打好基础。

产品流程也并不是一成不变的,不同的产品有不同的要求。对一些中小互联网公司而言,采用完整研发流程必然成本高昂,因此如何裁剪成自己需要的研发流程,是这类公司面临的关键问题。

(2)上线后收集用户反馈

对于产品做出优化,对于用户常见的问题及反馈做出调整,这阶段更多是产品与用户的磨合,做到更好的用户体验。

为了更好的收集用户反馈,需要在所有产品上都增加反馈入口,以便用户提交反馈内容。用户反馈的所有问题将出现在用户反馈平台中,以便产品和运营团队跟进。

支付宝用户反馈平台

(3)产品体验可用性测试

可用性测试常见方法是邀请一批真实的典型客户,针对典型场景使用产品,用户研究员在一旁观察、聆听、记录,从而发现产品中存在的可用性缺陷。

为什么需要可用性测试呢?这是因为产品运营团队的员工往往潜意识里会认为用户一定会怎样操作,但是事实上用户很大概率上都不会按照他们希望的进行操作,甚至会陷入茫然根本用不下去。而通过可用性测试,就可以找到问题点,通过优化体验设计降低用户使用门槛。

腾讯UER团队用户参与体验调研流程

(4)运维系统优化

产品上线后运维工作才刚开始,具体包括升级版本上线工作、服务监控、应用状态统计、日常服务状态巡检、突发故障处理、服务日常变更调整、集群管理、服务性能评估优化、数据库管理优化、随着应用PV增减进行应用架构的伸缩、安全、运维开发等工作。

五、小结

因为互联网业务不尽相同,因此各个公司采用的研发模型自然也各有千秋。但是大致的研发流程和各个角色的执行方法论,却是大同小异。特别是产品研发思路,大多都是遵循“快速迭代”、“敏捷开发”、”柔性扩展”、“稳定高效”的原则。

THE END
1.UIDesigner首页文档和下载软件界面原型设计工具UIDesigner,简称 “UID”,是一款进行软件界面原型设计的工具。 它拥有强大的模板和预制功能,能够快速的搭建起软件界面的高保真原型。可以实现设计师、产品经理、程序开发工程师三者间的快速沟通,减少不必要的工作内耗。 展开阅读全文 评论 点击加入讨论(6) Awesomehttps://www.oschina.net/p/uidesigner
2.Qt可视化跨平台软件开发工具软件界面开发软件界面设计UIQt-UI Qt界面开发 软件界面开发 UI开发 软件UI开发 可视化跨平台软件开发工具 开源软件项目 开发工具 提供多种工具组件,提升10倍应用程序开发效率,带你轻松完成各种应用程序的开发。Qt-UI为您提供高效开发工具与技术产品相关服务http://www.qt-ui.com/qtdocs/
3.HMI开发软件AltiaAltia 的 GUI 开发工具是为生产嵌入式设备设计从概念到代码的 GUI 的关键。http://www.altia.com/zh-CN/?p=5666
4.软件开发实习报告(通用10篇)1.3开发技术、环境与工具 技术:JSP、Java、JavaScript、jquery、ajax、HTML、CSS、struts、hibernate; 工具:MyEclipse、Tomcat、PS、Dreamweaver、notepad++。 2.软件设计 2.1系统架构 2.2关键模块流程 2.3数据库设计 2.4界面设计 采用当下流行的简约风格 登陆界面 https://www.oh100.com/a/202302/6168148.html
5.Qt软件开发全周期的各阶段工具软件开发生命周期各阶段的所有基本工具:规划、设计、开发、测试和部署https://www.qt.io/zh-cn/
6.十大必备界面设计工具,让你的设计更出彩!下面给大家推荐几款好用的免费的界面设计软件,有需要的小伙伴们来了解一下。 1.Axure RP Pro 9.0 Axure RP是一款专业的快速原型设计工具,由美国Axure Software Solution公司开发。它能够帮助用户创建应用软件或Web网站的线框图、流程图、原型和规格说明文档。相比其他创建静态原型的工具,Axure RP更加快速和高效。 在https://app.zol.com.cn/jiqiao/69907.html
7.可视化软件开发工具——JNPF低代码开发互联网工科生JNPF 低代码工具正是你苦心寻找的产品!它是一款专为稍微懂一点点编程思想的入门级人员设计的神奇工具,集成了丰富的功能和组件,让你轻松驾驭编程,迅速成为可视化开发达人!软件开发无人能够取代,但是这款工具一定能成为你的最佳辅助。 1.什么是低代码 低代码(Low-Code)是一种软件开发方法,通过图形化界面,而非传统的https://xie.infoq.cn/article/0be53bf17e784a5fdec1fe23a
8.(精品)软件实习报告15篇1.3开发技术、环境与工具 技术:JSP、Java、JavaScript、jquery、ajax、HTML、CSS、struts、hibernate; 工具:MyEclipse、Tomcat、PS、Dreamweaver、notepad++。 2.软件设计 2.1系统架构 2.2关键模块流程 2.3数据库设计 2.4界面设计 采用当下流行的简约风格 登陆界面 https://www.unjs.com/fanwenku/500224.html
9.SkinBuilder软件界面(皮肤)设计工具(DUIBuilder)皮肤控件研究文档,破解后的库文件,皮肤设计工具使用教程 皮肤控件 skin++ skincrafter SkinFeature IrisSkin 我共享的都是本人实际验证过的精品,有文档,破解后的库文件,皮肤设计工具使用教程, 1 软件界面 每个软件都要有自己的软件界面,对于软件开发来说,软件界面不一定是最重要的,但是也是相当重要的。一款软件要是可https://www.iteye.com/resource/lovehong123-4041377
10.软件开发常用工具有哪些IT软件开发流程详解→MAIGOO知识摘要:软件开发是一项十分复杂的系统工程,不仅需要用到软件需求工具、软件设计工具、软件测试工具、软件维护工具等工具,同时还需要各部门的配合协调。一般来说,软件开发的流程主要包括需求分析、概要设计、详细设计、编码、测试、软件交付、验收、维护等流程。下面就一起了解下详细介绍吧。 https://www.maigoo.com/goomai/98822.html
11.VisualParadigm破解版设计和管理工具VisualParad软件标签:Visual Paradigm Enterprise Visual Paradigm Enterprise破解版 Visual Paradigm破解版是功能强大的UML建模软件和敏捷软件。使用旨在为用户提供最强大的一体成型开发工具 。可轻松系统建模,使用 UML、SysML、ERD、DFD 和 SoaML 设计软件。利用屡获殊荣的图表编辑器,快速、轻松地创建视觉蓝图。 包括项目管理流程指http://www.sd173.com/soft/8267.html
12.MasterGoMasterGo 是一款能替代 Sketch、Figma、AdobeXD 甚至是 PS 的国产免费 UI / UX 矢量设计工具!它提供了产品界面设计、交互原型制作、网页/APP开发设计等功能,且支持团队协作。软件简单易上手,并能搭建“设计系统”,实现设计组件一键复用、一处修改全局同步等功能…… 推荐:Eagle 设计素材收集整理神器 「Sketch / PShttps://www.iplaysoft.com/mastergo.html
13.想成为互联网设计师?先来看这篇超全面的介绍!优设网编者按:本文专门写给没入行的设计新手,不仅介绍了一个设计团队的分工,还有团队成员的工作、常见名词和软件等,绝对是新手入门最好的基础科普手册! 一、互联网视觉设计师 UI设计师是什么呢?UI 是 User Interface Design(即界面设计)的简称。这个界面可以是手机界面,网站界面,软件界面,智能设备界面等一切人机交互可视化媒https://www.uisdc.com/internet-designer-introduction/
14.最全无代码NoCode和低代码LowBildr构建交互式网站的强大方式。界面就像一个设计工具(例如Figma)而不是标准的网站建设 uibakery:使用其可视化构建器构建前端UI组件,并导出格式良好的Angular代 BubbleVisual Web app builder。空间中的领导者。您可以使用Zeroqode的模板开始或使用他们的如何构建教程 https://www.tanmer.com/blog/707
15.超级大盘点!产品经理必备的软件工具清单!在本文中,我们全面盘点了不同阶段产品经理必备的软件工具,从产品规划和定义、用户研究、竞品分析,到原型设计和界面设计,再到开发、上线和发布,以及数据分析和优化,再到客户反馈和支持,最后到迭代和版本管理。这些工具在产品经理的日常工作中起到关键作用,帮助他们更高效地完成任务、与团队协作,最终实现产品的成功上线和https://boardmix.cn/article/softwares-for-product-manager/
16.UI草图设计软件(界面示意图设计工具在软件开发过程中,UI设计是至关重要的一步,它决定了产品的用户体验和交互性。Balsamiq Mockup允许设计师快速地创建出界面示意图,通过简洁、手绘风格的图标和组件,模拟出应用或网站的初步布局,从而在项目早期就获得反馈并进行调整。 设计工具Balsamiq Mockup的特点主要包括: 1. **快速原型设计**:Balsamiq Mockup以其https://download.csdn.net/download/liuqiaoying_lqy/4856294
17.界面设计工具安装与使用图文教程编程开发软件教程wxFormBuilder是一款非常好用的界面编辑设计工具,用于生成跨平台编译代码,能够快速搭建GUI开发环境,wxFormBuilder支持快速生成C++,python, Lua 等代码和 XRC 资源文件,搭建高效的带有GUI界面编辑器的开发环境。欢迎大家前来下载使用 GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用! https://www.jb51.net/softjc/696020.html
18.6款交互设计用的软件,设计行业佼佼者!设计行业一直在不断的进化,无论是在设计方法,还是在工具上都有了翻天覆地的变化。这个行业已经走向了以人为本的设计方向,所有的设计元素都围绕着人的需求进行构造,从而达到提升用户体验的效果。特别是交互设计,它已经成为了软件开发过程中非常重要的一环,影响着软件的用户体验和功能实现。 https://pixso.cn/designskills/software-for-interaction-design/
19.推荐两个界面原型设计工具前段时间,有幸参加一次高级软件架构师的培训,授课老师介绍了两个很好玩的界面原型设计工具:GUIDesignStudio 和 Mockups For Desktop,现分享一下,截图说明,洗洗眼球,权当娱乐。 以前在做界面原型设计的时候(不多,但有时候要做的),印象中多数用Visio或者一些UML工具来大致描述一下,效果及交互性较差,不知您是否做过这https://blog.51cto.com/wuhuacong/3181461
20.C/S架构轻量级快速开发框架WinFramework轻量级快速开发框架提供通用类库、数据界面、通用权限管理系统,以及丰富的实例开发模板和开发文档,我们提供线上技术指导服务,助力开发团队快速搭建自己的软件项目。 WinFramework开发框架配套的核心工具 - 代码生成器,能快速生成界面(FORM)、业务层(BLL)、数据层(DAL)、模型(Model)、报表(Report)以及VS工程项http://www.csframework.com/cs-winform-framework.htm
21.数据加密原理分析及解密工具开发在一起案件中的应用4.2设计解密工具的窗口界面 在本案中,笔者选用C#作为编程语言,选择Microsoft Visual Studio作为开发工具。Visual Studio可以很方便地进行窗口应用程序的开发,其特点是运行速度快,具有可视化的界面编辑器,并且与Windows的兼容性比其他开发工具要好。解密工具命名为TFCrack。 https://jzx.jxga.edu.cn/news-show-1122.html
22.更快进行原型开发的八个技术考虑AET在原型开发流程中有许多步骤,从构建软件体系结构、到连接传感器和致动器、再到开发人机界面(HMI)原型。考虑以下八个概念,学习用户如何在对设计进行原型开发的每个流程中更快地使用图形化系统设计工具。 从高级软件环境着手 在嵌入式市场里有着大量的低级硬件和软件工具,同时随着嵌入式设计和硬件技术(多核处理器、FPGAhttp://www.chinaaet.com/article/16694
23.如何自己创建一个app(做一个app软件大概要多少钱)1.确定APP的目标市场、功能需求、UI界面等要素,进行规划。 2.选择你的APP开发平台。不同平台有不同的开发语言和工具,需要根据你的需求和开发技能来选择。 3.设计APP的UI界面和交互。你可以使用专业的设计工具如Sketch或Adobe XD来设计APP的用户界面和交互,或者找UI设计师来协助完成。 https://tool.a5.cn/article/show/3880.html
24.前端可视化工具有哪些软件帆软数字化转型知识库前端可视化工具是现代网页开发中不可或缺的一部分,它们帮助开发者更直观地构建和调试网页,优化用户体验。市场上有许多优秀的前端可视化工具,以下是一些最受欢迎的软件: Figma:Figma是一款基于云的设计工具,广泛用于界面设计和原型制作。它允许多个用户实时协作,支持矢量图形和样式系统。Figma的组件和样式库功能使得设计团https://www.fanruan.com/blog/article/242936/