Software Development Methods, Fall 2011
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. 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
Feb. 05: Grade Report available.
-
-
-
Dec. 22: bring your notebook computer Dec. 29 with
Coq installed.
Dec. 22: slides for OCL revised (just one small change on Slide 6).
Dec. 21: slides for Automata-Based Model Checking and for Temporal Logic and Automata available.
Dec. 21: slides for OCL Examples and for Alloy available.
Dec. 11: exercise problems for writing first-order formulae available as
HW#3.
Nov. 24: slides for OCL available.
-
Nov. 16: slides for Formal Logic and a note on Natural Deduction available.
Nov. 02: slides for Web Application Security available.
Oct. 26: slides for Web Programming available.
Oct. 20:
HW#2 revised and due dates postponed to Nov. 7 (design document) and Nov. 10 (oral presentation and demo).
Oct. 19: slides for Design Patterns and Enterprise Design Patterns available.
Oct. 16:
HW#2 due on Oct. 31 (design document) and Nov. 3 (oral presentation and demo).
Oct. 05: slides for Team Collaboration and for UML Diagrams available.
Sep. 29:
HW#1 due on Oct. 5.
Sep. 23: a Design Document Skeleton available.
Sep. 22: slides for Design Documents available.
Sep. 14: slides for Course Introduction and Overview of UML available.
Sep. 12: this website is the sole source of all up to date course information and syllabus; there will be no separate PDF version.
Instructor
Yih-Kuen Tsay (蔡益坤), Room 1108, Management II, 3366-1189, Xtsay@im.ntu.edu.twX
(between the enclosing pair of X's)
Guest Lecturers: Jeffrey CH Liu, Clement CW Su, and Jim CL Yu, IBM
Lectures
Thursday 9:10-12:10, Room 101, College of Management, Building I
Office Hours
Wednesday 1:30-2:30PM or by appointment
TA
Chi-Shiang Liu (劉啟祥), 3366-1205, Xloftywind@gmail.comX
(between the enclosing pair of X's)
Jing-Jei Lin (林靖婕), 3366-1205, Xgrace6349@gmail.comX
(between the enclosing pair of X's)
Prerequisites
Object-Oriented Programming and Discrete Mathematics
Textbook
Class Notes and Selected Readings
Syllabus/Schedule (with links to slides/notes)
After an overview of the subject matters, we will study in great detail several software productivity tools, the UML, design patterns, and some fundamental elements of formal software modeling, analysis, and verification.
Introduction (.5 week: 09/15a)
Overview of software requirements, development process, design methods, and testing/verification
[
slides]
Software Modeling: An Overview of UML (.5 week: 09/15b)
Introduction, basics of modeling, overview of the UML
[
slides]
Software Development Practice: Design Document (.5 week: 09/22a)
High level design document, implementation level design document, user story (for Agile)
[
slides,
A Design Document Skeleton]
Software Development Practice: Modeling Tools (.5 week: 09/22b)
RSA, basic UML modeling, conversion between source code and model
Software Development Practice: Team Collaboration (1 week: 09/29)
Software Modeling: UML Diagrams (1 week: 10/06)
Structural modeling (
class diagrams, classifiers, interfaces, packages), behavioral modeling (
interactions, use case diagrams, interaction diagrams, activity diagrams), architectural modeling (
collaborations, deployment diagrams)
advanced structural modeling (
object diagrams, components), advanced behavioral modeling (
events, state machines, processes and threads, timing constraints)
[
slides]
Design Patterns (Part I) (1 week: 10/13)
Why design patterns, introduction to creational, structural, and behavioral patterns, GoF patterns
[
slides]
Design Patterns (Part II) (1 week: 10/20)
Introduction to enterprise systems, enterprise/cloud computing patterns, concluding remarks
[
slides]
Software Security: Web Application Security (1 week: 10/27)
Dynamic Web pages, client-side scripts, security vulnerabilities, vulnerabilities detection and prevention
[slides:
Web Programming,
Web Application Security]
Formal Logic: A Pragmatic Introduction (.5 week: 11/03a)
Propositions, proofs, predicates, models, theorems
[
slides; notes:
Natural Deduction]
Formal Logic: Propositional and First-Order Logics (1.5 weeks: 11/03b, 11/10)
Satisfiability, tautologies, validity, deduction/proofs, soundness, completeness
[slides:
Propositional Logic,
First-Order Logic; notes:
Tactics for Natural Deduction in Coq,
exercise_prop.v,
exercise_pred.v,
exercise_group.v]
Software Modeling: OCL (1 week: 11/17)
Object Constraint Language (
relation with UML models, values, types, expressions, objects, properties, collection operations)
[
slides; notes:
OCL Examples]
Software Modeling: Alloy (1 week: 11/24)
Software modeling, simulation, and checking
[
slides]
-
Invited Industry Talk (1 week: 12/08)
Midterm (2011/12/15)
Software Verification: Model Checkers (1 week: 12/22)
Spin (Promela, never-claims), JPF (Java PathFinder)
-
Term Project Presentations (2012/01/05)
Software Verification: Hoare-Style Verifiers (1 week: 01/12)
Frama-C, Spec#
Grading
Homework 15%, Midterm 35%, Term Project 40%, Participation 10%.
References
-
The Unified Modeling Language User Guide, 2nd Edition, G. Booch, I. Jacobson, and J. Rumbaugh, Addison-Wesley, 2005.
Design Patterns: Elements of Reusable Object-Oriented Software, E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Addison-Wesley, 1995.
-
Object Constraint Language, OMG Available Specification, Version 2.0,
OMG.
Software Abstractions: Logic, Language, and Analysis, D. Jackson, MIT Press, 2006.
-
Logic in Computer Science: Modelling and Reasoning about Systems, M. Huth and M. Ryan, Cambridge University Press, 2004.
Verification of Sequential and Concurrent Programs, 2nd Edition, K.R. Apt and E.-R. Olderog, Springer-Verlag, 1997.
The SPIN Model Checker: Primer and Reference Manual, G.J. Holzman, Addison-Wesley, 2003.
-
Temporal Verification of Reactive Systems: Safety, Z. Manna and A. Pnueli, Springer-Verlag, 1995.
-
Old Exams and Solutions