User Tools

Site Tools


courses:sdm2021:main

Software Development Methods, Spring 2021

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

  • 07/02: grade report available; contact the instructor by 5PM 07/04 (Sunday) if you have any question or request.
  • 06/23: slides for Frama-C and ACSL available.
  • 06/16: slides for Hoare Logic available.
  • 06/01: in-group peer review: Peer Review Form.
  • 06/01: term project final presentations: Form for Evaluation by Individual Reviewer (no team for team comments).
  • 05/26: HW#5 due 06/09.
  • 05/19: slides for Logic and OCL available.
  • 05/05: slides for Software Testing available.
  • 05/05: review forms for the second preliminary demo presentations: Evaluation by Individual Reviewer and Team-for-Team Comments.
  • 04/28: slides for Design Patterns and some code examples available.
  • 04/21: HW#4 due 04/28.
  • 04/15: slides for Design Document and an example design document available.
  • 04/13: review forms for the first preliminary demo presentations: Evaluation by Individual Reviewer and Team-for-Team Comments.
  • 04/07: slides for Agile Development in Practice available.
  • 03/31: slides for Domain Modeling available.
  • 03/24: review forms for the proposal presentations: Evaluation by Individual Reviewer and Team-for-Team Comments.
  • 03/24: HW#3 due 03/31.
  • 03/24: slides for Web Application Security available.
  • 03/16: slides for Advanced Web Programming available.
  • 03/12: Term Project finalized.
  • 03/10: slides for UML Diagrams available.
  • 03/02: Draft of Term Project available for discussions, to be finalized on 03/10.
  • 03/02: HW#2 due 03/10.
  • 03/02: slides for Basics of Web Programming available.
  • 03/02: slides for An Overview of UML available.
  • 02/24: slides for Git available.
  • 02/24: HW#1 due 10PM 03/02.
  • 02/24: slides for Course Introduction available.
  • 02/22: website created on 02/18. This website is the primary source of all up to date course information and syllabus of Software Development Methods 2021; there is no separate PDF version for the syllabus.

Instructor

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

Guest Speakers

Jeffrey CH Liu (劉智雄, Appier), Clement CW Su (蘇志文, IBM), Scar Su (蘇瑞亨, 叡揚), Chih-Pin Tai (戴智斌, 創炎/Traiwan出來玩), Ming-Hsien Tsai (蔡明憲, Academia Sinica), and Ching-Lin Yu (游景麟, Google).

Lectures

Wednesday 2:20-5:20PM, Room 302, 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

Hung-Yang Lin (林宏陽), Xr08725027@ntu.edu.twX (between the enclosing pair of X's).

Prerequisites

Object-Oriented Programming and Database Management.

Textbook

Class notes and selected readings.

We will start with an overview of the typical software development process and relevant issues and then study in greater details 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.

  • Introduction (2/3 week: 02/24a)
    Overview of software requirements, development process, design methods, verification
    [slides]
  • Productivity Tools: Version Control with Git (1/3 week: 02/24b) [slides]
  • Software Modeling: An Overview of UML (2/3 week: 03/03a)
    Introduction, basics of modeling, overview of the UML
    [slides]
  • Term Project: Initial Discussions (1/3 week: 03/03b) [Draft]
  • Software Modeling: UML Diagrams (1 week: 03/10)
    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]
  • Software Implementation: Web Programming Pearls (1 week: 03/17) [basics, advanced,examples]
  • Term Project: Proposal Presentations (1/3 week: 03/24a)
  • Software Security: Web Application Security (2/3 week: 03/24b)
    Dynamic Web pages, client-side scripts, security vulnerabilities, vulnerabilities detection and prevention
    [slides]
  • Software Modeling: Domain Modeling (1 week: 03/31)
    Introduction, mathematical preliminaries, and basic and higher abstractions [slides]
  • Software Development Practice: Agile Development in Practice (1 week: 04/07)
    Principles for building an agile team, essentials of scrum, kanban, and scrumban, DevOps, and engineering culture
    [slides]
  • Term Project: First Preliminary Demos (1/3 week: 04/14a)
  • Software Development Practice: Design Document (2/3 week: 04/14b)
    High level design document, implementation level design document, user story (for Agile)
    [slides, An Example Design Document]
  • Software Design: Design Patterns (2 weeks: 04/21, 04/28)
    Why design patterns, introduction to creational, structural, and behavioral patterns, GoF patterns
    [slides, code examples]
  • Term Project: Second Preliminary Demos (1/3 week: 05/05a)
  • Midterm Discussions (or Make-Up Lecture) (2/3 week: 05/05b)
  • Software Verification: Testing (1 week: 05/12)
    [slides]
  • Software Modeling: Formal Logic and Correctness Requirements (2 weeks: 05/19, 05/26)
    Propositional and first-order logics (propositions, proofs, theorems, predicates, models)
    [slides]
    Object Constraint Language (relation with UML models, values, types, expressions, objects, properties, collection operations)
    [slides]
  • Term Project: Final Presentations (2021/06/02)
  • Final Exam (2021/06/09)
  • Software Verification: Formal Program Verification (2 weeks: 06/16, 06/23)
    Hoare logic of programs (assertions, pre/post-conditions, invariants, partial and total correctness)
    [slides, notes: Rules of Hoare Logic, Proofs with Hoare Logic]
    Verification of programs with Frama-C (Frama-C, ACSL)
    [slides]

Grading

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

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. Verification of Sequential and Concurrent Programs, 3rd Edition, K.R. Apt, F.S. de Boer, and E.-R. Olderog, Springer, 2009.
  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.

Old Exams and Solutions

courses/sdm2021/main.txt · Last modified: 2021/11/09 09:39 by tsay2