Covers software life cycle models (waterfall, spiral, etc.), domain engineering methods, requirements analysis methods (including formal specifications), software design principles and methods, verification and testing methods, resource and schedule estimation for individual software engineers, component-based software development methods and architecture, languages for describing software processes. Includes a project where some of the software engineering methods (from requirement elicitation to implementation) are applied in an example.
The only prerequisite is a solid background in object-oriented programming.
The textbook for this course is The Pragmatic Programmer. A recommended book (but not required) is Bernd Bruegge and Allen Dutoit Object-Oriented Software Engineering Conquering Complex and Changing Systems Prentice-Hall, 2000. ISBN 0-13-489725-0
The Midterm Exam counts for 15%, the Final Exam counts for 20% and the the assignments count for 65% of the course grade. The exams are open books and notes.
This schedule is subject to change depending on class input and complexity of the material on AOSD and Eclipse. We will use a spiral model of software development, meaning that early in the course we will implement simple requirements using AspectJ. This means that we will do analysis and design much earlier than indicated by the schedule.
The schedule given below indicates the order in which topics will be covered along with suggested reading assignments.
9/26 | Introduction Software Engineering, Requirement Elicitation, Law of Demeter (LoD). | Chapter 7: Before the project + 5.26 (LoD) |
10/3 | Aspect-Oriented Software Development, Software Lifecycle. | Chapter 8: Pragmatic Projects, aspectj.org, aosd.net. |
10/10 | Communication, aspectj.org | Chapter 2: A Pragmatic Approach |
10/17 | Project Management | Chapter 1, A Pragmatic Philosophy. |
10/24 | Software Lifecycle continued. | Chapter 8 |
10/31 | Mid-Term Exam. Software Architecture, ArchJava. | Chapter 5, eclipse.org |
11/7 | Analysis, including Aspect-Oriented Analysis | |
11/14 | Design, including Aspect-Oriented Design | Chapter 4: Pragmatic Paranoia. |
11/21 | Objects and Aspects | Chapter 6: While You Are Coding. Chapter 3: Basic Tools. |
12/5 | Tool Demonstrations using Eclipse | |
12/12 | Final Exam |
There will be several assignments, each corresponding to a phase of a project. The project is about developing a code refactoring tool for the Law of Demeter. The starting point is a program that is strongly coupled containing many violations of the Law of Demeter and the tool will help the programmer to refactor the program. The project has the external constraint that it must be written in AspectJ (which includes all of Java) and be a plug-in to Eclipse. See aspectj.org and eclipse.org.
There will be an assignment every week related to the project.
There is no provision for late submissions. If you haven't completed the documents, then turn in what you have on the due date. If nothing is turned in by the due date, then your score for the assignment is 0. The grader will acknowledge receipt of all assignments.
My office number is 237 CN and telephone number is x2077. My email address is lieber@ccs.neu.edu. My home page is at http://www.ccs.neu.edu/home/lieber. My home page has my current office hours. The course home page is http://www.ccs.neu.edu/home/lieber/com3205/f02/f02.html.
If you have questions about the course material, please send me email. I will usually post my response to the course home page. If you request it in your question ("hide my identity please"), no trace of your identity will appear in the posting.