escription: Description: Description: Description: Description: Description: Colorado State University Computer Science Department

CS517 Software Specification & Design
Spring 2014


Basic Course Information

Grading Information

Course Structure




Basic Course Information

Course Coordinator: Robert B. France.

france at cs .  colostate . edu

Tel: 970-491-6356

Fax: 970-491-2466

Lecture Times and Location (on-campus): Monday, Wednesday 3-4:15 PM; CS Building, Room 325

Office Hours: TBD


Instructor for On-line course: TBD



Description: The course will focus on advanced software modeling and specification techniques. Topics include formal specification techniques, and model-driven software development. Good working knowledge of predicate logic, set theory, and basic knowledge of the UML is assumed.


Prerequisite:  IMPORTANT: You must have a very good background in (undergraduate level) Discrete Mathematics, in particular, you must be very familiar with predicate logic and basic set theory. Students who need to brush up on their logic and set theory should look over an undergraduate level discrete math book before the start of classes. I also recommend the text book on Discrete Mathematics in the Supplemental Text part below.


In addition, students must satisfy at least one of the following:

·       Successful completion of CS414

·       Significant industry experience in object-oriented programming and familiarity with the Unified Modeling Language (UML)

·       Permission of instructor.

Course Objective: Upon completion of this course, students will be able to

·      read and write formal specifications of software systems in Alloy

·      use constraint solving tools (e.g., the Alloy Analyzer and USE) to analyze software models

·      use the UML and OCL to rigorously model software

·      form informed opinions about model-driven software development approaches

and have working knowledge of basic concurrency modeling and model checking concepts.


Learning Resources/Texts:


Required Text:


·       Software Abstractions: Logic, Language, and Analysis; Daniel Jackson; Revised Edition, The MIT Press


·       The Object-Oriented Constraint Language: Getting Your Models Ready for MDA by Jos Warmer and Anneke Kleppe, 2004, Addison Wesley Professional publishing, ISBN 0-321-17936-6.



Supplementary Texts:

·      An Introduction to Discrete Mathematics, Formal System Specification, and Z; 2nd Edition; D. C. Ince; Oxford University Press. This book can be used to help students brush up on predicate logic and set theory skills.


·      Principles of Model Checking; Christian Baier, Joost-Pieter Katoen; The MIT Press. The material on concurrency modeling will be taken from the early chapters of this book.

An on-line set of RamCT pages providing lecture notes and quizzes, in addition to asynchronous on-line discussions will be available.  


Suggested Tools:


·      The Alloy tool can be obtained from the Alloy Community.

·      The Uppaal model checking tool can be obtained from here.


The following open-source UML modeling tools are recommended for use in this course:

·      Topcased: An eclipse based modeling environment

·      Papyrus: An eclipse based UML modeling tool

·      Use: A tool for analyzing OCL constraints

Course Structure 

The course consists of the following major components: lectures, studios and major assignments.


In a studio, students work in a group (3 to 4 persons) on software specification/modeling problems. On-campus students will work and discuss their solutions in class on Monday and Wednesday of the studio week.


The following is the schedule that is followed in each studio week:

·      Saturday: Students start to work on problems.

·      Monday-Thursday: Students discuss problems they encounter on the RamCT bulletin board setup for the studio. A student can help other teams by outlining fixes to posted problems, but they should not share all details of their solutions.

·      Friday-Sunday: Students use the discussions to improve their solutions. Final solutions must be posted on RamCT by Sunday midnight if teams are to receive a grade for the studio. Other groups will rate the solutions in the following week (see below).


In the following week groups will evaluate and rate the solutions submitted by other groups. The evaluations and ratings must be sent to by Sunday midnight of the rating week. These ratings will be used to determine a grade for a studio solution. The lecturers will post the evaluations and ratings on the bulletin board without the names of evaluators.


Major assignments replace exams in this course. A major assignment requires that each student develop and analyze formal specifications of a software system. Students must not collaborate on the major assignments - collaboration is a form of cheating and any evidence of cheating will be treated as required by the university. Two major assignments will be given in this class. 


The Lecture, Studio, and Major Assignment schedule is given below:





Course Introduction; Predicate logic and set theory pre-test


UML Modeling review


Using the Object Constraint Language (OCL)


Studio 1: UML modeling studio 1


Studio 2: Class modeling with OCL


Introduction to Alloy


Alloy Logic, Language;


Studio 3: Basic Alloy modeling; Major Assignment 1 due:  UML/OCL modeling




Studio 4: Alloy modeling with operations


Alloy modeling with traces


Modeling concurrent systems: Concurrency models


Linear temporal properties


An introduction to Temporal Logic


Studio 5: Concurrent System Modeling Studio


Project presentations


Major Assignment 2 due:  Alloy, concurrency modeling



Students will work in groups (no more than 3 persons in a group) or individually on a project in which they will specify and analyze a software system using a formal specification/modeling approach. The lecturer must approve the software system.


Students are required to participate in online discussions. A total of 10 discussion questions will be made available during the semester. Each student must do the following to get a point for a discussion: (1) post their answer to the questions, and (2) respond to the answers posted by at least two other students. Partial points will not be given. Discussions will start on Sunday and end on the following Sunday. To give students a fair chance of responding to your answers please post your answers as soon as possible. As a guideline, you should post your answer by Thursday of the discussion week to give other students a chance to respond.

Grading Information

Marks will be allocated as follows:

·      Quizzes (5%)

·      Discussions (5%)

·      Studios (25%)

·      Project (25%)

·      Major Assignment 1: UML/OCL   (20%)

·      Major Assignment 2: Alloy, Concurrency modeling   (20%)

Professional Conduct

All students are expected to conduct themselves professionally. We (the instructors) assume you are familiar with the policies in the student information sheet for the department. The department’s code of conduct can be found here. Students should also be aware of professional codes of ethics, for example, the ACM SE Code of Ethics and the IEEE-CS SE Code of Ethics.

Important Dates

·      Jan. 22: First CS517 lecture

·      Feb. 23: Project proposal & plan due

·      March 9: Major Assignment 1 due

·      March 24: (on-campus) Last day for course withdrawal

·      April 27: Project due

·      May 11: Major Assignment 2 due

Links to Related Materials

More links will be added to this section as the need arises.

Last modified: January 21, 2014