[案例研討] 雲端與安卓系統分析與實作-以豪小子App為例-06

*** 自本篇後續所有的文章內容,作者為賴信仁 (Ringle Lai),並已經由授權延續本案例研討系列。***

 

七、 雲運算技術總覽

7.1. 雲運算的歷史與分類
自從互聯網(Internet)開始進入電腦的世界以來,電腦技術的進展,以超越人類能夠想像的速度超高速發展中。

中國人有句話說:「積沙成塔,聚少成多」,用這句話來形容近來的電腦運算能力的進展,是再適合也不過的了。

在網路環境還不發達的年代中,所有的電腦都是獨立的個體,各自有各自的運算能力,彼此沒有辦法互相溝通,因此,要進行大量的運算,就必須要架構出「超級電腦」來進行超大量的運算;

當網路環境越來越成熟時,區域網路利用「乙太網」(ethernet)進行溝通,因此,在區域網路的環境中,可以架構出「叢集式運算」(Computer Cluster)的環境,讓多個Server可以透過互享資源的方式,將運算能力以倍計成長;

但「叢集式運算」的環境,對於很多的系統管理人員來說,卻是一個惡夢的開始,系統管理人員必須耗費相當多的心力來架構出「叢集式運算」的環境,而硬體及軟體成本也因為要架構出這樣的環境而大幅飆升,原先只是想要取代大型主機,卻發現要耗費的心力其實比維護大型主機更多!

基於這樣的一個背景,有些人開始思考是否有更簡單的方法來架構出一套具備叢集式運算能力,但在管理上更簡單、成本上更節省的方式。

「網格運算」(Grid Comupting)就是在這樣的背景上應運而生。

由於網際網路的傳輸能力大幅提升,無論在速度或是可靠性上,網際網路的能力都逼近了區域網路,因此,是否能夠運用網際網路的特性來進行分散式的運算,就成了計算機科學中的「顯學」。

網格運算主要是將整體的網際網路視為一個「有機體」,在這個有機體中,所有加入「網格」的個人電腦都視作是該有機體的「細胞」,每個「細胞」可以提供他多餘的運算能力,當有一個「運算任務」發出後,各個節點分散了整體的運算任務,讓整個的「網格」可以發揮最大的能力來進行運算。

「網格運算」可以說是分散式運算中的一個極致運用,但是網格運算在管理上仍然是一個很大的問題,由於參與網格是一個「自由」且「自發性」的行為,因此,同一個運算任務究竟需要多少的時間可能都沒辦法事先預測,也因此,是否有更適當的方式能夠同時兼顧「分散式運算」與「集中式管理」?

「雲運算」似乎是達成上述目標的其中一個「聖杯」。

何謂雲運算呢?根據美國國家標準技術研究所(National Institute of Standards and Technology, NIST)的定義,雲運算是:
「Cloud Computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model is composed of five essential characteristics, three service models, and four deployment models.」(ref: The NIST Definition of Cloud Computing; NIST Special Publication 800-145; Peter Mell & Timothy Grance)

雲運算是一個具備普及性、便利性及隨選式網絡的模型,其可以存取共用的可配置的電腦資源庫(如網絡,伺服器,存儲,應用程式和服務);使用者可以運用最少的管理成本快速地與服務供應商互動。

雲運算模式是由五個關鍵特性、三種服務模型以及四種部署模型所構成。

閱讀全文 »

[案例研討] 雲端與安卓系統分析與實作-以豪小子App為例-05

六、使用案例的實現 (use case realization)-利用循序 (sequence)圖表達物件之間的互動合作-Cloud Server System

圖 12、使用案例的實現 (realization)
(點擊圖片鏈接看原圖)圖12、使用案例的實現 (realization)

    關於使用案例實現的表達意涵:

  • 可以藉由 UML 的合作 (collaboration)圖示,來表現與使用案例的實現 (realization)關係。
  • 使用案例的實現可以是程序導向或物件導向的實作方式,沒有絕對的方法。
  • 程序導向 (procedure-oriented)的實作細節可利用活動圖 (activity diagram)來表達實作的設計。
  • 物件導向 (object-oriented)的實作細節則可以物件合作圖 (如溝通或循序圖)來表達實作的設計。
  • 本例均以循序圖 (sequence diagram)來表達物件內部互動合作的實作。

閱讀全文 »

[案例研討] 雲端與安卓系統分析與實作-以豪小子App為例-04

五、抽象層的結構設計 (abstract structure design)-Cloud Server System

  • Control (控制)
  • 每一個使用案例,對應並規畫一個控制物件 (controller)。控制物件名稱,一般命名建議為「Use Case Name + Control」。例,「彙整林書豪新聞資訊」,則控制物件名稱為:「彙整林書豪新聞資訊Control」。

    圖 9、控制物件類別圖
    (點擊圖片鏈接看原圖)圖9、控制物件類別圖

    閱讀全文 »

[案例研討] 雲端與安卓系統分析與實作-以豪小子App為例-03

四、為每一個使用案例,撰寫使用者需求陳述 (requirement statements)

o 雲端系統 (Cloud Server System)

圖 5、「彙整豪小子消息」使用案例陳述
(點擊圖片鏈接看原圖)圖5、「彙整豪小子消息」使用案例陳述

圖 6、使用案例陳述的細節性紀錄
(點擊圖片鏈接看原圖)圖6、使用案例陳述的細節性紀錄

