、軟件工程是一門研究用工程化方法構建和維護有效的、實用的和高質量的軟件的學科。它涉及程序設計語言、數據庫、軟件開發工具、系統平臺、標準、設計模式等方面。
- We consider quality software in the way as follow:
1)The Quality of the Product
2)The Quality of Process
3)Quality in the Context of the Business Environment
- Waterfall Model (Royce 1970) Waterfall like Sequence
Requirements Analysis --- System Design --- Program Design --- Coding --- Unit & Integration Test --- System Test --- Acceptance Test --- Operation & Maintenance
Chapter One --- Why Software Engineering?
- Section 1. Software: Instruction ; Data Structure ; Documents
-- Instructions (computer programs) that when executed provide desired function and performance;(Instruction --- Assembly Language --- High Level Language) --Data structures that enable the programs to adequately manipulate information; --Documents that describe the operation (Maintenance Manual ) and use (User Manual ) of the programs.
- Section 2. Software Crisis
--- 指在軟件開發和維護過程中遇到的各種問題
1)對軟件開發的成本和進度估計不準確
2)用戶對“以完成的”軟件系統不滿意的現象經常發生
3)軟件產品的質量不可靠
4)軟件常常是不可維護的
5)軟件通常沒有適當的文檔資料
6)軟件成本在計算機系統總成本中所占比例逐年上升
7)軟件開發生產率低
-
Section 3. Software Engineering
--- Engineering is the (1)analysis, (2)design, (3)construction, (4)verification, and (5)management of technical (or social) entities.
The application of a systematic disciplined, Measureable approach to the development, operation, and maintenance of software. That is, the application of engineering to software. 將系統化的、規范的、可度量的方法應用于軟件開發、運行可維護的過程,即將工程化應用于軟件中。
--- Solving Problem Steps
Step 1:Analyzing
Step 2:Synthesis
Conclude: Any problem-solving technique must have two parts.
Step 3: Solve Method
(1)Methods (Techniques):Formal procedure for produce some product.
(2)Tools:An instrument or automated system for accomplishing something in better way.
(3)Procedure: A combination of tools and techniques.
(4)Paradigms:A particular approach or philosophy .
- Section 4 What is good Software
--- The Quality of the Product-McCall’s Quality Model:
Correctness(Traceability、Completeness、Consistency)、Reliability、...... 、Reusability、Interoperability (Data commonality)
--- The Quality of Process
CMM (Capability Maturity Mode), ISO 9000. 1990s
-
Section 5 Development Team
---Peoples involved in Software Development
Communication System
-
Section 6 An engineering Approach
--- Building a House
*Determining and analyzing the requirements *Producing and documenting the overall design the house *Producing detailed specifications of the house *Identifying and designing the components *Building each component of the house *Testing each component of the house *Integrating the components making final modifications after the *residents have moved in *Continuing maintenance by the residents of the house
--- Building a System
Software Projects process in a way similar to the house-building process
*Requirements analysis and definition *System design *Program design *Writing the program (program implementation) *Unit testing *Integration Testing *System Testing *System delivery *Maintenance
Appendix 1 What This Chapter Means for You
Given a problem to solve-breaking it into its component, relationship, synthesize Understanding requirement and building solution Qualify from several different perspectives Abstraction Keep in mind the system boundary
Appendix 2 What This Chapter Means for Your Development Team
--A Development process that is appropriate to your team size, risk level, and application domain --Tools that are well-integrated and support the type of communication your project demands --Measurements and supporting tools to give you as much visibility and understanding as possible
Appendix 3 What This Chapter Means for Researchers
--The right levels of abstraction to make the problem easy to solve --The right measurements to make the essential nature of the problem and solution visible and helpful --An appropriate problem decomposition, where each subproblem is solvable --A common framework or notation to allow easy and effective tool integration, and to maximize communication among project participants.
Appendix 4 Term Project
It is impossible to learn software engineering without participating in development a software project with your colleagues.
Appendix 5 Key References
Software Faults and Failure --- Software Engineering Notes Ariane-5 Project --- Web Site: http://www.esrin.esa.it/htdocs/esa/ariane Software Design and Testing --- Leveson and Turner 1993 Software Quality --- IEEE Software, January, 1996 Piccadilly Television --- www.systemsguild.com
Appendix 6 Exercises
--Airlines Crash
Chapter Seven--- Writing the Programs
- Standards for Programming
- Guideline for Reuse
- Using Design to Frame the Code
- Internal and external Documentation