APPLICATION ARCHITECTURE AND DESIGN PATTERNS

SHE Level 3
SCQF Credit Points 20.00
ECTS Credit Points 10.00
Module Code M3I325639
Module Leader Mike Mannion
School School of Computing, Engineering and Built Environment
Subject Computing
Trimester
  • A (September start)

Pre-Requisite Knowledge

Object Oriented Analysis & Design (or Equivalent)

Summary of Content

This module covers the architectural driven design of information systems and the role of proven good software development practices captured in the form of design patterns. A range of architectural patterns and detailed design patterns are explored using the Unified Modelling Language (UML) and program code examples where appropriate. The core learning theme is the iterative formation of a functional software architecture design description and its elaboration into detailed principal design components but one that is often significantly moderated by desired quality (non-functional) requirements. Domain-specific architectures are discussed in the context of Software Product Lines.

Syllabus

ARCHITECTURAL DESIGN Key Software Design Principles; Different General Design Techniques; An Iterative Architectural Design And Analysis Process; Commonly Used Architecture. The role of the Software Architect. ARCHITECTURAL PATTERNS What is a Pattern; Pattern Types; Benefits; Limitations; Pattern Templates; Examples: Layered, N-Tier, MVC, Event-Driven; Peer-to-Peer DETAILED DESIGN PATTERNS Design Principles; Design Mechanisms; Elaborating Architectural Design Patterns using Detailed Design Patterns; Code examples for Detailed Design Patterns ARCHITECTURAL ANALYSIS Designing for Quality; Scope of Architectural Analysis; Analysis Techniques; Quality Attributes; Architectural Reviews; SOFTWARE PRODUCT LINES Domain Engineering vs Application Engineering; Domain Architectures; Management of Variability Types; Platforms

Learning Outcomes

On successful completion of this module, students should be able to:1 - Describe the process of software architecture design2 - Analyse and evaluate architectural designs from the perspective of a range of different quality attributes3 - Locate and understand the contribution of different libraries of detailed design patterns4 - Evaluate and apply detailed design patterns to the development of software systems.5 - Appraise domain-specific architectures in the context of Software Product Lines

Teaching / Learning Strategy

The University 'Strategy for Learning' documentation has informed the learning and teaching strategy for this module. The module material will be introduced through lectures, while practical exercises, based on the lecture material, will be given to students for their laboratory sessions. Tutorials will be used to help explain and elaborate on both the lecture material and the laboratory exercises. Full use will be made of GCU Learn to provide Lecture-based and related study materials, along with sample solutions of Tutorial and Laboratory exercises, thus encouraging the development of independent learning and allowing self-reflective feedback on student performance. Staff-based feedback on student performance for submitted work will be provided in line with the University feedback policy, with summative feedback and grades on the coursework assessment utilising GCU Learn. The additional interactive discussion features of GCU Learn will be utilised, as appropriate to the module, to stimulate independent and flexible student learning outwith scheduled class time

Indicative Reading

-567 Books and articles: *** Core Text ** Recommended * Useful Background Reading ***Gamma, E., Helm, R., Johnson, R., Vlissides, J., (1995) Design Patterns: Elements of Reusable Object-Oriented Software, <https://www.amazon.co.uk/Design-patterns-elements-reusable-object-oriented-x/dp/0201633612/ref=sr_1_1?s=books&ie=UTF8&qid=1498304767&sr=1-1&keywords=design+patterns> Pearson ISBN: 0201633612 ***Taylor, R., Medvidovic, N., Dashofy E.M (2010) Software Architecture: Foundations, Theory, and Practice, Wiley, ISBN 9780470167748 **Cervantes, H., Kazman, R., (2016) Designing Software Architectures: A Practical Approach, Addison Wesley ISBN-13 9780-13-439078. **Pressman, R., (2016) Software Engineering: A Practitioner's Approach, McGraw-Hill, Chapters on Design Concepts, Architectural Design and Pattern-based Design esp Chapters 12,13,16 **Bass, L., Clements, P., Kazman, R., (2013) Software Architecture in Practice, Addison-Wesley, ISBN 9780321815736 **Sommerville, I. (2016) Software Engineering, 10th Edition, Pearson, Chapters 5 (section 5.5), 6, 7. **Fowler, M., (2003) Patterns of Enterprise Application Architecture, Addison Wesley, ISBN: 0321127420 *Bosch, J., (2000) Design and Use of Software Architectures, Addison-Wesley ISBN 0201674947 *Fowler, M (2010) UML Distilled, Addison Wesley Professional, ISBN: 020165783X. *Larman, C., Applying UML Patterns, Prentice Hall PTR, ISBN: 0130925691.

Transferrable Skills

Specialist knowledge and application Critical thinking and problem solving Critical analysis Communication skills, written, oral and listening Numeracy Computer literacy Self confidence, self discipline & self reliance (independent working) Awareness of strengths and weaknesses Creativity, innovation & independent thinking Ability to prioritise tasks and time management Interpersonal skills, team working and leadership

Module Structure

Activity Total Hours
Lectures (FT) 24.00
Assessment (FT) 20.00
Independent Learning (FT) 132.00
Practicals (FT) 12.00
Tutorials (FT) 12.00

Assessment Methods

Component Duration Weighting Threshold Description
Course Work 01 n/a 50.00 35% Practically Based Assignment
Course Work 02 n/a 50.00 35% Written Report