Зарегистрироваться
Восстановить пароль
FAQ по входу

Lano K., Tehrani S.Y. Introduction to Software Architecture: Innovative Design using Clean Architecture and Model-Driven Engineering

  • Файл формата pdf
  • размером 11,73 МБ
  • Добавлен пользователем
  • Описание отредактировано
Lano K., Tehrani S.Y. Introduction to Software Architecture: Innovative Design using Clean Architecture and Model-Driven Engineering
Springer, 2023. — 264 p. — (Undergraduate Topics in Computer Science).
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.
Software architecture has become recognised as a key factor in the maintainability and sustainability of software systems – poor quality architectures are likely to doom a system to becoming an expensive drain on business resources, costing more and more money to maintain over time as the system structure deteriorates and hinders evolution. In contrast, the choice of a good quality and appropriate architecture can ensure that a system retains its usefulness for many years and remains open to extension and enhancement.
This book provides a comprehensive introduction to software architecture concepts and techniques, with a focus upon the ‘clean architecture’ principles (Chapter 2), which have been shown to be effective for a wide range of software systems.
We introduce the key concepts of software architectures in Chapter 1, and provide a ‘toolkit’ of 30 architectural styles and patterns which can be used for constructing mobile apps, enterprise and web applications, Machine Learning systems, and safety-critical systems (Chapters 5 to 11).
We describe how architectural design can be applied within agile or model-driven software development processes (Chapter 3), and consider in detail the specialised issues of architecture for specific kinds of application: mobile apps (Chapter 6), web applications and enterprise systems (Chapters 7 and 8), service-oriented systems (Chapter 9), Machine Learning systems (Chapter 11) and safety-critical systems (Chapter 10). We also look at architecture in the context of software re-engineering and examine to what extent an improved architecture can be ‘retro-fitted’ into a legacy system (Chapter 12).
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.
Introduction to Software Architecture Concepts
What is software architecture
Why is software architecture important
The software architect role
Development methods and software architecture
Representing architectures
Key architectural concepts
Components
Connectors
Congurations
UML component diagram notation
Provided and required interfaces
Assembly connectors
Properties of components and architectures
Reusability
Substitutability
Sustainability
Maintainability
Extensibility
Quality of service (QoS) properties
Architectural design approaches
Introduction to Clean Architecture Concepts
Motivation for the clean architecture
The clean architecture: SOLID principles
SRP: Single responsibility principle
OCP: Open-closed principle
LSP: Liskov substitution principle
ISP: Interface segregation principle
DIP: Dependency inversion principle
Architecture design principles
Component boundaries
Technical debt at the architectural level
Development Methods
Model-driven engineering
Agile development and architectural design
Architectural refactoring
Derivation of architectures from requirements models
Three-tier architectures
Requirements models
Derivation of architectures from requirements
Analysis of clean architecture principles at the specication
Generation of architectures from specication models
Compound Components and Complex Connectors
Composite components
Advanced connectors
Architectural Styles
Adapter architectural style
Pipes and lters architectural style
Pipes and lters example: Order processing system
Two-tiered (Client/Server) architectural style
N-tiered architectural style
Example N-tier architectures: enterprise and mobile
N-tiered style: advantages and disadvantages
Layered architectural style
Blackboard architectural style
Blackboard example: IDE
Blackboard example: Holiday reservation system
Blackboard example: Realtime cloud datastore
Advantages and disadvantages of the blackboard style
Model-View-Controller (MVC) architectural style
Model-View-Controller advantages and disadvantages
Heterogeneous styles
Mobile Application Architectures
Mobile applications
Similarities between mobile applications and
EIS)
Distinctive aspects of mobile applications
Mobile app example
Mobile architecture patterns
Model-View-Controller and alternative versions
Value Object/Data Transfer Object pattern
Model Facade/Session Facade pattern
Service Activator pattern
Data Access Object (DAO) pattern
The Android platform and applications
The iOS platform and applications
UIKit
SwiftUI
Comparison of iOS versus Android
Mobile app development approaches
Mobile backend as a service (MBaaS)
Enterprise Information Systems and Application Servers
Enterprise systems
Application servers
NET enterprise services
Transactions service
Object pooling service
Just-in-time activation service
Loosely-coupled events service
Queued components service
COM+ services as basic enterprise styles
Web Application and Enterprise System Architectures
Enterprise system architectures
Java Enterprise Edition
Java EE Components: Servlets
Java EE Components: Java Server Pages (JSPs)
Java EE Components: Enterprise JavaBeans (EJBs)
Web application architectures
Client tier
Presentation tier
Business tier
Web application frameworks
View Helper style
Front Controller style
Intercepting Filter style
Composite View style
Session Facade style
Service Locator style
Extract-transform-load (ETL) style
Using multiple styles
Service-oriented Architectures
The cloud and cloud services
Infrastructure-as-a-Service (IaaS)
Platform-as-a-Service (PaaS)
Software-as-a-Service (SaaS)
Virtualisation servers
Service-oriented architecture (SOA)
Web services
SOAP web services
REST and RESTful web services
Web service patterns
Microservices
Safety-critical and Embedded Systems Architectures
Safety-critical systems
Technological risk
Fault tolerance versus fault avoidance
Fault tolerance
Static redundancy: Triple Modular Redundancy
Dynamic redundancy: Standby spare architecture
Software fault tolerance
Safe states and safety shutdowns
Design approaches for SCS components
Programming languages for SCS
Embedded system architectures
Reactive control systems
Examples of SCS architectures
Software safety standards
Architectural Design for Machine Learning Systems
Machine learning (ML)
Machine learning techniques
ML system construction and operation
Machine learning example: requirements classication
Machine learning systems architectural issues
Language-specic issues: Python
Trustworthiness of ML systems
Software Architectures and Re-engineering
Legacy software systems
Challenges of legacy code abstraction
BASIC and variants
COBOL
Program abstraction using ANTLR and CST L
VB6/VBA
Cobol
Quality analysis and restructuring
Quality analysis
Restructuring
Rearchitecting
Code synthesis and test case generation
Re-engineering examples
VB6/VBA re-engineering
Cobol85 re-engineering
References
User guide for architecture diagram tool
User guide for AgileUML
Index
  • Чтобы скачать этот файл зарегистрируйтесь и/или войдите на сайт используя форму сверху.
  • Регистрация