CENG 431

Building Software Systems

Concepts of open source, shareware, freeware; issues of quality, conditions of use, availability; issues of software reuse; program libraries, software components; creation of additional libraries and other components; application program interfaces; use of separate compilations; use of software libraries and other software components; problems of building large systems; assessment of software including interfaces such as metrics and measures; criteria; simple principles of interface design; multimedia issues; special problems associated with color, sound, video and multimedia; advanced issues in object-oriented programming, modularity, storage management issues, parallelism; client server computing, different kinds of servers, the role of middleware; overview of the software support needed for client services and server services; illustrations of the use of object oriented techniques applied to the building of certain commonly used software tools; applets and servlets; simple design patterns; nature of the software life cycle and its different phases; concept of process; differences across various developments and the reasons for the differences.

Topics
Object oriented software development 1
Object oriented software development 2
Object oriented analysis and design with UML 1
Object oriented analysis and design with UML 2
Software development with components
Design approach with abstraction
Object oriented application frameworks
Reuse
Refactoring
Unit testing
A case study from design to software
Design patterns 1
Design patterns 2
Design patterns 3