Page 1 of 1

Module Code - Title:

CS4227 - SOFTWARE DESIGN AND ARCHITECTURE

Year Last Offered:

2024/5

Hours Per Week:

Lecture

2

Lab

1

Tutorial

1

Other

0

Private

0

Credits

6

Grading Type:

Prerequisite Modules:

Rationale and Purpose of the Module:

The objectives of this module are to equip students with the fundamental knowledge and techniques necessary to design quality software at the object and component level. The emphasis is on the support of architectural use cases through patterns at the architectural and design level, refactoring and Component Based Development (CBD) at both theoretical and applied level.

Syllabus:

Topics presented include: Challenges facing the Object Oriented (OO) and Component Based Development (CBD) paradigms. Characteristics of good software focusing on modular decomposition, coupling, cohesion, interfaces, encapsulation and architecture centric component based development. Modelling of architectural use cases. Object Oriented Design (OOD) with a focus on extensibility and performance using a generic OO method in conjunction with the Unified Modelling Language (UML). Design of software architecture focusing on architectural patterns such as those presented in the volumes on Pattern Oriented Software Architecture series. Detailed design focusing on creational, structural and behavioural design patterns. Introduction to refactoring, code smells and refactoring to patterns. Component Based Development in theory and practice. Overview of topics such as Service Oriented Architecture, Domain Specific Languages etc. Comparison of OO versus CBD.

Learning Outcomes:

Cognitive (Knowledge, Understanding, Application, Analysis, Evaluation, Synthesis)

On successful completion of this module, students should be able to: 1. Describe the characteristics of good quality software at object and component level. 2. Design quality blueprints for enterprise-level systems that incorporates architectural and design patterns. 3. Create supporting documentation for the specification workflow in a Component Based Development approach. 4. Evaluate different design alternatives. 5. Critique, compare and contrast the artefacts delivered from the OOD and CBD approaches. 6. Generate alternative refactorings based on said critique that might better support quality attributes such as extensibility and performance. 7. Develop and critique component software that is deployed on component oriented middleware.

Affective (Attitudes and Values)

On successful completion of this module, students should be able to: 1. Demonstrate an appreciation of the complexity of software development. 2. Defend the choice of software development method in a particular context.

Psychomotor (Physical Skills)

N/A

How the Module will be Taught and what will be the Learning Experiences of the Students:

Research Findings Incorporated in to the Syllabus (If Relevant):

Prime Texts:

Gamma, E., Helm, R., Johnson, R. and Vlissides, J. (1995) Design patterns: Elements of Reusable Object Oriented Software , Addison Wesley Professional Computing Series
Fowler, M., Beck, K., Brant, J., Opdyke, W. and Roberts, D. (1999) Refactoring: Improving the Design of Existing Code , Addison Wesley Object Technology Series
Chessman, J. and Daniels, J. (2001) UML Components: A Simple Process for Specifying Component Based Software , Addison Wesley

Other Relevant Texts:

Szyperski, C. (2002) Component Software: beyond Object Oriented Programming (2nd edition) , The Addison Wesley Professional Series
Kerievsky, J. (2004) Refactoring to Patterns , The Addison Wesley Signature Series
() Pattern Oriented Software Architecture volumes 1 to 5 , Wiley

Programme(s) in which this Module is Offered:

Semester(s) Module is Offered:

Module Leader:

salim.saay@ul.ie