University Of Massachusetts Lowell

Computer Science Department

http://www.cs.uml.edu

91.523 Software Engineering I:

Update (in progress) for Spring and Fall 2005

Professor Lechner, OS209

lechner@cs.uml.edu

This syllabus is currently being  updated for Spring 2005.

Last revision: 050130

TABLE OF CONTENTS

Course Objectives

Course Description

Software Used to Support Class

Instructor

Required Textbook and Materials

Student Responsibilities

Grading

Projects (TBD)

Class Schedule and Assignments

 

Course Objectives

·       To convey classical and object-oriented software development principles and practices by actively applying them to ongoing object-oriented CASE tool development projects.

·       To provide the experience of programming-in-the-large and legacy software reuse for hierarchical software systems using C and C++.

·       To provide an environment for collaborative work by teams of mature students.

·       To build upon the language-independent O-O analysis and design experience of the 91.531 OOPL and 91.502 Formal Models pre-requisites.

Course Description

·       Classical and object-oriented software development principles and practice; OO CASE tool development projects in C/C++ and Java.

·       This course emphasizes pragmatic techniques for software analysis, specification, design, verification and testing to improve quality and reusability of systems of programs, at varying levels of abstraction.  Object-oriented analysis and design principles are stressed throughout;.

·       Topics include (1) project life cycles, (2) design documentation using  UML and RDB static structural models (Class Models and EERDs) and dynamic behavior models (object life cycles, UML State Models, Activity/Collaboration Models), (3) configuration and version management (CVS), (4) verification (pre- and post-conditions, OCL), (5) testing and debugging (gdb, test coverage,  log/replay/rollback, regression testing, refactoring, and ghost variables).

·       The application domain project focus is on tools for Model-Driven Development.  Teams will apply information modeling, code generation, event management, and life cycle history modeling techniques to enhance existing executable prototypes of object-oriented CASE tools in C/C++ or Java.

 

Required Prerequisites:

·       91.304 or 91.502 Formal models and methods

·       Programming language principles (91.301 or 91.531)

·       Significant programming experience in any OOPL

Recommended Prerequisites:

·       91.515 OS and familiarity with one or more domain-specific application areas such as graphics, databases, communications, multimedia, CAD/CASE.

Software Used to Support Class

PC and Unix/Linux platforms:

·                 ../COOL-GEN (chgen and gencpp Database Code Generators).

·                 Java2, J2SE 1.4.2

·                 ../eclipse/ Framework [TBD]

Unix/Linux platforms:

·                 CVS (Concurrent version-control system) (& see man cvs)

·                 COOL-BDE User Guide  Block Diagram Editor

·                 COOL-LCP  State Model Interpreter 

·                 xmkmf/gcc/g++  (& see man xmkmf, man imake)

Instructor: Dr. Robert Lechner

Office: EB402 and OS315 (CS Dept.)

E-Mail: lechner@cs.uml.edu

Phones:

            Home: (781)449-1497 or (781)444-8321

            Office: (978)934-3632 (OS209);    Fax: (978) 934-3551 (OS313)

Office Hours (Spring 2005):

            Tuesday 830PM on (after class); Others by appointment.

Teaching Schedule (Spring 2005):

            91.523: Tuesday 530-830PM

Required Textbook and Materials (Spring 2005):

     [OOSE]: Breugge & Dutoit: ' Object-Oriented Software Engineering Using UML, Patterns and Java', (2nd Ed), Prentice-Hall 2004     

Part I   : Getting Started                     (Chapters  1- 3)

Part II  : Dealing with Complexity     (Chapters  4-11)

Part III : Managing Change                (Chapters 12-16)

Local mods to text lecture slides: ../BreuggeOOSE  

 

Possible text for 91.524 SWEng II : OO Framework Development:
      Raistrick et al: Executable MDA (KennedyCarter iUMLLite tool)

_______________________________________________

 

            Recommended bibliography:

                                                                              

Selected reprints:

·       [OLC] Shlaer and Mellor: 'An O-O Approach to Domain Analysis', ACM SIGSOFT SE-Notes 14(5), Jul 1989 pp 66-77: [This handout previewed the 1992 text: Shlaer & Mellor: 'Object Life Cycles: Modeling the World in States', Prentice-Hall, which is now a print-on-demand paperback.]

·       [DbyC] B. Meyer: Design by Contract

      [This .ppt slide set is based on  Chapter 11 of  [OOSC] B. Meyer: 'Object-Oriented Software Construction' (2nd Ed, P-H 1997 with CD-ROM).]

·       [CVS] Tutorial material (on-line at $CASE/cvs).

 

