所以偉大的程序都起源于一個(gè)偉大的想法。但這不意味著將想法孕育成成功的程序是件輕松的事。本文章將介紹一些能用于精煉想法、回顧設(shè)計(jì)選擇(design options)的策略,幫助你設(shè)計(jì)出人見人愛的程序。
明確程序定義
定義程序是指簡明地描述程序要達(dá)成的主要目的和目標(biāo)用戶。
在開發(fā)早期就完成對程序的定義,能夠幫你將一堆想法和屬性凝聚一個(gè)成用戶夢寐以求的產(chǎn)品。在開發(fā)過程中,可以以該定義為標(biāo)準(zhǔn)判斷潛在的功能點(diǎn)和行為是否靠譜。創(chuàng)建程序定義可以通過以下步驟來完成:
1 列舉所有你覺得用戶會喜歡的功能點(diǎn)
可以使用頭腦風(fēng)暴。此時(shí)你應(yīng)該找出所有與產(chǎn)品創(chuàng)意相關(guān)的任務(wù)。不用擔(dān)心單子列的太長,待會兒還要再做精簡。
例如,想象你初的想法是做一個(gè)幫用戶采購食物的程序。想象一下,腦袋里就會出現(xiàn)一系列用戶感興趣的任務(wù)。例如:
創(chuàng)建購物清單
獲取食譜
比較價(jià)格
尋找商店位置
標(biāo)注食譜
獲得和使用優(yōu)惠券
瀏覽烹飪教程
探索不同的烹飪方法
查找可替代的食材
2 確定你的目標(biāo)用戶
你的用戶除了在使用移動設(shè)備,期待精致的圖片,簡潔的交互方式,出色的表現(xiàn)以外,還具備什么樣的特性呢?以食材采購為例,你可以判斷下列描述是否適合你的用戶:
經(jīng)常在家做飯or偏愛準(zhǔn)備好的餐飲
喜歡使用優(yōu)惠券or認(rèn)為不值得花精力去弄優(yōu)惠券
喜歡搜索奇特的食材or只眷戀基本的食物
嚴(yán)格遵守食譜or只把食譜當(dāng)靈感參照
采購少量多次or一次買很多
喜歡一次為多個(gè)目標(biāo)集中采購食材or只想在回家路上順便買幾樣?xùn)|西
篤信品牌or方便就好,牌子無所謂
每次采購都買類似的東西or按照菜譜買東西
考慮完這些問題,挑選三條符合你目標(biāo)用戶的特性:喜歡實(shí)驗(yàn)新菜譜,采購很倉促,盡量節(jié)約(在不必花費(fèi)太多精力時(shí))。
3 通過對目標(biāo)用戶的定義篩選功能點(diǎn)
如果在確定了目標(biāo)用戶的特性后,功能點(diǎn)只剩下寥寥數(shù)條,你就得到了它:偉大的程序應(yīng)該像激光一樣準(zhǔn)確聚焦在用戶想完成的任務(wù)上。
比如說,想想在第一步里你為購物程序列數(shù)的大量潛在功能點(diǎn)。雖然這些功能點(diǎn)都很有用,但并不意味著每個(gè)功能點(diǎn)對用戶同樣有用。重要的是,第二步中的目標(biāo)用戶對這些功能點(diǎn)的喜愛程度也不一樣。
心里裝著目標(biāo)用戶,再來檢視功能點(diǎn)清單,后能將程序聚焦在三個(gè)功能點(diǎn)上:創(chuàng)建列表、獲得和使用打折券、獲得菜譜。
現(xiàn)在可以定義你的程序了,精確地概括程序的功能以及目標(biāo)用戶。好的定義應(yīng)該是這樣的:
“一個(gè)幫助喜歡烹飪、主張節(jié)儉的用戶創(chuàng)建購物清單的工具”
4 不要停
在開發(fā)過程中持續(xù)始終程序定義去判斷功能點(diǎn)、控件和術(shù)語是否妥當(dāng)。例如:
當(dāng)考慮是否要添加一個(gè)功能點(diǎn)時(shí),問問自己它對于你的程序以及目標(biāo)用戶來說是否足夠核心。
如果不是的話,把它放在一邊,它可能是另一個(gè)程序的核心組成。例如,你已經(jīng)確定你的用戶喜歡發(fā)掘新菜譜,所以強(qiáng)調(diào)打包好的蛋糕和菜肴就有失妥當(dāng)。
為設(shè)備而設(shè)計(jì)
你應(yīng)該知道這個(gè)程序能做什么、目標(biāo)用戶是誰,F(xiàn)在,你要確定此程序能給人“為蘋果iOS設(shè)備而設(shè)計(jì)”的感覺。這很關(guān)鍵,因?yàn)橛脩魧π袑惭b在iOS設(shè)備上的程序有很高的期待。如果你的程序讓人覺得是為其他設(shè)備、或者web而設(shè)計(jì),用戶就不會太珍視它。
擁抱iOS界面規(guī)范
iOS用戶已經(jīng)很熟悉內(nèi)置應(yīng)用的外觀和行為,所以他們期待這些下載來的程序能帶來相似的體驗(yàn)。你不會想模仿內(nèi)置程序的每一個(gè)細(xì)節(jié),但理解它們所遵循的設(shè)計(jì)規(guī)范會很有幫助。首先要了解iOS設(shè)備以及運(yùn)行于其上的程序所具有的特性(詳見“平臺特點(diǎn)”這一章)。然后,將以下幾點(diǎn)銘記于心:
控件應(yīng)該是可點(diǎn)擊的。按鈕、挑選器、滾動條等控件都用輪廓和亮度漸變,這都是歡迎用戶點(diǎn)擊的邀請。
程序的框架應(yīng)該簡明、易于導(dǎo)航。iOS為瀏覽層級內(nèi)容提供了導(dǎo)航欄,為展示不同組的內(nèi)容或功能提供了tab頁簽。
反饋應(yīng)該是微妙且清晰的。iOS應(yīng)用使用精確流暢的運(yùn)動來反饋用戶的操作。iOS程序還可以使用進(jìn)度條、活動指示器(activity indicator)來指示狀態(tài),使用警告給用戶以提醒、呈現(xiàn)關(guān)鍵信息。
你可以在“iOS界面元素使用指南”這一章掌握控件的使用方法。在為程序設(shè)計(jì)宏觀的用戶體驗(yàn)時(shí),確保明白“用戶體驗(yàn)指南”一章中的內(nèi)容。
確保程序在iPad和iPhone上通用
如果你正計(jì)劃為iPad和iPhone設(shè)計(jì)程序,要確保該設(shè)計(jì)方案可以適用兩種設(shè)備。以下指南可以給你一些幫助:
為設(shè)備量身定做程序界面。大多數(shù)界面元素在兩種設(shè)備上通用,但通常布局會有很大差異
為屏幕尺寸調(diào)整圖片。用戶期待在ipad上見到比iPhone上更加精致的圖片。不建議僅僅將iPhone上的程序放大到iPad的屏幕上。
無論在哪種設(shè)備上使用,都要保住主功能。雖然一種版本會為任務(wù)提供比另一版更加深入或更具交互性的展示,但不要讓用戶覺得他們是在使用兩個(gè)完全不同的程序。
超越“默認(rèn)”。沒有優(yōu)化過的iPhone程序會在iPad上默認(rèn)以兼容模式運(yùn)行。雖然這種模式使得用戶可以在iPad上使用現(xiàn)有的iPhone程序,但卻沒能給用戶提供他們期待的iPad體驗(yàn)。
重新考慮基于web的設(shè)計(jì)
如果你的程序移植自web,那么需要確保你的程序能擺脫網(wǎng)頁的感覺,給人iOS程序的體驗(yàn)。記住,人們可能會在iOS設(shè)備上使用Safari來瀏覽你的網(wǎng)頁。
這里提供一些能幫助web開發(fā)者創(chuàng)建iOS程序的策略:
關(guān)注你的程序。網(wǎng)頁經(jīng)常給訪客一堆任務(wù)或選項(xiàng),讓他們來挑選,但是這種體驗(yàn)并不適合iOS應(yīng)用。iOS用戶希望程序能像宣稱的那樣有用,希望能立刻看到有用的內(nèi)容。
確保你的程序幫助用戶做事。用戶也許會喜歡再網(wǎng)頁中瀏覽內(nèi)容,但更喜歡能使用程序完成一些事情。
為觸摸而設(shè)計(jì)。不要嘗試在iOS應(yīng)用中復(fù)用網(wǎng)頁設(shè)計(jì)模式。熟悉iOS的界面元素和模式,并用它們來展現(xiàn)你的內(nèi)容。菜單、基于hover的交互、鏈接等web元素需要重新考慮。
讓用戶翻頁(scroll)。大多數(shù)網(wǎng)頁在第一時(shí)間將重要的內(nèi)容認(rèn)真的展現(xiàn)出來(Most websites take care to display the most important information “above the fold”)。因?yàn)樽層脩粼陧敳繀^(qū)域附近沒找到想要的內(nèi)容,就會離開。但在iOS設(shè)備上,翻頁是很容易的,也是意料中。如果為了把所有內(nèi)容擠在一屏里而縮小字體、壓縮空間尺寸,終可能內(nèi)容都變得看不清,布局也沒法用。
重置主頁圖標(biāo)。網(wǎng)頁經(jīng)常在每個(gè)頁面的頂部放置回主頁的圖標(biāo)。iOS程序不包括主頁,所以不必多此一舉了。另外,iOS程序容許人們通過點(diǎn)擊狀態(tài)欄快速回到列表的頂部。如果你在屏幕頂部塞進(jìn)一個(gè)主頁圖標(biāo),想按狀態(tài)欄就沒那么容易了。
為任務(wù)量身定做界面
頂級的iOS程序能夠用清晰的意圖和易用性去平衡界面設(shè)計(jì)。為了在程序中達(dá)成平衡,一定要在開發(fā)初期將設(shè)計(jì)考慮進(jìn)去。因?yàn)閷ζ放苹、原?chuàng)性和市場推廣的考慮經(jīng)常會影響設(shè)計(jì)決策。始終保持對用戶體驗(yàn)的關(guān)注是極大的挑戰(zhàn)。
使用iOS SDK可以隨意選擇定制界面的程度。由于對定制的程度沒有限制,你需要考慮這些定制的界面會怎樣影響用戶完成任務(wù)。當(dāng)你把任務(wù)納入考慮范圍時(shí),想一想用戶執(zhí)行這些任務(wù)的頻率和環(huán)境。
例如,想象一個(gè)打電話的軟件。這個(gè)界面沒有使用鍵盤,而是呈現(xiàn)了一個(gè)漂亮、逼真的撥盤。這個(gè)撥盤制作精良,所以用戶既非常喜愛,也立刻就知道如何去使用它。這個(gè)撥盤表現(xiàn)逼真,所以用戶在做出撥號動作、聽到與眾不同的撥號音時(shí)會非常開心。但當(dāng)需
經(jīng)常撥打沒在通訊錄中保存的號碼時(shí),初的喜悅很快會被沮喪替代。因?yàn)檗D(zhuǎn)盤撥號的效率太低了。對于一個(gè)幫助用戶打電話的程序來講,這個(gè)優(yōu)美的界面是一個(gè)累贅。

