MSE coursew8 to week 14


Fichier Détails

Cartes-fiches 131
Langue Deutsch
Catégorie Informatique
Niveau Université
Crée / Actualisé 30.12.2020 / 27.01.2021
Lien de web
https://card2brain.ch/box/20201230_software_engineering_and_architecture
Intégrer
<iframe src="https://card2brain.ch/box/20201230_software_engineering_and_architecture/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

What are the goals of lean and agile development processes?

  • Lean -> less documentation
  • Deliver capabilities quickliy

 

What does the eleventh principle of the agile manifesto let conclude about architecture?

The best architectures, requirements and designs amerge from self-organizing teams.

this leads to the belief, that architecture will gradually emerge.

Why might architecture spontaneously emerge?

  • The software might not need new software concepts and design decisions, which have already been made.
  • preexisting conditions already fix it
  • there is a de-facto architecture setup in the domain

 

What is agile architecture?

The phrase "agile architecture" evokes two concepts:

  • An architecture that is versatile, easy to evolvee, and easy to modify, while resilient enough not to degrade after a few changes
  • An agile way to define an architecture, using an iterative lifecycle, allowing the architectural design to tactically evolve over time, as the problem is better understood

In the best of worlds, we'd like an agile process that leads to a flexible architecture.

 

What does the zipper model about architecture say?

Architecture, design and building the system musto go hand in hand

 

What are the agile architecture principles (SAFe)?

  1. Design emerges. Architecture is a collaboration
  2. The bigger the system, the longer the runway
  3. Build the simplest architecture that can possibly work
  4. When in doubt, code or model it out
  5. They build it. They test it, They run it.
  6. There is no monopoly on innovation
  7. Implement architectural flow

 

What is the overall objective of clean architecture?

  • Separatoin of cencerns
  • They all chieve this separation by dividing the software into layers. Every concept for clean architecture has at least one layer for business rules, and another layer for user and system interfaces.

 

What are the characteristics of clean architecture?

  • Independent of frameworks: The architecture does not depend on the existence of some library of feature-laden software. This allows you to use such frameworks as tools, rather than forcing you to cram your system into their limited constraints
  • Testable: The business rules can be tested without the UI, database, web server, or any other external element
  • Independent of the UI: the UI can change easily, without changing the rest of the system. A web UI could be replaced with a console UI, for example, without changing the business rules
  • Independent of the database: You can swap out oracle or SQL server for mongo, BigTable, CouchDB, Blockchain or something else. Yout business ruls are not bound to the databse.
  • Independent of any external agency: In fact, your business rules don't know anything at all about the interfaces to the outside world.

 

What is the clean architecture model about? (If possible, draw it)

Name the 4 bacsic rules and their meaning of the clean architecture model :

The overriding rule that makes this architecture work is the dependency rule: Source code dependencies must point only nward, towards hogher-level policies. -> Nothing in an inner circle can know anything at all about something in an outer circle.

  • Enterprise business Rules (Entities)
    • Entities encapsulate enterprise-wide critical business rules
    • Entities encapsulate the most general and high-level rules
    • Important: They are the least likely tho change when something external changes
    • If you don't have an enterprise and are wrtiting just a single applicatoin, then these entities are the business objects of the applicatoin
  • Application Business Rules (Use Cases)
    • The software in the use cases layser contains application-specific business rules. It encapsulates and implements all of the use cases of the system.
    • Use cases orchestrate the flow of data to and from the entities, and direct those entities to use their critical business rules to achieve the goals of the use case.
  • Interface Adapters
    • Adapters that convert data from the format most convenient for the use cases and entities, to the format most convenient for some external agency such as the database or the web
    • GUI: It is this layer, for example, that will wholly contain the MVC architecture of a GUI, i.e. presenters, views and controllers. The models are likely just data structures that are
    • Database: For example, if the database is a SQL database, then all SQL should be restricted to this layer
    • Any other adapter necessary to convert data from some external form, such as an external service, to the internal form used by the use cases and entities
  • Frameworks & Drivers
    • Outermost layer: Glue code to connect UI, databses, devices etc. to the inner circles
    • Composed of frameworks and tools such as the database and the web framework
    • Generally you don't write much code in this layer, other than glue code that communicates to the next sircle inward

 

What is the main idea of the clean architecture concept?

Write high-level abstractions for everything that is not your core business domain, and don't let secondary component concepts leak into your business domain.