Example Of Software Architecture

This post dives into distinct architecture domains, like DevOps and data architecture, how they interconnect, and their importance in overall solution architecture.

  1. Software Architecture Diagram
  2. Example Of High Level Software Architecture

Software Architect Resume Example and Guide for 2019 If dictating technical standards such as software coding standards, tools, and platforms is what you're good at, let us help you with creating the best software architect resume anyone has seen. Basics of Software Architecture & Design Patterns in Java 4.1 (1,170 ratings) Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately. Software architecture design is a representation of system which tells us how the system will behave based on software elements, relationships and properties. Software Architecture and Design Tutorial Learn Software Architecture and Design with this most complete Software Architecture and Design tutorial quickly and easily.

Join the DZone community and get the full member experience.

Join For Free

In my tenure as a solution architect in financial services working for a global consulting firm, I’ve often been caught in a dilemma. This dilemma is whether to apply recognized industry standards to developing solution architecture or to leverage clients’ solution architecture operational model and content. On the one hand, the value proposition of an architecture consultant is not just getting a job done, but also to help improve clients’ architecture maturity. On the other hand, firms’ architecture review boards are set in their ways of using their own architecture content, such as solution architecture templates and models. To my surprise, I have observed a common phenomenon in many financial firms large and small with various degrees of architecture maturity of confusing solution architecture with software architecture.

This is not meant to be an academic paper. Rather, I present my thoughts hoping that this article may help my colleagues better understand the vague differences between two similar but distinct architecture disciplines. At the very least, it’ll trigger a conversation that may clear my own confusion.

“If I Had More Time, I Would Have Written a Shorter Letter” - Blaise Pascal.

Solution Architecture

The term 'solution architecture' is used to describe the process of developing, documenting, and reviewing with relevant stakeholders a multi-dimensional architecture construct that enables a specific business or operational outcome. The target architecture that enables this outcome is defined within the context of all impacted and applicable architecture domains such as business, data, application, technology, integration, security, etc. A solution architecture document will elaborate and further decompose the target architecture into architecture deliverables for each architecture domain. For example, the solution architecture for a loan application digital channel at a fictional bank to allow bank’s customers to apply for a loan online will require an impact assessment of each architecture domain. Each domain will address the needs and concerns of the impacted stakeholders who are bound by that domain such as business, technology, operational, risk, legal, etc…

Let’s try to segregate some of these concerns into specific architecture domains:

  • Business Architecture: How does a customer apply for a loan online?
  • Data Architecture: What information is needed to enable loan risk assessment and processing? How to manage customer info with maximum security, integrity and optimal cost, performance, reliability, consistency?
  • Application Architecture: What UX, process management, and functional system components/services are needed to enable customer loan application via mobile and web devices?
  • Integration Architecture: How will the distributed application component and services talk to each other?
  • Security Architecture: How to properly verify and authenticate customer identity? How to ensure that customer data is secure in a distributed environment? How to prevent unauthorized data access and data theft over the wire?
  • Technology Architecture: How to configure supporting infrastructure for high availability and recoverability in case of system or facility failure?
  • DevOps Architecture: How to enable rapid product delivery and continuous maintenance?

The solution architecture that best addresses these concerns will be derived by applying a formal architecture development process and incorporating established organization’s architecture principles and reference architecture in order to define the most optimal technology solution that delivers the desired business outcome. The solution architecture must be well documented and presented to the project and architecture review boards to ensure that it satisfies the project constraints and technology standards established by the enterprise/chief architect.

The figure above is a sample of a few common solution architecture diagrams for a loan application use case. Please note that the actual solution architecture document will also contain a detail description of each domain target architecture and gaps. Other architecture artifacts such as catalogs and matrices may be used.

Software Architecture

Once the solution architecture is defined, reviewed, and approved, software architecture can now be developed as part of the Design or Architectural Runway SDLC phase. The primary focus of software architecture is to define and document software structure and behavior in order to enable software engineering and delivery based on known functional and non-functional requirements. This is quite different from the goal of solution architecture, which is to define app, data, infra architecture building blocks, dependencies, and address all relevant stakeholders’ concerns. Software architect, usually also a technology SME, will use architecture styles, object oriented analysis and software design patterns to design client and server side software components that implement the web/mobile customer experience (CX), process management, functional and data management application architecture blocks defined in the solution architecture document. As I mentioned, the focus of software architecture is to enable application development and delivery. The software engineering diagrams that I found most useful in my days as a software architect are the domain object model class, service component, sequence, and deployment diagrams.

  • Domain Object Model Class Diagram is essential in defining a consistent data format for information management, persistence, and sharing.

  • Services Component Diagram breaks down system functional services into self-contained API components that can be implemented as microservices
  • Sequence Diagram demonstrates how software modules and distributed components integrate with one another in a context of each use case.
  • Deployment Diagram is necessary to demonstrate software deployment on compute and middleware infrastructure in order to engineer a DevOps pipeline, manage software/infrastructure dependencies, and design for performance and failure

I hope I was able to demonstrate that solution and software architecture are two distinct disciplines with different purposes and sets of stakeholders. Can a solution architect be a software architect and vice versa? In my opinion, a good solution architect is also a software architect. A great solution architect knows when solution or software architecture is appropriate.

I welcome your thoughts and feedback.

Disclaimer: The solution and software architecture artifacts used in this article have been exclusively created for this article. They do not represent or reflect any proprietary information I‘ve worked with on any current or prior projects.


References:

Like This Article? Read More From DZone

software architecture ,devops ,sdlc ,architecture

Opinions expressed by DZone contributors are their own.

This course is about software architecture and design patterns. We will talk about two man topics: SOLID principles and design patterns. We are going to implement the problems in Java, but the theoretical background is language-independent. I highly recommend typing out the implementations several times on your own in order to get a good grasp of it.

Section 1:

Once you’ve downloaded the ISO images, you can then use to create a bootable Windows 7 ISO and proceed with installing Windows 7 on your PC. Follow the instructions provided in the link below to create a bootable windows 7 USB flash drive.Read: There are two options to choose from during the Windows 7 installation process:. How to Create a Bootable Windows 7 USB flash drive to install Windows 7Once you’ve downloaded the ISO images, you can then use to create a bootable Windows 7 ISO and proceed with installing Windows 7 on your PC. Windows

  • what are SOLID principles

  • single responsibility principle

  • open closed principle

  • Liskov's substitution principle

  • interface segregation principle

  • dependency inversion principle

    Play Raze 3 – From ArcadePrehacks.com. Save the world from aliens and zombies in this action-packed arena based shooter. 50 weapons, 24 characters, 2 campaigns and 30 stages await. Play raze 4 hacked.

Section 2:

  • what are behavioral design patterns

  • strategy pattern

  • observer pattern

  • command pattern

  • iterator pattern

  • template pattern and null object pattern

  • visitor pattern

Section 3:

  • what are creational design pattern

  • singleton pattern

  • factory pattern

  • builder pattern

Section 4:

  • what is structural design pattern

  • decorator pattern

  • facade pattern

  • adapter pattern

Section 5:

Software Architecture Diagram

  • the model-view-controller (MVC) model

  • application in Java with MVC

Example Of Software Architecture

Example Of High Level Software Architecture

In the first part of the course we are going to learn about the SOLID principles. We are going to talk about the theory as well as the implementations.

The second part of the course is about design patterns. We should have a deep understanding of these patterns in order to be able to write reusable software components. These techniques are becoming more and more important as applications are getting more and more complex, so - in my opinion - these topics are good to know.

Thank for joining the course, let's get started!

Example
  • This course is meant for newbies who are familiar with Java and want to be able to write reusable code