更新日線,是一項我們經常遇到的資料匯入功能。
這項功能的解說文字,我是這麼寫的:
使用者在初次使用本系統的時候,需要安裝滬深兩市從開市到本年度的所有曆史資料,這些資料可以從某證券行情軟體獲得,是遵循一定格式的二進位檔案。此後,每天兩市交易結束之後,使用者必須更新當天的日線行情,當然,使用者也可能在幾天后一次性更新最近幾天的日線行情。使用者更新日線,才能建立完整準確的資料基礎,我們所有的分析工作都基於這些日線資料。
事實上只需要這麼簡單的描述,就能夠弄清楚這項功能的目標和具體的應用情境。
不可避免的,我們需要做使用者體驗設計,這是將功能轉換為一系列開發工作單位的前提。所謂使用者體驗設計,我們可以簡單的理解為介面設計的一部分。介面設計包括兩個方面:1、如何更美觀;2、設定哪些最少的功能從而滿足使用者的全部要求。後者可以簡單的理解為“使用者體驗設計”。
我們可以根據功能的描述按部就班的演繹,接下來就是整個思考過程。首先,我們需要列出使用者可能需要的操作、可能遇到的問題:
1、 使用者每次更新日線都需要選擇一個行情檔案,然後開始更新。
2、使用者可能誤操作,導致選擇的檔案不是一個真正的行情檔案。
3、使用者從分析軟體中產生行情檔案的時候,可能僅包括一個市場的資料、或者包含了期貨、港股等其他市場的資料。
4、使用者可能記不清最近10天是否每天的日線行情都已經更新了。
5、在更新日線的時候,使用者需要看到更新的進度
6、使用者可能對系統中儲存的資料完全沒有信心,準備重新從兩市開市的第一天開始安裝曆史資料。
7、使用者可能將一個檔案更新兩次,或者一些資料已經安裝了但使用者選擇的另一個行情檔案中包含了這部分資料。
針對上述情形,我們可以簡單的對介面元素進行設計,當然這裡無需考慮美觀問題,僅僅關註:1、使用者遇到的問題,是否都能夠處理;2、在能夠處理所有問題的時候,介面是否最簡單且最容易理解。經過簡單的思考,我們可以得到介面的原型,這裡用Vc 2010的對話方塊設計器可以簡單的繪製草圖如下:
第一行,“日期”那部分,使用者將能夠看到目前已經安裝的行情資料的起止日期,每次安裝資料後這裡要即時重新整理,這樣使用者就能夠始終做到心中有數。下面一行很容易理解,左邊是選擇檔案的控制項,右邊是啟動更新的按鈕。第三行是進度的文本資訊報告區,剛進入介面的時候顯然要提醒使用者選擇一個檔案。第四行是進度條,開始更新之後進度條將報告更新的進度。接下來的兩個按鈕,第一個是刪除最新的五天日線,第二個是刪除全部的日線。
這裡不需要過多的分析,我們知道這種介面的形式,是能夠應付上面使用者可能遇到的所有情形的。菜鳥程式員很容易忽略的,是報告系統中行情的起止日期和進度文本區兩個部分。
這樣的東西,一些資深的專案經理可能會不屑,因為什麼呢?“你好象過早的進入介面設計了”,是的,確實如此。但老實說,如果專案經理的腦子裡,不能在最快時間出現上面的表單圖形的話,他會怎樣為團隊的程式員分配開發工作單位?所以,書生們常常說專案管理大師,未必需要懂得編程,在軟體領域甚至在其他任何領域,這簡直是十足的扯淡。做事的團隊,其實並不需要一個指手畫腳的人,每個人需要很清晰、很簡單的知道自己今天做什麼、明天做什麼、怎樣做是對的也就是標準是什麼,外行如何用他的想象力來實現?一個蹩腳的程式員永遠不可能成為能乾的專案經理,就如同一個從來沒有碰過槍的人,怎麼可能指揮千軍萬馬作戰?當然,公司經理完全可以不懂技術,為什麼,因為他可以將這一塊封裝起來,技術總監會對他負責,公司經理也不會對技術團隊指手畫腳的具體到每一項工作。
那麼,完成使用者體驗設計之後,我們確定開發工作單位其實就非常簡單了:
上面的是第一項功能的任務清單,當然Tfs的一些術語翻譯的很生硬,比如堆疊順位,其實是開發的順序,使用者劇本,就是功能;不用太理會,我們簡單的將這些任務指派給團隊不同的成員,專案經理大體上就能開始輕鬆的當監工了。
針對這項功能,我比較看重的是一個簡單的重複測試,也就是迴圈執行安裝一個檔案、刪除全部日線、安裝同一個檔案,這樣迴圈多次,從而確定這兩項功能的穩固性。因為顯示進度的需要,更新日線的操作最好在後台運行,這樣介面才不會僵死,那麼這種亂序測試是對這部分後台操作的一個考驗。
到現在,我們已經完整的講述了從啟動項目開始,到程式員開始寫代碼之間的全過程。事實上沒有多少多餘的工作量,但整個開發過程將在這種簡單的模式下,更趨規範。後面如果仍然有時間和興趣,可能會對開發過程完整描述,記錄學習VC++2010的過程。