从草图绘制到实施交付:优秀API设计完整流程
设计好的API是一项繁复的工作,但是优秀的设计是可以通过人为规划实现的,在本文中,我们将研究什么是好的设计以及如何在开发过程中实现它,还将介绍API设计的三个重要阶段:草图绘制,原型设计和交付实施,最后分享一些让工作更高效的工具。
优秀的API设计在迭代中发生
在开始设计API之前,先要了解其目的。从之前到你现在为什么需要构建API 。了解目的能让你更好的遵循开发方向,不至于走偏。不过,定义目的只是第一步,真正的诀窍是在实施过程中做出良好的设计决策。
作为API设计人员,我们做出的每项决策都会对产品的成功产生影响。大的决策例如API传输协议,信息格式等。除此之外还有一些与插件,名称,接口顺序等的小决策。当你把它们放在一起时,所有这些决定都会构成一种使用模式。如果你都做出了最适合的决定,那么这种模式将帮助你设计你所需要的API。
要想做出正确的设计决策,你需要先从错误的设计学习。事实上,在你摸索到正确之前,你可能需要犯很多次错误。这就是迭代的关键,没有人第一次就做对了,但是如果有足够的机会,你可以更接近预想。
照理说应该迭代我们的API设计,但在现实世界中很难做到这一点。因为在API发布后难以更改API,更改正在使用的API既昂贵又有风险。解决此问题的一种方法是每次更改时避免大幅更改界面。这是一个很好的习惯,并且是良好的API设计的基本规则。但是,有时突破性变更是不可避免的。理想情况下,在更改变得有代价之前,应该解决所有可用性和设计问题。
迭代设计过程
每次迭代都让我们可以根据其用途来设计我们的项目内容。例如,开发人员是否能够使用我们构建的内容完成目标?这个界面真的可以实现吗?等等。我们应该能够通过设计和实现许多接口而不真正发布它们来实现最佳的API设计。所以查看和模拟测试每个界面将提供如何改进产品的实用经验。
但是在实践中,这种宏观迭代设计是不可能实现的。我们没有时间反复地设计和验证一个API。更合理的方法是在设计过程中尽早执行迭代。这些早期的设计应该有足够的细节来产生改进机会,随着时间的推移,我们可以逐步提高细节(或保真度)的水平,直到最终达到我们想要的API设计。
这个渐进的过程在设计界很受欢迎,通常分为三个重要阶段:
- 草图绘制
- 原型设计
- 交付实施
1.草图的力量
草图是一种最普遍的设计行为。建筑师弗兰克盖里的草图非常有名,他的许多建筑项目都是以纸张上绘制的一系列草图开始的。他绘制了数百幅草图,每次都能接近理想的设计。
交互设计师Bill Verplank将草图描述为设计过程中必不可少的第一步。比尔·巴克斯顿(Bill Buxton)撰写了一本关于草图用户体验设计价值的完整书籍,提出了草图的关键特征以及重要性等。
在API设计过程的早期阶段结合草图使我们脑海中形成界面的概念模型。好的草图应该易于制作并且随时修正,如果花费太多时间来画图会得不偿失。
我们可以尝试不同类型的界面风格,并捕捉我们脑海中浮现的抽象概念。每一次的瞬间想法我们可以用草图的形式记录,方便我们审查和讨论它们。我们可以决定是否喜欢草图某个特定概念,然后在此基础上补充或者重新开始。
例如,我们可能会绘制一个与整个API相关的基本错误流或可应用于所有响应的响应消息格式。之后,在原型设计阶段,我们可以将这些想法应用到工作模型中。
2.原型设计
原型设计阶段是一个构建界面的更高保真度模型的过程,并测试我们在草图绘制过程中做出的一些假设。调用一个好的API原型,它应该处理实际请求消息并在需要时提供返回结果,甚至能够使用原型API创建一个简单的应用程序。
但是,构建原型应该比完全实现成本更低。降低成本的一种方法是模拟返回消息,而不是从后端系统提供实际结果。这就是MOCK,是快速构建原型的好方法。
我们应该能够基于草图构建两个或三个不同的原型,在我们构建的过程中,我们甚至可以回到草图阶段,根据我们从原型设计阶段学到的知识来尝试新的方向。
原型还可以为您的团队提供了用户对设计的早期反馈并允许观察实际使用情况的机会。如果界面具有很高的保真度,您可以要求潜在用户在此基础上构建应用程序并观察他们过程中面临的问题。
精心设计的API不仅应该易于使用,而且还要具有可持续性,可靠性,高性能和长寿命。设计周期就像一个科学过程,原型阶段是你在做出改变之前测试任何假设的机会。
3.实施交付
开发者的工作是将原型界面变成可交付使用的。最终的原型和支持草图形成了界面应该是什么样的描述。它们反映了集体设计决策,以形成需要构建的规范。实际上,使用正式的接口描述语言从原型转换到实现阶段是很有用的。
例如,当您对原型API感到满意时,您可以选择在一些API管理工具如EOLNKER等中对其进行描述。
虽然实施交付是最后目标,但设计不应该停留在这个阶段。这是一个利用实际使用数据进一步测试您在整个设计过程中所做假设的机会。正如原型API允许我们观察使用情况一样,实现的API允许我们在真实情况下分析使用情况。
例如,您可能希望验证您所做的设计假设。应用程序开发人员是否真的使用您为他们创建的便利操作?您是否获得了预期的用户类型?新用户是否遇到界面特定部分的问题?
此分析可能会导致您再次启动草图绘制过程,以支持进一步改进的界面。
使用工具自动化流程
工具和技术可以从根本上改善设计过程。降低草图和原型创建成本的工具将使设计团队能够在更短的时间内生成更多设计,从而改进设计决策。
结合工具自动化是大多数设计过程的重要组成部分。在建筑设计领域,SHoP(总部设在纽约的建筑师联盟)通过创新,协作和基于工具的设计取得了成功。他们的工艺包括原型设计工具,使设计人员能够将所用材料的物理特性结合在一起。这种方法允许他们创建数千个设计迭代,每个迭代都包含可以轻松评估的实现细节。
API设计领域中也有这种能优化的工具。实际上,全球范围内API服务领域中已经存在一些优秀的Web API设计工具。
现在,如EOLINKER、RAML、Swagger,都提供了出色的编辑工具来支持他们的语言。其中EOLINKER作为国内领先的API接口管理研发工具,正在以更全面的功能和简洁的页面超过如RAML、Swagger等国外传统单一服务产品。这些编辑器缩短了API的设计的创建时间,使得更容易在更短的时间内创建更多描述。有兴趣的点击查看EOLINKER的API编辑器。
成功完成迭代过程
遵循本文中描述的迭代设计风格,你将为你的团队创建有效的API。在流程开始时创建和评估许多低保真设计,以促进实验和构思。构建更高保真的原型和模拟实现来评估早期的设计理念。最后,为真实用户实施设计并收集数据以分析实际使用情况。
良好的API设计过程为您提供了生成最佳界面的机会。构建优秀API的秘诀不是专家指导或内部知识,相反,它是通过优秀的工具,语言和配置文件优化的迭代而成的,这会帮你完成越来越多优秀的API。
参考资料:Ronnie Mitra,From Doodles to Delivery: An API Design Process
原文地址:https://www.infoq.com/articles/doodles-to-delivery/?useSponsorshipSuggestions=true
从草图绘制到实施交付:优秀API设计完整流程的更多相关文章
- 优秀API设计的十大原则
优秀API设计的十大原则 2015-09-23 分类:编程开发.设计模式.首页精华暂无人评论 分享到:更多4 二十万年薪PHP工程师培养计划 成为被疯抢的Android牛人 风中叶讲Java重难 ...
- atitit.api设计 方法 指南 手册 v2 q929.docx
atitit.api设计 方法 指南 手册 v2 q929.docx atitit.api设计原则与方法 1. 归一化(锤子钉子理论)1 1.1. 链式方法2 1.2. 规则5:建立返回值类型2 1. ...
- 一篇文章帮你梳理清楚API设计时需要考虑的几个关键点
本文作者是Enchant的架构师,他最近研究了Netflix.SoundCloud.谷歌.亚马逊.Spotify等公司的微服务实践,并根据自己的理解总结出了一套适用于现代Web和云技术的微服务实战经验 ...
- [转] 阿里研究员谷朴:API 设计最佳实践的思考
API是软件系统的核心,而软件系统的复杂度Complexity是大规模软件系统能否成功最重要的因素.但复杂度Complexity并非某一个单独的问题能完全败坏的,而是在系统设计尤其是API设计层面很多 ...
- Web API设计方法论
英文原文:A Web API Design Methodology 为Web设计.实现和维护API不仅仅是一项挑战:对很多公司来说,这是一项势在必行的任务.本系列将带领读者走过一段旅程,从为API确定 ...
- 从商业角度探讨API设计
为Web设计.实现和维护API不仅仅是一项挑战:对很多公司来说,这是一项势在必行的任务.本系列将带领读者走过一段旅程,从为API确定业务用例到设计方法论,解决实现难题,并从长远的角度看待在Web上维护 ...
- Web API设计方法论--比较完整的web api 开发过程
为Web设计.实现和维护API不仅仅是一项挑战:对很多公司来说,这是一项势在必行的任务.本系列将带领读者走过一段旅程,从为API确定业务用例到设计方法论,解决实现难题,并从长远的角度看待在Web上维护 ...
- API 设计 POSIX File API
小结: 1. https://mp.weixin.qq.com/s/qWrSyzJ54YEw8sLCxAEKlA API 设计最佳实践的思考 谷朴 阿里技术 昨天 阿里妹导读:API 是模块或者子 ...
- 我所理解的RESTful Web API [设计篇]
<我所理解的RESTful Web API [Web标准篇]>Web服务已经成为了异质系统之间的互联与集成的主要手段,在过去一段不短的时间里,Web服务几乎清一水地采用SOAP来构建.构建 ...
随机推荐
- Rainyday.js – Rendering Raindrops with JavaScript
Posted · Category:GPL License,Tools 直击现场 The idea behind Rainyday.js is to create a JavaScript libra ...
- Qt在Windows上的调试器安装与配置
如果安装Qt时使用的是Visual Studio的预编译版,那么很有可能就会缺少调试器(Debugger),而使用MSVC的Qt对应的原生调试器是CDB(对应MinGW的Qt使用GDB调试器).本文介 ...
- QT在linux环境下读取和设置系统时间(通过system来直接调用Linux命令,注意权限问题)
QT在Linux环境下读取和设置系统时间 本文博客链接:http://blog.csdn.NET/jdh99,作者:jdh,转载请注明. 环境: 主机:Fedora12 开发软件:QT 读取系统时间 ...
- 关于 win32 下磁盘的遍历方法
最近要写个在线专杀的东东,虽然是专杀(本来只要清除几个特定的文件和杀几个特定的进程,然后把用户的注册表恢复正常,很多病毒木马最喜欢干的一件事情就是写 映像劫持 然后机器一重启,安全相关的软件全部玩完了 ...
- Socket2实现tcp端口扫描
主要的界面如下: 主要代码如下: //对于每一个线程,传过去的参数 typedef struct ThreadParamStruct { CString strIP; //要扫描的IP地址 UINT ...
- C++ 王者归来:对编程语言的需求总结为四个:效率,灵活,抽象,生产率(C++玩的是前三个,Java和C#玩的是后两个)
Why C++ ? 王者归来(转载) 因为又有人邀请我去Quora的C2C网站去回答问题去了,这回是 关于 @laiyonghao 的这篇有点争议的博文<2012 不宜进入的三个技术点>A ...
- ORACLE(student)表习题与答案
因为答案都是小编自己写的,解法可能有多种,如果您觉得我的解法有误,希望您有时间给我留言. 题目:1. 查询student表中的所有记录的sname.ssex和class列. SELECT sname, ...
- 【Java源码】集合类-JDK1.8 哈希表-红黑树-HashMap总结
JDK 1.8 HashMap是数组+链表+红黑树实现的,在阅读HashMap的源码之前先来回顾一下大学课本数据结构中的哈希表和红黑树. 什么是哈希表? 在存储结构中,关键值key通过一种关系f和唯一 ...
- never下的easysql
什么是EasySql 在我们早期写的代码中,想实现组装灵活的sql语句与参数,我们可以去翻阅早期自己写的代码 var @sb = new StringBuilder(); sb.Append(&quo ...
- 5分钟学会Java9-Java11的七大新特性
现在Java有多元化的发展趋势,既有JS又有C++还有C#的影子,不学习那是不行滴. 来来来,花5分钟看看Java9-Java11的七大新特性,还有代码样例. Java11 发布了,然而很多公司还在用 ...