簡述何為瀑布式 (waterfall)軟體分析設計文件?!

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

什麼叫做「Waterfall (瀑布式)」文件?

就是文件整理看起來很用心的樣子,經由不斷地開會與確認諸多細節,然後在某次的會議決定階段告一段落,就給予該文件一個版號 (0.1, 0.6, 0.8 .....)。

所以,一個功能模組或作業流程,經過了幾次的版號更新,最終總算得以定案,然後再交付給 PG 據此撰寫程式碼。

不管大或小的單位,稍有組織性重視文件設計 (得以保存與傳承企業資產,其實是好事),幾乎就是採以這類 "瀑布式" 的開發模式。

如果這樣能順暢移轉至程式寫碼,那當然沒有問題。但是,需求分析其實是一種假設與期望,越是要求精確,越是不容易釐清。

那麼,為何精確度的細節非得要在文件分析階段就要求完整呢? 為何不搭配每一個階段的文件分析告一段落甚或當下就寫成程式碼呢?

每一次版號的演進,文件與程式碼從功能框架的較大目標範圍,再逐漸地往細節 (即精確度)貼近。

簡而言之,設計文件與程式碼本來就是「一體兩面」!設計文件引導程式碼的開發;程式碼的修正更新文件原來的假設。

所以,現實上當文件的版號制訂為最終版時,那麼,程式碼應該也是接近完工了。

為何不這樣作?這樣不是輕鬆又愉快? 其中一個很大的問題就在於,諸多實作的程式開發人員不太容易掌握所謂的「不確定性」開發態度。也就是說,如果沒有提供很精確的細節,開發人員已經不知道要如何寫出程式碼。

總之,各類角色的開發人員,對於軟體開發的最重要修煉就是要懂得先學會如何抓到「大」的主題 (topic),再來才是往「細」的程序/邏輯/欄位 作精。

