CCU Course Intro
Course Title (Chinese): 軟體工程 Teaching Unit: 資訊工程學系(Department of Computer Science and Information Engineering)
Course Title (English) Software Engineering Course Code 4103022_01
Lecturer: 熊博安 Number of Credits 3
Mandatory/Elective Elective Year 大三
Prerequisites:
計算機概論、資料結構、程式設計
Course Introduction:
To introduce students to the benefits of software engineering practices and theories so that they are aware of such processes, methods, and theory and can apply them when you are actually involved in large software projects in the future.
Learning Goals:
1. To learn about all the difficulties in developing software
2. To learn about software processes
3. To learn to design high-quality efficient and maintanable software
4. To learn about advanced methods for software engineering
Textbook:
Ian Sommerville, Software Engineering, 8th Edition, Addison-Wesley, 2007.

Course Syllabus Number of Hours Core Capabilities Remarks
Topic Content Lecture Demonstration Assignment Others
Introduction to Software Engineering
To give an overview of Software Engineering
1.Software Crisis
2.Software Myths
3.What is Software Engineering
4.Evolution of Software Engineering
5.State-of-art in Software Engineering
3 1.11.21.32.12.22.33.13.23.34.14.2
Students are presented with a lot of survey reports to get a view on the state-of-art.
Software Processes
To describe the conventional and modern software processes.
1.Software process models
2.Process iteration
3.Process activities
4.The Rational Unified Process
5.Computer-aided software engineering
4.5 1 1.11.21.32.12.22.33.13.23.34.14.2
Assignment 1 makes students familiar with the differences and similarities among the software processes.
Project Management
To discuss how a project can be managed through planning, scheduling, and risk management
1.Management activities
2.Project planning
3.Project scheduling
4.Risk management
4.5 1.11.21.32.12.22.33.13.23.34.14.2
This unit introduces the concepts of project management to students.
Requirements Engineering
To understand the different categories of requirements and how they are obtained.
1.Functional and non-functional requirements
2.User requirements
3.System requirements
4.Interface specification
5.The software requirements document
6.Requirements engineering activities
7.Requirements engineering processes
4.5 1 1.11.21.32.12.22.33.13.23.34.14.2
Assignment 2 asks students to create the requirements for a software project.
System Models
To illustrate the different modeling techniques for software systems
1.Context models
2.Behavioural models
3.Data models
4.Object models
5.CASE workbenches
4.5 1 1.11.21.32.12.22.33.13.23.34.14.2
Assignment 3 asks students to create the UML models for a software system.
Architectural Design
To introduce architectural design, decisions, and styles
1.Architectural design decisions
2.System organisation
3.Decomposition styles
4.Control styles
5.Reference architectures
4.5 1 1.11.21.32.12.22.33.13.23.34.14.2
Assignment 4 asks students to create the architectural design for a software system.
Application Architectures
To introduce four important application architectures
1.Data processing systems
2.Transaction processing systems
3.Event processing systems
4.Language processing systems
3 1.11.21.32.12.22.33.13.23.34.14.2
This unit mainly emphasizes the importance of suitable architectures.
Rapid Software Development
To introduce agile software development process and extreme programming
1.Agile methods
2.Extreme programming
3.Rapid application development
4.Software prototyping
4.5 1.11.21.32.12.22.33.13.23.34.14.2
This unit introduces students to the state-of-art in agile development.
Verification and Validation
To introduce different verification and validation techniques
1.Verification and validation planning
2.Software inspections
3.Automated static analysis
4.Cleanroom software development

4.5 1 1.11.21.32.12.22.33.13.23.34.14.2
Assignment 5 asks students to verify the design of a software project.

Education Goals
1.專業基礎知識. 使學生擁有扎實的專業基礎知識,成為資訊及相關領域的專業人才
2.培養創造能力. 使學生具有運用所學到的各種專業知識與理論以科學的方法解決問題與創新
3.自我挑戰能力與終身學習. 讓學生習於自我挑戰、獨立思考,學會思維創新、領導及組織團隊、有效溝通、終身學習之能力
4.社會人文素養與國際視野. 讓學生具備關懷社會的情操與人文素養,並具國際觀,奉獻社會國家及人類

