MyOOPS開放式課程
請加入會員以使用更多個人化功能
來自全球頂尖大學的開放式課程,現在由世界各國的數千名義工志工為您翻譯成中文。請免費享用!
課程來源:MIT
     

16.355J / ESD.355J 軟體工程概念(2005秋季)

16.355J / ESD.355J Software Engineering Concepts, Fall 2005

軟體工程在現代軍用飛機(如圖中的C-17運輸機)的發展中是項關鍵的挑戰。(圖片承蒙美國空軍提供)。

 

翻譯:陳鳳

編輯:陳盈、劉契良

後製:劉契良

 

課程重點

本課程重點是課堂講稿和閱讀書目。

 

課程描述

這是一個關於軟體系統工程和軟體開發專案設計議題的閱讀與研討課程。包括軟體工程當前所處的狀態以及過去做了哪些嘗試、哪些是可行或不可行的以及其原因。課程所涉及的內容可能因為每期課程而不同,但主要圍繞這幾方面展開:軟體流程和生命週期;軟體需求和軟體規格;軟體設計原理;軟體測試、正規分析和復查;軟體品質管制和評估;產品和流程控制;COTS和軟體複用;軟體的演進與維護;團隊組織與人員管理;程式編輯語言的軟體工程問題。


教學大綱 課程目標

目前,大部分複雜的系統由大量的軟體和數位元件組成,而且今後的比重會越來越大。同時,軟體也成為大型綜合系統發展的關鍵:至少有一半以上的軟體專案因此被取消,或遭受重大的延誤與相關問題。系統工程師和專案經理都未做好應對這項新技術的準備。本課程目標是瞭解建立這樣的系統的難處,以及提供系統工程師、專案經理和軟體工程師工具以及避免這些問題的方法。課程結束後,在需要為一個專案選擇方法時,你可以根據你對目前所執行與軟體工程相關的工作、過去做了哪些嘗試、哪些是可行或不可行的、以及為什麼等因素的瞭解而做出專業的判斷。注意:本課程是講授軟體系統工程的課程,並不是一個標準的軟體工程課程,所以不提供有關程式編輯和開發軟體所需特殊工具等的基礎練習。

 

必須的背景知識

本課程不需要相關的背景知識或必須具備的先決條件。但是,如果有一些基本的程式編輯知識或具備一些系統工程專案經驗將會非常有用。你在課程中學習到的知識可以一起運用到你個人的目標與判斷上。每位同學在學習完本課程之後都會有不同的收穫。

 

閱讀

本課程沒有教科書,但要求的閱讀會是一些仔細挑選出來的材料,包括一些過去發表的重要基礎性論文,此外,還有一些反映最新觀點的近期論文。一些論文是技術性質,另一些則是觀點或評論。由於文獻非常的多,因此在選擇論文時會以它們過去對此領域發展的關聯性或是可以幫助你對目前軟體工程準則下的假設提出看法的能力為遴選根據。

 

作業

沒有程式編輯的作業。我的目標是要提高你們的專業判斷能力而不是如何使用軟體工程的工具和方法,所以,大多數的作業圍繞著評價和闡述展開,而不是特殊技術和工具的使用方法。本課程有兩類作業:每節課開始之前,就每週佈置的論文提交一份簡短(大概半頁到一頁)的摘要,還要寫一份評論(查看以下說明),偶爾需要回答一些與論文主題相關的問題。因為我們在課堂上將會涉及許多關於讀物的討論,不可遲交摘要。沒有考試。以每週摘要的完成情況作為衡量課堂學習的標準。 上課課堂包括講授和討論,有些概念不需要我進行解釋說明,你就可以從閱讀這些材料中得到很好的理解。少數的概念要自己理解比較困難,或者我又找不到與主題相關的良好引導論文,我們就在課堂中解決。所以,參與課堂討論將會讓你受益良多。

 

評分

以每週作業的完成情況確定成績。

 

進度

軟體工程這個主題涉獵的東西很多,很難在一個學期之內就把它學完。因此我會隨時挑選一些特定主題且可能在未來的課程中進行修改。進度和閱讀書目分別列明在課程網頁的「教學時程」和「相關閱讀資料」中。你也可以從網頁上找到「課堂講稿」。

 

有關閱讀作業的說明

在每節課開始之前,你們要就每週佈置的論文提交一份簡短(大概半頁到一頁)的摘要,以及對以下一般性的問題進行回答: ·         

論文的主要概念或主題是什麼?(例如:一段關於論文的簡短摘要) ·         

客觀的論文評價:論文中,是否有哪些東西你很喜歡或者贊同;哪些東西你不贊同?有沒跟你經驗相符的東西? ·         

閱讀過程中,有哪些心得和想法?

