本书处于 开放评论 状态。希望获得来自读者的更多反馈以完善内容。阅读时,如果遇到一些文字内容需要求助,可以采用如下方式与我互动: 先用鼠标选择文本 在释放鼠标左键时将会有 annotate 弹窗,点击弹窗上的 ,如果已经注册的话,可以直接留言评论,否则先注册再留言。 你也可以点击页面右上角的 符号,可以看到其他人的留言评论。

6.1 采用分布式架构的软件开发流程

2 指出过,目前大多数信息系统都采用分布式架构。分布式软件的开发一般划分为前端开发(front-end development)与后端开发(back-end development),相应的,软件开发工程师也分为前端开发工程师与后端开发工程师两大类。两者的关系可以做以下类比,前端开发工程师的工作专注于“房屋”装修,而盖房子的工作由后端开发工程师负责。

1. 前端开发与常用工具

软件的“前端”是与用户直接交互的部分,包括在浏览网页时接触的所有视觉内容–从字体到颜色,以及下拉菜单和侧边栏。这些视觉内容,都是由浏览器解析、处理、渲染相关 HTML、CSS、JavaScript 文件后呈现而来。因此,前端开发就是要创造面向用户的相关代码,并通过建立框架,构建沉浸式的用户体验。

通过一些专门的工具软件,前端开发工程师与设计师/用户体验分析师密切合作,帮助构建原型或是线框图,参与产品开发到发布的全过程。一些前端开发工程师甚至能准确定位影响用户体验的特定问题,并给出建议或是代码解决方案,对产品设计带来积极影响。

前端开发者要为后端开发者搭建的“房屋”进行内部设计和装修工作。装潢风格由房屋所有者指定。为了实现这个目标,开发需要熟练运用下列语言、框架、工具库:

  • 网页三剑客:HTML(构建页面框架,类比骨骼)、CSS(渲染页面样式,类比血肉) 和 JavaScript(创建页面交互,类比手脚)

  • 页面框架 jQuery、node.js 等工具库,能帮助开发者以更高效的方式编码

  • Ajax 方法的使用经验,可以帮助使用从服务器拉取数据,协助实现页面的动态加载

  • 微信小程序页面的开发

2. 后端开发与常用工具

后端开发是不涉及用户界面生成的开发,既包括服务器端的业务处理逻辑开发、系统架构或框架的建立,也可能涉及编写算法模型等,为了让服务器、应用、数据库能够彼此交互,后端开发工程师通常需要具有如下技能:

  • 用于应用构建的服务器端语言:PHP,Ruby,Python,Java,.Net 等;

  • 常用的数据库及构建方式:MySQL,Oracle,SQL Server 等;

  • PHP框架:Zend,Symfony,CakePHP 等;

  • 基于 Python 的 web 应用框架:Django、Flask 等;

  • 基于 R 的 web 应用包:Shiny、Flexdashboard 等;

  • 版本控制工具:Git,SVN,CVS 等;

  • 熟练使用Linux操作系统作为开发和部署环境

3. 全栈开发与常用工具

全栈工程师(Full stack engineer),最初是6年多以前由 Facebook 提出的概念。全栈开发的核心,是指开发者能够承担包括前端、后端在内的所有功能开发任务,他们拥有一个技能全家桶。能够同时承担服务器端和客户端工作会带来更多机会,当然也面临更多挑战。以厨艺作类比,掌握烹饪和烘焙都需要时间与经验积累,同时掌握两者要花费更多精力。照着菜谱做谁都可以,但要做出真正美味的东西需要时间的打磨。

全栈开发者也通常在服务器端进行编程工作,但他们熟悉前端开发语言和工具,能够操纵网站面向用户的部分。具体工具依项目和客户需求而定,全栈开发者需要对 Web 架构的每一个层次都有足够的了解:搭建和配置Linux服务器,编写服务器端API,利用客户端 Java 代码驱动应用,将设计层面的东西转化为实际的HTML+CSS+Javascript 代码。掌握并使用大量工具的同时,全栈开发者需要敏捷地分配服务器端和客户端任务,提供解决方案并对比不同方案的优劣。

以一个典型的数据分析类应用开发为例,其开发过程如图 6.1 示意:

数据分析类应用的开发过程及配套工具

图 6.1: 数据分析类应用的开发过程及配套工具

上图可以看到,在开发数据分析类应用的过程中需要综合运用前端(数据分析图表的可视化呈现)与后端(云服务器及运行环境的配置、数据分析算法的实现与前端接口)开发的知识与配套工具软件。一般而言,掌握 Python 或 R 的基本语句、常用包的调用即可完成上述工作。Python 中机器学习常用包 Scikit-learn 学习网址:https://github.com/apachecn/sklearn-doc-zh

申请百度 AI Studio GPU 算力并学习使用,可以访问:https://aistudio.baidu.com/aistudio