2
3
4
5
6
7
8
9
10
然后,這個類型能夠做些什么呢?我們把個人智能助理的功能進行分類,應(yīng)該包括三個功能:
1、定制;
2、搜索;
3、存儲。
仔細想想,實際上只有搜索和存儲才是智能助理的職責所在,而定制不過是智能助理要運轉(zhuǎn)的一個條件罷了。既然如此,從客戶應(yīng)用的順序來考慮,我們應(yīng)該先實現(xiàn)定制的功能。要定制類別,就應(yīng)該具備類別類型,而定制類別這項功能,則應(yīng)該由一個專門的控制器來承擔責任。
[SetupUp]
public void InitObject()
{
Category cg1;
Category cg2;
CategoryContainer cgContainer;
SmartController control;
}
[Test]
public void TestCategory()
{
cg1 = new Category(”SoftWare Engineering”,”TDD”);
cg2 = new Category(”SoftWare Engineering”,”Design Pattern”);
cgContainer = new CategoryContainer();
cgContainer.Add(cg1);
cgContainer.Add(cg2);
Assert.IsNotNull(cgContainer);
Assert.AreEqual(cg1,cgContainer[0]);
Assert.AreEqual(cg2,cgContainer[1]);
}
[Test]
public void TestController()
{
control = new SmartController();
Assert.IsNotNull(control);
Assert.IsTrue(control.CustomizeCategories(cgContainer));
}
上面的測試代碼完全從用戶的應(yīng)用角度來考慮的。要定制類別,必須具備類別類型Category,它應(yīng)該實現(xiàn)一個帶參的構(gòu)造函數(shù),傳遞主類別和子類別。由于定制的類別可能會很多,所以需要一個類別容器CategoryContainer。
而定制類別,則由控制器SmartController完成。定制的方法CustomizeCategories()定制多個類別,并返回布爾型,以確定定制是否成功。通過上述的測試代碼,寫出相應(yīng)的程序應(yīng)該不難吧。
接下來應(yīng)該考慮搜索和存儲功能了。在前面我提到,這兩個功能應(yīng)該是SmartAssistor類型的職責。先修改最初的測試代碼:
[Test]
public void TestSmartAssistor()
{
SmartAssistor assistor = new SmartAssistor();
Assert.IsNotNull(assistor);
assistor.Search(control.Categaries);
assistor.Store();
}
此時,我發(fā)現(xiàn)在寫Search()和Store()方法的斷言時,有些問題存在。這兩個方法返回的結(jié)果應(yīng)該是什么?是布爾值嗎?那么搜索得到的結(jié)果呢?存儲后形成的文件呢?對于用戶而言,是否只需要這兩個行為呢?
仔細分析,我認為,Search()和Store()方法返回布爾值是可行的,但Search()還應(yīng)該返回搜索結(jié)果。Store()方法也應(yīng)該指定存儲的路徑和文件的格式。而用戶不僅僅需要搜索和存儲,同時還應(yīng)該提供顯示的功能。所以,上面的測試代碼需要完善:
[Test]
public void TestSmartAssistor()
{
SmartAssistor assistor = new SmartAssistor();
Assert.IsNotNull(assistor);
SearchResult result = new SearchResult();
Assert.IsTrue(assistor.Search(control.Categaries,out result));
Assert.IsTrue(assistor.Store(result,@”D:\Smart Assistor\”,” result.xml”));
assistor.List(result);
}
此時根據(jù)測試代碼寫出的程序,應(yīng)該說就具備個人智能助理的雛形了(所謂智能,還應(yīng)具備自動搜索,自動匹配,自動分類等諸多功能,本文只是根據(jù)該項目提出TDD的一些觀點,因此這些功能省略)。
更多軟考資料請訪問:考試吧軟件水平考試欄目
希望與更多網(wǎng)友交流,請進入考試吧軟件水平考試論壇
轉(zhuǎn)帖于:軟件水平考試_考試吧
- 推薦給朋友
- 收藏此頁
·2006年下半年軟考《信息系統(tǒng)監(jiān)理師》試題分析 (2006-11-8 9:02:02)
·2006年下半年軟件水平考試《信息系統(tǒng)監(jiān)理師》試題 (2006-11-6 10:38:41)
·2006年軟件水平《信息系統(tǒng)監(jiān)理師》試題 (2006-5-31 16:49:14)
如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系
