Agile Software Development
修改紀錄
2023/06/04 (重整內容)
2023/09/05 (更新內容)
2023/09/18 (更新內容、調整進度)
2023/09/25 (更新內容)
2023/10/06 (微調內容、新增BDD書籍連結)
2023/11/19 (內容微調)
2023/12/02 (新增自動化測試連結)
2023/12/14 (新增書籍連結)
關於這個網站
這個教學網站是為了112學年度輔仁大學資訊管理學系碩士在職專班的「敏捷式軟體開發」課程。
第一週 09/11
課程介紹
了解敏捷開發的精神與實務
以實作的方式體驗敏捷開發,歡迎利用copilot/ChatGPT
利用React開發,資料庫利用firestore,部署到vercel
身為資管系的學生,我們需要什麼?
如果每年都留下一點成果,各位會想留下甚麼?
近幾年大學部專題成果
成績
小組專題實作 (70%)
根據組內互評
個人 (30%)
期末課程回饋與建議 (5%)
印象最深刻的課程內容或活動 (2%)
課程建議 (3%)
課堂參與 (10%)
自主閱讀心得 (自主學習週作業) (15%)
期刊或學位論文一篇 (6%)
書籍一本 (9%)
第二週 09/18
同學自我介紹
學期專題
利用tronclass許願
第三週 09/25
利用Clickup 進行專案管理
我們看看許願池裡的願望,利用按讚,先選一些重要需求,接下來依重要性由發想的同學帶領們我們以User Story呈現
Story name
As a (角色, who)
I want (需求, what)
so that (價值, why)
Scrum簡介
我們來嘗試srum of scrums
Chief Product Owner、Scrum of Scrums Master
各組的PO及SM代表團隊參加scrum of scrums團隊,再選出這兩位同學
如果全班分為5組,6~7位同學一組,各組都有一班生、在職生,我們來分配吧~
The Scrum At Scale® Guide (2.1版)
Advice on Conducting the Scrum of Scrums Meeting
一些進行scrum of scrums會議的建議 (1) (以上文章的中文版)
一些進行scrum of scrums會議的建議 (2) (以上文章的中文版)
組內角色分配 (PO、SM)
UX / Design Thinking也都開始強調逐步演進
第四週 10/02
第五週 10/09 (不上課)
Scrum (自主學習)
從Scrum看時間管理與團隊整合 (deeplink分享)
The Scrum Guide
Git (自主學習)
git新手入門教學 (deeplink分享)
開發工具簡介 (自主學習)
第六週 10/16
Sprint Planning 1
開發準備工作
確定開發工具 & 開github帳號
Git (持續性整合)
第七週 10/23
學期專題
Daily Scrum
利用15分鐘進行Daily Scrum
請各組持續整理所有的會議紀錄 (Sprint Plannig、Daily Scrum)
Definition of Done
產出物的完成標準 (不是需求)
例如,須通過哪些測試,何時需要程式審查 (code review)?
測試計畫
如何進行不同的測試? 甚麼樣的情況需要什麼樣的測試?
第八週 10/30
學期專題
Daily Scrum
將專案部署到vercel
為何敏捷強調Code refactoring?
第九週 11/06
Sprint Review 1
Sprint Retrospective 1
Sprint Planning 2
第十週 11/13
學期專題
Daily Scrum
第十一週 11/20
組內評估
請大家討論期末分數的評估方式,並形成共識
先進行一次初步評估
下週就依這個共識給一個組內評估
學期專題
Daily Scrum
第十二週 11/27
Sprint Review 2
Sprint Retrospective 2
Sprint Planning 3
第十三週 12/04
學期專題
Daily Scrum
第十四週 12/11 (不上課)
Software Quality
軟體品質 (deplink分享)
Code Refactoring (自主學習)
Design Patterns (自主學習)
第十五週 12/18
Sprint Review 3
Sprint Retrospective 3
第十六週 12/25 (不上課)
Domain Driven Design (自主學習)
第十七週 01/01
彈性多元學習週
自主閱讀心得 (自主學習週作業) (15%)
期刊或學位論文一篇 (6%)
書籍一本 (9%)
第十八週 01/08
彈性多元學習週
自主閱讀心得 (自主學習週作業) (15%)
期刊或學位論文一篇 (6%)
書籍一本 (9%)
延伸閱讀
期刊/研討會論文 (大部分文章可以透過scholar.google.com找到,IEEE software比較新的論文可透過圖書館下載)
敏捷
Sutherland, J. (2001). Agile Can Scale: Inventing and Reinventing SCRUM in Five Companies, IT Journal, 14(12), 5-11
Scrum of scrums (IDX Systems)
Fairbanks, G. (2022). Two Kinds of Iteration, IEEE Software, 39(1), 114 - 117
design-focused iteration, code-focused iteration
需求
Gregory, S. (2022). What Does the Future Hold for Requirements Engineers?, IEEE Software, 39(4), 18-21
Kassab, M., Laplante, P. (2022). The Current and Evolving Landscape of Requirements Engineering in Practice, IEEE Software, 39(5), 76-83
測試
Ebert, C., Bajaj, D., Weyrich, M. (2022). Testing Software Systems, IEEE Software, 39(4), 8-17
CI / CD / DevOps
Roche, J. (2013). Adopting DevOps practices in quality assurance. Communications of the ACM, 56(11), 38-43.
Wahaballa, A., Wahballa, O., Abdellatief, M., Xiong, H., & Qin, Z. (2015, September). Toward unified DevOps model. 2015 6th IEEE international conference on software engineering and service science (ICSESS) (pp.211-214).
Jabbari, R., bin Ali, N., Petersen, K., & Tanveer, B. (2016, May). What is DevOps? A systematic mapping study on definitions and practices. Proceedings of the Scientific Workshop Proceedings of XP2016 (pp. 1-11).
Callanan, M., & Spillane, A. (2016). DevOps: making it easy to do the right thing. IEEE Software, 33(3), 53-59.
Ebert, C., Gallardo, G., Hernantes, J., & Serrano, N. (2016). DevOps. IEEE Software, 33(3), 94-100.
Dörnenburg, E. (2018). The path to devops. IEEE Software, 35(5), 71-75.
Gokarna, M., & Singh, R. (2021, February). DevOps: a historical review and future works. 2021 International Conference on Computing, Communication, and Intelligent Systems (ICCCIS) (pp. 366-371)
Beetz, F. Harrer, S. (2022). GitOps: The Evolution of DevOps?, IEEE Software, 39(4), 70-75
Khan, M. S., Khan, A. W., Khan, F., Khan, M. A., & Whangbo, T. K. (2022). Critical Challenges to Adopt DevOps Culture in Software Organizations: A Systematic Review. IEEE Access, 10, 14339-14349.
軟體開發
Ebert, C., Montenbruck, J. M. (2022). Industry Survey: The Magic Triangle of the New Normal, IEEE Software, 39(3), 12-20
quality, cost, time -> need for innovation, lack of competences, cost complexity trap
工具
Ebert, C., Avasthi, P. (2022). Technologies for Agile Teams, IEEE Software, 39(5), 21-27
學位論文
敏捷
蔡慧蘭 (2014) 敏捷軟體開發方法於台灣資訊服務業之研究 輔仁大學資訊管理研究所碩士在職專班論文
林于桔(2019) 應用敏捷開發法進行軟體專案管理之行動研究:以某組織委外開發 A 專案為例 輔仁大學資訊管理研究所碩士在職專班論文
測試
廖家盛 (2015) 軟體測試應用現況之探討 輔仁大學資訊管理研究所碩士論文
CI / CD / DevOps
陳胤宏 (2014) 資訊系統持續整合應用之個案研究 輔仁大學資訊管理研究所碩士論文
陳易昇 (2017) 資訊系統持續整合之障礙:組織與技術觀點 輔仁大學資訊管理研究所碩士論文
可透過輔仁大學博碩士論文檢索系統取得電子檔
齊唯哲 (2023) DevOps運作現況之個案研究 輔仁大學資訊管理研究所碩士論文
書籍
敏捷
Martin, Robert C. (2020) Clean Agile : Back to Basics (Paperback) (無瑕的程式碼 敏捷篇:還原敏捷真實的面貌 盧國鳳、陳錦輝譯 博碩文化)
【還少一本書】Clean Agile (搞笑談軟工/Teddy Chen)
新加坡商鈦坦科技(2021) 鯨游藍海:鈦坦科技的敏捷之路 翻滾海貍工作室 (系辦還有一些贈書可索取)
Scrum
Kanban
範疇、需求
Mike Cohn (2004), User Stories Applied: For Agile Software Development (Mike Cohn的使用者故事:敏捷軟體開發應用之道 使用者故事志工群 譯)
Smart, John Ferguson,Molak, Jan (2023) BDD in Action, Second Edition
測試
CI / CD / DevOps
DDD
Eric Evans(2003) Domain-Driven Design: Tackling Complexity in the Heart of Software (領域驅動設計:軟體核心複雜度的解決方法)
重構
Martin Fowler (2019), Refactoring, 2nd ed. (重構(第二版):改善既有程式的設計 賴屹民 譯)
第一版以java為範例,第二版改以Javascript為範例
網頁
敏捷
Scrum
The 2020 Scrum Guide (2020) / 2020 Scrum 指南 **
Domain Driven Design
專案管理
Poorly defined (or, god willing, undefined!) outcome
Solving the wrong problem.
Not enough communication.
No plan or timeline.
Lack of accountability.
Moving the goalposts too often.
Inadequate documentation and tracking.
Badly defined system requirements.
Poor preparation.
Unrealistic expectations.
資訊安全
5 most important vulnerabilities every developer should be aware of
SQL Injection
Broken Authentication
XSS (Cross-Side-Scripting)
Using Web components with known vulnerabilities
Sensitive Data Exposue