Table of Contents

Software Development Methods, Fall 2016

This course introduces a selection of theories and practices that, we believe, will enhance the student's ability in developing correct and high-quality software. Its goal is to acquaint the students with some of the well-used methods and tools for practical software development as well as some fundamentals of software verification, so as to prepare them for a career in software development. The view taken here is that of an engineer (programmer, software engineer, or software architect) and hence the focus of the course is primarily on the technical aspects of software development process.

Announcements

Instructor

Yih-Kuen Tsay (蔡益坤), Room 1108, Management II, 3366-1189, Xtsay@ntu.edu.twX (between the enclosing pair of X's).

Guest Speakers

Lynn Lin (林婉齡, 叡揚), Jeffrey CH Liu (劉智雄, IBM), Wen-Chun Ni (倪文君, 叡揚), Pauline Peng (彭寶嶙, 叡揚), Clement CW Su (蘇志文, IBM), Scar Su (蘇瑞亨, 叡揚), Chih-Pin Tai (戴智斌, 創炎/Traiwan出來玩), Ming-Hsien Tsai (蔡明憲, Academia Sinica), and Ching-Lin Yu (游景麟, Mozilla).

Lectures

Wednesday 2:20-5:20PM, Room 204, College of Management, Building 2.

Office Hours

Tuesday 1:30-2:00PM, Wednesday 1:30-2:00PM, or by appointment, Room 1108, Management Building 2.

TA

張子建, 3366-1205, Xr03725007@ntu.edu.twX (between the enclosing pair of X's).

Prerequisites

Object-Oriented Programming and Database Management.

Textbook

Class notes and selected readings.

After an overview of the typical software development process and relevant issues, we will study some fundamental elements of software modeling, design, and verification, along with several software productivity tools and development practices. To practice applying these methods and tools, we will carry out a term project that involves the development of a large Web application. We will also study Web application programming techniques and security, to better prepare for the project.

Grading

Homework 10%, Term Project 50%, Final 30%, Attendance/Participation 10%.

References

  1. Git.
  2. Eclipse, The Eclipse Foundation open source community website.
  3. The Unified Modeling Language User Guide, 2nd Edition, G. Booch, I. Jacobson, and J. Rumbaugh, Addison-Wesley, 2005.
  4. Design Patterns: Elements of Reusable Object-Oriented Software, E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Addison-Wesley, 1995.
  5. The OWASP Website. (Note: a website dedicated to Web application security.)
  6. The Formal Methods Page: http://formalmethods.wikia.com/wiki/Formal_methods, J. Bowen. (Note: this Web portal provides links to numerous formal methods and tools.)
  7. Logic in Computer Science: Modelling and Reasoning about Systems, M. Huth and M. Ryan, Cambridge University Press, 2004.
  8. Logic for Computer Science: Foundations of Automatic Theorem Proving, J.H. Gallier, Harper & Row Publishers, 1985. (Note: follow the link to author's free download site.)
  9. Object Constraint Language, OMG Available Specification, Version 2.0, OMG.
  10. Software Abstractions: Logic, Language, and Analysis, D. Jackson, MIT Press, 2006.
  11. Temporal Verification of Reactive Systems: Safety, Z. Manna and A. Pnueli, Springer-Verlag, 1995.
  12. The SPIN Model Checker: Primer and Reference Manual, G.J. Holzman, Addison-Wesley, 2003.
  13. Verification of Sequential and Concurrent Programs, 3rd Edition, K.R. Apt, F.S. de Boer, and E.-R. Olderog, Springer, 2009.

Old Exams and Solutions

[Midterm 2004, Solutions]
[Final 2004]
[Midterm 2006, Solutions]
[Final 2006]
[Midterm 2008]
[Midterm 2009]
[Midterm 2010]
[Midterm 2011]
[Midterm 2012]
[Final 2013]
[Final 2014]
[Final 2015]