1 of 53

系統分析設計、軟體開發知識 教學簡報���TIPCI學會製作

2 of 53

系統分析與設計 教學簡報

3 of 53

1.1 系統開發生命週期(SDLC)

  • 1.1.1 SDLC 的定義:
  • 系統化方法,用於計劃、建立、測試和部署資訊系統。
  • 1.1.2 主要階段:
  • • 需求分析
  • • 系統設計
  • • 開發與實作
  • • 測試
  • • 部署
  • • 維護與更新

4 of 53

1.2 需求分析與系統設計的關鍵步驟

  • 1.2.1 需求分析:
  • • 確定目標
  • • 需求收集
  • • 分類(功能與非功能)
  • • 驗證

  • 1.2.2 系統設計:
  • • 高階設計:架構、模組
  • • 詳細設計:API、資料庫、UI

5 of 53

1.3 傳統方法 vs. 敏捷方法

  • 傳統方法(瀑布模型):線性流程、需求變更困難、一次性交付
  • 敏捷方法:迭代開發、可靈活變更、持續交付

  • 適用場景:
  • • 瀑布模型:政府、金融
  • • 敏捷方法:新創開發

6 of 53

2.1 需求收集技術

  • 2.1.1 訪談:與業務或IT人員面談
  • 優:獲得詳細資訊

  • 2.1.2 問卷調查:適用大規模用戶
  • 優:數據量大

  • 2.1.3 觀察:觀察用戶操作
  • 優:獲得真實行為資料

7 of 53

2.2 需求建模

  • 2.2.1 UML:
  • • 使用案例圖
  • • 類別圖
  • • 活動圖

  • 2.2.2 DFD:
  • • Level 0:整體資料流
  • • Level 1:細部模組資料流

8 of 53

2.3 功能需求與非功能需求

  • • 功能需求:系統必須完成的任務,例如:訂單管理
  • • 非功能需求:性能、安全性、可擴展性等系統品質

9 of 53

第三章:系統設計方法

  • 3.1 概念設計與資料流設計:
  • • 概念設計:確立系統架構與模組設計
  • • 資料流設計:使用 DFD 設計數據流向

10 of 53

3.2 結構化設計方法

  • • 功能分解:系統模組化設計
  • • 程式設計標準化:使用流程圖與DFD
  • • 提高穩定性:模組間依賴清晰

11 of 53

3.3 物件導向設計(OOD)

  • • 封裝:將數據與方法封裝於類別
  • • 繼承:類別功能擴展
  • • 多型:相同方法不同行為

  • UML 圖應用:
  • • 類別圖
  • • 序列圖

12 of 53

章節總結表

  • 第一章:SDLC, 傳統 vs. 敏捷
  • 第二章:需求收集、建模、功能與非功能需求
  • 第三章:概念設計、結構化與物件導向設計

13 of 53

第四章:系統架構與開發

  • 介紹三種系統架構模式:
  • • MVC 架構
  • • 微服務架構
  • • 分層架構
  • 並包含資料庫與 API 設計

14 of 53

4.1.1 MVC 架構

  • • Model:資料處理邏輯
  • • View:UI 呈現
  • • Controller:請求處理

  • 優勢:模組化、高可測試性
  • 應用:Django、Spring MVC

15 of 53

4.1.2 微服務架構

  • • 拆分為小型服務
  • • 各自部署與維護
  • • API 溝通

  • 適用場景:大型電商、CI/CD 環境

16 of 53

4.1.3 分層架構

  • • 表現層:UI 顯示
  • • 業務層:邏輯處理
  • • 資料層:資料庫操作

  • 適用於企業系統如 ERP、CRM

17 of 53

4.2 資料庫設計

  • • ER 模型:實體、屬性、關係
  • • 正規化:
  • - 1NF:單一欄位值
  • - 2NF:消除部分依賴
  • - 3NF:僅依賴主鍵

18 of 53

4.3 API 設計與集成

  • • RESTful API:GET/POST/PUT/DELETE
  • • JSON 數據、OAuth2/JWT 安全機制
  • • GraphQL:精確查詢
  • • gRPC:高效能、適用微服務

19 of 53

第五章:系統測試與維護

  • 涵蓋測試計畫、品質保證與系統維護策略,確保軟體可靠性與穩定性。

20 of 53

5.1 測試計劃與測試技術

  • • 單元測試:模組功能測試
  • • 整合測試:模組間整合測試
  • • 系統測試:整體功能測試
  • • 使用者驗收測試(UAT):由使用者驗證

21 of 53

5.2 軟體品質保證與版本控制

  • • SQA 方法:
  • - Code Review
  • - 靜態分析工具(SonarQube)
  • - CI/CD 測試(Jenkins、GitHub Actions)

  • • 版本控制:
  • - Git 為主流系統
  • - 使用 Git Flow 或 Trunk-based 策略

22 of 53

5.3 系統維護與優化策略

  • • 預防性維護:提升效能,如資料庫優化
  • • 適應性維護:因應技術升級
  • • 修正性維護:修正錯誤與漏洞

23 of 53

第六章:系統開發案例與實踐

  • 透過實際案例分析與趨勢探討,深化系統開發實務應用理解。

24 of 53

6.1 企業級系統開發案例分析

  • 案例:電子商務平台
  • • 架構:微服務
  • • 技術:React, Spring Boot, MongoDB
  • • 挑戰:高流量處理、即時支付

