關於軟體需求變動的一個小案例思考

*** 本文同步發表於 FB 社團-軟體設計鮮思維 ***

一個發生在昨天輔導單位的一個小小的案例,應該也可以藉此讓許多開發人員反思下...。

某一技術高深的程式開發人員 (就簡稱 PG)對一已進行開發至一半時間的專案,突然 User 代表 (關係利益人,就簡稱 User)丟了一個針對要計算折扣代碼的邏輯的需求進來,而且看來好像挺複雜的樣子。

PG 心態上不是很愉快,都已進行至一半,現在才突然有這樣的需求,需要為此多花一至兩天的時間來撰寫它,而這會影響到既定的上線時間。

嗯,我的判斷是當然會多花一時間,但不至影響到預定的時間。心態上的不適 (為何這麼重要的需求到中後期才提出來)遠比實作的難度大很多!

我能作的是什麼? (在這個極小型的專案我兼職擔任 PM),幫開發人員多爭取一天的休息時間,讓他們心理好過些。

然後昨天這位 PG 花了很多時間在撰寫相關這邏輯的實作,甚至很認真的透過 SA 與 User 提相關的問題。

嘿!這時刻我給他制止了。。

閱讀全文 »

[個案研討] FTP Server 是否可為企業系統的外部系統?

** 本文同步發表於 FB 社團-軟體設計鮮思維 **

月初在內湖某大電視購物/網購平台總部的資訊單位授課。喔,先誇讚下,約有50來位的學員,上課過程大都蠻踴於提問且活潑,可說上得挺順暢愉快。

其中在談及使用案例模型 (use case model)的需求架構分析時,關於外部系統的定義,個人特別強調會是透過介面 (interface)的整合,如透過 web service or message service 等),而不會是透過資料庫的整合方式。

然後其中有位學員就問了,如果連結外部系統是透過 FTP,也就是開發中的系統這邊為 FTP Client,然後以批次定時處理的方式,傳送到外部單位的 FTP Server,對方也是採用批次自動處理的作法,把接收下來的檔案作解析處理。

這樣 FTP Server 是否是開發中系統的外部參與者 (actor)?我倒是沒想到現在會有這樣的作法,最初的直覺當然不會是。

不過課程休息時,再仔細想想,回歸到所謂外部系統整合的定義,是否有透過介面來連結? 事實上,FTP 的 Client/Server 是有的 (當然就是透過 FTP 協定),且兩邊系統之間並未透過手動操作,而確實是系統對外部系統之間有達成自動化的整合 (雖然是透過批次處理的方式)。

為何會有這麼「low」的作法?其實這與實作技術沒有太大關係,而是因為當要與外部單位的系統作整合時,外部單位總會有「安全性」的考量,不一定願意釋放出可讓系統直接呼叫的介面。

閱讀全文 »

[案例研討] 雲端與安卓系統分析與實作-以豪小子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.

閱讀全文 »

軟體思維顧問

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

Personal