2011年6月10日

二、CRC(Class-Responsibility-Collaborator)卡片

一般介紹UML幾乎都是從開發流程開始介紹,但筆者覺得這個部分應該要留到後面一點再來說明,因為開發流程對於沒有在中大型的軟體開發公司的開發者而言,很難有所感覺,就像筆者剛出社會的時候在一家系統廠工作,對於開發流程一點感覺都沒有(後來想想應該是我比較遲鈍吧);是後來有幸加入一家比較有規模的公司,當時我的直屬老闆(CAO, Chief Architecture Officer)教了我很多(應該是說把我釘得滿頭包),所以我才有機會懂些皮毛。
所以我想從物件導向中最容易、也最直觀的CRC先說明起(不過CRC不屬於UML的一部分)。
通常筆者在思考如何以物件導向設計的時候,最常用的技術就是去探索物件間的互動情況,這樣做的好處就是會忘記程序導向及資料操作,進而將重心放在行為上面。
就筆者的經驗,使用CRC的第一個步驟就是找出[責任]出來,例如THexFile這個物件,就是應該將hex file從儲存媒體進來,並且將它轉換成適當的Binary Code及回傳該Binary Code的大小。
#include <string>
class THexFile
{
  protected:
    std::string FstrFileName;
  public:
    bool readFromFile(std::string fileName);
    uint8_t *getBinaryContent();
    uint32_t getFileSize();
};
第二個C代表的就是合作者,這個C的目的是可以知道有哪些類別會跟這個類別一起合作,藉此可以以較高階觀點了解類別間的連結(Link)關係。

一、UML (Unified Modeling Language)

  想知道甚麼是UML,在Google上面搜尋一下就可以找到一狗票的文件,所以我就不在此描述UML的歷史、簡介等東西。
  俗話說工欲善其事,必先利其器,要學UML也要有東西可以畫UML,筆者先前的公司比較有錢,所以採用IBM Rational Rose,但後來換到一家IC Design House,比較不重視軟體開發品質,所以就只好採用免費的工具,在眾多的免費工具中,筆者最推薦StarUML,因為這套軟體品質算穩定,而且還OpenSource,想研究的讀者可以Download Source Code來研究,不過如果沒有Delphi的開發功力,可能會看不是很懂;有機會的話,筆者會在撰寫Delphi / C++ Builder的文章。

2009年11月18日

第三節 建立自製元件圖

  新增自製元件到我們的專案方式:在library檔按下滑鼠右鍵,選擇「New Part」後將會出現如圖八之新元件屬性對話盒。

圖八:新元件屬性對話盒。
  我們是以USB接頭為例,所以我們此元件命名為「USB_Connector」在名稱欄位中,並且將元件前置名稱保留「U」,其餘的欄位保留內定值即可,然後按下「OK」後將會帶出如圖 九空白元件設計圖,所有繪製元件所需的工具列都在圖九的右邊。

圖九:元件設計圖。
 使用去安排元件的腳位 ,並在放置所有的腳位之後使用 將元件整個包含起來,如圖十所示,其餘本專案所用到而OrCAD內部並無此類元件則可以依此方式建立讀者所需的元件。

圖十:USB接頭元件。

第二節 設計開始

  使用【OrCAD Capture CIS】然後開啟一個新的專案,選擇「File→New→Project」,如圖四所示,您將看見如圖五所示的對話盒,點選「Browser」選擇欲儲存之位置,並將專案名稱取為「otp」之後按下「OK」即可。此時OrCAD會為您準備一個全新且空白的工作視窗,如圖六所示。

圖四:開啟新專案。

圖五:新專案資訊對話合。

圖六:空白的工作視窗。

  由於USB接頭 並非OrCAD內定元件,但由於該接頭為一個6PIN的元件,原則上是可以用OrCAD內建的Library\CONNECTOR\CON6來繪製,但為了增加可讀性,建議讀者可以建立一個新的元件以茲識別;建立新元件的步驟如下:
  點選「File→New→Library」,此時您的專案視窗將與圖七相似。以滑鼠右鍵點選該Library file並選擇「Save As」並將此Library存到..\library資料夾裡;

圖七:OrCAD專案視窗。

第一節 硬體設計工具簡介

  OrCAD是由Cadence 公司所開發適合用在電子電路設計 、模擬 及印刷電路版畫製 的一整套工具。
在開始使用OrCAD建立本專案之前,筆者建議先在專案資料夾下建立底下幾個資料夾以方便管理,讀者當然亦可依自身的習慣做適度的調整;至於如何安裝OrCAD,請讀者參閱相關書籍。
  • schematic-放置所設計的電路圖檔。
  • library-放置自製的電子元件及PCB Footprint。
  • PCB-放置所設計的PCB檔案及產出的Gerber file。
  • BOM-放置所需的製作材料清單及使用元件的相關資料檔。
  • 2009年11月17日

    第二章 硬體設計

      由於本專案的硬體包括USB Token, 個人電腦/伺服器及網路設備,若是逐一說明設計及實作方式,這可能將會是一本比聖經還要厚的書,有鑑於此,筆者硬體部分僅以USB Token做為說明,其他相關硬體設備,請讀者參閱其他書籍。
      USB Token所採用的控制器,在筆者所服務的公司,是採用專屬的硬體控制晶片,因此讀者是無法購得該晶片及相關資訊,所以筆者改以一般市面上可以獲得的晶片做為舉例,其功能方塊圖如圖三所示。

    圖三:USB Token方塊圖。

      圖三中USB控制晶片採用美商Atmel 編號為AT90USB1287的USB MCU,負責接受主機端所下達的命令,並做出適當的回應。  
    由於AT90USB1287及其連接的電子元件並無需大電流驅動及可順利運作,因此筆者採用USB Bus供電模式提供電力給MCU運作,所以圖三中的「Power」是由PC端的「USB」來供應;「Serial Prog.」是為了讓我們可以用非USB Bus作離線式更新AT90USB1287中的firmware使用; AT90USB1287內建3.3V的整流電路,所以後端的「Serial Flash」就不需要額外的整流電路,又因為該MCU具有SPI的介面,所以與Serial Flash也是採用SPI 方式溝通,外接Serial Flash是用來儲存在Client所需要的應用程式。