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提供必要的工具,制度,文化及资源,串联起整个软件周期的各个阶段,让每个阶段协同共进,高效沟通,从而达到为客户持续提供高质量服务的目标。这就是我所讲的工程化开发


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

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

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

头条号:小豆君编程分享

相关文章
|
6月前
|
关系型数据库 MySQL Java
后端开发工具深度解析:从理论到实践
后端开发工具深度解析:从理论到实践
120 0
|
机器学习/深度学习 编解码 算法
超详细!手把手带你轻松掌握 MMDetection 整体构建流程(一)
作为系列文章的第一篇解读,本文主要是从整体框架构建角度来解析,不会涉及到具体算法和代码,希望通过本文讲解: - MMDetection 整体构建流程和思想 - 目标检测算法核心组件划分 - 目标检测核心组件功能
928 0
超详细!手把手带你轻松掌握 MMDetection 整体构建流程(一)
|
10天前
|
存储 缓存 算法
前端算法:优化与实战技巧的深度探索
【10月更文挑战第21天】前端算法:优化与实战技巧的深度探索
10 1
|
8天前
|
前端开发 JavaScript 开发者
揭秘前端高手的秘密武器:深度解析递归组件与动态组件的奥妙,让你代码效率翻倍!
【10月更文挑战第23天】在Web开发中,组件化已成为主流。本文深入探讨了递归组件与动态组件的概念、应用及实现方式。递归组件通过在组件内部调用自身,适用于处理层级结构数据,如菜单和树形控件。动态组件则根据数据变化动态切换组件显示,适用于不同业务逻辑下的组件展示。通过示例,展示了这两种组件的实现方法及其在实际开发中的应用价值。
14 1
|
2月前
|
设计模式 存储 人工智能
深度解析Unity游戏开发:从零构建可扩展与可维护的游戏架构,让你的游戏项目在模块化设计、脚本对象运用及状态模式处理中焕发新生,实现高效迭代与团队协作的完美平衡之路
【9月更文挑战第1天】游戏开发中的架构设计是项目成功的关键。良好的架构能提升开发效率并确保项目的长期可维护性和可扩展性。在使用Unity引擎时,合理的架构尤为重要。本文探讨了如何在Unity中实现可扩展且易维护的游戏架构,包括模块化设计、使用脚本对象管理数据、应用设计模式(如状态模式)及采用MVC/MVVM架构模式。通过这些方法,可以显著提高开发效率和游戏质量。例如,模块化设计将游戏拆分为独立模块。
162 3
|
4月前
|
UED
通用研发提效问题之层级较深表达复杂的问题在配置模型中如何解决
通用研发提效问题之层级较深表达复杂的问题在配置模型中如何解决
|
5月前
|
监控 Kubernetes 测试技术
概括模型开发部署流程
**模型部署流程概览:**训练完成的大型语言模型经验证评估,进行剪枝量化后导出为标准格式。封装成API,部署到云服务器,考虑GPU资源与安全。通过Docker或Kubernetes管理,集成后端服务,确保负载均衡和安全。监控性能,执行A/B测试和灰度发布,持续优化与维护。每个步骤涉及团队协作与线上稳定性。
59 1
|
12月前
|
开发工具 图形学 git
寻路库recastnavigation改造
寻路库recastnavigation改造
192 0
|
机器学习/深度学习 算法
【5分钟paper】基于近似动态规划的学习、规划和反应的集成架构
【5分钟paper】基于近似动态规划的学习、规划和反应的集成架构
136 0
|
存储 测试技术 数据库
「机会和方案」TOGAF建模:项目环境图
「机会和方案」TOGAF建模:项目环境图