顯然在第一堂課上沒有指派閱讀(因為還沒分發),所以閱讀論文摘要的繳交日期將會在教學時程中另外指定。此外,本學期將會安排一些小作業,這會在課堂上做具體佈置。


教學時程、相關閱讀資料、課堂講稿
課程單元
閱讀資料
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頁。
 
寫作作業等同「課後期末考試」,其中包括四篇論文,內容是實用評論。
 

 

   

以下為系統擷取之英文原文

16.355J / ESD.355J Software Engineering Concepts

Fall 2005

Photo of C-17 transport aircraft banking over a field.

Software engineering is a key challenge in developing modern military aircraft like this C-17 transport. (Image courtesy of U.S. Air Force.)

Course Highlights

This course features a reading list as well as a set of lecture notes.

Course Description

This is a reading and discussion subject on issues in the engineering of software systems and software development project design. It includes the present state of software engineering, what has been tried in the past, what worked, what did not, and why. Topics may differ in each offering, but will be chosen from: the software process and lifecycle; requirements and specifications; design principles; testing, formal analysis, and reviews; quality management and assessment; product and process metrics; COTS and reuse; evolution and maintenance; team organization and people management; and software engineering aspects of programming languages.



Syllabus

Objective

Most complex systems today contain a great deal of software and digital components and will contain even more in the future. At the same time, software is becoming the Achilles heel of complex system development: At least half of all large software-intensive system projects are cancelled or suffer major delays and problems. System engineers and managers are often unprepared to cope with this new technology. The goal of this class is to learn why building these systems is so difficult and to provide system engineers, managers, and software engineers with the tools and knowledge to avoid these problems. At the end of the class, you will be able to exercise professional judgment in selecting approaches for a particular project based on an understanding of how the present state of software engineering practice came about, what was tried in the past, what worked and what did not work, and why. Note that the class is a system engineering of software class, not a standard software engineering class and as such will not provide basic training in programming or in specific approaches or tools for developing software.



Required Background

There are no prerequisites and no required background although it will help if you have some minimal knowledge of programming. Having some system engineering project experience will also be helpful. What you get out of the class will be a function of what you bring to it along with your personal goals and objectives. Each student may find they get different things out of the class.



Readings

Instead of a textbook, required reading will consist of a carefully selected set of historically important and foundational papers as well as more current ones reflecting the latest thoughts. Some papers will be technical while others will be opinions or essays. The literature is vast, and papers have been selected for their historical relevance in the development of the field or for their ability to help you critique the assumptions underlying current software/system engineering dogma.



Assignments

There will be no programming assignments. Because my goal is to enhance your ability to make successful professional judgments rather than use a specific set of tools or a particular approach to engineering software, most assignments will involve evaluation and interpretation rather than practice in applying particular techniques or tools.

There will be two types of assignments: Before each class session, you will be required to submit a short (one half to one page) summary of each paper assigned for that week along with a critique of the paper (see instructions below) and occasionally answers to a few specific questions on that topic or paper. Because class sessions will involve a lot of discussion of the readings, late summaries will not be accepted.

There will be no exams. The summaries from the last week will involve synthesizing what you have learned in the class.



Class Sessions

Class meetings will include a mixture of lecture and discussion. You will find that most concepts are easily learned from the readings and do not require my explaining them to you. A few topics are difficult to learn on your own or I could not find any good tutorial papers on them so they will be described in class. You will get the most out of the class if you participate in the class discussions.



Grading

Grades will be based on the weekly assignments.



Schedule

The topic is vast and cannot be completely covered in one semester. The specific topics to be covered have been chosen somewhat arbitrarily and may change in future offerings of the class. A schedule and list of assigned readings are available in the calendar and readings sections respectively. Copies of the class lecture notes are available in the lecture notes section.



Instructions for Reading Assignments

Before each class session, you will submit a short (one half to one page) summary of each paper assigned for the week along with the answers to the following general questions:

What are the main ideas or themes? (i.e., a very brief summary of the paper)

Critical evaluation of the paper: What things in particular did you agree with or like? What things did you disagree with? How does it measure up with your experience?

Any additional thoughts or ideas you had while reading it?

Because it obviously will not be possible to read the papers for the first class by the first class meeting (as they were not available), their summaries will have special due dates as noted on the schedule.

In addition, there may be some short assignments during the semester that will be given and described in class.





Calendar

Course schedule. LEC # TOPICS KEY DATES
 
1 Introducing The Problem  
2 Process and Life Cycle Models Question for Class Discussion: What project characteristics are most important when selecting an appropriate life cycle model?
3 Requirements and Specification  
4 Design Reading writeups due
5 Design (cont.)  
6 COTS and Reuse  
7 Metrics and Reliability Assessment  
8 Building Confidence (Testing, Analysis, QA, Reviews)  
9 Selecting a Programming Language  
10 Team Organization and People Management  
11 Software and System Safety  
12 Putting It All Together The writing assignment is equivalent to a "take home final exam" and includes the four papers for the usual critique




