MET CS 893 Agile and Advanced Software Engineering Methods
Last updated April 25, 2007
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 |
“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
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
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 |
“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
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