1.2 服务环模型&工程化开发

简介: 1.2 服务环模型&工程化开发

1.2.1 服务环模型

从上一篇文章 1.1 什么是客户端 中得到客户端的定义:

客户端,就是服务商使用操作系统提供的统一接口编写出来的,为用户提供操作界面的一套软件。

我们从中可以找出三个关键字:服务商、用户、客户端

从这三个关键字中找出联系,并对他们进行一个关联排序:

  1. 服务商 》客户端 》用户:服务商通过客户端为用户提供服务
  2. 用户 》客户端 》服务商:用户通过客户端寻求服务商服务
  • 第一种排序,服务商通过市场调研,统计分析工具,去主动发现需求,创造需求,开发新产品,从而售卖给用户。
  • 第二种排序,用户总结发现自己的痛点,通过互联网、广告等方式寻求帮助,这些信息最终反馈给市场,当这样的需求越来越多,成为一种趋势时就会有人有团队来提供服务。


我们把这两种排序做成一个闭环:

服务商 》客户端 》用户 》市场 》服务商

01ebd755782e4c909dad0843d3544acf.jpeg

服务环模型

用户将自己的需求通过市场反馈给服务商,服务商开发服务,并提供客户端产品为用户提供操作界面。


客户端作为服务商连接客户的第一道门,它的产品体验直接影响用户的购买意向,所以作为开发者的我们肩负着重大使命。

这里我为了后续的描述方便,在这里我把这个闭环叫做服务环模型。

备注:因为我们是主讲客户端开发的,所以我这里忽略了服务器上面的开发,所以并没有把服务器加入其中。


1.2.2 工程化开发

在文章 客户端工程化开发,打开你通往高薪的一条大道 中,我列举了软件工程化的八个阶段,结合服务环模型,我们来将其与服务环模型对应起来:

01ebd755782e4c909dad0843d3544acf.jpeg

软件阶段与服务环对应关系

此图应立体的去看,每个分支之间并不是相互独立的,而是一个有机的整体,客户端开发只是其中一小部分,为了直观,我画了如下的工程化开发四象限图

01ebd755782e4c909dad0843d3544acf.jpeg

工程化开发四象限

1.2.2.1 纵向观察

首先我们先纵向来看,把整个图分成上下两个部分

1) 处于下层的市场调研、需求分析和持续交付:这是开发客户端依赖的基石,客户端要朝着用户、市场的方向着力,这样才能够活到更久,更能为用户创造价值。所以我一直强调的是,一切需求都要先从用户,使用者的角度去挖掘分析,识别出用户真正的需求是什么,要解决什么样的问题,列好问题空间和解空间的映射关系。所以作为开发者虽不需要把所有精力放在这里,但也需要腾挪出一部分时间来思考这些,而不能总是陷在代码中,能真正解决问题的代码才是好代码,而只顾代码设计华丽不顾解决真正核心问题的代码,那都是没有任何价值的。

2) 处于上层的5个阶段:这是要在市场用户需求基础上进行开发设计,这是本系列分享的重点,详细内容会分布在后面的各个章节中,我这里就不展开描述了。


1.2.2.2 按象限观察

1) 第一象限包含架构设计、编码开发和质量管控

这是我们这一系列分享的重点,也是我们开发者需要重点掌握的东西,所以我把它放在了第一象限。

a. 架构设计,要想做好软件开发,让软件能够具有良好的扩展性,隔离性,稳定性等,这些都跟架构设计有着莫大的关系,一般架构设计可以分为:

a1. 业务架构,这一部分一般是交给产品经理做的,虽然是交由其他人做,但这一部分作为开发基础的业务知识必须要懂,否则会被牵着鼻子走,沦为纯粹的编码机器

a2. 技术架构,这一部分交给架构师做,这也是很多开发想要努力的方向,一般情况下我们在做一个大一点的系统或模块设计时,都至少要包含概要设计和详细设计,关于这部分内容,我会专门拿出几节内容,和您分享关于如何对系统进行分析,技术调研和实现方面的思考方法。

关于架构的东西,太多太散了,我并不会专门拿出一章来讲,我会在介绍某些技术时会穿插进去一些知识。想要详细了解,还请看有关方面的书籍。


b. 编码开发,这是我们这一系列分享的重点,产品经理每天都有新点子蹦出来,客服实施经常的向我提出需求,抱怨我为什么一个小需求就需要很多天的开发时间,面对种种问题,我会在第2章介绍如何创建一个具有较高可扩展性的程序框架,为我们的代码进行分层,分层的依据,如何组织类,如何面向对象编程,如何面向切面编程。在第3、4章介绍稳定程序设计,使用多进程开发客户端,如何方便的打印和收集日志,如何管理不同环境,环境切换以及如何处理环境不一致带来的种种问题。


