MBA Course Notes to
SOFTWARE ENGINEERING
The course provides students with an in-depth understanding of the role of software engineering within IT dependent enterprises. Students develop capabilities in the analysis, evaluation and implementation of software engineering principles in IT system development as well as the ability to efficiently integrate complex systems architectures within and between organisations. The course addresses key aspects of modern software engineering and aims to produce graduates who are equipped to both work in the software industry and pursue research.
Bài giảng Khóa học Thạc sỹ
CÔNG NGHỆ PHẦN MỀM
Khóa học cung cấp cho học viên sự hiểu biết sâu sắc về vai trò của công nghệ phần mềm trong các doanh nghiệp sử dụng CNTT. Học viên phát triển khả năng đánh giá, phân tích và triển khai các nguyên tắc kỹ thuật phần mềm phát triển hệ thống CNTT cũng như khả năng tích hợp hiệu quả các hệ thống có kiến trúc phức tạp bên trong và kết nối các tổ chức. Khóa học đề cập đến các khía cạnh quan trọng của công nghệ phần mềm hiện đại và đặt mục đích để học viên tốt nghiệp được trang bị kiến thức cho cả công việc trong ngành công nghiệp phần mềm và theo đuổi nghiên cứu.
Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software. In this core lecture (10 CP), we expand on earlier exposure to software engineering and do a detailed exploration of software engineering topics like:
The key objective of this course is to learn modular design of software and documenting the design using symbolic representations, i.e., UML diagrams. The course will cover software life-cycle models and different phases of the software development process. Object-oriented techniques are key to the course. Since the ultimate result of software engineering is a working software package, the course will put a great emphasis on developing a demonstrable software package. However, this is not a programming course. The key characteristic is having teams of five to seven students work on developing complex software systems over a course of one semester. The grading is competitive, with the highest rated project receiving the highest grade and the others being rated relatively to the highest one.
A solid knowledge of a programming language, preferably an object-oriented language.
20h lecturer, 30h exercise, 15h homework
The final grade will be determined based on regular homeworks, one midterm exam, and a Semester Project:
Homeworks: 20%
Midterm Exam: 30%
Semester Project: 50%
Hands-on design projects are the key component of the course. Team work is required for the projects.
The lectures will follow, in part, "Object-Oriented Software Engineering: Using UML, Patterns and Java" by Bernd Bruegge and Allen H. Dutoit, Third Edition, Prentice Hall, Upper Saddle River, NJ, 2010. The more advanced material will be based on material the instructor will make available. Some interesting books for the advanced material include:
Major links from Ivan Marsic:
1. General Software Engineering Websites
2. Unified Modeling Language (UML)
3. Software Lifecycle Methods
3.1 Agile Methods
4. Problem Modeling and Requirements Analysis
5. Formal Methods
6. Software Measurement and Estimation
7. Object Orientation
8. Software Architecture
9. Design Patterns
10. Software Testing
11. Refactoring
12. Web Services Websites
13. User Interfaces
14. Software Implementation / Coding
15. Java Development
16. Software Business