MET CS 893 Agile and Advanced Software Engineering Methods

Last updated April 25, 2007

Background of the Instructor changed if this is red

Learning Objectives changed if this is red

Contacting Eric Braude changed if this is red

Plagiarism Warning changed if this is red

Evaluation of Students changed if this is red

Policies – Miscellaneous changed if this is red

Forums: Past and Present changed if this is red

Presentation recommendations changed if this is red

Home Page of Eric Braude changed if this is red

Textbooks and Materials changed if this is red

Homework and Due Dates changed if this is red

Topics, Class Dates & Readings changed if this is red


Description

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. Another form is the emergence of open-source development. We discuss the architectural and operational implications of open source development and explore 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.


Prerequisites

MET CS 673 or equivalent.


Learning Goals

  • Understand advanced methods and trends in software engineering
  • Understand agile methods and test-driven development
  • Understand the practice and application of open source methods
  • Understand the state of the art in secure software construction
  • Experience distributed development


Textbook and Materials

Required

“Agile Software Development” by Martin (Prentice Hall)

ISBN: 0135974445

Optional

“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)


Evaluation of Students

Absorbing and creating advanced software engineering methods will be expected of all students. To attain excellence, students will be expected to create original analysis and comparisons. The course grade will be computed from the following

Assignments: 35%

Project: 65%

The project will be in three phases, weighted as follows:

phase 1 (problem statement): — 1/7

phase 2 (analysis & design): — 2/7

phase 3 (implementation and critical review): –4/7

Late homework will not be accepted unless there is a reason why it was impossible to perform the work in time given work and emergency conditions.  In that case, e-mail the written reason should be attached to the homework, which will be graded on a pass/fail basis if the reason is accepted by me.

Click here for generic information on how grades are allocated and averaged in all of my classes.


Warning concerning plagiarism

Please cite all references and uses of the work of other. All instances of plagiarism must be reported to the College for action. e-mail, see or call me if you have any doubts about the proper use of others’ material. In any case, clearly acknowledge all sources in the context they are used, including code, of course. See plagiarism policies for examples and a fuller explanation.


Presentation recommendations

The purpose of the end-of-semester presentation is to share with the class your impressions and lessons learned from carrying out the term project. The following format usually works well.

2 mins: Describe the application (1-2 slides)

2 mins: Describe why the technology selected applies (1-2 slides)

5 mins: Describe the design and outcome; use diagrams and screenshots where appropriate (1-3 slides)

4 mins: Describe negative lessons learned (concentrate on your criteria and include scalability) (1-2 slides)

4 mins: Describe positive lessons learned (concentrate on your criteria and include scalability) (1-2 slides)


Weekly Schedule of Topics

Please note that since this is a new course, the syllabus is liable to change up to 20%.

Class

#

Date

Category

Topic

Comment

(These dates are estimated. See homework site for actuals.)

1

April

2

Process

· Agile Processes

Assign phase 1

2

April

9

Process

· Advanced Software Processes

· Introduction to Aspect-Oriented Programming (AOP)

· Geographically distributed development

3

April

16

Process

· Open source case studies

· Introduction to the Eclipse and OpenOffice Open Source Projects

· Eclipse is an environment for developing applications.

Phase1 due

Assign phase 2

4

April

23

Requirements

· Test-Driven Development as Requirements

5

April

26

Requirements

· Advanced Requirements Methods

· Open source case studies

6

April 30

Design

· Design for Agile Processes

7

May 3

Design

· Formal and Emerging Design Methods

· Creating designs that can be decomposed into offshore components

Phase 2 due

Assign phase 3

8

May 7

Design

· Pair Programming

· Introduction to Security in Development

· UML Designs for Security

9

May 10

Geographically Distributed Development

· Trade-offs

· Phases in distributed mode

10

May 14

Implementation

· Principles of Advanced Implementation

· Formal and Emerging Implementation Methods

11

May 17

Implementation

· Refactoring in Implementation I

12

May 21

Implementation

· Refactoring in Implementation I

13

May 24

To be decided

14

May 30

· Presentations

Phase 3 due


Forums — past and present

Summer 2005 Group home page: https://groups.yahoo.com/neo/groups/893Su05/info

Spring 2006:Group home page: http://groups.yahoo.com/group/893F06

Summer 2006: Group home page: https://groups.yahoo.com/neo/groups/893Su06/info

Spring 2007: http://groups.yahoo.com/group/893Sp07 ;Group email address: 893Sp07@yahoogroups.com