c. 质量管控,我这里之所以叫质量管控而不是测试,因为质量把我们的视角放在了一个更高更全的维度来看待产品。例如一个手机产品的生产,如果是测试,那测试员只会关心要测试的某一部分功能有没有达标。而如果放在质量的角度,我们不仅仅关注质量是否达标,还要关注整个产品的全周期是否满足标准,包括售前和售后,例如手机中的某个功能是否是必要合理的,手机的外观是否美观,是否有好的用户体验,所以质量管控更多的是站在客户角度来看问题的。除此之外,我们还需要对产品进行充分的性能测试,为提高测试人员的人效还要进行自动化测试,这些内容我会在第6章进行分享。


2) 第二象限,包含发布更新、运维监控

a. 发布更新,客户端的更新并不同于B/S架构,不同于SaaS模式,客户端是分布在每个端系统中的,这样就产生了以下几个问题,安装包体积应尽量小,安装包和应用程序应能够支持不同的操作系统版本,位数,arm或x86这种的体系结构,当发布有问题时,如何让发布影响面积最小,这些内容将在第8章为大家介绍

b. 运维监控、客户端在不同的端系统中,我们需要对整体客户端的运行状况有个全局的监控,健康检查,用户埋点等,这些也将在第8章中给大家介绍


3) 第三象限,包含市场调研与需求分析

这部分不是我们的重点,我会在第1章中给大家讲讲我的理解

4) 第四象限,持续交付,持续集成(CICD)

这部分对于客户端,要有一套快速响应部署的机制,这样才能保证业务连续性,保证发布版本的时候所有人都不需要花费很长的时间就能顺利发布。在我和几个朋友交谈中,我发现有不少团队每次发布版本都会搞一次通宵,这是让人很崩溃的一件事情。这在本系列分享中您都会找到答案。


1.2.2.3 整体视角来看

在图的左上角我写了devops

devops是开发(Development)和运维(Operations)的组合词,一开始是被用来处理开发和运维协同工作的一个概念,但从整个devops发展历程来看,现在更多的是面向了更广的领域,即在整个产品交付价值流上所提倡的一个理念,更快更好的向用户交付价值。所以要想做到此,必须懂得合理运用devops的理念,我们可以开发或购买各种各样的工具来帮助我们达到此目的。


至此,总结下工程化开发,我们使用devops提供必要的工具,制度,文化及资源,串联起整个软件周期的各个阶段,让每个阶段协同共进,高效沟通,从而达到为客户持续提供高质量服务的目标。这就是我所讲的工程化开发


最后,喜欢本文的大家就点个赞吧。

我的公众号会专门更新一些独家干货文章,您可千万不要错过哦

微信号:小豆君编程分享 (关注后,可加入小豆君交流群进行学习交流,也可以和小豆君一对一进行专业咨询哦)

头条号:小豆君编程分享

相关文章
|
9月前
|
前端开发 测试技术 程序员
记一次迭代需求中的微型代码重构实战总结
本文基于日常需求中遇到的问题,演绎微型重构的过程。
133520 28
|
机器学习/深度学习 编解码 算法
超详细!手把手带你轻松掌握 MMDetection 整体构建流程(一)
作为系列文章的第一篇解读,本文主要是从整体框架构建角度来解析,不会涉及到具体算法和代码,希望通过本文讲解: - MMDetection 整体构建流程和思想 - 目标检测算法核心组件划分 - 目标检测核心组件功能
834 0
超详细!手把手带你轻松掌握 MMDetection 整体构建流程(一)
|
2月前
|
存储 算法 Java
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)(一)
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)
63 1
|
2月前
|
算法 测试技术 持续交付
软件开发深度解析:从设计到单元构建
软件开发深度解析:从设计到单元构建
89 2
|
2月前
|
存储 设计模式 监控
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)(二)
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)
58 0
|
2月前
|
Java API
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)(三)
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)
58 0
|
设计模式 测试技术 数据库
【自动化测试】自动化平台的分层思想
【自动化测试】自动化平台的分层思想
197 0
|
算法 C++
<<算法很美>>——(五)——回溯算法核心框架(上)
<<算法很美>>——(五)——回溯算法核心框架(上)
<<算法很美>>——(五)——回溯算法核心框架(上)
|
测试技术
集成测试之自顶向下、自底向上、三明治集成
集成测试之自顶向下、自底向上、三明治集成
980 0
集成测试之自顶向下、自底向上、三明治集成
|
数据采集 算法 数据可视化
超详细!手把手带你轻松掌握 MMDetection 整体构建流程(二)
。本文核心内容是按照抽象到具体方式,从多个层次进行训练和测试流程深入解析。从最抽象层讲起,到最后核心代码实现,希望帮助大家更容易理解 MMDetection 开源框架整体构建细节。
933 0
超详细!手把手带你轻松掌握 MMDetection 整体构建流程(二)