CENG 431

Building Software Systems

Object oriented analysis and design. UML usage. Advanced topics of object oriented programming. Software reuse, refactoring, unit testing. Fundamental design patterns. Software components, libraries and framework usage and ve creation.

Course Objectives

1. To provide students with the ability of object oriented analysis and design.

2. To provide students with the ability of object oriented design programming.

3. To teach reuse, refactoring, unit testing subjects.

4. To teach fundamental design patterns at intermediate level.

5. To provide students with the fundamentals of software components and software frameworks.

Recommended or Required Reading

X. Jia, Object-Oriented Software Development Using Java. , Addison Wesley. 2nd Edition, 2003. ,C. Larman, Applying UML and Patterns , Prentice Hall, 3rd Edition, 2004. ,M. Fowler, K. Beck, J. Brant, W. Opdyke, D. Roberts, Refactoring: Improving the Design of Existing Code , Addison-Wesley, 1999.

Learning Outcomes

Upon the completion of this course a student :

1. Know interleaved activities between specification, design, coding and testing

2. Use Object Oriented architecture components

3. Know and compare different software system development approaches

4. Analyze problems, design and implement solutions

5. Demonstrate the ability to abstract in software systems context

6. Apply software engineering methods to real world problems

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

Grading

Midterm 30%

Final 40%

Homework 30%