25 of 53

6.2 成功與失敗案例解析

  • 成功案例:
  • • 敏捷開發,快速迭代

  • 失敗案例:
  • • 測試不足 → 系統漏洞
  • • 供應商鎖定 → 難以轉移雲端

26 of 53

6.3 未來系統開發的挑戰與趨勢

  • • 低程式碼平台:OutSystems, Mendix
  • • AI 驅動開發:GitHub Copilot
  • • 雲端原生:Kubernetes, Serverless
  • • 量子運算影響資訊安全

27 of 53

軟體開發知識教學簡報

28 of 53

第一章:軟體開發基礎

  • 介紹主要開發模型、版本控制與開發流程管理。

29 of 53

1.1 軟體開發模型

  • • 瀑布模型:線性開發、需求明確
  • • 敏捷開發:迭代開發、持續溝通
  • • DevOps:整合開發與運維,CI/CD 加快交付

30 of 53

1.2 版本控制與協作工具

  • • Git 指令:init、clone、commit、pull、push
  • • 協作:多人開發版本管理
  • • CI/CD 工具:Jenkins、GitHub Actions、GitLab CI/CD

31 of 53

1.3 軟體開發流程與管理

  • • 專案管理工具:Jira、Trello
  • • 文件管理:Confluence、Google Docs
  • • 敏捷流程:收集需求 → Sprint → 開發 → 交付

32 of 53

第二章:程式設計與軟體工程

  • 涵蓋程式語言基礎、設計模式與最佳開發實踐。

33 of 53

2.1 程式設計基礎

  • • Python:Web、AI
  • • Java:企業級應用
  • • C++:高效能應用,如遊戲與系統程式

34 of 53

2.2 設計模式

  • • Singleton:單一實例
  • • Factory:物件創建
  • • Observer:通知訂閱者變更

35 of 53

2.3 軟體開發最佳實踐

  • • KISS、DRY 原則
  • • 撰寫可測試程式
  • • 良好註解與文件
  • • 使用設計模式提高維護性

36 of 53

第三章:前端與後端開發

  • 介紹前端與後端技術、框架與資料庫及 API 設計。

37 of 53

3.1 前端開發技術

  • • HTML:標記語言
  • • CSS:樣式設計
  • • JavaScript:互動控制
  • • 框架:React、Vue、Angular

38 of 53

3.2 後端開發技術

  • • Node.js:JavaScript 後端框架
  • • Spring Boot:Java 企業級開發
  • • Django:Python 快速開發框架

39 of 53

3.3 資料庫與 API 開發

  • • SQL:MySQL、PostgreSQL
  • • NoSQL:MongoDB、Redis
  • • API 設計:RESTful API、GraphQL

40 of 53

章節總結表

  • 第一章:瀑布、敏捷、DevOps、Git、CI/CD
  • 第二章:Python/Java/C++、設計模式、實踐原則
  • 第三章:前端 React、後端 Node.js、資料庫與 API 設計

41 of 53

第四章:軟體測試與品質保證

  • 介紹各類測試方法、自動化框架與軟體安全測試。

42 of 53

4.1 軟體測試類型

  • • 單元測試:測試單一函數
  • • 集成測試:模組整合測試
  • • 功能測試:整體功能驗證

43 of 53

4.2 自動化測試框架

  • • JUnit:Java 單元測試
  • • Selenium:Web 自動化
  • • PyTest:Python 測試
  • • Jest:JavaScript 測試

44 of 53

4.3 軟體安全測試與漏洞修復

  • • 滲透測試、靜態分析(SonarQube)、DAST
  • • 漏洞:SQL 注入、XSS、CSRF
  • • 修復:使用 ORM、防注入、CSRF Token

45 of 53

第五章:持續整合與部署

  • 涵蓋 DevOps 工具、自動化部署與雲端應用開發。

46 of 53

5.1 DevOps 文化與工具

  • • Jenkins:CI/CD 自動部署
  • • Docker:容器化
  • • Kubernetes:自動擴展
  • • Terraform:基礎設施即代碼

47 of 53

5.2 自動化部署與 IaC

  • • IaC 工具:Terraform、Ansible
  • • 範例:Terraform 建立 AWS EC2
  • • 自動化部署提高一致性與效率

48 of 53

5.3 雲端應用開發與部署

  • • PaaS:AWS Beanstalk、Heroku
  • • Serverless:AWS Lambda、Azure Functions
  • • Kubernetes:容器管理

49 of 53

第六章:未來技術趨勢

  • 探討 AI、低代碼開發與未來挑戰與機會。

50 of 53

6.1 AI 與軟體開發結合

  • • GitHub Copilot:AI 代碼生成
  • • 測試自動化與除錯建議
  • • 提升效率與測試覆蓋率

51 of 53

6.2 低代碼與無代碼開發

  • • 低代碼平台:OutSystems、Mendix
  • • 無代碼平台:Bubble、Zapier
  • • 比較:低代碼較高彈性,無代碼較簡便

52 of 53

6.3 軟體開發的挑戰與機遇

  • • 挑戰:安全、技術變遷、跨平台
  • • 機遇:雲端技術成熟、AI 輔助開發、開源社群推動

53 of 53

總結表格

  • 第四章:單元、自動化、安全測試
  • 第五章:DevOps 工具、CI/CD、雲端部署
  • 第六章:AI 開發、低代碼平台、技術趨勢