CIS 501: Software Architecture and Design

Prepared by William Hankley, revised January 2005

Descriptors for levels of achievement:
Knowledge of ..... knows some appropriate vocabulary
Understanding of ... knows concepts and can discussand compare features
Experience with ... has used tool, language,notation, etc.
Proficiency ... able to demonstrate concepts and details through implementation, writing, or speaking.

Short version:

0. (remedial) proficiency with Java programming: common program structure,naming conventions, application-model-view-controller structure, serialization, standard collections library, about+help menus and windows, reading text block.

1. some proficiency with software models using UML

1.a experience with user interface design

2. some proficiency using IDE and CASE tools

3. experience with object-oriented features and technologies

4. understanding of architecture for network based systems

5. experience with technical journals and a small writing assignment

Long version:

1. Software models:
knowledge of:
object constraint concepts and notation;
understanding of:
rational for software models,
UML notation (diagrams for use-case, class, scenario, state, deployment),
domain (abstract) model mvs implementation models,
several common domain models ( as POS, appointments scheduling, graph editor, warehouse, and others )
correctness and quality of software models,
a few abstract patterns, such as: observer, visitor, state, singleton, proxy, and others;
experience with:
building simple domain models (order of ten classes) ,
proficiency with:
scenario patterns for common methods as,
creating, destroying objects,
adding, deleting objects from collections,
displaying and selecting objects.

1a. User interface design:
knowledge of:
guidelines for user interaction;
experience with:
GUI state model prototype;
GUI builders.

2. Tools:
experience with:
using CASE tools (as VISIO, Poseidon );
an IDE (as JBuilder )
beans properties,

3. Object technologies:
knowledge of:
Java vs Microsoft object technologies,
patterns, wizards, templates, frameworks;
understanding of:
structure of object-oriented applications ( default structure in IDE's),
common implementation patterns as
standard collections,
relations by index, key, reference, by pattern matching,
use of beans and bean events (e.g. using a calendar bean);
proficiency in:
project with UML model and Java implemention;

4. Other architectures:
knowlege of:
structure of network applications, clients, servers,
RMI and Corba,
architectures based on data flow, rules, repositories,

5. Writing skill:
knowledge of:
guidelines and format for technical writing
technical journals, such as: IEEE Software, ACM Communications
experience with:
writing and evaluating a small technical article