The architecture of a system is the set of fundamental concepts
or properties of the system in its environment, embodied in its elements, relationships, and the principles of its design and evolution
Fundamental Of Architecture
Role of software Architect: Designing system considering all the stack holders of the software with their functional and non-functional requirements and balancing cross-cutting concerns
View Points: Nobody cares about software architecture as a whole, viewpoints are the way to communicate particular views of the system to their relevant stakeholders to give them a grasp of the system.
Perspective: It's complementary to a viewpoint that shows cross-cutting concerns like performance, security, etc.
Static Structures vs Dynamic Structures
Static structure is what statically available in the system, it could be database schema, classes, data structures etc and dynamic structure is what system has on run time that could be instances of particular classes, request instance etc
Externally visible behavior vs Quality properties
Externally visible behaviour is what we see system as black box, it takes an input and given an output. how is not a concern and quality properties is performance, requests time, throughput etc.
Element
Element could be component, module, library which has defined interfaces, responsibilities and boundaries.
Stackholder
Any class, person, company who has stacks, paying or using for software are stakeholders. they could be developers, testers, managers, payer, user, maintainer etc.
View Points
There are multiple stakeholders, each needs to view system with their own perspective. Making a monolith diagram or description of architecture in that nobody will be able to comprehend and be useless so we need to divide architecture as what stackholders will need to view it or will be interested in. for that we need to construct view points. There is no standard view points that fits all but some conventions we can follow context, information, functional, concurancy, development, deployment and operation diagram.
Perspective
If you want to have a view of qualities like performance, flexibility, deployability etc. You have to adjust that perspective in your views. Suppose security will go to functional viewpoint as users authentication flow and information viewpoint as where user data will ve saved and deployment viewpoint to if we are taking from Active Directory etc.
Role of Architect
It's very hard to define the role of the architect, lots of people with lots of experience do this job with title or without it. Usually, the person who addresses all the stakeholder's concerns is functional or non-functional, may it be users, people who are paying, operations team, developers, or even dev-ops. And designed system construction and components at the start and verified it in end.
Usually, Architect demands lots of experience with system design, who can perceive the future and take all that in design into consideration. They might not be technology experts or domain experts but rather work with those who expects to reach a solution.
There could be multiple architects for infra, database, domain and product tech, etc.
Process Of Architecture
No comments:
Post a Comment