Software Engineering

MBA Course Notes to

SOFTWARE ENGINEERING

Dr. Dao NamAnh

LEARNING OUTCOMES

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.

ABOUT THE COURSE

Bài giảng Khóa học Thạc sỹ

CÔNG NGHỆ PHẦN MỀM

Ts. Đào NamAnh

MỤC ĐÍCH

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.

GIỚI THIỆU MÔN HỌC

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:

    • Object Model
    • Requirements Engineering
    • Use Cases
    • System Model
    • Object Oriented Design
    • Design with Reuse
    • Critical Systems

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.

    • Software Architecture
    • Software Testing
    • Specifying Systems
    • Problem Frames
    • Software Metrics
    • Design with Patterns
    • Distributed Systems

PREREQUISITES

ĐIỀU KIỆN

A solid knowledge of a programming language, preferably an object-oriented language.

TEACHING METHODS

PHƯƠNG PHÁP GIẢNG DẠY

20h lecturer, 30h exercise, 15h homework

COURSE OUTLINE

NỘI DUNG MÔN HỌC

GRADING

ĐÁNH GIÁ

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.

RECOMMENDED TEXTS

TÀI LIỆU THAM KHẢO

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:

    • Bruegge & Dutoit: Object-Oriented Software Engineering: Using UML, Patterns and Java, Third Edition, Prentice Hall, 2010.
    • Miles & Hamilton: Learning UML 2.0, O’Reilly Media, 2006. ISBN: 0-596-00982 -8
    • R. Pressman, Software Engineering - A Practitioner's Approach, 6th ed., 2005
    • C. Ghezzi, M. Jazayeri, and D. Mandriolo, Fundamentals of Software Engineering. Prentice Hall, second ed., 2002
    • A. Endres and D. Rombach, A Handbook of Software and Systems Engineering. The Fraunhofer IESE Series on Software Engineering, Pearson Education Ltd., 2003.
    • S. Robertson and J. C. Robertson, Mastering the Requirements Process. Addison- Wesley Professional, second ed., 2006.
    • I. Jacobson, G. Booch, and J. Rumbaugh, The Unified Software Development Process. Addison-Wesley Professional, 1999.
    • K. Beck and C. Andres, Extreme Programming Explained. Addison-Wesley, 2004.
    • Dao Nam Anh, "Systems Analysis And Design", Course Book, University of Power, 2013
  • The Z Notation

INTERESTING LINKS

CÁC TRANG WEB HỮU ÍCH

Major links from Ivan Marsic:

1. General Software Engineering Websites

2. Unified Modeling Language (UML)

3. Software Lifecycle Methods

    • "The Demise of the Waterfall Model Is Imminent" and Other Urban Myths, by Phillip A. Laplante and Colin J. Neill: http://acmqueue.com/modules.php? name=Content&pa=showpage&pid=110
    • An interesting article about how software pracitioners actually practice software engineering.
    • Software Engineering Methodologies: http://info lab.stanford.edu/~burback/watersluice/watersluice.html
    • WaterSluice Software Engineering Methodology ... A Sequential Software Engineering Methodology · The Boehm-Waterfall Software Engineering Methodology ...
    • Introduction to the Booch Method: http://www.itr.ch/courses/case /BoochReference/
    • Cleanroom Software Engineering: https://www.thedacs.com/database s/url/key/64
    • The objective of the Cleanroom methodology is to achieve or approach zero defects with certified reliability. As described by Hausler (1994), the Cleanroom ...
    • Cleanroom Software Engineering: http://www.quality.org/html/cse.html
    • A DoD STARS Tutorial by Software Engineering Technology, Inc. This is a web tutorial that describes Cleanroom at medium depth. ...

3.1 Agile Methods

    • Manifesto for Agile Software Development: http://agilemanifesto.org/
    • A page devoted to the creed lyrics of new age software development methods, with stained glass icons.
    • Agile Modeling (AM) Home Page: http://www.agilemodeling.com/
    • by Scott Ambler — Effective practices for modeling and documentation.
    • Agile Software Development dot com: http://agilesoftwaredevelopment.com/
    • A blog about a quest for better ways of developing software.
    • Authors include Jack Milunsky, Kelly Waters, Mendelt Siebenga, Artem Marchenko, ...
    • Agile Software Development Made Easy: http://www.agile-software-development.com/
    • by Kelly Waters
    • website about agile development and agile project management, including developing tests and estimating time.
    • Software Configuration Management - AccuRev Blog: http://www.accurev.com/blog/
    • A blog about agile adoption and organizational change.
    • Authors include J. Martin, B. DeMaria, clucca, AccuRev, ...

4. Problem Modeling and Requirements Analysis

5. Formal Methods

    • Formal Methods Virtual Library: http://vl.fmnet.info/
    • Centre for Applied Formal Methods, London South Bank University: http://www.cafm.lsbu.ac.uk/
    • [PDF] UML 2.0 OCL Specification: http://www.omg.org/docs/ptc/03-10-14.pdf
    • Download the OCL Parser from IBM: http://www- 306.ibm.com/software/awdtools/library/standards/ocl-download.html

6. Software Measurement and Estimation

7. Object Orientation

8. Software Architecture

9. Design Patterns

10. Software Testing

    • Software testing: http://en.wikipedia.org/wiki/Software_testing#White-box_and_black- box_testing
    • From Wikipedia, the free encyclopedia
    • Software Testing Stuff, by Kerry Zallar: http://www.testingstuff.com/
    • Site's motto: "This may not be the best testing web site out there ... but, it links to many that are!"
    • Software Testing - User Stories: http://www.testinggeek.com/index.php/testing-articles/135
    • from the Testing Geek website (particularly useful for agile project methods).
    • Test-Driven Development: http://www.artima.com/intv/testdri ven.html
    • A Conversation with Martin Fowler, Part V
    • by Bill Venners; December 2, 2002.
    • GUI Testing Checklist: http://members.tripod.com/~b azman/checklist.html
    • A checklist to help testers check GUI screens
    • Testing GUI Applications, by Paul Gerrard: http://www.gerrardconsultin g.com/GUI/TestGui.html
    • A short paper on GUI Testing from EuroSTAR'97

11. Refactoring

    • What Is Refactoring? (Wiki): http://c2.com/cgi-bin/wiki?WhatIsRefactoring
    • The Refactoring Browser Wiki: http://c2.com/cgi-bin/wiki? CategoryRefactoringBrowser
    • Wiki Refactoring Summary: http://c2.com/cgi-bin/wiki?WikiRefactoringSummary
    • Refactoring Home page: http://www.refactoring.com/
    • Other Links: http://spock.culocalbiz.com/

12. Web Services Websites

13. User Interfaces

14. Software Implementation / Coding

15. Java Development

16. Software Business

more links