Tech Note
課程
2019
軟體工程
Process Models
Describe the characteristics of the plan-driven and agile processes.
Draw and describe the major activities of the waterfall process.
Draw and describe the major activities of the Scrum process.
大綱:
Scrum的3種角色
在Scrum敏捷開發中,提出了3種主要的角色,分別說明如下
Scrum的4個會議
在每一個衝刺(Sprint)期間,除了團隊需要實際執行分內的任務外,Scrum還定義了4個重要的會議,分別簡單敘述如下
Scrum的3項產出
在Scrum敏捷開發中,一共有3項重要的產出,分別簡述如下
Describe the differences between the plan-driven and agile process models in terms of their philosophy and applications.
Plan-driven 和 Agile的相同點:
Plan-driven 和 Agile 不同之處:
Agile:
Plan driven:
但是若每個方法能被適當的執行,這些爭論不不會存在,因為同樣都能達到很好的效果。
所以重點應該是了解它們各自的優缺點,以及適用的時機,看看是否符合你目前專案的需求。
plan driven作的好的經理,同樣也能把agile方法做的好。
plan driven作不好的經理,通常也無法把agile方法做的好。
CMMI
What is CMMI?
What is it used for?
What is CMMI staged representation?
以階段來分別:
依性質來分:
這些PA分屬於流程管理、專案管理、工程、與支援等四大類
Explain the advantages of implementing CMMI.
Other process models
Draw and describe the major activities of the Unified Process (UP).
Draw and describe the major activities of the spiral model.
一個典型的螺旋模型應該由以下的步驟構成:
Theory and Practice
我們的團隊決定採用敏捷開發,主要原因如下:
敏捷團隊共享協作文化,當每個人對於Project的認知與實作能力差不多時,效率往往會比較高。
而當團隊進入穩定的開發時,就可更好的預測軟體開發的各項計畫,使敏捷開發的團隊在工作效率上較高。
我們的團隊在實務上經驗不足,且軟體工程背景不深,若採用Plan-driven的做法的話,很可能會因前期規劃不佳導致中後期要一直不停的修正錯誤導致浪費效率。
在技術層面:
我們採用網頁的設計,以PHP+MySQL+Apache為主要的網頁架構,本團隊在網頁開發經驗不多,以這三者為主體的開發方式較適合入門,且開發環境容易架構且免費。
Consider the requirements engineering process.
Describe the major requirements engineering activities.
是一個收集和定義系統提供的服務的過程。
需求工程流程包括以下主要活動:
b.Draw an activity diagram to explain the process of requirements change management.
c. Discuss the associated Requirements Engineering (RE) activities within Scrum framework.
What kinds of Scrum meeting and artifacts are related to RE activities?
What kinds of RE techniques, such as prototyping, can be used and benefits Scrum?
(note: you may specify your thinking for Agile Requirements Engineering)
You have been appointed to develop a vending machine that has an embedded system to control the vending machine
販賣機系統的作業與功能需求描述表達如下:
消費者來到自動販賣機前面,瀏覽商品資訊消費者欲知詳細商品資訊,可進一步了解商品細部說明。
消費者可購買一種商品或多種商品,數量以五瓶為限(每項商品的預設值皆為一瓶)。
消費者可對商品進行數量或商品之修改。
消費者選定購買商品後,自動販賣機會自動進行庫存檢查並計算總金額,列出所購買之清單(註:必需鏈結相關的購買藍圖/資料詞彙)。
消費者進行購買清單之確認。
消費者使用現金付款的機制:使用現金,系統確認消費者在45秒內投入金額,完成付款。
消費者使用手機付款的機制:系統感應手機定確認手機身分,系統紀錄購買應付的金額,傳回手機,消費者完成付款動作消費者領取購買商品,系統自動盤點商品存貨(註:必需鏈結相關的補貨藍圖/資料詞彙)。
Software architecture
Model-View-Controller (MVC) architectu。
MVC模式的目的是實現一種動態的程式設計,使後續對程式的修改和擴充簡化,並且使程式某一部分的重複利用成為可能。
此模式透過對複雜度的簡化,使程式結構更加直覺。
軟體系統透過對自身基本部分分離的同時也賦予了各個基本部分應有的功能。專業人員可以依據自身的專長分組:
控制器(Controller)
視圖(View)
模型(Model)
Draw and describe the clean architecture.
Consider an ATM system with its partial class diagram.
Describe the 5 key activities in an object-oriented design process.
The SOLID stands for five basic principles of object-oriented programming and design.
Initial | Stands for | Name | Concept |
---|---|---|---|
S | SRP | Single Responsibility | 認為物件應該僅具有一種單一功能的概念。 |
O | OCP | Open-Closed | 認為「軟體體應該是對於擴充開放的,但是對於修改封閉的」的概念。 |
L | LSP | Liskov Substitution | 認為「程式中的物件應該是可以在不改變程式正確性的前提下被它的子類所替換的」的概念。 |
I | ISP | Interface Segregation | 認為「多個特定客戶端介面要好於一個寬泛用途的介面」的概念。 |
D | DIP | Dependency Inversion | 認為一個方法應該遵從「依賴於抽象而不是一個實例」的概念。 |
Suppose that you are taking an Interdisciplinary Program of NTUT.
What is Domain-Driven Design (DDD)? What are the building blocks of DDD?
Consider software evolution?
What are the differences between refactor and reengineering?
Describe the three types of software maintenances?
適應性維護
完善的維護
預防性的維護
What are bad smells (or code smells)? How will you relate bad smells and preventative maintenance?
Consider a program that takes a numerical score.
Consider the following program letterGrade.java.
Illustrate the application of a configuration management (CM) tool, such as Git or GitHub, in software development.