開源免費下載-完整設計模式 (design patterns) 程式碼(C#.NET)/UML Model 檔

關於爾後我們 HSDc. 軟體設計顧問所開設的課程,除了教材內容尚無開放以外,其它包括完整可執行的程式碼、UML Model 檔,均以開源方式 (open source)免費供下載。

所有開源文件的釋出 (release),均可以透過加入 FB社團-軟體設計鮮思維 獲取最新的訊息。而所有的程式碼/UML Model,我們則是一律統一放置於 GitHub,當然在 README 文件上我們會附上基本的操作說明。

以後這些開源文件,尤其是案例程式碼,我們均會不定期持續版本更新。讀者可以透過 Git 工具隨時作同步更新。

目前提供了兩份開源文件:

另外補充關於上述設計模式 (Design Patterns)案例的說明。

在 C#.NET 程式碼部分 (Java/Spring 版本後續會另行公布),包含了完整 23 個設計模式範例;而關於 UML Model,則還增加了以周遭生活案例的塑模 (modeling),讓每一個設計模式的目的更容易理解。

關於 C#.NET 程式碼的結構部分,主要分為兩個專案 (project):一為 Web MVC by ASP.NET;另一為 Control by POCO (plain-old CLR objects)。

關於本案例的設計模式物件分層結構,可以參考下圖:

圖、圖、設計模式的物件分層結構

圖、設計模式的物件分層結構

閱讀全文 »

Redmine 是 Issue Tracking 還是監控管理的工具?!

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

Redmine, Redmine...,它是一套優秀的 Issue Tracking 工具,但是只要有管理階層介入,一切就都變了調。

我親眼見識過已經有好幾個單位的主管/CEO,利用它來做:

1. 開發時程控管,展現看起來很像一回事的甘蔗圖。

2. 更甚者,要開發人員在其上填寫 TimeSheet,老闆要量化監控每位工奴的工時紀錄 (即使小貓沒有幾隻,但老闆可是在乎得很每個人表面的量化)。

結果理應是開發者之間很好的開發溝通機制,針對最根本開發過程中會遇到的 Issue/Bug/Feature 作有效的紀錄/傳承/學習,更可以與版控系統其內程式碼的提交 (commit)流暢地建立關聯。

一旦淪落為監控/管理的工具,Issue Tracking 大致上就毀了~ 開發者就少有人會願意主動拋出 Issue,如此就遑論可以建立起平行的學習型組織了;即使老闆都這麼說-我尊重與鼓勵每位 Member 踴躍地拋出議題,讓團隊得以永續成長...。

[實作筆記] Visual Studio 2012 新增 MVC 5 Project

Visual Studio 2012 系列並沒有支援 ASP.NET MVC 5 的專案樣版 (template),目前仍僅提供 MVC 3/4 的樣版。

MVC 5 的新功能 (New Features)可參考:What's New in ASP.NET MVC 5。主要因為 MVC 5 直接支援 Bootstrap 作為 Layout and Theme 的 View Framework;且支持的 Bootstrap 版本為 3.02,而原來支持的 2.x 與 3.x 的 CSS Tag 可說大幅翻修,所以若是開發新的 Web 專案,還是乾脆以 MVC 5 作為樣版較為合適。

如需要讓 Visual 2012 可以使用 MVC 5 的樣版,需要:

不過安裝完成後,雖然可以新增 MVC 5 專案樣版,但卻只能選擇-「ASP.NET MVC 5 Empty Project」樣版,也就是只為空的樣版框架,並沒有像如 MVC 4 可以選擇完整 Web 的框架。

可以參考這一篇-Extended Template for ASP.NET MVC 5 from Visual Studio 2012。下載該篇作者所提供的樣版檔案,並複製至下述目錄 (需依該目錄結構):

%USERPROFILE%\Documents\Visual Studio 2012\Templates\Project Templates\Visual C#\Web

閱讀全文 »

{書稿} 建置 Android 開發環境-02

安裝與設定 Eclipse EGit

什麼是 EGit?

EGit 是 Eclipse 的一個團隊提供者 (team provider)套件,它可以讓開發人員直接在 Eclipse IDE 環境內使用 Git 版本控制系統。

EGit 是基於 JGit 套件 (library)所發展,而 JGit 係以 Java 來實現 Git 完整功能的輕量級 (lighweight)套件庫。

安裝 EGit

自 Eclipse 4.2 以後版本,EGit 已成為核心組件,並不需要另行安裝;而若使用 Eclipse 較舊版本,則 EGit 是被視為外掛 (plug-in),可以透過 Eclipse 安裝管理員 (installation manager)安裝。

在 Eclipse 選單上點選【Help】→【Install New Software...】,在出現的對話框內,輸入下列 URL 位址: http://download.eclipse.org/egit/updates

然後按照對話框提示的訊息完成安裝。

圖、安裝 EGit 外掛

圖、安裝 EGit 外掛

閱讀全文 »

{書稿} 建置 Android 開發環境-01

安裝 Android 開發工具

Android App 開發環境只要設置下列兩個開發套件即可:

  • Java SE (Standard Edition)。
  • ADT (Android Development Tools) Bundle。

Java SE

Android App 是以 Java 語言撰寫的,自然需先下載 JDK (Java Development Kit) 的編譯環境。

請至 https://developer.android.com/sdk/index.html 下載 JDK 最新版本;注意下所對應的作業系統、以及 32或64 位元的版本檔案,然後下載直接執行安裝即可。

本書為 Windows 7 x64 的開發環境,最新的穩定版本為 JDK 7,所下載的參考檔案名稱為 jdk-7u51-windows-x64.exe

ADT Bundle

Google 已為 Android 開發人員準備了一套完整的開發套件-ADT Bundle,可讓開發人員不用再各別安裝與設定開發環境,降低 App 開發的門檻。

關於 Android 開發工具,可參考其開發人員首頁 https://developer.android.com/sdk/index.html 獲取更多相關資訊。

ADT Bundle 包含了下列幾個開發套件:

  • Eclipse + ADT plugin。
  • Android SDK Tools。
  • Android Platform-tools。
  • The latest Android platform。
  • The latest Android system image for the emulator。
下載與設定 ADT Bundle

在上述的網頁,點選【Download】下載取得 SDK ADT Bundle for Windows (32/64 位元)。

將所下載的壓縮檔 (檔名為 adt-bundle-.zip) 解壓縮至合適的位置內並可更名較簡短的資料夾名稱 (e.g. C:\adt-bundle-windows)。

開啟資料夾內 /eclipse/ 目錄並執行 eclipse.exe,設定工作區 (workspace)專案儲存目錄 (e.g. C:\Projects\workspace),如此即完成 ADT 的初始配置。

軟體思維顧問

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

Personal