Table of Contents

Software Development Methods, Fall 2010

This course introduces a selection of theories, practices, and tools that, we believe, will enhance the student's ability in developing correct and high quality software. 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@im.ntu.edu.twX (between the enclosing pair of X's)

Lectures

Thursday 9:10-12:10, Room 101, College of Management, Building I

Office Hours

Wednesday 1:30-2:30PM or by appointment

TA

Ming-Hsien Tsai (蔡明憲), 3366-1205, Xmhtsai208@gmail.comX (between the enclosing pair of X's)
Jen-Feng Shih (施任峰), 3366-1205, Xr98725050@ntu.edu.twX (between the enclosing pair of X's)

Prerequisites

Object-Oriented Programming and Discrete Mathematics

Textbook

Class Notes and Selected Readings

The goal of this course 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. After an overview of the subject matters and a brief glimpse of formal logic, we will study in great detail the UML, design patterns, and some fundamental elements of formal software modeling, verification, and analysis.

Grading

Homework 20%, Midterm 40%, Term Project 40%.

References

  1. Logic for Computer Science: Foundations of Automatic Theorem Proving, J.H. Gallier, Harper & Row Publishers, 1985. (free!)
  2. Logic in Computer Science: Modelling and Reasoning about Systems, M. Huth and M. Ryan, Cambridge University Press, 2004.
  3. Verification of Sequential and Concurrent Programs, 2nd Edition, K.R. Apt and E.-R. Olderog, Springer-Verlag, 1997.
  4. The UML Resource Page: http://www.uml.org/, OMG.
  5. The Unified Modeling Language User Guide, 2nd Edition, G. Booch, I. Jacobson, and J. Rumbaugh, Addison-Wesley, 2005.
  6. Object Constraint Language, OMG Available Specification, Version 2.0, OMG.
  7. Design Patterns: Elements of Reusable Object-Oriented Software, E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Addison-Wesley, 1995.
  8. Software Abstractions: Logic, Language, and Analysis, D. Jackson, MIT Press, 2006.
  9. Modeling in Event-B: System and Software Engineering, J.-R. Abrial, Cambridge University Press, 2010.
  10. The SPIN Model Checker: Primer and Reference Manual, G.J. Holzman, Addison-Wesley, 2003.
  11. Spin - Formal Verification Page: http://spinroot.com/.
  12. Temporal Verification of Reactive Systems: Safety, Z. Manna and A. Pnueli, Springer-Verlag, 1995.
  13. 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.)

Old Exams and Solutions

[Midterm 2004, Solutions]
[Final 2004]
[Midterm 2006, Solutions]
[Final 2006]
[Midterm 2008]
[Midterm 2009]