Core Capabilities
1.1.具有資訊工程相關基礎知識之吸收與了解的能力(Capability to grasp foundational knowledge in computer science.)
1.2.具有運用資訊工程理論及應用知識,分析與解決相關問題的能力(Capability to use computer science theory and application knowledge to analyze and solve related problems.)
1.3.在資訊工程的許多領域中,具有至少某一項專業能力,例如:硬體、軟體、多媒體、系統、網路、理論等(Professional in at least one area, including hardware, software, multimedia, system, networking, and theory.)
2.1.具有資訊工程實作技術及使用計算機輔助工具的能力(Capability to perform computer science implementations and use computer-aided tools.)
2.2.具有設計資訊系統、元件或製程的能力(Capability to design computer systems, components, or processes.)
2.3.具有科技寫作與簡報的能力。(Capability to write and present technical materials.)
3.1.具有除了已有的應用領域之外,亦可以將自己的專業知識應用於新的領域或跨多重領域,進行研發或創新的能力。(Capability to apply one’s professional knowledge to a new application domain or across multiple different application domains.)
3.2.具有領導或參與一個團隊完成一項專案任務的能力並且具有溝通、協調與團隊合作的能力。(Capability to lead or participate in group projects, with effective communication, coordination, and teamwork.)
3.3.具有因應資訊科技快速變遷之能力,培養自我持續學習之能力。(Capability to adapt to rapidly changing computer science technology and to develop self-learning capabilities.)
4.1.具有社會責任、人文素養及奉獻精神。(The awareness of social responsibilities, humanity, and contribution.)
4.2.具有工程倫理、宏觀能力、國際觀及前瞻視野。(The awareness of engineering ethics, broad capabilities, and global and contemporary vision.)

Please respect to the intellectual property rights, do not photocopy the textbooks which assigned by professors.

Course Details:
1. Teaching Materials:Self DevelopedProvided by Textbook Authors
2. Teaching Method:Lecture SlidesBlackboard Teaching
3. Grading Method:Attendance 0%, Quiz0%, Assignment20%, Programming0%, Technical Report0%,
                       Project20%, Mid-Term Exam20%, Final Exam20%, Final Report0%, Others10%,
4. Teaching Resources:Course Web Site Downloadable Electronic Materials Lab Web Site
5. Other requirements:

