D
D
DollyPapper2021-08-15 15:19:15
Software design
DollyPapper, 2021-08-15 15:19:15

What is the goal of software architecture? What are the design goals?

Colleagues, good afternoon. I continue my series of questions in an attempt to understand software design.
Actually the essence of the issue is described in the title, I will describe in a little more detail. The fact is that in my mind some actions should be performed only for some specific reason. That is, there must be a task.
Do I understand myself correctly the tasks that are set when designing software:
1) Understandability of the system for a person (programmer)
2) Extensibility of the system
3) Testability of the system

As a result of the points above, there should be a reduction in labor costs for fixing bugs and a reduction in time for adding functionality.

The mainline that I caught from reading both Clean Architecture and GOF is the isolation of parts of the system from each other. That is, "programming through interfaces", for low cohesion (I can confuse the term, in general, so that there is no big connection between one module and another).
What else am I missing? What other goals are set when designing the system and how can these goals be achieved? I understand that the question is some kind of abstract, I'll ask a little specifics. Now from all the cracks you can hear about SOLID principles. I understand their essence (probably), I understand (probably) how to follow them, but I do not quite understand what they lead to in the end. As a result of compliance with SOLID, we again get: 1) system comprehensibility 2) system extensibility 3) testability. Right?

Answer the question

In order to leave comments, you need to log in

2 answer(s)
V
Valentine, 2021-08-15
@vvpoloskin

1) consolidation of functional requirements
2) identification of non-functional requirements (this is not only scalability, but also, for example, reliability and security)
3) identification of requirements established by law, but not described in the TOR (for example, compliance with Federal Law 152 or 54).
4) splitting the system into subsystems, taking into account the fact that each subsystem can be performed by a separate organization
5) splitting the system into stages during creation, implementation and maintenance
6) forming a list of purchased products and services (equipment, communication channels, digital signature, but you never know what, even renting a room for equipment or staff) and control the delivery to move on to the next stage
7) monitoring the implementation of integrations with third-party systems (participants of information exchange)
This is the first thing that came to mind)
And the goal is for the project management triangle to converge at the start: meeting deadlines, functionality and prices. And in the future, so that you can optimize costs.

A
Anton Shamanov, 2021-08-15
@SilenceOfWinter

As a result of the points above, there should be a reduction in labor costs for fixing bugs and a reduction in time for adding functionality.

not a fact, to achieve the above, one should rather follow SOLID and KISS .
It seems that everything is simple - try to break complex tasks into subtasks and do it as abstractly as possible, so that if necessary, replace one with other cubes.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question