程序員的困擾:如何在不影響產(chǎn)品質(zhì)量的情況下,加速開(kāi)發(fā)進(jìn)程?
原創(chuàng)【51CTO.com原創(chuàng)稿件】本文將專(zhuān)注于并行測(cè)試、敏捷方法,恰當(dāng)?shù)奈臋n化、產(chǎn)品質(zhì)量的提升、以及快速推向市場(chǎng)等方面,希望對(duì)您有所幫助。
眾所周知,“在不影響產(chǎn)品質(zhì)量的情況下,努力實(shí)現(xiàn)卓越的產(chǎn)品生產(chǎn)速度”是各個(gè)企業(yè)經(jīng)常要面對(duì)的挑戰(zhàn)。
他們會(huì)持續(xù)尋找各種產(chǎn)品開(kāi)發(fā)加速的方法,來(lái)保持速度和質(zhì)量上的優(yōu)勢(shì),達(dá)到真正領(lǐng)先于其他競(jìng)爭(zhēng)對(duì)手的狀態(tài)。
亞馬遜每 11 秒鐘會(huì)產(chǎn)生一次軟件變更,且每天大約有 8000 次各種各樣的變更。您一定能想象到這對(duì)于那些不經(jīng)常進(jìn)行變更的對(duì)手來(lái)說(shuō),會(huì)造成什么樣的影響和壓力。
值得注意的是:時(shí)常對(duì)產(chǎn)品予以變更,是一件既耗時(shí)又耗力的工作。如果能在小型開(kāi)發(fā)團(tuán)隊(duì)中實(shí)現(xiàn)全面自動(dòng)化,會(huì)讓持續(xù)部署的成本和風(fēng)險(xiǎn)變得更低,達(dá)到更加“和諧”的狀態(tài)。
隨著項(xiàng)目規(guī)模的增大,代碼庫(kù)也會(huì)變得更復(fù)雜,而測(cè)試新的軟件版本已成為了開(kāi)發(fā)過(guò)程中的必經(jīng)步驟。
質(zhì)量保證人員需要運(yùn)行一些具有針對(duì)性的測(cè)試程序,但傳統(tǒng)的測(cè)試程序不但耗費(fèi)時(shí)間并且會(huì)遺漏錯(cuò)誤。所以,他們趨向選擇一些自動(dòng)化的測(cè)試方案。
通過(guò)專(zhuān)業(yè)知識(shí)和長(zhǎng)期的調(diào)研,大部分企業(yè)都能夠制定出各種戰(zhàn)略,使得他們?cè)跍p少錯(cuò)誤和不影響產(chǎn)品質(zhì)量的同時(shí),更快地開(kāi)拓出產(chǎn)品的市場(chǎng)格局。
通過(guò)快速的產(chǎn)品開(kāi)發(fā)模式,企業(yè)可以花更少的時(shí)間向市場(chǎng)推出他們的產(chǎn)品(less Time To Market,TTM),獲得***產(chǎn)品的速度越快,其銷(xiāo)售、主導(dǎo)地位、以及靈活性方面就越是占優(yōu)。
企業(yè)總是期待能在需求管理上有所改進(jìn)(收集那些尚未被設(shè)計(jì)的產(chǎn)品需求),因?yàn)槊鞔_、清晰的需求有助于簡(jiǎn)化設(shè)計(jì)與開(kāi)發(fā)階段的時(shí)間,從而使得他們能夠更快地推銷(xiāo)產(chǎn)品,并提高產(chǎn)品的質(zhì)量。
雖然沒(méi)有哪個(gè)系統(tǒng)能夠做到盡善盡美,但是如果企業(yè)采用了“改進(jìn)的需求管理”模式的 TTM 策略,則有助于在計(jì)劃的發(fā)布日期內(nèi)部署出高質(zhì)量的產(chǎn)品。
在產(chǎn)品開(kāi)發(fā)的過(guò)程中,各種意料之中和之外的障礙都會(huì)出現(xiàn)。這些障礙都會(huì)減緩我們的開(kāi)發(fā)進(jìn)程。
如何加快產(chǎn)品開(kāi)發(fā)?通過(guò)有效地遵循下述六個(gè)步驟,您會(huì)在不影響產(chǎn)品質(zhì)量的情況下,加速開(kāi)發(fā)進(jìn)程:
- 明確的產(chǎn)品開(kāi)發(fā)策略
- 使用敏捷方法
- 定期自動(dòng)化測(cè)試
- 正確的軟件開(kāi)發(fā)技術(shù)
- 文檔化
- 刪除無(wú)用的代碼
明確的產(chǎn)品開(kāi)發(fā)策略
制定產(chǎn)品開(kāi)發(fā)策略是規(guī)劃產(chǎn)品的***步。策略的定義應(yīng)基于充分理解了應(yīng)用程序用途的基礎(chǔ)上。
例如,如果您打算在圣誕節(jié)之前發(fā)布某個(gè)應(yīng)用,則必須在圣誕節(jié)之前完成,而不是等到一月份才發(fā)布。
或是您想發(fā)布一個(gè)應(yīng)用程序,以允許多輛列車(chē)在兩個(gè)車(chē)站之間無(wú)縫接駁。您就必須非常小心地進(jìn)行代碼編寫(xiě),因?yàn)檐浖墓收蠒?huì)導(dǎo)致列車(chē)相撞的事故發(fā)生。因此在該場(chǎng)景中,整理代碼并掃清 Bug 遠(yuǎn)比按時(shí)交付重要得多。
由上可見(jiàn),在著手開(kāi)發(fā)產(chǎn)品之前,您需要策劃一張周密地“路線圖”,詳細(xì)地說(shuō)明所有必要的步驟,包括從產(chǎn)品迭代到產(chǎn)品發(fā)布的整個(gè)過(guò)程。
下面有三種主要策略可以應(yīng)用到產(chǎn)品開(kāi)發(fā)之中:
識(shí)別市場(chǎng)
在向市場(chǎng)發(fā)布任何產(chǎn)品之前,預(yù)研它是否會(huì)被用戶所接受是非常重要的。您可以通過(guò)對(duì)社區(qū)論壇和社交媒體的搜索與調(diào)查,來(lái)給受眾“搭脈”。
您可以從用戶角度考慮如下問(wèn)題:
- 目標(biāo)受眾的需求是什么?只有很好地理解他們的需求,才能相應(yīng)地創(chuàng)建出應(yīng)用程序。
- 新產(chǎn)品有什么好處?如果產(chǎn)品能解決用戶目前面臨的問(wèn)題,那將是一個(gè)很好主意。
例如,一些用戶想知道您的食材來(lái)源,以及您餐飲應(yīng)用會(huì)給他們健康帶來(lái)的好處。那么您就可以創(chuàng)建一個(gè)應(yīng)用程序,以便用戶可以收集到他們想要的所有信息。
- 該產(chǎn)品是否適合當(dāng)前的市場(chǎng)?深入的研究將告訴您,目前正在計(jì)劃的產(chǎn)品是否已經(jīng)過(guò)時(shí),或者一旦它被發(fā)布后是否仍然會(huì)有市場(chǎng)份額。這樣,您就可以節(jié)省資源和時(shí)間,只專(zhuān)注于人們真正想要的東西。
- 您打算將哪些功能集成到您的產(chǎn)品中?通過(guò)研究,您會(huì)獲知人們的喜好和興趣。因此您只需要提供人們會(huì)用到的那些功能。如此,一旦您的最終產(chǎn)品面世,它將會(huì)既輕巧又有豐富的功能。
固定時(shí)間表
為產(chǎn)品發(fā)布設(shè)定一個(gè)時(shí)間表是非常重要的。它有助于將項(xiàng)目分配給不同的團(tuán)隊(duì)成員,并能決定在誰(shuí)完成后,給誰(shuí)進(jìn)一步迭代的問(wèn)題。
同時(shí),為項(xiàng)目選擇合適的團(tuán)隊(duì)也非常重要,您是否能及時(shí)地發(fā)布產(chǎn)品,將取決于團(tuán)隊(duì)中人員的經(jīng)驗(yàn)和技能。
當(dāng)然,團(tuán)隊(duì)的效率和協(xié)調(diào)對(duì)于開(kāi)發(fā)過(guò)程的成功也很重要,它能保證您的產(chǎn)品會(huì)在市場(chǎng)競(jìng)爭(zhēng)開(kāi)始之前就已經(jīng)按時(shí)發(fā)布了。
您必須根據(jù)產(chǎn)品的功能、用戶的需求以及參與項(xiàng)目人員的技能,來(lái)決定正確的發(fā)布日期。
確定關(guān)鍵路徑
確定關(guān)鍵路徑能夠?yàn)楫a(chǎn)品規(guī)劃和推出規(guī)避各種挑戰(zhàn)。您可以采取下面的方法:
線框或原型
原型設(shè)計(jì)是在設(shè)計(jì)產(chǎn)品時(shí)需要采取的重要步驟之一。在設(shè)計(jì)實(shí)際產(chǎn)品之前,我們必須先用線框來(lái)創(chuàng)建應(yīng)用程序的粗略圖。
應(yīng)用程序中所有能夠提升用戶友好效果的元素都將被添加于此。這有助于設(shè)計(jì)師們深入地了解應(yīng)用界面中需包含的功能。同時(shí),這些線框圖會(huì)起到將應(yīng)用的理論思想與其最終結(jié)果相聯(lián)系的作用。
產(chǎn)品規(guī)格要求
有關(guān)應(yīng)用程序的所有細(xì)節(jié)都必須在產(chǎn)品規(guī)格中予以詳細(xì)說(shuō)明,包括:定價(jià)、設(shè)計(jì)功能、和市場(chǎng)規(guī)格等。
產(chǎn)品的文檔部分必須清晰且詳細(xì),從而保證在不同的團(tuán)隊(duì)使用它時(shí),每個(gè)人都能理解。產(chǎn)品規(guī)格中任何不明確的部分都可能會(huì)延遲產(chǎn)品的發(fā)布。
定義測(cè)試策略
產(chǎn)品開(kāi)發(fā)團(tuán)隊(duì)必須制定既省時(shí)又有效的測(cè)試策略。他們可以選擇 Selenium、Appium、Loadrunner、JMeter 等自動(dòng)化測(cè)試的框架。這些框架都有助于開(kāi)展并行測(cè)試、遞歸測(cè)試和性能測(cè)試。
雇用開(kāi)發(fā)團(tuán)隊(duì)
選擇產(chǎn)品開(kāi)發(fā)團(tuán)隊(duì)是產(chǎn)品開(kāi)發(fā)的另一個(gè)重要階段。為了及時(shí)在市場(chǎng)上推出高質(zhì)量的產(chǎn)品,您可能需要將產(chǎn)品的開(kāi)發(fā)外包給專(zhuān)業(yè)的工程團(tuán)隊(duì)。該團(tuán)隊(duì)?wèi)?yīng)當(dāng)具備適當(dāng)?shù)募寄芎蛯?zhuān)業(yè)知識(shí)。
從長(zhǎng)遠(yuǎn)來(lái)看,為團(tuán)隊(duì)添置熟練的開(kāi)發(fā)人員對(duì)于公司的成本來(lái)說(shuō)可能會(huì)非常昂貴。
在這種情況下,外包軟件開(kāi)發(fā)則是一個(gè)明智的策略。不但可以減少TTM,還能幫助您推出創(chuàng)新的產(chǎn)品,并有效地控制成本。
使用敏捷方法
項(xiàng)目管理團(tuán)隊(duì)要仔細(xì)研究開(kāi)發(fā)的方式,以選擇最適合手頭項(xiàng)目的方法。
基于敏捷宣言(Agile Manifesto)的 12 個(gè)基本原則是***的敏捷方法論之一。它將項(xiàng)目分成幾個(gè)持續(xù)時(shí)間相同的迭代,分布在 2-8 周的時(shí)間段內(nèi)完成。
利益干系人和客戶對(duì)敏捷方法最感興趣之處在于:他們能夠看到產(chǎn)品的每個(gè)開(kāi)發(fā)階段,從而在整個(gè)項(xiàng)目中做出決定。
如果“面市時(shí)間”更受關(guān)注的話,那么敏捷方法能讓您快速地生成軟件產(chǎn)品的基本版本,隨后再經(jīng)歷多次成功的迭代和測(cè)試。
通過(guò)敏捷方法,您可以創(chuàng)建一個(gè)最小的可行性產(chǎn)品(Minimum Viable Product,MVP)。它具有各種用戶友好的功能,并適于發(fā)布到市場(chǎng)之上。
我們對(duì)于產(chǎn)品的每個(gè)階段,都能夠進(jìn)行測(cè)試,添加更多功能,然后在得到客戶反饋的基礎(chǔ)上再次進(jìn)行測(cè)試。
每個(gè)團(tuán)隊(duì)(設(shè)計(jì)師與開(kāi)發(fā)者團(tuán)隊(duì))將籍此實(shí)現(xiàn)并行工作,并相互檢查工作質(zhì)量。
與瀑布法則相比,敏捷方法更節(jié)省時(shí)間。因?yàn)樵谠摲椒ㄖ?,任?wù)不會(huì)出現(xiàn)重疊,每個(gè)任務(wù)只有在前一個(gè)任務(wù)完成之后才會(huì)開(kāi)始。
定期自動(dòng)化測(cè)試
我們必須定期進(jìn)行軟件測(cè)試,以確保開(kāi)發(fā)周期能夠按計(jì)劃順利地進(jìn)行。每次在添加或修改新的源代碼時(shí),我們都必須進(jìn)行測(cè)試,以使產(chǎn)品在所有支持平臺(tái)上都能夠正常地運(yùn)行。
我們既可以采用自動(dòng)化的測(cè)試,又可以采用手動(dòng)測(cè)試程序。不過(guò),手動(dòng)測(cè)試的問(wèn)題在于它會(huì)花費(fèi)大量的時(shí)間、人力和財(cái)力。
另一方面,自動(dòng)化測(cè)試套件能夠大幅縮短測(cè)試的時(shí)間。過(guò)去需要幾天甚至幾周完成的測(cè)試,現(xiàn)在我們能夠在幾個(gè)小時(shí)內(nèi)完成。
當(dāng)然,時(shí)間并非唯一的優(yōu)勢(shì)。自動(dòng)化測(cè)試還可以讓您更為深入地進(jìn)行測(cè)試,以改善和提高軟件的質(zhì)量。而手動(dòng)測(cè)試則在冗長(zhǎng)的測(cè)試中并不占優(yōu),它必須有人不斷地觀察測(cè)試結(jié)果。
同時(shí),自動(dòng)化測(cè)試套件可以讓您更為深入地了解每個(gè)產(chǎn)品,分析代碼存儲(chǔ)器中的內(nèi)容、數(shù)據(jù)表、文件內(nèi)容和內(nèi)部程序,從而檢查產(chǎn)品是否能夠按照預(yù)期的方式運(yùn)行。
為了提高軟件的準(zhǔn)確性,您可以選擇不同的自動(dòng)化軟件測(cè)試類(lèi)型,包括:?jiǎn)卧獪y(cè)試、功能測(cè)試、遞歸測(cè)試、集成測(cè)試、數(shù)據(jù)驅(qū)動(dòng)測(cè)試和煙霧測(cè)試等。
只要添加了新的功能,您都應(yīng)該執(zhí)行遞歸測(cè)試,以檢查代碼和它的功能效果。
由于測(cè)試是自動(dòng)化的,您可以在不增加時(shí)間的情況下進(jìn)行多次反復(fù)測(cè)試,以深入了解代碼功能,提高產(chǎn)品的運(yùn)行速度,并最終發(fā)布出***的產(chǎn)品。
并行測(cè)試是自動(dòng)化測(cè)試套件的另一個(gè)主要優(yōu)勢(shì)。它允許您同時(shí)在多個(gè)操作系統(tǒng)和瀏覽器上運(yùn)行多個(gè)測(cè)試用例,并最終減少了整體的測(cè)試時(shí)間。
正確的軟件開(kāi)發(fā)技術(shù)
市場(chǎng)上有著大量的軟件開(kāi)發(fā)技術(shù)可供選擇。如果您沒(méi)能為構(gòu)建的產(chǎn)品選擇正確的技術(shù)棧,那么您勢(shì)必會(huì)遇到各種產(chǎn)品發(fā)布的障礙。
在測(cè)試軟件的框架中,應(yīng)用開(kāi)發(fā)環(huán)境(Application Development Environment,ADE)在測(cè)試系統(tǒng)中扮演著至關(guān)重要的角色。
系統(tǒng)開(kāi)發(fā)人員會(huì)花費(fèi)大量時(shí)間在 ADE 上,因此選擇支持多個(gè)平臺(tái)的 ADE,并將它與測(cè)量/控制服務(wù)相集成是非常必要的。ADE 還有助于應(yīng)用的展示和報(bào)告,并為您提供全球范圍內(nèi)培訓(xùn)和支持。
在為產(chǎn)品開(kāi)發(fā)進(jìn)行技術(shù)選擇時(shí),我們需要考慮的其他要點(diǎn)包括:
- 密切關(guān)注***的行業(yè)趨勢(shì)。
- 該技術(shù)是否適合于新產(chǎn)品的開(kāi)發(fā)?
- 了解技術(shù)適用的整個(gè)生命周期。
- 軟件開(kāi)發(fā)技術(shù)是否開(kāi)源?
- 了解您為技術(shù)選擇將支付的長(zhǎng)期費(fèi)用。
- 產(chǎn)品可以被移植到其他平臺(tái)嗎?
- 可運(yùn)行性與多功能性的重要程度。
- 您能從第三方代碼中獲利嗎?
文檔化
文檔可以描述正在開(kāi)發(fā)的產(chǎn)品架構(gòu)與功能。它會(huì)涉及到參與軟件開(kāi)發(fā)項(xiàng)目的每一個(gè)人,包括:設(shè)計(jì)人員、開(kāi)發(fā)人員、測(cè)試人員、營(yíng)銷(xiāo)人員、最終用戶和利益干系人等。
文檔化有助于提高軟件的質(zhì)量。由于軟件團(tuán)隊(duì)在編寫(xiě)代碼文檔和代碼審查的流程時(shí),可能用到自己并不常用的實(shí)踐方式,因此文檔化是非常重要的。通過(guò)規(guī)范各種實(shí)踐和產(chǎn)生各種正式的文檔,您就能夠跟蹤項(xiàng)目的進(jìn)度和方向。
清晰簡(jiǎn)明的文檔編寫(xiě)方式能夠加快開(kāi)發(fā)的進(jìn)程。同時(shí),它有助于各個(gè)開(kāi)發(fā)人員就如何在產(chǎn)品中實(shí)現(xiàn)特定功能而達(dá)成共識(shí)。
好的文檔能夠使得新進(jìn)的開(kāi)發(fā)人員更容易上手。這對(duì)于公司來(lái)說(shuō)既具有時(shí)間效益,又有成本效益。籍此,他們完全可以跳過(guò)培訓(xùn),直接投入到產(chǎn)品開(kāi)發(fā)之中。
正確地記錄錯(cuò)誤的代碼和常見(jiàn)問(wèn)題的解答,都能夠指導(dǎo)開(kāi)發(fā)人員解決產(chǎn)品中出現(xiàn)的問(wèn)題。
常見(jiàn)的文檔類(lèi)型主要包括:
設(shè)計(jì)文檔
通過(guò)提供最終產(chǎn)品的外觀細(xì)節(jié),設(shè)計(jì)文檔能使開(kāi)發(fā)人員受益。它會(huì)描述軟件的外觀和行為等方面,并進(jìn)行截圖展示。這使得團(tuán)隊(duì)中的每個(gè)人都能夠了解如何去構(gòu)建產(chǎn)品,同時(shí)也有助于用戶快速上手。
技術(shù)文檔
良好的技術(shù)文檔對(duì)于任何產(chǎn)品的成功都是至關(guān)重要的。它能詳細(xì)地描述軟件的體系結(jié)構(gòu)和功能,并提供給開(kāi)發(fā)人員、設(shè)計(jì)人員和質(zhì)量分析人員來(lái)使用。
對(duì)于大型的項(xiàng)目來(lái)說(shuō),技術(shù)文檔為可能出現(xiàn)的災(zāi)難提供了保障。它一般包含軟件不同功能部分的預(yù)期結(jié)果、API 的調(diào)用和響應(yīng)、產(chǎn)品在最終用戶手中的最終外觀、以及對(duì)于代碼各個(gè)部分的詳細(xì)描述。
用戶文檔
良好的用戶文檔可以幫助用戶去了解代碼是如何運(yùn)行的。開(kāi)發(fā)人員經(jīng)常會(huì)想當(dāng)然地認(rèn)為軟件使用人應(yīng)當(dāng)知道代碼的運(yùn)作機(jī)制,因此他們會(huì)無(wú)意識(shí)地在創(chuàng)建文檔時(shí)跳過(guò)基本性的要點(diǎn)。
所以,在質(zhì)量上,只要使用的是用戶能夠理解的語(yǔ)言,就是好的文檔,反之則對(duì)用戶毫無(wú)用處。
因此,在為普通用戶創(chuàng)建文檔時(shí),我們要確保清晰易懂。同時(shí),文檔在布局上也應(yīng)該有所注意,以便開(kāi)發(fā)人員能夠輕松地查看到所需的內(nèi)容。 Wordpress 和 Bootstrap 都是優(yōu)秀的文檔范例。
營(yíng)銷(xiāo)文檔
市場(chǎng)營(yíng)銷(xiāo)文檔應(yīng)當(dāng)包含軟件能給公司所帶來(lái)的一個(gè)基本理念:投資回報(bào)率(ROI)。
可見(jiàn),文檔是一種很好的營(yíng)銷(xiāo)工具,既可以有利于維護(hù)良好的流程,又有助于提高軟件的質(zhì)量。
刪除無(wú)用的代碼
由于無(wú)用的代碼可能引發(fā)各種問(wèn)題,因此我們需要?jiǎng)h除掉。
在大型項(xiàng)目中(特別是在一些復(fù)雜的項(xiàng)目中),由于文檔會(huì)在多種人員角色手中流轉(zhuǎn),甚至是一些對(duì)該項(xiàng)目并不熟悉的開(kāi)發(fā)人員,因此他們可能會(huì)對(duì)代碼進(jìn)行各種更改,甚至?xí)?ldquo;污染”代碼,進(jìn)而在無(wú)意中引入了各種 Bug。
任何維護(hù)代碼的工作都是既耗時(shí)又耗力的。您必須遍歷所有的代碼,而代碼庫(kù)中的各種無(wú)用代碼也經(jīng)常會(huì)相互混淆。
由于無(wú)用的代碼多半不可能再被使用到,因此您與其花費(fèi)時(shí)間和精力維護(hù)它們,不如直接將它們刪除。
同時(shí),從事代碼工作的團(tuán)隊(duì)成員必須明確知曉哪些代碼是有用的,哪些是無(wú)用的。同樣,代碼的清理可以加速開(kāi)發(fā)的進(jìn)程,并提高軟件的質(zhì)量。
結(jié)論
各個(gè)公司都專(zhuān)注于縮短其產(chǎn)品的面市時(shí)間。為了掃除產(chǎn)品延遲發(fā)布所帶來(lái)的風(fēng)險(xiǎn),我們要重點(diǎn)關(guān)注:并行測(cè)試、敏捷方法、適當(dāng)?shù)奈臋n和正確的技術(shù)。只要開(kāi)發(fā)團(tuán)隊(duì)有足夠的資源,項(xiàng)目就能成功啟動(dòng)。
另外,依靠 TTM 策略來(lái)獲得營(yíng)銷(xiāo)和競(jìng)爭(zhēng)優(yōu)勢(shì)也是產(chǎn)品和項(xiàng)目本身非常重要的。在注重速度的同時(shí),請(qǐng)您確保整個(gè)開(kāi)發(fā)過(guò)程中的產(chǎn)品質(zhì)量。
陳峻(Julian Chen) ,有著十多年的 IT 項(xiàng)目、企業(yè)運(yùn)維和風(fēng)險(xiǎn)管控的從業(yè)經(jīng)驗(yàn),日常工作深入系統(tǒng)安全各個(gè)環(huán)節(jié)。作為 CISSP 證書(shū)持有者,他在各專(zhuān)業(yè)雜志上發(fā)表了《IT運(yùn)維的“六脈神劍”》、《律師事務(wù)所IT服務(wù)管理》 和《股票交易網(wǎng)絡(luò)系統(tǒng)中的安全設(shè)計(jì)》等論文。他還持續(xù)分享并更新《廉環(huán)話》系列博文和各種外文技術(shù)翻譯,曾被(ISC)2 評(píng)為第九屆亞太區(qū)信息安全***成就表彰計(jì)劃的“信息安全踐行者”和 Future-S 中國(guó) IT 治理和管理的 2015 年度踐行人物。
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】