(For the other course by the same designation, see CS893 Open Source Development)
Course Overview
Prerequisites
MET CS 673 Software Engineering
Course Objectives
Contemporary software engineering takes several distinct and rapidly
changing forms. First, Agile methods are based on the need for flexibility
while applications are being built. Agile methods constitute a radical
departure from pre-existing methods: They rely on newly developed
technologies such as test-driven development, XUnit, and refactoring.
A second form is the emergence of open-source development. This
course teaches the architectural and operational implications of
open source development and explores its relationship with agile
methods. The course will also discuss aspect-oriented programming,
the decomposition of applications into onshore and offshore components,
design for security, and formal methods. Laboratory course.
Evaluation and Grading
40% Assignments,
60% Project
References
“The B Book” J-R Abriel (Cambridge)
“Understanding Formal Methods” by Monin (Springer)
“Secure Systems Development With UML” by Jan Juerens
(Cambridge)
“Balancing Agility and Discipline” by Boehm (Addison-Wesley)
Textbooks
Required: “Agile Software Development” by Martin (Prentice
Hall)
Optional:
“The B Book” J-R Abriel (Cambridge)
“Understanding Formal Methods” by Monin (Springer)
“Aspect-Oriented Programming with AspectJ” by Kisilev
(SAMS)
Probable: “Secure Systems Development With UML” by Jan
Juerens (Cambridge)
“Balancing Agility and Discipline” by Boehm (Addison-Wesley)
Schedule
PART 1: INTRODUCTION AND REQUIREMENTS
(1) Introduction to Agile Methods
Agile methods take an entirely new view of requirements, collecting them incrementally. We will explore the various agile forms and their pros and cons.
(2) Open Source Case Studies for Requirements Analysis: The Eclipse and OpenOffice Projects
Eclipse is an environment for developing applications. Begun with a $40M donation by IBM, it is used by millions of developers. A global community is developing plugins for Eclipse. OpenOffice is a widely used open-source alternative to the Microsoft Office Suite. An active development community enhances and adds facilities to it.
(3) Introduction to Aspect-Oriented Programming (AOP); Relationship with Requirements Analysis
(4) Formal Requirements Methods: Z and B
Z (“zed”) is a mathematical means for specifying requirements. One of the founders of Z, J-R Abrial, created “B” which enhances Z and also provides for implementation.
Part 2: DESIGN
(5) Open Source Design Case Studies; Design for Distribute Development
Eclipse and OpenOffice designs; Creating designs that can be decomposed into offshore components
(6) Agile and AOP in Design
(7) UML Designs for Security
This class discusses the object-oriented design options for dealing with security. (It does cover security techniques per se.)
(8) Formal Design Methods with B and Model-Driven Architectures:
We will discuss formal transformations as a means to ensure correctness and increase automation.
Part 3: IMPLEMENTATION
(9) Test-Driven Development in Agile Methods
Agile development puts unit test and implementation at the forefront, and evolves designs.
(10) Refactoring for Agile Development I
Refactoring is the principal manner in which agile programming evolves architectures.
(11) Refactoring for Agile Development II
(12) Open Source and Distributed Implementation
(13) Aspect-Oriented Programming
Aspect-Oriented programming creates aspects (perspectives on an application, such as efficiency, by instrumenting the code). This class will complete the discussion of AspectJ and will include a discussion of how AOP can integrate security into applications.
(14) Presentations

