Analyzing Software Architecture Training

Analyzing architecture is all about finding structural decay in applications and systems to determine whether the architecture is still satisfying the business concerns (performance, scalability, fault tolerance, availability, and so on) and also whether the architecture supporting the application functionality is still viable. This is known as “architectural vitality”. While the functionality of a system may be sound, the architecture supporting that functionality may not be. For example, performance and scalability may have been the number one concern 5 years ago, but today agility, testability, and deployability is the number one concern to support high levels of competitive advantage and time-to-market. Does the architecture support these “-ilities”? If not, the company is likely to fail in today’s highly competitive market.

In this intense 1-day hands-on workshop you will learn what structural decay means and how to detect it. You will also learn what it means to “analyze an architecture”, and how to measure and quantify various “-ilities” such as performance, scalability, testability, maintainability, and so on. Leveraging source code metrics and open-source analysis tools, you will then see how to apply micro-level (source code) analysis techniques to identify decay in your architecture. You will also learn how to perform risk analysis against your architecture to help identify and prioritize architectural refactoring efforts, and also how to assess the level of modularity in your application in preparation for the move to microservices.

Course Agenda

Architectural Analysis

  • Identifying structural decay
  • Macro vs. micro techniques
  • Analyzing architecture characteristics (“-ilities”)
  • Analyzing the architecture style
  • Analyzing architecture decisions
  • Class exercises: determining -ilities to analyze 

Architecture Fitness Functions

  • Defining fitness functions
  • Fitness function categories
  • Simian Army example
  • Code and design restrictions example
  • Architecture characteristics example
  • Class exercises: defining fitness functions

Macro Analysis: Analyzing Architecture Characteristics

  • Performance measurements and analysis
  • Scalability measurements and analysis
  • Agility measurements and analysis
  • Testability measurements and analysis
  • Deployability measurements and analysis

Macro Analysis: Style-Specific Decay Indicators

  • Microservices
  • Service-Based Architecture
  • Microkernel (Plug-in Architecture)
  • Layered Architecture

Macro Analysis: Automated Architectural Governance 

  • Using ArchUnit to ensure compliance (Java)
  • Using NetArchTest to ensure compliance (.NET)

Micro Analysis: Analyzing Source Code 

  • Signal to noise ratio problem
  • Measuring and analyzing component size
  • Measuring and analyzing component complexity
  • Measuring and analyzing depth of inheritance tree
  • Measuring and analyzing component coupling
  • Mapping architecture to code metrics

Micro Analysis: Tools 

  • Source Monitor
  • X-Ray
  • Code City
  • JDepend
  • Sonargraph

©2019 Developer To Architect