MET CS 893 Agile and Advanced Software Engineering Methods

(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


Department of Computer Science
Boston University Metropolitan College
808 Commonwealth Ave, Room 250, Boston, MA. 02215.  Phone: 617 353 2566, Fax: 617 353 2367, Email: csinfo@bu.edu