·       [OPF] DonaldFiresmith's website on the OPEN Process Framework  (diagram components are clickable hyper-links as in bde2htm)     

 

·       [SWEBOK] Guide to the Software Engineering Body of Knowledge, IEEE/CS Software Engineering Coordinating Committee (Ironman Version, May 2004)

                                               

             

·       OthersTBD (see Refs to CharlesBachman, FredBrooks, MannyLehman, DavidParnas;  and URLs to ScottAmbler, Martin Fowler, David Boundy, David Hay, JiriSoukup, GradyBooch, OMG/ADTF,...)

 

            Reference material on OOP and Software Engineering:

                        (Warning: The first three  are encyclopedic texts.)

 

[OOSC] B. Meyer: 'Object-Oriented Software Construction'  (2nd Ed, P-H 1997 with CD-ROM). (In particular, Chapter 11: Design by Contract)

 

[CPPL] B. Stroustrup: 'The C++ Programming Language' (3rd.Ed.) A-W 1997.

 

[UML] Martin Fowler: 'UML Distilled: Applying the Standard Modeling Language' (3rd.Ed.), Addison-Wesley 2004.

 

[JAVA2] C. Horstmann and G. Cornell: 'Core Java 2 (J2SE5.0), Vol. 1: Fundamentals and Vol. II: Advanced Features', Sun Microsystems 2005.

 

[JDP] J. Cooper: 'Java Design Patterns, A Tutorial', A-W 2002.

 

[JOT]  ETH Zurich: Journal of Object Technology (published by the Chair of Software Engineering at ETH Zurich, Switzerland).

 

[MDA] Kleppe, Warmer, Bast: MDA Explained, A-W 2003.

 

[OCL] Warmer, Kleppe: The Object Constraint Language, AW 1999.

 

[OODP] C. Horstmann: Object-Oriented Design and Patterns, Wiley 2004.

 

[OPF] Firesmith's website on the OPEN Process Framework

(diagram components are clickable hyper-links as in bde2htm)     

 

[SWEBOK] Guide to the Software Engineering Body of Knowledge, IEEE/CS Software Engineering Coordinating Committee (Ironman Version, May 2004)

 

[ETHICS] Software Engineering Code of Ethics v5.2:               http://www.computer.org/tab/seprof/code.htm

 

[CURRICULUM2004] ACM/SIGCSE Computing Curricula 2004

            http://www.acm.org/education/Overview_Draft_11-22-04.pdf

(Curriculum Guide for five sub-divisions of the BS/CS major: computer engineering, computer science, information systems, information technology, and software engineering.) [See curriculumManifesto_rjl.htm for my 'funnel' view of a common prefix to these curricula.

 

 

            Project legacy reports

 

These are in $CASE = /usr/proj3/case/* and/or  $PH = http://www.cs.uml.edu/~lechner

(many are browsable, but need to be indexed, from my home page: http://www.cs.uml.edu/~lechner).

 

Click for a List of Project Suggestions  (Obsolete - TBUpdated)

 

Student Responsibilities

Have the prerequisite OOP language skills and BS/CS background and the motivation to produce understandable and robust software-engineered products.

 

Participate in team meetings and collaborative design activities including some that may be outside of the regular class schedule.

 

Have the ability to negotiate and implement agreed-upon interfaces and the discipline to specify requirements semi-formally before [re]design and implementation.

 

Subscribe to SW Requirements Engineering (re-online@it.uts.edu.au) email list server. (Old messages are  in ~lechner/Mail/re)  [To subscribe to RE-online mailing list, send e-mail to majordomo@it.uts.edu.au with the following line as the first and only line in the body of the message:            subscribe RE-online your email address  ]

 

Email any changes to your course registration and contact info, team & project  preferences as they become relevant.

 

Visit this web link to the Software Engineering Code of Ethics v5.2:               http://www.computer.org/tab/seprof/code.htm 

Grading

·       Two hour exams with in-class and take-home parts: 50%.

·       Code redesign and other assignments: 10%;

·       Project plans, documentation and status reviews: 40%;

·       Project responsibilities of team members include:

1.      Analysis (reverse engineering results; impact analysis documentation);

2.      Work plan (task breakdown; incremental build/test plan);

3.      Black-box design requirements: interfaces and behavior specifications: (required pre-conditions, ensured post-conditions; error handlers; invariants - see [DbyC];

4.      White-box design decomposition (conformance to build plan);

5.      Source code style that is understandable, robust and complete;

6.      Guides for users and maintainers: (readability and thoroughness);

7.      Revision history and comments (visible conformance to build plan)

8.      Testing

 

Weekly Schedule and Assignments  (TBUpdated for 2005)

            Follow this link to $PH/05s523/05f523Schedule.xls