Use Case Name 彙整豪小子相關消息
Pre Condition 1. 排程系統已設定排程啟動時間。
Brief Description 排程系統定時啟動「彙整豪小子相關訊息」的系統服務,系統 (Cloud Server)會請 Google Custom Search Server 搜尋相關的新聞資訊,並將搜尋結果儲存以供後續系統的取用。
Basic Course of Event. 1. 排程系統依照 [設定時程] 啟動系統服務。
2. 系統依據 [搜尋設定條件] 請 GC2S (Google Custom Search Server)系統至所指定的網址搜尋新聞資訊。
3. 系統取得 [搜尋結果] 後,依照 [分類規則] 進行新聞資訊分類。
4. 系統將 [搜尋結果] 儲存至私有的資料庫。
Requirements [設定時程]
由系統管理者進行排程設定,預設 (default)為每 10 分鐘啟動系統服務。
[搜尋設定條件]

  • 網站設定(可由管理者或是由手持式裝置傳入)
     o 網站名稱
     o 網站 URL
  • 關鍵字設定(可由管理者或是由手持式裝置傳入)
     o 關鍵字(如:林書豪, Jeremy Lin, 豪小子....等)
[搜尋結果]
標題 (Title)
內文Sample
類別 (Class)
符合度
[分類規則]
依據類別分配到不同的類型(目前分為三類)中
1. Vedio
2. Piicture
3. Text
Exception [搜尋結果傳回錯誤代碼]
3a:GC2S 傳回的搜尋結果為錯誤代碼
 1. 系統紀錄[搜尋異常訊息]。
 2. 系統將此異常訊息透過電郵寄給系統管理者。
References 1.「Google Custom Search Server」Reference Guide.

閱讀全文 »

[案例研討] 雲端與安卓系統分析與實作-以豪小子App為例-02

三、 利用使用案例 (Use Case)圖界定系統範圍與定義系統功能

o 雲端系統 (Cloud Server) use case model

圖 3、Cloud Server use case model
(點擊圖片鏈接看原圖)圖3、Cloud Server use case model

    o Use Case (使用案例):表達系統功能 (system functions)。

  • 彙整豪小子相關消息。
  • 設定豪小子搜尋條件。
  • 查詢豪小子新聞訊息。
    o Primary Actor (主要參與者):使用系統所提供的服務 (系統功能)。

  • Scheduler System (排程系統):定時啟動「彙整豪小子新聞資訊」批次作業 (Batch Job)。
  • Administrator (系統管理者):管理者可編輯並設定豪小子搜尋的條件 (condition)。
  • Android App System (安卓豪小子App):安卓App至雲系統查詢已整理過的豪小子新聞資訊。
    o Supporting Actor (支援性參與者):系統需要取得外部系統支援的服務。

  • Google Custom Search Server:雲系統所下的搜尋條件,透過 Google Search APIs 將搜尋的結果儲放至該伺服器內。後續的程序再由雲系統取得已搜尋的結果。

閱讀全文 »

[案例研討] 雲端與安卓系統分析與實作-以豪小子App為例-01

前言

這是今年 (9月底)至大陸「深圳」軟件園區-「北京大學產學研究中心」授課所使用的案例研討 (case study)。

短短兩天的授課時間,展現如何整合「雲端 Cloud) 資料彙整」與「安卓 (Android) App」的系統分析開發至程式寫碼等涵蓋一個開發循環 (iteration)。

第一版的 Model 檔在此提供下載,可作為一個小型專案的範本參考 (Java eclipse 源碼待至後續論及開發寫碼時提供下載)。讀者可至 EA Saprx System 下載免費的 EA Viewer 以讀取該 Model 檔。

o 豪小子_雲端與安卓系統分析 Model 檔。
o EALite.exe (free, EA UML Viewer)

案例簡述

HSDc. 軟件設計公司 打算因應「林來瘋 (Lin-Sanity)」熱潮,開發一個手持式裝置的行動App (暫先命名為 「豪小子」 ),初步的版本先以「安卓 (Android)」系統為開發平台,後續的版本則準備擴展至「iOS」、「Windows Phone」等主要系統平台。

主要的功能需求 (functional requirement),行動用戶可以透過「豪小子App」隨時得知關於「Lin-Sanity」的相關新聞 (news)。用戶不需至各個相關的網站自行搜尋關於林的新聞,而是已由「雲系統 (Cloud System)」彙整其相關的新聞資訊,行動App僅需連至「雲系統」取得相關新聞的索引鏈結 (index link)即可。

「雲系統」的建構可以至「ISP (Internet Service Provider)」租賃,以減少建置與維護成本。本例的「雲系統」係架設在「Amazon EC2 (Elastic Compute Cloud)」。

一、利用 EA UML 工具規劃塑模 (modeling)專案目錄

圖 1、利用EA UML工具規劃塑模專案目錄
(點擊圖片鏈接看原圖)圖 1、利用EA UML工具規劃塑模專案目錄

    重點摘要:

  • UML 目錄規劃如同文件管理一般,每個人/每個團隊 均有屬於自己風格的整理方式,沒有絕對的規範。
  • 文件管理以「資料夾 (folder)」為容器 (container)收納單位;UML 專案則以「套件 (package)」為容器單位。
  • 一般建議的「root-package」有兩大面向-「需求 (requirement) view」與「結構 view」,但這也不是絕對。
  • 「package」內可容納「sub-package」與「uml 元素 (elements, 如同 files)」。

閱讀全文 »

軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal