教學時程、相關閱讀資料、課堂講稿

軟體工程概念

因舊版課程無指定課堂作業與考試,因此統整所有作業、講義、考試內容合併列出。

    課程單元

    閱讀資料

    1

    問題引入

    Introducing The Problem

    Leveson, Nancy G.〈Therac-25號事故〉"The Therac-25 Accident." (英PDF - 1.9 MB)

     

    Lewyn, Mark.〈飛行就緒:聯邦航空局空中管制的慘敗〉"Flying in Place: The FAA's Air Control Fiasco."《商業週刊》Business Week (1998年4月26日):87-88頁。

     

    Augustine, Norman R.〈沒錯,但是理論上可行嗎?〉"Yes, But Will It Work in Theory?",Norman Lockheed Martin Corporation。

     

    Brooks, Frederick, Jr.〈沒有標準答案〉"No Silver Bullet." 《資訊處理》Information Processing,H. J. Kugler編,North-holland,BV:Elsevia Science Publishers,1986。ISBN:044470773。

     

    Davis, Alan.〈軟體旅鼠工程〉"Software Lemmingineering."《IEEE雜誌》IEEE Magazine,(1993年9月):79-82頁。

     

    Leveson, Nancy G.〈太空船事故中軟體所扮演的角色〉"The Role of Software in Spacecraft Accidents."《AIAA太空船和火箭期刊》AIAA Journal of Spacecraft and Rockets.。(英PDF)

     

    Ewusi-Mensah, Kweku.〈關於無約束資訊系統發展專案的批判〉"Critical Issues in Abandoned Information Systems Development Projects."《ACM通訊》Communications of the ACM 50卷9期 (1997年9月)。

    2

    軟體流程和生命週期模型

    Process and Life Cycle Models

    瀑布模型Spiral Model (GIF)

     

    Paulk, Mark C.、Bill Curtis、Mary Beth Chrissis和Charles V. Weber.〈軟體的能力成熟度模式〉"The Capability Maturity Model for Software.",匹茲堡,賓州:卡內基‧美隆大學,軟體工程學院 (尚未出版)。

     

    Bach, James.〈CMM還不成熟〉"The Immaturity of CMM."《美國程式設計師》American Programmer(1994年9月)。(PDF)(承蒙James Bach授權使用)。

     

    ---〈談夠了流程: 我們需要的是英雄〉"Enough About Process: What we Need are Heroes."《IEEE軟體》IEEE Software,(1995年3月):96-98頁。

     

    Gray, Lewis.〈拒絕莽撞的程式設計師!〉"No Cowboy Programmers!"《Abelia公司;電腦》Abelia Corporation; Computer,(1998年4月)。

     

    Mackey, Karen.〈戰神與維納斯的對抗〉"Mars versus Venus."《IEEE軟體》IEEE Software,(2000年5/6月):14-15頁。

     

    McConnell, Steve.〈沒有根據的軟體工程〉"Cargo Cult Software Engineering."《IEEE軟體》IEEE Software,(2000年3/4月):11-13頁。

     

    Martin, Robert C.〈eXtreme程式設計〉"eXtreme Programming."《IEEE軟體》IEEE Software,(July/August 2000年7/8月):12-13頁。

     

    Highsmith, and Cockburn.〈敏捷軟體發展:創新的商機〉"Agile Software Development: The Business of Innovation."《電腦》Computer,(2001年9月):120-122頁。

     

    ———.〈敏捷軟體發展:人的因素〉"Agile Software Development: The People Factor."《電腦》Computer,(2001年11月):131-133頁。

     

    Pressman.〈網路型應用程式可以工程化嗎?〉"Can Internet-Based Applications be Engineered?"《IEEE軟體》IEEE Software,(1998年9/10月):104-110頁。

     

    Bollinger, Terry.〈軟體中藝術與科學的相互影響〉"The Interplay of Art and Science in Software."《電腦》Computer,(1997年10月):128-131頁。

     

    課堂討論:選擇生命週期模型的時候,專案的什麼特性最重要?

    3

    軟體需求與軟體規格

    Requirements and Specification

    Lawrence, Brian、 Karl Wiegers和Christof Ebert.〈需求工程最大的風險〉"The Top Risks of Requirements Engineering."《IEEE軟體》IEEE Software,(2001年11/12月):62-63頁。   Leishman and Cook.〈需求風險可能會顛覆軟體方案〉"Requirements Risks Can Drown Software Projects.",《電腦》Computer,(2001年11月)。

     

    Wing, Jeannette M.〈規格化方法的詳細介紹〉"A Specifier's Introduction to Formal Methods."《電腦》Computer,(1990年9月):9-23頁。

     

    Leveson, Nancy G.〈規範意圖:構建以人類為中心的規範的方法〉"Intent Specifications: An Approach to Building Human-Centered Specifications."。(英PDF - 1.3 MB)

    4

    軟體設計

    Design

    Parnas, D. L.〈系統模組化分解的準則〉"On the Criteria To Be Used in Decomposing Systems into Modules."《ACM通信》Communications of the ACM 15卷12期 (1972年12月):1053-1058頁。

     

    ———.〈設計外延和內涵的軟體〉"Designing Software for Ease of Extension and Contraction."。

     

    Wirth, Niklaus.〈逐步求精法設計的軟體〉"Program Development by Stepwise Refinement."《ACM通信》Communications of the ACM,14卷4期 (1971年4月):221-227頁。

     

    Bergland, G. D.〈程式設計方法指南〉"A Guided Tour of Program Design Methodologies."《電腦》Computer,(1981年10月):13-37頁。

     

    閱讀摘要截止日期

    5

    軟體設計(續)

    Design (cont.)

    Garlan, David和Mary Shaw.〈軟體架構介紹〉"An Introduction to Software Architecture."。

     

    Hatton, Les.〈00(面向物件)是否與我們所想同步?〉"Does OO Sync with How We Think?"《IEEE軟體》IEEE Software,(1998年5/6月):46-54頁。

     

    Meyer, Bertrand.〈一個相當好的主意〉"A Really Good Idea."《電腦》Computer,(1999年12月):144-147頁。

     

    Vessey, Iris和Sue A. Conger.〈需求說明:目標,過程,資料方法〉"Requirements Specification: Learning Object, Process, and Data Methodologies."《ACM通信》Communications of the ACM 37卷5期 (1994年5月)。

     

    Ledgard, Henry F.〈國王的新衣〉"The Emperor with No Clothes."《ACM通信》Communications of the ACM 44卷10期 (2001年10月)。

     

     Carpenter, Todd.〈CNS/ATM航空電子工學綜合〉"Avionics Integration for CNS/ATM."《電腦》Computer,(1998年12月):124-126頁。

     

    Budgen, David.〈軟體設計方法:是安全帶還是腳鐐?〉"Software Design Methods: Life Belt or Leg Iron?"《IEEE軟體》IEEE Software (1999年9/10月):136-139頁。

    6

    COTS和軟體複用

    COTS and Reuse

    Lions, J. L.〈Ariane 5號事故報告〉"Ariane 5 Accident Report.",1996年7月19日。

     Kruger, Charles W.〈軟體複用〉"Software Reuse."《ACM電算調查》ACM Computing Surveys,24卷2期 (1992年6月)。

     

    Weyuker, Elaine J.〈測試元件型軟體:一個警戒〉"Testing Components-Based Software: A Cautionary Tale."《IEEE軟體》IEEE Software,(1998年9/10月):54-59頁。

     

    Glass, Robert L.〈複用:這張圖哪哩不對嗎?〉"Reuse: What's Wrong with This Picture?"《IEEE軟體》IEEE Software,(1998年3/4月):57-59頁。

     

    Leveson, Nancy G.和Kathryn Anne Weiss.〈讓嵌入式軟體複用可行和安全〉"Making Embedded Software Reuse Practical and Safe."。

    7

    測量和可靠性評估

    Metrics and Reliability Assessment

    Joseph K. Kearney、 Robert L. Sedlmeyer、 William B. Thompson、 Michael A. Gray和Michael A. Adler.〈軟體複雜性度量〉"Software Complexity Measurement."《ACM通信》Communications of the ACM 29卷11期 (1986年11月)。

     

    Armour, Phillip.〈項目評測的十個非神話〉"Ten Unmyths of Project Estimation."《ACM通信》Communications of the ACM 45卷11期 (2002年11月)。

    8

    建立信任度(測試、分析、質量評價、回顧)

    Building Confidence (Testing, Analysis, QA, Reviews)

    Schaible, Dawn M.和Keith J. Britton.〈NASA(美國國家航空和宇宙航行局)人造太空船程式的測試:多少才合適?〉"Testing in NASA Human-Rated Spacecraft Programs: How Much is Just Enough?",SDM的碩士論文,麻省理工學院,2003年2月。(只要求閱讀第2、4和5章)。(英PDF)

     

    Yamaura, Tsuneo.〈如何設計實用的測試例子〉"How to Design Practical Test Cases."《IEEE軟體》IEEE Software,(1998年11/12月):30-36頁。

     

    ———.〈為什麼這個傢伙無法測試?〉"Why Johnny Can't Test?"《IEEE軟體》IEEE Software(1998年3/4月):113-115頁。

     

    Hoare, C. A. R.〈電腦程式編輯的一個默認準則〉"An Axiomatic Basis for Computer Programming."《ACM通信》Communications of the ACM 12卷10期 (1969年10月)。

     

    Lipton, Richard J.、Richard A. De Millo和Alan J. Perlis.〈特殊流程和程式與法則的驗證〉"Special Process and Proofs of Theorems and Programs."《ACM通信》Communications of the ACM 22卷5期 (1979年3月)。

     

    Rothman, Johanna.〈瘋狂數字與發佈準則〉"Of Crazy Numbers and Release Criteria."《電腦》Computer,(1998年12月):127-128頁。

    9

    選擇一種程式編輯語言

    Selecting a Programming Language

    Naiditch, David.〈為你的專案選擇一個程式編輯語言〉"Selecting a Programming Language for Your Project."《IEEE AES系統雜誌》IEEE AES Systems Magazine(1999年9月):11-14頁。

     

    Ziegler, Stephen F.〈C和Ada的開發成本比較〉"Comparing Development Costs of C and Ada.",1995年3月30日。(尚未出版)

     

    Glass, Robert L.〈程式編輯語言的一大退步〉"One Giant Step Backward."《ACM通信》Communications of the ACM 46卷5期 (2003年5月):21-23頁。

    10

    團隊組織和人員管理

    Team Organization and People Management

    Kruper, K., Dr.《人格類型》(附加課堂筆記)Personality Types. (Additional class notes.)。(英PDF)

    Ferdinandi, Patricia L.〈促進溝通〉"Facilitating Communication."《IEEE軟體》IEEE Software(1998年9/10月):92-96頁。

     

    McConnell, Steve.〈問題程式設計師〉"Problem Programmers."《IEEE軟體》IEEE Software(1998年3/4月):126-128頁。

     

    Mantei, Marilyn.〈團隊結構對程式設計工作的影響〉"The Effect of Programming Team Structures on Programming Tasks."《ACM通信》Communications of the ACM 24卷3期 (1981年3月):106-113頁。

     

    Rettig, Marc.〈軟體團隊〉"Software Teams."《ACM通信》Communications of the ACM 33卷10期 (1990年10月): 23-27頁。

     

    Williams, Laurie、 Robert R. Kessler、 Ward Cunningham和Ron Jeffries.〈強化雙人組程式設計〉"Strengthening the Case for Pair Programming."《IEEE軟體》IEEE Software,(2000年7/8月):19-25頁。

     

    Howard, Alan.〈軟體專案管理〉"Software Project Management."《ACM通信》Communications of the ACM 44卷5期(2001年5月)。

    11

    軟體系統安全

    Software and System Safety

    Leveson, Nancy.〈一個新的關於更安全系統的事故模型〉"A New Accident Model for Engineering Safer Systems."。(英PDF)

     

    ———.〈系統論方法:工程安全〉"A Systems Theoretic Approach to Safety Engineering."(僅閱讀個案研究,不需要讀介紹)。(英PDF

     

    ———.〈系統論方法:軟體系統安全〉"A Systems-Theoretic Approach to Safety in Software-Intensive Systems."(僅閱讀個案研究,不需要讀介紹)。(英PDF

     

     

    Leveson, Nancy. 〈軟體工程:回顧與前瞻之路〉"Software Engineering: A Look Back and A Path to the Future." December 14, 1996. (英PDF)

    12

    綜述

    Putting It All Together

    Shapiro, Stuart.〈妥協:合成在軟體工程的歷史必要性〉"Splitting the Difference: The Historical Necessity of Synthesis in Software Engineering."《IEEE電算歷史年報》IEEE Annals of the History of Computing 19卷1期 (1997):20-54頁。

     

    Wirth, Niklaus.〈為軟體瘦身請命〉"A Plea for Lean Software."《電腦》Computer,(1995年2月):64-68頁。

     

    Bach, James.〈軟體的真實面目〉"What Software Reality is Really About."《電腦》Computer(1999年12月):148-149頁。

     

    寫作作業等同「課後期末考試」,其中包括四篇論文,內容是實用評論。