Published using Google Docs
CS 452/552 Building Software Systems with Components
Updated automatically every 5 minutes

CS 452/552 Building Software Systems with Components

Credit Hours:

4/3

Course Coordinator:

Not currently offered

Course Description:

Designed to familiarize students with the concepts behind and opportunities afforded by modern component architectures, such as Microsoft COM, Java Beans and CORBA. Students are exposed to component development techniques and methods for developing complex software architectures using components. Students become familiar with component development, scripting and composing components, and the strengths and weaknesses of using components in designing large complex software systems.

Prerequisites:

CS 314, CS 333, CS 350; knowledge of C++ or Java programming.

Goals:

Upon the successful completion of this class, students will be able to:

  1. Explain what component-based software engineering (CBSE) is and why it is practically important;
  2. Understand the divide-and-conquer nature and the software reuse focus of CBSE;
  3. State, in outline, the activities involved in CBSE;
  4. Determine whether CBSE is suitable for development of a given type of software systems;
  5. Apply the state-of-the-art component models to design a component-based software system that solve a problem of small to medium complexity and to formally specify the design;
  6. Implement the design of a small to medium size component-based software system on the state-of-the-art component platforms;
  7. Test a component-based software system by choosing the appropriate testing method, designing the test plan, constructing the test cases, and performing the test;
  8. Break down the management of a component-based software project into tasks and use tools that support project management;
  9. Evaluate emerging models and methodologies for component-based software development.

Textbooks:

  1. Component Software Beyond Object-Oriented Programming, Clemens Szyperski, Addison-Wesley / ACM Press, ISBN 0-201-17888-5.
  2. UML Distilled, Second Edition, Martin Fowler, Addison-Wesley, ISBN 0-201-65783-X.

References:

  1. UML Components A Simple Process for Specifying Component-Based Software, John Cheesman and John Daniels, Addison-Wesley, ISBN 0-201-7-851-5.
  2. Design PatternsGamma, Helm, Johnson, Vlissides, Addison-Wesley, ISBN 0-201-63361-2.
  3. Refactoring, Martin Fowler, Addison-Wesley, ISBN 0-201-48567-2.

Major Topics:

Laboratory Exercises:

The design of a non-trivial software engineering architecture that utilizes component technology. Architecture will be validated and demonstrated through a software proof of concept demonstration system. (9 weeks)

Oral and Written Communications:

Every student is required to submit at least 1 written report (not including exams, tests, quizzes, or commented programs) of typically 30 pages.

Theoretical Content:

Computer software architecture theory / Component architecture theory (70%)

Testing theory (30%)

Problem Analysis:

Distilling key architectural abstractions from general problem statements. Team communication and consensus building.

Solution Design:

Design of flexible, reusable software interfaces. Design of proof-of-concept software vehicles for validating key architectural decisions and communicating with stakeholders.

CAC Category Credits

Core

Advanced

Data Structures

0.4

Algorithms

1.0

Software Design

1.5

Computer Architecture

0.1

Programming Languages

1.0