另一方面,考慮一下泡泡水平線取樣儀,這上面會呈現(xiàn)一個(gè)逼真的水平測量管。用戶知道如何使用真實(shí)的儀器,所以也能立刻知道如何使用它。這個(gè)程序即便沒有那個(gè)漂亮的氣泡也能展示水平角度信息,但是這會讓程序變得不符合直覺,難以理解。在這種情況下,定制的界面不僅向人們展示如何使用這個(gè)應(yīng)用,也讓任務(wù)變得簡單。

當(dāng)你在考慮定制的界面給任務(wù)帶來的是幫助還是障礙時(shí),請記住以下幾點(diǎn):
定制一定要是有據(jù)可循的。理想情況下,定制界面能幫助用戶完成任務(wù),增強(qiáng)體驗(yàn)。應(yīng)該讓用戶的任務(wù)來引導(dǎo)界面設(shè)計(jì)。例如:
如果你的程序需要操縱大量的精確數(shù)據(jù),用戶會偏愛易懂、標(biāo)準(zhǔn)化的控件以及流暢精煉的導(dǎo)航。
如果你的程序用于瀏覽內(nèi)容,用戶就不喜歡比內(nèi)容還搶眼的界面
如果你的程序是個(gè)游戲,提供即時(shí)的、有情節(jié)的體驗(yàn),人們會期望進(jìn)入一個(gè)充滿漂亮圖片、交互新穎的奇特世界。
盡可能少的給用戶增加認(rèn)知負(fù)擔(dān)。用戶喜歡了標(biāo)準(zhǔn)化控件的使用方法和行為,所以他們不必停下來思考該怎么使用它。當(dāng)面對那些看起來、用起來不符合標(biāo)準(zhǔn)的控件時(shí),用戶之前的經(jīng)驗(yàn)就失效了。除非你那極富個(gè)性的控件能讓任務(wù)變得很容易,否則用戶會討厭被迫學(xué)習(xí)只能在此程序中使用的新技能。
保持內(nèi)部一致性。你的界面越個(gè)性,在程序內(nèi)保持這些控件外觀和行為一致性就越重要。如果用戶花時(shí)間學(xué)會使用這些不熟悉的新控件,他們希望這些經(jīng)驗(yàn)?zāi)茉谡麄(gè)程序里通用。
在控件和內(nèi)容間保持差異。因?yàn)橛脩艉苁煜?biāo)準(zhǔn)控件,它們不和內(nèi)容搶用戶的注意。當(dāng)你設(shè)計(jì)界面時(shí),要確保它不會和用戶關(guān)注的內(nèi)容搶風(fēng)頭。例如,如果你的程序容許人們觀看視頻,你可能選擇自己設(shè)計(jì)一套播放控件。但是,是否采用標(biāo)準(zhǔn)控件是次要的,更重要的是這些控件是否會在用戶開始觀看視頻時(shí)漸隱,在用戶輕觸屏幕時(shí)重現(xiàn)。
在重新設(shè)計(jì)標(biāo)準(zhǔn)控件前要三思。如果你計(jì)劃重新制作標(biāo)準(zhǔn)控件,要確保你的控件提供
與標(biāo)準(zhǔn)控件同樣多的信息。例如,如果你設(shè)計(jì)的按鈕不是用戶印象中那種方方的樣子,用戶甚至可能看不出它能點(diǎn);蛘,如果你創(chuàng)建一個(gè)切換控件,卻不能顯示兩極狀態(tài),用戶可能不會意識到它是一個(gè)雙態(tài)控件。
確保對定制界面元素進(jìn)行充分的用戶測試。在測試中,觀察用戶是否能預(yù)測控件的功能,使用它是否很簡單。例如,如果你的控件尺寸小于40×40像素,用戶點(diǎn)擊它就有困難;蛘,如果你的控件對水平滑動(swipe)和輕觸(tap)的響應(yīng)不同,要確保此控件的功能值得用戶花費(fèi)額外精力去留意這些差別。
原型和重述
在你調(diào)用龐大的開發(fā)資源去實(shí)現(xiàn)你的程序前,好做一個(gè)用于用戶測試的原型。即使只能讓一些同事參與測試原型,你也能從他們對程序功能的新視角和體驗(yàn)中獲益良多。
在設(shè)計(jì)初期,你可以使用紙面原型或者線框圖來表現(xiàn)主要的信息展示區(qū)和控件(views and control),繪制畫面間的切換流程。雖然你能從測試線框圖中獲得有用的反饋,但有采樣不足帶來的偏差也會誤導(dǎo)測試員。這是因?yàn)樽層脩魬{想象獲得的體驗(yàn)會與使用細(xì)節(jié)完善的程序時(shí)不同。
如果你的原型能在設(shè)備上運(yùn)行,那么獲得的反饋會更加有價(jià)值。當(dāng)用戶能與你的程序交互時(shí),他們能在程序中發(fā)現(xiàn)那些與預(yù)期不一樣的地方,或者那些設(shè)計(jì)的太過復(fù)雜。
設(shè)計(jì)可信原型簡單的方法是選一個(gè)Xcode的模板,改成一個(gè)基本的程序,填充一些合適的內(nèi)容用以占位。然后,在設(shè)備上安裝它,以便用戶能夠盡可能真實(shí)的體驗(yàn)。你不需要提供大量的內(nèi)容,或者讓每個(gè)控件都有功能。只要測試員能通過點(diǎn)擊屏幕上某區(qū)域跳轉(zhuǎn)到下一個(gè)邏輯關(guān)聯(lián)的頁面,或者能完成主要的任務(wù),就足以給用戶提供反饋。想學(xué)Xcode,詳見“A Tour of Xcode”。
當(dāng)基于Xcode模板開發(fā)你的原型時(shí),你免費(fèi)獲得了很多功能,并能基于反饋對設(shè)計(jì)作出調(diào)整。只需要很短的時(shí)間,你就能在定稿并投入資源開發(fā)前迭代很多次原型。
|