成功开发iPhone软件的10个步骤

转载 2012年08月01日 17:10:24

一年前斯坦福和Apple联手推出了基于iPhone平台的开发课程,这个课程的ppt被放在网上分享,反响非常好。这个学期,斯坦福将课程进行了录像,放在了iTunes university上提供下载,目前这个课程在iTunes的下载排行第一,达到了100万人次的下载。这次给大家分享的是其中关于“成功开发iPhone软件的10个步骤”的讲座,虽然与我们工作中设计软件的应用平台不同,但是还是有很多成功的经验可以借鉴。

1. 决定要做什么

人们很容易犯的一个错误是“从结论出发”,比如决定要做一个本地社会关系网的软件,而没有去想究竟做这个软件是想解决什么问题,是为了解决和好友找地方吃饭的问题还是别的什么,如果是针对吃饭地点问题,那么是不是有更加好的解决方法。所以首先要确定的是需要满足什么样的目标用户和需要解决的问题。

 

最容易成功的一种情况是设计者本身就是目标用户,而要解决的问题也是设计者本身遇到的问题。这样设计者能够经常使用软件,发现其中问题并进行有效迭代。想象别人的需求很困难,必须与目标用户接触、交谈,使用用户研究工作中经常使用的用户画像方法。用户画像并不一定是真实用户,可以是虚拟的,但是要能够代表用户群体。

 

2. 访问app store

iPhone上的软件设计者没有多少机会去教育用户熟悉新的设计,这是由于iPhone本身的使用环境限制的,用户的注意力时间有限,耐心也有限,很多时候都是在交通工具上或者在等待的间隙使用的,所以软件的设计是需要用户一看就知道如何使用的。App Store上有非常多的软件,找出热门软件,看看它们是如何设计的。这些热门软件一般都是经过精心设计的,并且通常都是得到用户反馈迭代过几轮的,一些共通的地方可以借鉴参考。“Good artists copy, great artists steal.”

3. 搜寻所有可能的设计方案

有的时候设计师心里有一个设计方案,觉得这个方案非常完美,不愿意去考虑是不是有别的设计。但是通常第一个设计方案都不是完美的,即使是苹果的设计师,第一个方案往往都是糟糕的。

Iphone上的软件有很多局限性:
1. 小屏幕
2. 触摸式的输入很不精确,通常需要44像素大小的目标才能有足够的点中率。
3. 输入更困难,即使有软键盘,相对普通键盘的输入还是困难不少。更多的是传达信息给用户而不是让用户产出信息。简单地说就是读应用多于写应用。
4. 使用时间比较短,通常一次都是几分钟的使用长度。不一定是用户对软件不感兴趣,而是由一些例如“地铁到站了”的客观情况所决定的。所以设计出的软件一个操作流程不能花很长的时间。

以iPhoto为例,下图左侧为mac上的iPhoto程序,功能非常全面,编辑图像的能力很强。而右侧是iPhone端的程序,主要的功能是看图。

 

不能因为功能上的减少就说iPhone端的iPhoto不成功,事实上它是一个非常成功的软件。任何人即使是3岁的孩子也会使用它,它的核心思想就是“小”。只保留那些核心功能,如果缺失了用户就不再使用此软件。

4. 画草图

到了这一步,就需要在纸上画出草稿了。例如下图右侧的程序大致对应的草图在左侧。

 

在做草图的时候尽量多地设计,不同的功能不同的布局。这个是苹果设计师进行设计的方法(creative alternative design),画出的第一个草图是设计师心里一开始最理想的方案,做第二到第四个的时候还比较简单,做到第七个就比较难了,最后三个是非常难的,但也是价值最大的,往往有非常有创意的想法迸发出来。

 

当有了这些草图以后,需要寻找到目标用户去听他们的意见,比如有同样需求的朋友。他们会反馈一些意见,喜欢什么设计不喜欢哪些地方,这些意见有助于将设计方案进行排除和整合。剩下大约2-3个接受度比较高,没有明显优劣的方案,可以选择一个方案来实现。在这部分花的时间比较多,但是非常值得,因为在之后的过程中不断修改所付出的代价往往是在先期修改的代价的数倍。

5. 建立纸质原型

下图中的每张纸代表了一个屏幕上显示的软件界面。这个步骤的价值在于在纸上绘制这些图后就可以得到一些用户实际使用的感受而不必等编程实现。

 

从第一张开始“OK, 你刚刚打开我的软件”,点击这个按钮就到了第二张纸的屏幕,等等就可以对软件的整个操作流程有直观的感受了。在这个过程中可以收集到比草图阶段丰富得多的用户反馈,哪里用户不知道怎么操作了,哪里容易引起困惑,哪里用户比较喜欢,哪里不喜欢。

下面这张图是一个iPhone游戏的设计师们做的纸质的原型,模拟真实的iPhone。设计师们做了各种各样的纸片来模拟程序中的各种元素。

 

6. 工具的使用 ——omnigraffle

Omnigraffle虽然是个图形编辑软件,但是更加合适做原型设计,里面有丰富的控件库,可以拖拉这些控件来方便地搭建程序界面。一些比较个性的设计或者比较细节的加工可以在photoshop中制作。下面这张图是omnigraffle中用于Iphone平台的控件库。

 

下面这张图是讲师用omnigraffle做出的软件界面,可以实现到与最终版本像素级精确。

 

在这个阶段就要进行一些比较细节的内容确定和视觉相关定义,比如颜色的定义等等。建立起精确的原型也方便一个团队多人一起工作,减少沟通成本,避免产生歧义。

7. 回溯修改

其实不是一个真正的步骤,但是放在这里说明并不是每个软件都要一步到位,其实是一个迭代的过程,有时候必须要回溯修改。

下图是讲师最近正在制作的一个软件的界面,在制作具体界面细节中所进行的不同尝试:

 

也有要进行更加彻底的回溯修改的情况,有的用户在草图阶段反馈说喜欢的东西其实并不是他真正需要的东西,这种情况下就要回到草图阶段进行重新设计。

8. 开发实现

这部分不赘述,简单地说就是要注意程序的设计模式,用户界面和后台数据分离。

9. 测试

对软件做测试,看看是否文字提示恰当,是否有bug等。这里比较关键的是谁来做测试。

好友是比较可靠的资源,他们的反馈比较有价值。但是如果本地的目标用户比较难找,比如地震分析软件这种涉及全球性质的用户,就可以使用Mechanical Turk。Mechanical Turk是Amazon的一个服务,对于那些在网上又没有明确事情要做的人,以非常低的报酬,比如几美分,来请他们进行测试。也可以出稍高的价钱请数量比较少但是比较专业的人来进行测试,这样反馈的价值比较高。

 

10. 发布

发布软件,在比较前期的版本可能需要界面修改,bug修补,迭代版本。但是通常到后期都是一个比较可喜的结局。

总结

几条要注意的原则:

1.了解你的用户,并与他们接触、交谈。
2.不要做虚幻的想象的设计,多从成功软件中汲取经验。
3.软件要设计得“小”。
4.找到足够多的设计方案,通过数量的累计来得到好的质量。
5.失败得越早成功得越快。
6.要做到像素级精确。
7.记住没有什么是非常宝贵不能舍弃的,不要害怕去修改。
8.在提交之前进行足够的测试。

 

http://luckeyliu.wordpress.com.cn/2009/10/23/成功开发iphone软件的10个步骤/

成功开发iPhone软件的10个步骤

成功开发iPhone软件的10个步骤 作者:恋恋  |   发布: (编辑)稻草   |   时间:2009-08-05 20:53:39 文字大小:- + 一年前斯坦福和Apple...
  • potato512
  • potato512
  • 2014年05月13日 22:05
  • 441

成功开发iPhone软件的10个步骤

(原文链接:http://www.cnblogs.com/chen1987lei/archive/2010/03/10/1682131.html)     一年前斯坦福和Apple联手推出了基于i...
  • IT_Magician
  • IT_Magician
  • 2013年03月14日 13:49
  • 1053

团队软件开发经验-《软件项目成功…

《软件项目成功之道》                —读书笔记-2014/10/7 感受:    此书主要面向的是软件团队的管理、构建、工作方式、经验等方面进行说明,适用于初期或者成熟的软件...
  • Snail_Ren
  • Snail_Ren
  • 2016年03月23日 12:49
  • 582

xcode编写iphone第一个程序

Xcode中iPhone iPad模拟器调整大小的方法 Xcode中调试iPad程序默认的iPad模拟器非常小,如何方法iPad模拟器的显示尺寸呢? 选中iOS模拟器,在“Window -> 缩放...
  • chenyefei
  • chenyefei
  • 2016年09月27日 13:34
  • 537

软件工程的几个步骤

软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己的定义: Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。  IEE...
  • birthmarkqiqi
  • birthmarkqiqi
  • 2016年12月02日 12:12
  • 841

开源史上最成功的八个开源软件

就开源本身而言,它就是个成功案例。它不仅受个人喜欢,而且众多知名企业也青睐于它。虽然开源计划和开源产品数不胜数,但哪一个才是最成功的呢?这里所说的“成功”的定义是:应用广泛+众所周知。而在众多成功的开...
  • notbaron
  • notbaron
  • 2015年12月19日 19:45
  • 30290

嵌入式产品开发流程

嵌入式产品,与普通电子产品一样,开发过程都需要遵循一些基本的流程,都是一个从需求分析到总体设计,详细设计到最后产品完成的过程。但是,与普通电子产品相比,嵌入式产品的开发流程又有其特殊之处。它包含嵌入式...
  • a445849497
  • a445849497
  • 2017年04月21日 10:11
  • 1140

在iphone上构建nodejs服务器

在iphone上构建nodejs服务器
  • alexwang1983
  • alexwang1983
  • 2015年04月17日 13:29
  • 1322

软件工程:软件工程过程与方法

尽管程序员领着一份不错的薪水,可是他们也同样付出了巨大的精力与时间。随着软件规模的日益庞大,用户需求的不确定以及快速变更,使得软件开发已经不能停留在小作坊式的个人英雄时代,它已经发展为如今的依赖团队合...
  • oMengLiShuiXiang1234
  • oMengLiShuiXiang1234
  • 2016年06月23日 17:29
  • 12779

【IOS 开发学习总结-OC-60】ipad应用开发的一些知识

【IOS 开发学习总结-OC-60】ipad应用开发的一些知识ipad与iPhone上 管理有层次的工作流的不同iPhone上:通过NavigationController,用户可以从上一层界面A到下...
  • senwin2009
  • senwin2009
  • 2015年10月20日 12:13
  • 1286
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:成功开发iPhone软件的10个步骤
举报原因:
原因补充:

(最多只允许输入30个字)