###### tags: `lsa` `ncnu` # Week 06 (2023/03/30) - Book mode: https://hackmd.io/@ncnu-opensource/book [TOC] --- ## 備份 > 內容在 Week 5 ## 自動化 ### 自動化特點 - 減少人類付出勞力以及介入的機會 - 利用軟體代替人力不段重複執行任務 - 節省時間 - 減少錯誤,提高效率 - 相較人的大腦,機器缺乏彈性 ### 自動化舉例 - 送餐機器人 - 自動包裝機 - 搬運機器 - 室內養殖循環系統 - 測試腳本 - 用來測試程式的一系列指令,模擬人工測試,檢查系統穩定性或功能等 ### 軟體開發生命週期 #### SDLC 介紹 SDLC 是一個管理框架 #### SDLC 特點 - 事先規劃,降低專案風險 #### 流程 - Strategy - 需求訪問 - Design - 依照需求文件設計與規劃 - Development - 實做 - Testing - 偵錯 - 確保可以正常運行 - 確認是否符合客戶的需求 - Deployment - 部署 - 使用者與開發者可以不同步 :::info ##### Alpha 環境 - 僅供開發團隊內部使用,測試所以新舊功能 ##### Beta - 使用對象:任何人 - 對外開放 - 提供使用者實際使用,收集使用者的 Feedback ::: - maintenance - 發布後,若使用者有問題就需要要維運人緣進行修正 #### 瀑布式開發 - 最傳統的開發模型 - 事前會詳細討論每一階段的任務,規劃整體系統的架構 - 優點 - 有清楚定義每階段任務 - 有事前規劃,開始開發時就可依照規劃快速進行 - 開發過程都有文件記錄 - 缺點 - 市場驗證時間長 - 軟體開發完後,可護會在最後看到成果 - 沒有彈性 - 開發途中客戶無法臨時增加需求 - 開發團隊開發過程中發現規劃有誤 與客戶的要求不符合 - 規劃不完全,重新開發的機會高 - 開發團隊會依照先前的計畫開發,過程不允許變更,一旦發現需要修正起初規劃的計劃書,開發團隊會退回規劃(Plan)的階段重新規劃 - 使用時機 - 客戶的項目要求不會改變 - 開發大型專案 #### 敏捷式開發 - 為什麼會發展 - 為了時代步調,市場需求變化很快 - 敏捷 != 快,不是讓開發得過程變快,而是短時間可以調整客戶需求 - 敏捷宣言(Agile Manifesto) - 個人與互動 重於 流程與工具 - 可用的軟體 重於 詳盡的文件 - 強調盡早完成產品,完成後再多花時間開發產品功能 - 與客戶的合作 重於 合約協商 - 強調持續與客戶溝通,定期與客戶討論工或產品呈現是否符合客戶的預期 - 回應變化重於宗尋計畫 - 強調價值,開發的過程中發現客戶需求改變,即時修改專案 - 優點 - 開發前不用嚴格規劃 - 彈性高 - 客戶臨時更動要求 - 風險較低 - 因每個子項目 / 功能完成都能直接呈現給客戶,能及時更正 - 缺點 - 文件少 - 若開發團隊的流動性高,開發的文件過少,新人加入團隊時,缺少可以參考、理解的工具,會導致專案開發時間可能超出預期 #### DevOps ##### 定義 - Developers 開發團隊 - Operators 維運團隊 - 一種 減少以上兩個團隊衝突的 模式 - 各團隊所用的模式不盡相同