Readings

Amazon logo When you click the Amazon logo to the left of any citation and purchase the book (or other media) from Amazon.com, MIT OpenCourseWare will receive up to 10% of this purchase and any other purchases you make during that visit. This will not increase the cost of your purchase. Links provided are to the US Amazon site, but you can also support OCW through Amazon sites in other regions. Learn more.
Course readings. LEC # TOPICS READINGS
 
1 Introducing The Problem Leveson, Nancy G. "The Therac-25 Accident." (PDF - 1.9 MB)

Lewyn, Mark. "Flying in Place: The FAA's Air Control Fiasco." Business Week (April 26, 1998): 87-88.

Augustine, Norman R. "Yes, But Will It Work in Theory?" Norman Lockheed Martin Corporation.

Amazon logo Brooks, Frederick, Jr. "No Silver Bullet." In Information Processing. Edited by H. J. Kugler. North-holland, BV: Elsevia Science Publishers, 1986. ISBN: 0444700773.

Davis, Alan. "Software Lemmingineering." IEEE Magazine (September 1993): 79-82.

Leveson, Nancy G. "The Role of Software in Spacecraft Accidents." AIAA Journal of Spacecraft and Rockets. (PDF)

Ewusi-Mensah, Kweku. "Critical Issues in Abandoned Information Systems Development Projects." Communications of the ACM 50, no. 9 (September 1997).
2 Process and Life Cycle Models Spiral Model (GIF)

Paulk, Mark C., Bill Curtis, Mary Beth Chrissis, and Charles V. Weber. "The Capability Maturity Model for Software." Pittsburgh, PA: Carnegie Mellon University, Software Engineering Institute. (Unpublished.)

Bach, James. "The Immaturity of CMM." American Programmer (September 1994). (PDF) (Courtesy of James Bach. Used with permission.)

———. "Enough About Process: What we Need are Heroes." IEEE Software (March 1995): 96-98.

Gray, Lewis. "No Cowboy Programmers!" Abelia Corporation; Computer (April 1998).

Mackey, Karen. "Mars versus Venus." IEEE Software (May/June 2000): 14-15.

McConnell, Steve. "Cargo Cult Software Engineering." IEEE Software (March/April 2000): 11-13.

Martin, Robert C. "eXtreme Programming." IEEE Software (July/August 2000): 12-13.

Highsmith, and Cockburn. "Agile Software Development: The Business of Innovation." Computer (September 2001): 120-122.

———. "Agile Software Development: The People Factor." Computer (November 2001): 131-133.

Pressman. "Can Internet-Based Applications be Engineered?" IEEE Software (September/October 1998): 104-110.

Bollinger, Terry. "The Interplay of Art and Science in Software." Computer (October 1997): 128-131.
3 Requirements and Specification Lawrence, Brian, Karl Wiegers, and Christof Ebert. "The Top Risks of Requirements Engineering." IEEE Software (November/December 2001): 62-63.

Leishman and Cook. "Requirements Risks Can Drown Software Projects." Computer (November 2001).

Wing, Jeannette M. "A Specifier's Introduction to Formal Methods." Computer (September 1990): 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." Communications of the ACM 15, no. 12 (December 1972): 1053-1058.

———. "Designing Software for Ease of Extension and Contraction."

Wirth, Niklaus. "Program Development by Stepwise Refinement." Communications of the ACM 14, no. 4 (April 1971): 221-227.

Bergland, G. D. "A Guided Tour of Program Design Methodologies." Computer (October 1981): 13-37.
5 Design (cont.) Garlan, David, and Mary Shaw. "An Introduction to Software Architecture."

Hatton, Les. "Does OO Sync with How We Think?" IEEE Software (May/June 1998): 46-54.

Meyer, Bertrand. "A Really Good Idea." Computer (December 1999): 144-147.

Vessey, Iris, and Sue A. Conger. "Requirements Specification: Learning Object, Process, and Data Methodologies." Communications of the ACM 37, no. 5 (May 1994).

Ledgard, Henry F. "The Emperor with No Clothes." Communications of the ACM 44, no. 10 (October 2001).

Carpenter, Todd. "Avionics Integration for CNS/ATM." Computer (December 1998): 124-126.

Budgen, David. "Software Design Methods: Life Belt or Leg Iron?" IEEE Software (September/October 1999): 136-139.
6 COTS and Reuse Lions, J. L. "Ariane 5 Accident Report." July 19, 1996.

Kruger, Charles W. "Software Reuse." ACM Computing Surveys 24, no. 2 (June 1992).

