DOC PREVIEW
MIT 6 898 - Lecture 1: Course Overview and Introduction to Alloy

This preview shows page 1-2-3 out of 9 pages.

Save
View full document
Premium Document
Do you want full access? Go Premium and unlock all 9 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

6 898 Advanced Topics in Software Design February 6 2001 Lecture 1 Course Overview and Introduction to Alloy Lecturer Daniel Jackson 1 Scribe Bill Thies Course Overview 1 1 Contacting the Lecturer Please use the email address dnj 6898 mit edu to contact Daniel to help him organize mail for the course 1 2 Expectations The following tasks are expected to be completed by the student They are described in more detail on the course webpage Scribe one lecture take notes and write them up in HTML There might be enough people registered for the course that not everyone will have to scribe Attend class and participate Read assigned papers and answer a few short questions about the papers before coming to class These answers should be emailed to Daniel the day before the class meeting Complete three projects 1 A modeling exercise This will be challenging but not open ended 2 A programming exercise 3 A term project The project can be of three types a Do an open ended research project This can be done in a team or individually and will result in a paper with an oral presentation b Build something as a design project This must be done individually and requires only a written presentation c Re design an existing piece of software as a design clinic This must be done individually and requires only a written presentation In all the course should require an average of about 6 hours week of outside work but the work will be sporadic since there are only a few assignments 1 3 Collaboration Policy It is fine to discuss solutions in a group but all work that is handed in must be written individually 1 1 4 Course Outline This course will focus on advanced topics of software design We will concentrate on how to express analyze and realize high level design ideas and will examine current techniques languages tools and methods in the field We will try to bring together perspectives from different communities including 1 The programming language community especially those interested in functional programming 2 The formal methods community 3 The extreme programming community which embraces open source models with communal incremental refactoring of code 4 The theoretical design community e g those that are interested in decoupling theory This area the lecturer is less familiar with but is interested in exploring as part of the course Speaking of communities Alan Donovan is organizing a programming languages reading group that meets from 4 5 p m on Tuesdays Everyone is welcome to join 1 4 1 The Lecturer s Biases Daniel gave a disclaimer as to his own biases in software design They include 1 He is a reductionist How can you capture the essence of software What makes a design different from other designs How can designs be most simple 2 He likes tools It s kind of strange to note that software designers are one of the only computer scientists who don t necessarily use computers in their work currently they just think about the design without much help of automated tools This is especially true for the early stages of design Some people are concerned that software design is a craft and shouldn t be reduced to a science a tool would be too rigid and restrictive However most people don t take this view about structured programming even though it met with some resistance at first Is it possible to factor out repeated human tasks and capture common structures in the design process too 3 Regarding formal methods he likes lightweight formalism Some people argue for reducing all of software design into a mathematical formula but this has the unappealing aspects of 1 not really capturing everything in the design and 2 not being practical Instead the use of formal methods should be risk driven motivated by bang for the buck For example if a product needs to be highly reliable then lightweight methods can be valuable for providing a precise design and a mechanical analysis of the program s properties 1 4 2 Topics to be Covered There are four main topics planned for the course although they are flexible 1 Modeling Languages including the idioms and analyses that are characteristic of each We will start with Alloy the language being developed in Daniel s group This will provide a clean notation to use for discussing design ideas in the remainder of the class Also we ll consider JML 2 Design Patterns There are two types of patterns that we will consider 2 Patterns of Problems These include Martin Fowler s book on refactoring and Michael Jackson s work on problem frames The latter work takes the approach of classifying design problems into known categories before attempting solutions Patterns of Solutions This includes the classic Design Patterns book by the Gang of Four 3 Programming Language support for software design Examples include a Functors which are constructs in ML for building module generators and sharing constraints b Type classes which are provided in Haskell as a decoupling mechanism for something related to overloading c Units a theoretical idea that is being developed by Matthias Felleisen who is teaching a related type theory course at Northeastern this spring Units are being incorporated into the Java pre processor d Open Classes which allows one to dynamically add methods to a class e Aspect Oriented Programming which is a technology for separation of concerns in software development 4 Theoretical underpinnings including Nam Suh s work on software design as well as Design Rules by Thomas Baldwin and Kim Clark which views design from the perspective of economic theory 2 Introduction to Alloy We ll discuss the Alloy language at the beginning of this class both as a foundation for discussing design concepts later and as a means for understanding a modeling language Alloy has some operators that are generalized versions of normal operators which makes it very succinct and expressive 2 1 Overview The high level ideas and properties of Alloy are as follows 1 Declarative Modeling Alloy is for recognizing that a program has a given property It answers the modeler s question how can I recognize that property P has happened rather than the engineer s question of how can I make property P happen Also Alloy code can be executed e g to demonstrate that a sorting algorithm works 2 Expresses Structure Everything in Alloy is done with relations there are no sets or other mathematical entities in the language This keeps things simple 3 First Order All the logical constraints in Alloy are first order which allows them


View Full Document

MIT 6 898 - Lecture 1: Course Overview and Introduction to Alloy

Download Lecture 1: Course Overview and Introduction to Alloy
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Lecture 1: Course Overview and Introduction to Alloy and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Lecture 1: Course Overview and Introduction to Alloy and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?