© ian sommerville 2000 軟體工程, 第六版, 第 1 章 slide 1 導論 l 軟體工程入門介紹

29
an Sommerville 2000 軟軟 , 軟軟軟 , 軟 1 軟 Slide 1 軟軟 軟軟軟軟軟軟

Post on 21-Dec-2015

245 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 1

導論

軟體工程入門介紹

Page 2: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 2

本章目的 瞭解何謂軟體工程以及軟體工程的重要性 解答軟體工程導論中的一些關鍵問題 瞭解對軟體工程師非常重要的專業與道德問題

Page 3: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 3

本章內容 軟體工程常見問題集 (FAQ) 專業與道德上的責任

Page 4: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 4

所有已開發國家的經濟都跟軟體有關 愈來愈多系統是受軟體控制 軟體工程是一門討論開發專業軟體的理論、方

法與工具的學科 所有已開發國家對軟體工程的花費佔 GNP 非

常大的比率

軟體工程

Page 5: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 5

軟體的成本通常高於系統成本;而 PC 上的軟體成本通常高於硬體的成本

軟體成本中維護成本高於開發成本。對使用壽命很長的系統而言,它的維護成本將會是開發成本的數倍之多

軟體工程是討論如何達成最合乎經濟效益的軟體開發

軟體成本

Page 6: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 6

軟體工程常見問答集 何謂「軟體」 (Software) ? 何謂「軟體工程」 (Software Engineering) ? 軟體工程與電腦科學 (Computer Science) 有何

不同? 軟體工程與系統工程 (System Engineering) 有

何不同? 何謂「軟體程序」 (Software Process) ? 何謂「軟體程序模型」 (Software Process

Model) ?

Page 7: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 7

軟體工程常見問答集 何謂軟體工程的成本? 何謂軟體工程方法? 何謂 CASE (Computer-Aided Software

Engineering) ? 好的軟體有哪些特性? 軟體工程面臨的主要挑戰?

Page 8: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 8

何謂軟體? 電腦程式與相關文件 軟體產品專為特定客戶開發,或是針對一般市

場進行開發 軟體產品分為兩類

• 通用產品 (Generic) – 開發的產品可已販賣給各種不同客戶使用

• 客製化產品 (custom) – 專為某一位客戶所定的規格而開發的產品

Page 9: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 9

何謂軟體工程? 軟體工程是一門與生產軟體有關的工程學科 軟體工程師應該採用有系統且有組織的方法執

行他們的工作,以及根據需要解決的問題、開發限制與可用資源使用適當的工具和技術

Page 10: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 10

軟體工程與電腦科學有何不同? 電腦科學是與電腦和軟體系統基本理論和方法

有關的學科;軟體工程則是與生產和交付有用軟體所面臨的實際問題有關

電腦科學的理論目前為止不足以扮演軟體工程完整的支撐

Page 11: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 11

軟體工程與系統工程有何不同? 系統工程是跟電腦化系統開發各種層面有關的

工程學科,包括硬體、軟體和流程;軟體工程則只是這個流程中的一部分。

系統工程師的工作包括系統規格制定、架構設計、整合與佈署等

Page 12: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 12

何謂軟體程序? 進行軟體開發或演化的一組活動 所有軟體程序均有的通用活動:

• 規格制定 – 定義系統應該做什麼事以及開發的限制• 開發 – 軟體系統的製作• 確認 – 檢查軟體是否為客戶所要的• 演化 – 更改軟體以回應變更的要求

Page 13: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 13

何謂軟體程序模型? 以某個特定觀點呈現的軟體程序簡化表示 程序觀點的範例有

• 工作流程觀點 – 依序的活動• 資料流觀點 – 資訊流• 角色 /動作觀點 – 誰應該做什麼事

通用的程序模型• 瀑布式 (Waterfall)

• 演化式開發 (Evolutionary development)

• 正規轉換 (Formal transformation)

• 以再利用元件整合 (Integration from reusable components)

Page 14: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 14

何謂軟體工程的成本? 大約 60% 的成本為開發成本, 40% 為測試

成本。對客製化的軟體而言,演化成本通常會超過開發成本

成本會根據正在開發的系統類型以及各種系統屬性的需求而定,例如執行效能和系統可靠度

成本的分佈依據使用的開發模型而定

Page 15: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 15

何謂軟體工程方法? 軟體開發的結構化方法包括有系統模型、代表符號、規則、設計建議以及程序指引等

模型描述• 應該產生圖形化的模型描述

規則• 套用至系統模型的限制

建議• 良好的設計實務的建議

程序指引• 依循哪些活動

Page 16: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 16

何謂 CASE (Computer-Aided Software Engineering)

目的為提供軟體程序活動自動化支援的軟體系統。 CASE 系統通常用來做為方法的支援

Upper-CASE• 支援如需求與設計等早期程序活動的工具

Lower-CASE• 支援如程式設計、除錯與測試等後期活動的工具

Page 17: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 17

好的軟體有哪些特性? 軟體應該完成使用者所需的功能和執行效能,也

應該能夠可維護、可保護以及可使用。 可維護性 (Maintainability)

• 軟體必須能夠進行演化以符合變更的需求 可保護性 (信賴度 )(Dependability)

