CSCI 8710: Modern Software Development Methodologies

Fall 2011
Meeting time: F 4:00-6:40
Classroom: PKI 377
Instructor: Dr. Harvey Siy
Office: PKI 281B
Phone: (402)554-2834
Office Hours: By appointment (call or email ahead)
Email: hsiy at unomaha dot edu
URL: http://www.cs.unomaha.edu/~hsiy
Prerequisites: CSCI 4830 (Introduction to Software Engineering) plus object-oriented programming experience
 
Recommended
texts:
Object-Oriented Software Engineering (3rd edition) by Bruegge and Dutoit, Prentice Hall 2009.
http://wwwbruegge.informatik.tu-muenchen.de/OOSE/WebHome
Software Modeling and Design: : UML, Use Cases, Patterns, and Software Architectures by Hassan Gomaa, Cambridge University Press, 2011.
Optional texts: Modeling Software Behavior: A Craftsman's Approach by Paul Jorgensen, Auerbach Publications, 2009.
Model-Driven Software Development: Technology, Engineering, Management by Thomas Stahl, Markus Voelter, Wiley, 2006.
Generative Programming by Krzystof Czarnecki and Ulrich Eisenecker, Addison-Wesley, 2000.
Software Factories by Jack Greenfield and Keith Short, Wiley, 2004.
Principles of Object-Oriented Software Development, 2nd Edition by Anton Eliens http://www.cs.vu.nl/~eliens/online/oo
Reference The Unified Modeling Language Reference Manual (2nd edition) by Rumbaugh, Jacobson, and Booch, Addison-Wesley, 2005.

Course Description:

Designed to introduce students to advanced object technology and other modern methodologies for developing software systems. Intended for graduate students who have mastered the basic concepts and issues of software engineering. Course covers advanced object-oriented software development. The course also covers several offshoots of object technology, including: component-based software engineering, aspect-oriented software development, model-driven software development, software product line engineering, service-oriented computing, generative programming, etc.

Course content:

  1. UML overview
  2. Object-oriented analysis
  3. Software architectures
  4. Object design
  5. Design patterns
  6. Components, frameworks and middleware
  7. Interface contracts and OCL
  8. Mapping models to code
  9. Testing object-oriented software
  10. Survey of object-oriented methodologies
  11. Model-driven software development
  12. Service-oriented architectures
  13. Beyond objects (aspects, templates/generics)

Other topics to be covered, time permitting:

  1. Object-oriented metrics
  2. Maintenance and evolution of object-oriented software
  3. Object theory
  4. Survey of object-oriented languages

Evaluation

Students will be evaluated as follows:
Exams (midterm and final) 40%
Projects and papers 50%
Homeworks 5%
Class participation 5%

Approximate exam dates

  1. Midterm - mid-October
  2. Final - mid-December

Projects and Papers

Projects and papers will be given to extend the students' learning experience beyond just class lectures. These consists of student presentations, exercises, and a term project or paper.

Technology demonstrations

A technology demonstration gives a brief (20-minute) overview of a modern software development technology relevant to the course. Students can present an introduction to, say, the architecture of Oracle Fusion Middleware and prepare a brief demo illustrating its salient features. Students must be prepared to answer questions about the technology (e.g., what makes it work, how is it different from its competitors, etc). Preferably, the demo should be live, although screenshots or videos are also possible in cases where it is difficult to access the installations. Here's a list of technology areas for this semester.

Exercises

There will also be 3-4 exercises or short projects which will put into practice the software development principles from the course. Note that programming exercises may require working knowledge of Java EE or .Net with C#.

Term project

Students will develop a term project showcasing technologies covered in class. Term projects can be developed in teams of up to 3 persons.

Term paper

As an alternative to the term project, students can also elect to write a term paper in an area of research related to object-oriented software development and its offshoots. It can be a survey of several related research papers from research journals and other acceptable conferences or workshops. (Examples of acceptable conferences and workshops are the research tracks of OOPSLA, ECOOP, GPCE, ICSE, FSE, etc.)

Guidelines for assessing class participation

GradeDescription
5Regularly makes helpful, relevant contributions to lecture discussions.
Offers observations that challenges classmates to think about the material in new ways.
4Attends regularly and occasionally makes helpful, relevant contributions to lecture discussions.
3Attends regularly and actively pays attention to discussion.
2Attends regularly but does not pay attention to discussion.
1Does not attend regularly.
0Misses most classes.
(Adapted from http://web.hamline.edu/personal/skellert/cpgrade.htm.)

Policy on late homeworks

Unless otherwise stated, homeworks must be completed before class on the day it is due.

Late homeworks will get a 20% deduction per day, for each 24-hour period past the due time.

Academic Integrity

Cheating will not be tolerated for project assignments, exams and other assignments. Consult the UNO Student Policies and Department of Computer Science Policies and Procedures for formal policies about cheating and plagiarism.