User Tools

Site Tools


courses:sdm2013:main

Software Development Methods, Fall 2013

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

  • 01/19: Grade Report available.
  • 01/02: scope of the final exam: UML, Web Application Security, Design Patterns, Formal Logic, OCL, Automata-Based Model Checking.
  • 12/10: slides for Automata-Based Model Checking available.
  • 12/04: slides for Formal Logic and for OCL available.
  • 11/27: sample code for Mobile Application Development available; slides updated.
  • 11/26: slides for Mobile Application Development available.
  • 11/21: slides for Design Documents and An Example available.
  • 11/13: slides for Enterprise Patterns available.
  • 11/12: slides for Design Patterns and sample code available.
  • 10/30: slides for Web Application Security available.
  • 10/23: slides for Invited Talk Two available.
  • 10/22: slides for Invited Talk One available.
  • 10/17: Term Project formally announced.
  • 10/09: slides for Model Driven Development and for Team Collaboration available.
  • 10/02: slides for UML Diagrams available (revised 10/16).
  • 09/25: slides for Eclipse and EGit available.
  • 09/25: HW#2 design document due 10/04 and demo due 10/09.
  • 09/17: slides for Web Application Development available.
  • 09/11: slides for Version Control with Git available.
  • 09/11: HW#1 due 09/17.
  • 09/11: slides for Course Introduction and for An Overview of UML available.
  • 09/10: this website is the sole source of all up to date course information and syllabus; there is 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

Sega Cheng (程世嘉, iKala), Jeffrey CH Liu (劉智雄, IBM), Clement CW Su (蘇志文, IBM), Chih-Pin Tai (戴智斌), 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

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

TA

許宏瑋, 3366-1205, Xr02725048@ntu.edu.twX (between the enclosing pair of X's).

Prerequisites

Object-Oriented Programming and Discrete Mathematics.

Textbook

Class notes and selected readings.

After an overview of the typical software development process and relevant issues, we will study several software productivity tools, the UML, design patterns, and some fundamental elements of formal software modeling and verification. To practice applying these methods and tools, we will carry out a term project that involves the development of a Web application that permits a mobile client. The basics of Web and mobile application development will also be covered in the course.

  • Introduction (.5 week: 09/11a)
    Overview of software requirements, development process, design methods, and testing/verification
    [slides]
  • Productivity Tools: Version Control with Git (.5 week: 09/11b) [slides: part1, part2]
  • Web Application Development (1 week: 09/18) [slides]
  • Software Modeling: An Overview of UML (.5 week: 09/25a)
    Introduction, basics of modeling, overview of the UML
    [slides]
  • Productivity Tools: Eclipse and EGit (.5 week: 09/25b) [Tips for Using Eclipse, EGit: Git for Eclipse]
  • Software Modeling: UML Diagrams (1 week: 10/02a, 10/16a)
    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]
  • Term Project Discussions (.5 week: 10/02b)
  • Software Development Practice: Model Driven Development (.5 week: 10/09a)
    What and Why, Rational Software Architect (RSA), Example Design Patterns, RSA Demo
    [slides]
  • Software Development Practice: Team Collaboration (.5 week: 10/09b)
    Agile Development Process (Basic Ideas, Eclipse Way, OpenUp, Scrum), Team Collaboration (Version Control, Issues Tracking, Rational Team Concert), Continuous Integration (Basic Ideas, CruiseControl), IBM Experience
    [slides]
  • Invited Industry Talk 1: Code Management (Speaker: Sega Cheng, iKala; .5 week: 10/16b) [slides]
  • Term Project Discussions (.5 week: 10/23a)
  • Invited Industry Talk 2: Enterprise Data Modeling (Speaker: Wen-Chun Ni, GSS; .5 week: 10/23b) [slides]
  • Software Security: Web Application Security (1 week: 10/30)
    Dynamic Web pages, client-side scripts, security vulnerabilities, vulnerabilities detection and prevention
    [slides]
  • Design Patterns (2 weeks: 11/06, 11/13)
    Why design patterns, introduction to creational, structural, and behavioral patterns, GoF patterns
    [slides, sample code in C++, sample code in Java]
    Introduction to enterprise systems, enterprise/cloud computing patterns
    [slides]
  • Term Project Discussions (.5 week: 11/20a)
  • Software Development Practice: Design Document (.5 week: 11/20b)
    High level design document, implementation level design document, user story (for Agile)
    [slides, notes: An Example Design Document]
  • Mobile Application Development: The Android Platform (1 week: 11/27) [slides, sample code]
  • Software Modeling: Formal Logic and Correctness Requirements (.5 week: 12/04a)
    Propositions, proofs, theorems, predicates, models
    [slides]
  • Software Modeling: OCL or Alloy (.5 week: 12/04b)
    Object Constraint Language (relation with UML models, values, types, expressions, objects, properties, collection operations)
    [slides; notes: OCL Examples]
    Software modeling, simulation, and checking
    [slides]
  • Software Verification: Model Checking (1 week: 12/11)
    Automata-based model checking, linear temporal logic, Spin (Promela, never-claims), Java PathFinder
    [slides: Automata-Based Model Checking, Temporal Logic and Automata]
  • Software Verification: Hoare-Style Verification (1 week: 12/18)
    Axiomatic semantics of programs (assertions, pre/post-conditions, invariants), partial and total correctness, Frama-C, VeriFast
    [slides; notes: Rules of Hoare Logic, Proofs with Hoare Logic]
  • Term Project Presentations (2013/12/25)
  • Final (2014/01/08)

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 UML Resource, OMG.
  4. The Unified Modeling Language User Guide, 2nd Edition, G. Booch, I. Jacobson, and J. Rumbaugh, Addison-Wesley, 2005.
  5. Design Patterns: Elements of Reusable Object-Oriented Software, E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Addison-Wesley, 1995.
  6. The OWASP Website. (Note: a website dedicated to Web application security.)
  7. 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.)
  8. Logic in Computer Science: Modelling and Reasoning about Systems, M. Huth and M. Ryan, Cambridge University Press, 2004.
  9. 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.)
  10. Object Constraint Language, OMG Available Specification, Version 2.0, OMG.
  11. Software Abstractions: Logic, Language, and Analysis, D. Jackson, MIT Press, 2006.
  12. Temporal Verification of Reactive Systems: Safety, Z. Manna and A. Pnueli, Springer-Verlag, 1995.
  13. The SPIN Model Checker: Primer and Reference Manual, G.J. Holzman, Addison-Wesley, 2003.
  14. 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

courses/sdm2013/main.txt · Last modified: 2014/09/18 20:26 by tsay