Today, every one starting from small children, young people and old people using their smart phones, laptops, computers, PDA etc.., to solve any simpler or complex task using software programs. The purpose of the good software to provide good quality of services in a user friendly environment.
In this post, Let's look the main concepts of representation in software architecture.
What is Software Architecture?
Software Architecture defines fundamental organization of the system and more simple defines a structured solution, how the components of a software system assembled, their relationship and communication between them. It server a blueprint of software application and development bias for development.
Concepts of Software Architecture
The various of concepts of software architecture are
It all may seems to be simpler and each has its own definitions and each definition illustrates different uses and purpose which make difficult to communicate about the software architecture.
These definition terms are continuously changing and new terms being evolved as the software architecture evolving rapidly.
Modules are basically everything living within your filesystem and existing during design time and beyond. Examples for modules are packages and classes as well as database tables. It is a logical group of classes in object oriented language or group of functions in a structured or functional language.
So, Modularity is the process of logically grouping set of related codes.
The term module is not used at all in UML 2.5. However, lots of programming languages use that term to bundle things (mostly classes).
Subsystem is a logical grouping of one or more modules that serves a longer purpose.
It can also referred to as :
Logical Layer - is a logical grouping for specific role within the application. e.g.., presentation layer, application layer etc..,
Logical wrapper - A bounded context as defined in DDD (Domain Driven Design) e.g.., Contracts, Invoicing, Payment subsystems that shape a larger system.
Let us remind that subsystem is a logical grouping and does not require physical separation. It is similar to module but at a larger scale. It is also for maintainability and for agility needs.
Components and connectors can not be seen on your computer like modules. These kinds of structures only exist during runtime, so the only trace you have of them are your logfiles at most. It is the physical packaging for the modules and subsystems encapsulated behind an interface.
Components can be as :
Physically separated subsystem - independently deployment into a tier as a package or bounded context as a microservice.
Characteristics of Software Architecture
They are broadly classified as Operational, Structural and Cross Cutting (rarely occurring requirements.
Operational Architecture Characteristics:
Low Fault Tolerance
Structural Architecture Characteristics:
Cross Cutting Architecture Characteristics:
Importance of Software Architecture :
Software architecture comes under design phase of software development life cycle. It is one of initial step of whole software development process. Without software architecture proceeding to software development is like building a house without designing architecture of house.
So software architecture is one of important part of software application development. In technical and developmental aspects point of view below are reasons software architecture are important.
Selects quality attributes to be optimized for a system.
Facilitates early prototyping.
Allows to be built a system in component wise.
Helps in managing the changes in System.
Besides all these software architecture is also important for many other factors like quality of software, reliability of software, maintainability of software, Support-ability of software and performance of software and so on.