Weyuker, Elaine J. "Testing Components-Based Software: A Cautionary Tale." IEEE Software (September/October 1998): 54-59.

Glass, Robert L. "Reuse: What's Wrong with This Picture?" IEEE Software (March/April 1998): 57-59.

Leveson, Nancy G., and 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, and Michael A. Adler. "Software Complexity Measurement." Communications of the ACM 29, no. 11 (November 1986).

Armour, Phillip. "Ten Unmyths of Project Estimation." Communications of the ACM 45, no. 11 (November 2002).
8 Building Confidence (Testing, Analysis, QA, Reviews) Schaible, Dawn M., and Keith J. Britton. "Testing in NASA Human-Rated Spacecraft Programs: How Much is Just Enough?" SDM Master's Thesis. MIT, February 2003. (Only chapters 2, 4, and 5 are required reading.) (PDF)

Yamaura, Tsuneo. "How to Design Practical Test Cases." IEEE Software (November/December 1998): 30-36.

———. "Why Johnny Can't Test?" IEEE Software (March/April 1998): 113-115.

Hoare, C. A. R. "An Axiomatic Basis for Computer Programming." Communications of the ACM 12, no. 10 (October 1969).

Lipton, Richard J., Richard A. De Millo, and Alan J. Perlis. "Special Process and Proofs of Theorems and Programs." Communications of the ACM 22, no. 5 (March 1979).

Rothman, Johanna. "Of Crazy Numbers and Release Criteria." Computer (December 1998): 127-128.
9 Selecting a Programming Language Naiditch, David. "Selecting a Programming Language for Your Project." IEEE AES Systems Magazine (September 1999): 11-14.

Ziegler, Stephen F. "Comparing Development Costs of C and Ada." March 30, 1995. (Unpublished.)

Glass, Robert L. "One Giant Step Backward." Communications of the ACM 46, no. 5 (May 2003): 21-23.
10 Team Organization and People Management Kruper, K., Dr. Personality Types. (Additional class notes.) (PDF)

Ferdinandi, Patricia L. "Facilitating Communication." IEEE Software (September/October 1998): 92-96.

McConnell, Steve. "Problem Programmers." IEEE Software (March/April 1998): 126-128.

Mantei, Marilyn. "The Effect of Programming Team Structures on Programming Tasks." Communications of the ACM 24, no. 3 (March 1981): 106-113.

Rettig, Marc. "Software Teams." Communications of the ACM 33, no. 10 (October 1990): 23-27.

Williams, Laurie, Robert R. Kessler, Ward Cunningham, and Ron Jeffries. "Strengthening the Case for Pair Programming." IEEE Software (July/August 2000): 19-25.

Howard, Alan. "Software Project Management." Communications of the ACM 44, no. 5 (May 2001).
11 Software and System Safety Leveson, Nancy. "A New Accident Model for Engineering Safer Systems." (PDF)

———. "A Systems Theoretic Approach to Safety Engineering." (Read only the case study, not the introduction.) (PDF)

———. "A Systems-Theoretic Approach to Safety in Software-Intensive Systems." (Read only the case study, not the introduction.) (PDF)
12 Putting It All Together Leveson, Nancy. "Software Engineering: A Look Back and A Path to the Future." December 14, 1996. (PDF)

Shapiro, Stuart. "Splitting the Difference: The Historical Necessity of Synthesis in Software Engineering." IEEE Annals of the History of Computing 19, no. 1 (1997): 20-54.

Wirth, Niklaus. "A Plea for Lean Software." Computer (February 1995): 64-68.

Bach, James. "What Software Reality is Really About." Computer (December 1999): 148-149.




Lecture Notes

Course notes. LEC # TOPICS
 
1 Introducing The Problem (PDF)
2 Process and Life Cycle Models (PDF)
3 Requirements and Specification (PDF)
4 Design (PDF)
5 Design (cont.) (PDF)
6 COTS and Reuse (PDF)
7 Metrics and Reliability Assessment (PDF)
8 Building Confidence (Testing, Analysis, QA, Reviews) (PDF)
9 Selecting a Programming Language (PDF)
10 Team Organization and People Management (PDF)
11 Software and System Safety (PDF)
12 Putting It All Together



留下您對本課程的評論
標題:
您目前為非會員,留言名稱將顯示「匿名非會員」
只能進行20字留言

留言內容:

驗證碼請輸入5 + 7 =

標籤

現有標籤:1
新增標籤:


有關本課程的討論

課程討論
Note完全開唔到

Anonymous, 2014-06-05 21:44:45
课程讨论
Spiral Model (瀑布模型)的翻译应为螺旋模型
knightccc, 2010-04-23 09:33:02

Creative Commons授權條款 本站一切著作係採用 Creative Commons 授權條款授權。
協助推廣單位: