電機工程研究所(Graduate Institute of Electrical Engineering)
課程名稱(英文)
Object-Oriented Software Engineering
課程代碼
4158815_01
授課教師:
劉立頌 (Alan Liu)
學分數
3
必/選修
選修
開課年級
Graduate level
先修科目或先備能力:
Programming skills
課程概述:
This course introduces object-oriented software engineering through understanding the concept of software engineering and object-oriented analysis and design. The focus is on learning the object-oriented way of developing software while performing the practices that are introduced in software engineering. Development processes and design techniques like software architecture and design patterns will be introduced. The students are required to participate in a team project to practice the knowledge learned in the course. At the same time, the students will be able to enhance the ability in problem solving, communication, cooperation, and presentation.
學習目標:
1. To understand what object-orientation is about
2. To practice software engineering in software development
3. To learn and perform object-oriented analysis and design
4. To experience agile practices
教科書:
Collection of lecture notes and papers.
Good references:
1. Ivan Sommerville, Software Engineering, 10th edition, Pearson, 2016. http://iansommerville.com/software-engineering-book/
2. Roger Pressman and Bruce Maxim, Software Engineering: A Practitioner's Approach, 9th edition, McGraw-Hill, 2020. http://www.rspa.com/about/sepa.html
課程大綱
分配時數
核心能力
備註
單元主題
內容綱要
講授
示範
隨堂作業
其他
Introduction to software engineering and object-orientation
1. Review the basics of software engineering
2. Learn how to view things through an object-oriented way
6
1.11.21.32.12.23.13.24.14.24.34.4
General concept in quality software systems
Software development process
Learn the details of typical process like the waterfall model, the incremental model, or the spiral model.
6
1.11.21.32.12.23.13.24.14.24.34.4
General concept in quality software systems
Requirements analysis
Analyze a problem trough problem understanding, requirements elicitation through modeling, abstraction, and inheritance.
6
1.11.21.32.12.23.13.24.14.24.34.4
Importance of define the WHAT about the problem
Design and reuse
1. Design a system through abstract design, architectural design, and detail design.
2. Design a system through planning and creating reusable components.
3. Understand design patterns
9
1.11.21.32.12.23.13.24.14.24.34.4
Knowledge to bridge WHAT and HOW through design
Introduction to UML and Unified Process
1. Know what the Unified Modeling Language is about.
2. Review and practice the user of the use-case driven, architectural centric, and iterative and incremental process.
6
3
1.11.21.32.12.23.13.24.14.24.34.4
Standard modeling language for better communication with stakeholders
Software testing
Understand what typical the goal and details of blackbox and whitebox testing.
6
1.11.21.32.12.23.13.24.14.24.34.4
Quality systems through validation and verification
Agile methods and modeling
1. Understand the purpose and advantages of a test-driven and light-weight process.
2. Perform modeling and keep documents for the agile method.
6
1.11.21.32.12.23.13.24.14.24.34.4
Fast but controlled delivery of quality systems
Advanced topics
1. Component-Based Development and
2. Modeling-driven development