Downloaded Introduction to Software Architecture: Innovative Design using Clean Architecture and Model-Driven Engineering

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

This unique, accessible textbook gives a comprehensive introduction to software architecture, using ‘clean architecture’ concepts with agile methods and model-driven development. The work introduces the key concepts of software architectures and explains the importance of architectural design for the long-term usefulness and sustainability of software systems. In addition, it describes more than 30 architectural styles and patterns that can be used for constructing mobile applications, enterprise and web applications, machine-learning systems, and safety-critical systems. Topics and features Combines clean-architecture principles with agile model-driven development Employs practical examples and real industrial cases to illustrate architectures for mobile apps, web apps, enterprise systems, safety-critical systems and machine-learning systems Explores support tools for architectural design and system development using the approach Provides tutorial questions and slides to support teaching and learning Delivers material that has been class-tested over 10 years with more than 1,000 students The textbook can be used to support teaching of an undergraduate module in software architecture, yet also includes more advanced topics suitable for a specialised software architecture module at master’s level. It also will be eminently suitable and relevant for software practitioners and researchers needing or wanting to explore the field in short courses or self-study. Dr. Kevin Lano is Reader in Software Engineering, Department of Informatics, King's College London, UK. Dr. Sobhan Yassipour Tehrani is a Lecturer, Department of Computer Science, University College London, UK.

Author(s): Kevin Lano, Sobhan Yassipour Tehrani
Series: Undergraduate topics in computre science
Publisher: Springer
Year: 2023

Language: English
Pages: 270

Preface
Acknowledgements
Contents
Chapter 1 Introduction to Software Architecture Concepts
1.1 What is software architecture?
1.1.1 Why is software architecture important?
1.1.2 The software architect role
1.1.3 Development methods and software architecture
1.1.4 Representing architectures
1.2 Key architectural concepts
1.2.1 Components
1.2.2 Connectors
1.2.3 Con gurations
1.3 UML component diagram notation
1.3.1 Provided and required interfaces
1.3.2 Assembly connectors
1.4 Properties of components and architectures
1.4.1 Reusability
1.4.2 Substitutability
1.4.3 Sustainability
1.4.4 Maintainability
1.4.5 Extensibility
1.5 Quality of service (QoS) properties
1.6 Architectural design approaches
Summary
Further Reading
Exercises
Chapter 2 Introduction to Clean Architecture Concepts
2.1 Motivation for the clean architecture
2.2 The clean architecture: SOLID principles
2.2.1 SRP: Single responsibility principle
2.2.2 OCP: Open-closed principle
2.2.3 LSP: Liskov substitution principle
2.2.4 ISP: Interface segregation principle
2.2.5 DIP: Dependency inversion principle
2.2.6 Architecture design principles
2.3 Component boundaries
2.4 Technical debt at the architectural level
Further Reading
Exercises
Chapter 3 Development Methods
3.1 Model-driven engineering
3.2 Agile development and architectural design
3.2.1 Architectural refactoring
3.3 Derivation of architectures from requirements models
3.3.1 Three-tier architectures
3.3.2 Requirements models
3.3.3 Derivation of architectures from requirements
3.4 Analysis of clean architecture principles at the specification stage
3.5 Generation of architectures from specification models
Summary
Further Reading
Chapter 4 Compound Components and Complex Connectors
4.1 Composite components
4.2 Advanced connectors
Summary
Exercises
Chapter 5 Architectural Styles
5.1 Adapter architectural style
5.2 Pipes and filters architectural style
5.2.1 Pipes and filters example: Order processing system
5.3 Two-tiered (Client/Server) architectural style
5.4 N-tiered architectural style
5.4.1 Example N-tier architectures: enterprise and mobile systems
5.4.2 N-tiered style: advantages and disadvantages
5.5 Layered architectural style
5.6 Blackboard architectural style
5.6.1 Blackboard example: IDE
5.6.2 Blackboard example: Holiday reservation system
5.6.3 Blackboard example: Realtime cloud datastore
5.6.4 Advantages and disadvantages of the blackboard style
5.7 Model-View-Controller (MVC) architectural style
5.7.1 Model-View-Controller advantages and disadvantages
5.8 Heterogeneous styles
Summary
Exercises
Chapter 6 Mobile Application Architectures
6.1 Mobile applications
6.1.1 Similarities between mobile applications and enterprise systems (EIS)
6.1.2 Distinctive aspects of mobile applications
6.1.3 Mobile app example
6.2 Mobile architecture patterns
6.2.1 Model-View-Controller and alternative versions
6.2.2 Value Object/Data Transfer Object pattern
6.2.3 Model Facade/Session Facade pattern
6.2.4 Service Activator pattern
6.2.5 Data Access Object (DAO) pattern
6.3 The Android platform and applications
6.4 The iOS platform and applications
6.4.1 UIKit
6.4.2 SwiftUI
6.5 Comparison of iOS versus Android
6.6 Mobile app development approaches
6.7 Mobile backend as a service (MBaaS)
Summary
Further Reading
Exercises
Projects
Chapter 7 Enterprise Information Systems and Application Servers
7.1 Enterprise systems
7.1.1 Application servers
7.2 .NET enterprise services
7.3 Transactions service
7.4 Object pooling service
7.5 Just-in-time activation service
7.6 Loosely-coupled events service
7.7 Queued components service
7.8 COM+ services as basic enterprise styles
Summary
Exercises
Chapter 8 Web Application and Enterprise System Architectures
8.1 Enterprise system architectures
8.2 Java Enterprise Edition
8.2.1 Java EE Components: Servlets
8.2.2 Java EE Components: Java Server Pages (JSPs)
8.2.3 Java EE Components: Enterprise JavaBeans (EJBs)
8.3 Web application architectures
8.3.1 Client tier
8.3.2 Presentation tier
8.3.3 Business tier
8.3.4 Web application frameworks
8.4 View Helper style
8.5 Front Controller style
8.6 Intercepting Filter style
8.7 Composite View style
8.8 Session Facade style
8.9 Service Locator style
8.10 Extract-transform-load (ETL) style
8.11 Using multiple styles
Summary
Further Reading
Exercises
Projects
Chapter 9 Service-oriented Architectures
9.1 The cloud and cloud services
9.1.1 Infrastructure-as-a-Service (IaaS)
9.1.2 Platform-as-a-Service (PaaS)
9.1.3 Software-as-a-Service (SaaS)
9.1.4 Virtualisation servers
9.2 Service-oriented architecture (SOA)
9.3 Web services
9.3.1 SOAP web services
9.3.2 REST and RESTful web services
9.3.3 Web service patterns
9.4 Microservices
Summary
Exercises
Chapter 10 Safety-critical and Embedded Systems Architectures
10.1 Safety-critical systems
10.1.1 Technological risk
10.1.2 Fault tolerance versus fault avoidance
10.2 Fault tolerance
10.2.1 Static redundancy: Triple Modular Redundancy architecture
10.2.2 Dynamic redundancy: Standby spare architecture
10.2.3 Software fault tolerance
10.3 Safe states and safety shutdowns
10.4 Design approaches for SCS components
10.4.1 Programming languages for SCS
10.5 Embedded system architectures
10.6 Reactive control systems
10.7 Examples of SCS architectures
10.8 Software safety standards
Summary
Further Reading
Exercises
Chapter 11 Architectural Design for Machine Learning Systems
11.1 Machine learning (ML)
11.1.1 Machine learning techniques
11.1.2 ML system construction and operation
11.2 Machine learning example: requirements classification
11.3 Machine learning systems architectural issues
11.3.1 Language-specific issues: Python
11.4 Trustworthiness of ML systems
Summary
Exercises
Chapter 12 Software Architectures and Re-engineering
12.1 Legacy software systems
12.2 Challenges of legacy code abstraction
12.2.1 BASIC and variants
12.2.2 COBOL
12.3 Program abstraction using ANTLR and CST L
12.3.1 VB6/VBA
12.3.2 Cobol85
12.4 Quality analysis and restructuring
12.4.1 Quality analysis
12.4.2 Restructuring
12.4.3 Rearchitecting
12.5 Code synthesis and test case generation
12.6 Re-engineering examples
12.6.1 VB6/VBA re-engineering
12.6.2 Cobol85 re-engineering
Summary
Exercises
Summary and Conclusions
References
Appendix A User guide for architecture diagram tool
Appendix B User guide for AgileUML
Index