MET CS 893: Agile and Advanced Software Engineering Methods

Last updated April 25, 2007

Background of the Instructor changed if this is red

Learning Objectives changed if this is red

Contacting Eric Braude changed if this is red

Plagiarism Warning changed if this is red

Evaluation of Students changed if this is red

Policies – Miscellaneous changed if this is red

Forums: Past and Present changed if this is red

Presentation recommendations changed if this is red

Home Page of Eric Braude changed if this is red

Textbooks and Materials changed if this is red

Homework and Due Dates changed if this is red

Topics, Class Dates & Readings changed if this is red


Description

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. Another form is the emergence of open-source development. We discuss the architectural and operational implications of open source development and explore 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.


Prerequisites

MET CS 673 or equivalent.


Learning Goals

  • Understand advanced methods and trends in software engineering
  • Understand agile methods and test-driven development
  • Understand the practice and application of open source methods
  • Understand the state of the art in secure software construction
  • Experience distributed development


Textbook and Materials

Required

“Agile Software Development” by Martin (Prentice Hall)

ISBN: 0135974445

Optional

“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)


Evaluation of Students

Absorbing and creating advanced software engineering methods will be expected of all students. To attain excellence, students will be expected to create original analyses and comparisons. The course grade will be computed from the following

Assignments: 35%

Project: 65%

The project will be in three phases, weighted as follows:

phase 1 (problem statement): — 1/7

phase 2 (analysis & design): — 2/7

phase 3 (implementation and critical review): –4/7

Late homework will not be accepted unless there is a reason why it was impossible to perform the work in time given work and emergency conditions.  In that case, e-mail the written reason should be attached to the homework, which will be graded on a pass/fail basis if the reason is accepted by me.

Click here for generic information on how grades are allocated and averaged in all of my classes.


Warning concerning plagiarism

Please cite all references and uses of the work of other. All instances of plagiarism must be reported to the College for action. e-mail, see or call me if you have any doubts about the proper use of others’ material. In any case, clearly acknowledge all sources in the context they are used, including code, of course. See plagiarism policies for examples and a fuller explanation.


Presentation recommendations

The purpose of the end-of-semester presentation is to share with the class your impressions and lessons learned from carrying out the term project. The following format usually works well.

2 mins: Describe the application (1-2 slides)

2 mins: Describe why the technology selected applies (1-2 slides)

5 mins: Describe the design and outcome; use diagrams and screenshots where appropriate (1-3 slides)

4 mins: Describe negative lessons learned (concentrate on your criteria and include scalability) (1-2 slides)

4 mins: Describe positive lessons learned (concentrate on your criteria and include scalability) (1-2 slides)


Weekly Schedule of Topics

Please note that since this is a new course, the syllabus is liable to change up to 20%.

Class

#

Date

Category

Topic

Comment

(These dates are estimated. See homework site for actuals.)

1

April

2

Process

· Agile Processes

Assign phase 1

2

April

9

Process

· Advanced Software Processes

· Introduction to Aspect-Oriented Programming (AOP)

· Geographically distributed development

3

April

16

Process

· Open source case studies

· Introduction to the Eclipse and OpenOffice Open Source Projects

· Eclipse is an environment for developing applications.

Phase1 due

Assign phase 2

4

April

23

Requirements

· Test-Driven Development as Requirements

5

April

26

Requirements

· Advanced Requirements Methods

· Open source case studies

6

April 30

Design

· Design for Agile Processes

7

May 3

Design

· Formal and Emerging Design Methods

· Creating designs that can be decomposed into offshore components

Phase 2 due

Assign phase 3

8

May 7

Design

· Pair Programming

· Introduction to Security in Development

· UML Designs for Security

9

May 10

Geographically Distributed Development

· Trade-offs

· Phases in distributed mode

10

May 14

Implementation

· Principles of Advanced Implementation

· Formal and Emerging Implementation Methods

11

May 17

Implementation

· Refactoring in Implementation I

12

May 21

Implementation

· Refactoring in Implementation I

13

May 24

To be decided

14

May 30

· Presentations

Phase 3 due


Forums — past and present

Summer 2005 Group home page: https://groups.yahoo.com/neo/groups/893Su05/info

Spring 2006:Group home page: https://groups.yahoo.com/neo/groups/893F06/info

Summer 2006: Group home page: https://groups.yahoo.com/neo/groups/893Su06/info

Spring 2007: https://groups.yahoo.com/neo/groups/893Sp07/info ;Group email address: 893Sp07@yahoogroups.com