• 軟體必須能夠信任 效率 (Efficiency)

• 軟體不應該浪費系統資源的使用 可使用性 (Usability)

• 軟體必須可以讓使用者針對其設計來使用

Page 18: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 18

軟體工程面臨的主要挑戰為何? 處理既有舊系統,處理逐漸增加的變化性以及處理減少交付時間的要求

既有舊系統 (Legacy systems)• 舊的但有其存在價值的系統,因此必須加以維護與更新

異質性 (Heterogeneity)• 系統為分散的且包含各種軟硬體的混合

完成與交付 (Delivery)• 軟體快速完成與交付的壓力逐漸增加

Page 19: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 19

專業與道德上的責任 軟體工程的責任不只是開發應用程式的技術能力而已

軟體工程師若要讓別人以專業人士來看待,必須誠實且恪守倫理與道德的規範

道德上的行為比只是遵守法律更為重要。

Page 20: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 20

專業責任的議題 (1)

保密性 (Confidentiality) • 不管有沒有簽署保密合約,工程師都應該遵守雇主或顧客

的保密要求。 稱職 (Competence)

• 工程師必須根據自己的能力做稱職的表現,不應該故意接受無法勝任的工作。

Page 21: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 21

專業責任的議題 (2)

智慧財產權 (Intellectual property rights) • 工程師應該注意有關智慧財產權的法律相關規定,例如專利或版權。他們應該小心的確保雇主和顧客的智慧財產是否受到保護。

濫用電腦 (Computer misuse) • 軟體工程師不應該利用本身的技術與能力濫用其他人的電

腦設備。濫用電腦的情況從單純的利用雇主機器玩電腦遊戲,到非常嚴重的散播病毒等都算。

Page 22: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 22

ACM/IEEE 道德規範 美國的許多專業社群共同建立了一個實行時的

道德規範。 這些組織的成員在加入該組織時必須簽署這些

規範。 這個「規範」包含與專業軟體工程師有關的八項行為「準則」 (Principles)或所做的決策,包括對開業者、教育人員、經理、主管、政策制定者以及受此專業訓練的學員或學生等的規範。

Page 23: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 23

道德規範 – 前言 前言

• 簡短版本的規範以較高階的概念摘要說明一些期望與抱負;完整版本中的條文則加入了範例和詳細說明,以闡述這些期望與抱負如何改變軟體工程專業人士的作為。如果沒有這些期望,詳述部分只是冗長的法律條文;但是如果沒有詳述的部分,這些期望又會變成空談;因此,這些期望和詳述形成了一個緊密的規範。

• 軟體工程師應該承諾讓軟體的分析、規格、設計、開發、測試及維護等都能夠受益,並且尊重專業。依照軟體工程師對公眾的健康、安全和福利的承諾,他們應該支持下列八點準則:

Page 24: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 24

道德規範 – 原則 1. PUBLIC

• 軟體工程師應該固守公眾的利益。

2. CLIENT AND EMPLOYER • 軟體工程師應該以讓他的顧客和雇主得到最佳的利益,並

且固守公眾的利益。

3. PRODUCT • 軟體工程師應該確保他的產品和相關的修改能夠儘可能符

合最高的專業標準。

Page 25: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 25

道德規範 – 原則 4. JUDGMENT

• 軟體工程師在專業判斷上應該維護其正直與獨立。 5. MANAGEMENT

• 軟體工程師的經理和上司們應該在軟體開發與維護上支持與提倡合乎道德的管理方法。

6. PROFESSION • 軟體工程師應該提高專業的正直與聲譽,並與公眾的利益

一致。

Page 26: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 26

Code of ethics - principles 7. COLLEAGUES

• 軟體工程師應該公平的支援他們的同事。

8. SELF • 軟體工程師應該在他的專業實務上終身學習,並且應該在

專業實務上提倡合乎道德的方法。

Page 27: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 27

道德上的兩難 不同意資深管理階層政策的準則 你的下屬以不道德的方式、在沒有完成系統測試的工作之下,便將安全關鍵系統發行出去

參與軍事武器系統或核子系統的開發

Page 28: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 28

重點整理 軟體工程是一門與生產軟體有關的工程學科。 軟體產品包含了開發完成的程式以及相關的說明文件

。主要的產品特性有:可維護性、可信賴度、效率以及可用性。

軟體程序包含了與開發軟體產品有關的各項活動。基本的活動有:軟體規格制定、開發、確認以及演化。

生產軟體必須透過有系統、有組織的方法。這些方法包括提出後續的處理程序、即將使用的標示方法、管理系統的規則說明以及設計指引等。

Page 29: © Ian Sommerville 2000 軟體工程, 第六版, 第 1 章 Slide 1 導論 l 軟體工程入門介紹

©Ian Sommerville 2000 軟體工程 , 第六版 , 第 1 章 Slide 29

重點整理 CASE 工具是一些軟體系統,設計用來支援軟體程序

中常見的活動,例如編輯設計圖表、檢查圖表的一致性以及持續追蹤程式的測試結果等。

軟體工程師必須對工程同業和團體負責,不應該只著重於技術性的問題。

某些專業團體會發表一些行為準則,作為其所屬會員的行為標準。