Design and Architecture of Complex Software Systems 3 rd year, Software Engineering Conf.dr.ing. Ioana Şora
Why ? Programming, Coding, Algorithms, … are essential knowledge But: Designing real software is an exercise of managing complexity of: Requirements (functional and non-functional) Concerns (distribution, data access). Thus, we need methods for “Design in the large”
What ? Course goals: –Understanding principles and methods of architectural design –Investigating properties of proven software architectures
How ? Start from general design principles Identify classes of problems/applications and their solutions as architectural styles and patterns Learn by case-studies: –Successful systems and their software architectures –Identify the architectural patterns used in representative software for: Adaptive systems Distributed systems Data access Interoperability –Focus on the common design principles behind well- known systems, technologies, frameworks
Architectural design principles (Architectural styles and patterns) Tehnologies, Frameworks APIs Design problem Object Request Broker Pattern RMI,.NET Remoting Metalayer Architecture Data Access Patterns Reflection (in Java,.NET) Object-Relational Mappers Our focus in this course: “How it’s made ?”
Lab Applying the learned concepts in practice is essential 3-4 projects - design and implementation Final grade = 50% written exam + 50% projects
WWW