Relationship between course education goals and core capabilities        
Please select:1.11.21.32.12.22.33.13.23.34.14.2
1.1 具有資訊工程相關基礎知識之吸收與了解的能力(Capability to grasp foundational knowledge in computer science.)
Why is it related:
Software engineering is a basic course that has been neglected in most CS departments of Taiwan. We strive to make this course a foundation laying step for good CS department graduates through the many lecture contents and assignments.
Achieving indicators:
The course will cover the foundation of software engineering so that students get a hands-on experience in the course. The student must finish listening to all 15 chapters distant learning materials, do the assignments, and pass all exams.
Grading Method:
等級5:學期成績可預期達到80分以上 等級4:學期成績可預期達到70分以上 等級3:學期成績可預期達到60分以上 等級2:學期成績可預期達到50分以上 等級1:學期成績可預期達到50分以下
1.2 具有運用資訊工程理論及應用知識,分析與解決相關問題的能力(Capability to use computer science theory and application knowledge to analyze and solve related problems.)
Why is it related:
Since software engineering is not only techniques, but also management, we believe all the concepts introduced in this course can be applied by students in their routine or future projects.
Achieving indicators:
The issues related to project management can be solved using the techniques described in this course. The student must finish all written assignments and term project.
Grading Method:
等級5:作業或專案成績可預期達到80分以上 等級4:作業或專案成績可預期達到70分以上 等級3:作業或專案成績可預期達到60分以上 等級2:作業或專案成績可預期達到50分以上 等級1:作業或專案成績可預期達到50分以下
1.3 在資訊工程的許多領域中,具有至少某一項專業能力,例如:硬體、軟體、多媒體、系統、網路、理論等(Professional in at least one area, including hardware, software, multimedia, system, networking, and theory.)
Why is it related:
Software engineering allows a student to be a future successful software project manager.
Achieving indicators:
Software project management is the core lesson learned in this course. The student must finish a term project to get skilled in the software project management.
Grading Method:
等級5:專案成績可預期達到80分以上 等級4:專案成績可預期達到70分以上 等級3:專案成績可預期達到60分以上 等級2:專案成績可預期達到50分以上 等級1:專案成績可預期達到50分以下
2.1 具有資訊工程實作技術及使用計算機輔助工具的能力(Capability to perform computer science implementations and use computer-aided tools.)
Why is it related:
Computer-Aided Software Engineering (CASE) tools, frameworks, environments are a must for the success of large as well as small projects. We enforce the use of the I-Logix Rhapsody tool for all development phases and documents management.
Achieving indicators:
Software engnineering tools such as Rhapsody modeling tool, version control tool, etc. will be covered by the course and related labs. The student must finish all labs.
Grading Method:
等級5:實習成績可預期達到80分以上 等級4:實習成績可預期達到70分以上 等級3:實習成績可預期達到60分以上 等級2:實習成績可預期達到50分以上 等級1:實習成績可預期達到50分以下
2.2 具有設計資訊系統、元件或製程的能力(Capability to design computer systems, components, or processes.)
Why is it related:
Large, medium, and small software projects can all be developed using the software processes and design methods introduced in this course. We assess this capability through exams and group projects.
Achieving indicators:
Term projects have to be executed in groups.
Grading Method:
等級5:專案成績可預期達到80分以上 等級4:專案成績可預期達到70分以上 等級3:專案成績可預期達到60分以上 等級2:專案成績可預期達到50分以上 等級1:專案成績可預期達到50分以下
3.1 具有除了已有的應用領域之外,亦可以將自己的專業知識應用於新的領域或跨多重領域,進行研發或創新的能力。(Capability to apply one’s professional knowledge to a new application domain or across multiple different application domains.)
Why is it related:
Software engineering is not confined to only the software domain, it must be applied to all fields such as real-time systems, embedded systems, business systems, transaction systems, etc. hence through this application the students taking this course can help the experts of other domains to develop useful software systems.
Achieving indicators:
Term project will help students to apply whatever they have learnt to new application domains or inter-disciplinary application domains.
Grading Method:
等級5:專案成績可預期達到80分以上 等級4:專案成績可預期達到70分以上 等級3:專案成績可預期達到60分以上 等級2:專案成績可預期達到50分以上 等級1:專案成績可預期達到50分以下
3.2 具有領導或參與一個團隊完成一項專案任務的能力並且具有溝通、協調與團隊合作的能力。(Capability to lead or participate in group projects, with effective communication, coordination, and teamwork.)
Why is it related:
The term project required of each student enforces groups of at least 3 students to complete a medium-sized software project. A group leader must be identified and the workload distribution must be explicit within the project proposal. These serve as checking documents that are used for validating if the goals have been accomplished at the end of the term project. Each project must make a presentation of the project results, submit a written report of the difficulties faced in the project and the solutions applied, and then perform a demonstration of the software project. All these activities are accomplished in a group of at least 3 students, which allows them to cooperate and interact in a fruitful manner.
Achieving indicators:
Finish a term project.
Grading Method:
等級5:專案成績可預期達到80分以上 等級4:專案成績可預期達到70分以上 等級3:專案成績可預期達到60分以上 等級2:專案成績可預期達到50分以上 等級1:專案成績可預期達到50分以下
4.1 具有社會責任、人文素養及奉獻精神。(The awareness of social responsibilities, humanity, and contribution.)
Why is it related:
It is emphasized constantly in class that we need to be aware of the consequences that software failures have over the society and the mankind as a whole. We need to be careful in the whole software design process and we also need to be knowledgeable of the domain characteristics that we are developing our software for so that we do not cause harm, damage, and loss to the people and properties of that application domain.
Achieving indicators:
Pass the midterm and final exams.
Grading Method:
等級5:期中考及期末考成績可預期達到80分以上 等級4:期中考及期末考成績可預期達到70分以上 等級3:期中考及期末考成績可預期達到60分以上 等級2:期中考及期末考成績可預期達到50分以上 等級1:期中考及期末考成績可預期達到50分以下
4.2 具有工程倫理、宏觀能力、國際觀及前瞻視野。(The awareness of engineering ethics, broad capabilities, and global and contemporary vision.)
Why is it related:
It is stressed in class and duration evaluation that copyrighted software must be given its due rights and cannot be infringed upon. All sources of all software and related materials presented and demonstrated in class must be cited and references given.
Achieving indicators:
One question in the final exam covers engineering ethics.
Grading Method:
等級5:期末考工程倫理問題成績預期可達80%以上。 等級4:期末考工程倫理問題成績預期可達70%以上。 等級3:期末考工程倫理問題成績預期可達60%以上。 等級2:期末考工程倫理問題成績預期可達50%以上。 等級1:期末考工程倫理問題成績預期可達50%以下。