Usługa ta stanowi sobą audyt treści i struktury dokumentów w procesach biznesowych oraz opracowanie modelu architektury IT w celu mapowania dokumentów na aplikacje, w których powstają i są wykorzystywane (integracja). Są to wyłączone i połączone razem pierwsze etapy usług Audyt organizacji, podnoszenie efektywności oraz Analiza i Opracowanie Wymagań na Oprogramowanie. Jednym z głównych celów i produktów jest opracowana strategia cyfryzacji i archiwizacji dokumentów w organizacji oraz zarządzania ich treścią.

Ten wpis adresuję przede wszystkim menedżerom nie tylko IT. Analitycy i programiści spokojnie mogą go pominąć, chyba, że …;) chcą wiedzieć dlaczego powinny powstawać idealizowane projekty, kiedy mogą czasem wykonać niekoniecznie idealną implementację i dlaczego nie należy pomijać etapu projektowania idealizacji .

W jednym z ostatnich wpisów w dyskusji napisałem w komentarzach, że:

…jestem purystą formalnym. Jednak nie dlatego, by pacyfikować projekty ortodoksją. To efekt dwóch rzeczy: teoria poznania jako restrykcyjne podchodzenie do semantyki, pozwala uniknąć niejednoznaczności. Druga rzecz, to zdefiniowanie ideału, pozwala ocenić (zmierzyć) odstępstwo konkretnego projektu od niego [od ideału]. To pozwala ocenić ryzyko takiego projektu. Fizyka ma np. nieistniejące w naturze idealne wahadło czy ciało doskonale czarne , po co? By móc ocenić błąd rzeczywistych obliczeń. Zdaję sobie sprawę, że to filozofia, ale taki mam cel , nie tylko analizować i modelować ale w 100% rozumieć (Czym jest a czym nie jest tak zwany model dziedziny systemu).

Dość często spotykam się z zarzutem, że to szkodzi projektom, że trzeba z jednej strony naginać zasady a z drugiej, że nie ma co zajmować się idealnymi systemami bo takich nie będzie, że ograniczenia projektu, głównie czas i budżet, wymagają “psucia” bo na ideały nie ma czasu.

To są niestety, w moim mniemaniu, tłumaczenia ludzi nie potrafiących tego ideału zrobić czyli niemających pomysłu na właściwe rozwiązanie, czytaj, nie potrafiących problemu rozwiązać.

Droga na skróty to droga niewiedzy. Nie twierdzę tu, że sens mają wyłącznie projekty idealne. Twierdze, że na etapie analizy problemu i projektowania powinien powstać ideał, a dopiero na etapie analizy zakresu projektu i oceny wykonalności, jest miejsce na ewentualne uproszczenia, bo tu są one czynione świadomie.

Z tezą taką w literaturze spotykam się bardzo rzadko,  ale spotykam . Możliwe, że to bardzo odważna teza:

większość projektów to rozwiązywanie niezrozumianego problemu.

Statystyki jednak zdają się potwierdzać, że coś jest na rzeczy .

Na szczęście, nie ja jeden tak sądzę. Tu zacytuję także blog pewnego programisty:

ciągle zmieniający się program zwiększa swoją złożoność o ile nie pochylimy się nad kodem aby ją zmniejszyć. Pisanie programów jest łatwe, wręcz banalnie łatwe, jednak pisanie tak, aby dało się je długo i w miarę tanio utrzymywać jest bardzo trudne. Wynika to z dwóch złożoności. Jedna to złożoność samego problemu, druga to złożoność przypadkowa. Tą przypadkową tworzymy my sami ? programiści. Sami komplikujemy soft bardzo często zupełnie niepotrzebnie. Sami idąc na skróty gmatwamy kod tak, że staje się z dnia na dzień coraz droższy w utrzymaniu. To podrażanie utrzymania to właśnie dług technologiczny. Dług technologiczny, jak każdy dług ma to do siebie, że im dłużej nie spłacany tym więcej będzie kosztować. (Dług technologiczny | @rek online | Arkadiusz Benedykt, Gorąco polecam cały ten cykl artykułów).

Tu autor pastwi się, i słusznie, na zaciąganiem długu, który ja postrzegam jako dług nie tylko technologiczny. To dług niezrozumienia mający swój początek  już na etapie analizy: ktoś  nie chciał do końca zrozumieć złożoności problemu (patrz wytłuszczenie w cytacie), zignorował etap dogłębnej analizy problemu i zaczął kodować: zaciągnął dług nie ponosząc kosztu zrozumienia tylko  zaczyna od razu kodować. Przypomnę, że pomijanie dogłębnej analizy i tworzenie kodu to implementacja czegoś, czego  właśnie nie chcieliśmy do końca zrozumieć.  Czy to zdanie nie brzmi strasznie? Co powstanie?

Czego się spodziewać po projekcie, gdy słyszę: nie ma czasu na analizę, myśmy już podpisali umowę z wykonawcą bo nasza firma  nie ma czasu. Niestety najczęściej taki projekt trwa znacznie dłużej niż planowano, pieniądze oszczędzone na “zbędnym” projektowaniu ideału z ogromną nawiązką są wydawane na kolejne modyfikacje i poprawki (spłata długu, nie raz bardzo kosztowna).

O skutecznym zarządzaniu, posiadaniu wizji, napisano wiele, nie jest to miejsce na powielanie tych prawd. Spójrzmy na poniższy cytat:

Społeczeństwo niezdolne do wydawania na świat utopii i do poświęcania się jej zagrożone jest sklerozą i ruiną. Mądrość, dla której nie istnieją żadne fascynacje, zaleca nam szczęście dane, gotowe. Wybór szczęścia wyobrażonego czyni nas zdolnym do zmiany, do wzrostu.    Emil Cioran (Business Dialog – Posłuchaj. Powiedz. Przynosimy radość owocnej rozmowy)..

A teraz małe ćwiczenie: zamieńcie państwo słowo “Społeczeństwo” na “Organizacje”…

Powyższe wywody, czasami wspominam o problemie długu na konferencjach czy na forach, natychmiast  wywołują pobudkę zwolenników metod zwinnych (co by to nie miało znaczyć). Wiem, że są podobno różne formy zwinności, te dobre i te złe. Ale podobno zakończone sukcesem zwinne projekty są jak Yeti: każdy o nich mówi a nikt nie widział. Tu znowu zacytuję przywoływany już tu blog:

Modne ostatnio programowanie agile czy też programowanie zwinne oznacza w dużym uproszczeniu ciągłą ewolucję i ciągłe wprowadzanie zmian, tak żeby być elastycznym na potrzeby biznesu. Nie da się być agile budując monolity, nie da się być agile zaciągając coraz to nowe długi technologiczne. W końcu, nie da się być agile jeśli po roku czy dwóch wprowadzanie zmian zaczyna trwać dłużej i dłużej. Jeśli chcemy być agile to musimy bardzo mocno trzymać się zasad dobrego programowania. Musimy tworzyć elastyczne i otwarte konstrukcje zamiast monolitów. SOLID w tym bardzo pomaga chociaż nie jest to jedyna ?religia?. Aby to zrobić trzeba poświęcić odpowiednią ilość czasu i potu aby wyprodukować dobry kawałek kodu. (Monolity to też dług technologiczny | @rek online | Arkadiusz Benedykt).

Cóż, o SOLID za niedługo napiszę więcej, dziś podam jedną z kluczowych zasad, nazwał bym ją kluczowym wymaganiem pozafunkcjonlanym: projekt ma być odporny na zmiany i otwarty na rozszerzenie. Jak to osiągnąć? jest tylko jeden sposób: wykonać dobry projekt. Dobry czyli przemyślany, z pełnym zrozumieniem problemu i świadomym odkładaniem pewnych prac.

Na zakończenie przyznam, że wśród moich niedoszłych klientów i programistów  mam wielu wrogów. To Ci, którzy uważają, że analizy i projektowanie ideału (co by tu słowo nie miało oznaczać) na samym początku są bez sensu, bo i tak wymagania biznesu się zmienią, więc i program będzie się zmieniał. Ja wtedy pytam: zmieniał czy rozszerzał? Jeżeli wymagania się zmieniają to raczej sygnał, że nie zostały na początku przemyślane… Ale wymaganiem powinien być cel a nie aktualne środki jego osiągania! Biznes także ma skłonności do zaciągania opisywanego długu… Na koniec  w kwestii wrogów pół żartem i pół serio:

Chińczycy hołdują powiedzeniu: ?jak posiedzisz wystarczająco długo nad brzegiem rzeki, to zobaczysz trupy swoich wrogów płynące z prądem”. No więc sobie siedzę.

… i nie raz je oglądam… a siedzę sobie analizując i projektując… 😉 i nie jestem tu sam…

Źródła

Hepburn, B., & Andersen, H. (2021). Scientific Method. In E. N. Zalta (Ed.), The Stanford Encyclopedia of Philosophy (Summer 2021). Metaphysics Research Lab, Stanford University. https://plato.stanford.edu/archives/sum2021/entries/scientific-method/
Ozkaya, M. (2023, April 9). Microservices Architecture. Design Microservices Architecture with Patterns & Principles. https://medium.com/design-microservices-architecture-with-patterns/microservices-architecture-2bec9da7d42a
Weiss, M., & Hari, A. (2004). ICDM - an Integrated Methodology for the Conceptual Design of New Systems. https://www.academia.edu/59514794/ICDM_an_Integrated_Methodology_for_the_Conceptual_Design_of_New_Systems
Włodarska-Dziurzyńska, K. (2012). Pojęcie produktu. Nieuczciwe praktyki rynkowe : ocena regulacji, 141–143. https://ruj.uj.edu.pl/server/api/core/bitstreams/c5d331c9-8945-4f12-9a9b-12eddee0be30/content
Mahesh, B. (2019). Machine Learning Algorithms -A Review. https://doi.org/10.21275/ART20203995
Martin, R. C., & Martin, R. C. (2018). Clean architecture: a craftsman’s guide to software structure and design. Prentice Hall.
Foote, B., & Yoder, J. (1997). Big Ball of Mud. Department of Computer Science University of Illinois at Urbana-Champaign 1304 W. Springfield Urbana, IL 61801 USA. https://www.researchgate.net/publication/2938621_Big_Ball_of_Mud
Alencar, F. (2000). Closing the GAP between organizational requirements and object oriented modeling. Journal of the Brazilian Computer Society. https://www.academia.edu/83364710/Closing_the_GAP_between_organizational_requirements_and_object_oriented_modeling
Rumpe, B. (2007). Model-driven development of complex software: A research roadmap. https://www.academia.edu/16456630/Model_driven_development_of_complex_software_A_research_roadmap
Harmon, P. (2010, December 14). What is a Business Process. BPTrends, 8(21), 6. http://www.bptrends.com/publicationfiles/advisor20101214.pdf
Harmon, P., & Garcia, J. (2020). The States of the Business Process Management Process 2020 (No. 2020). BP Trends Associations. www.bptrends.com
Harmon, P. (2016). The State of Business Process Management 2016. BT Trends. https://www.club-bpm.com/Contenido/Estudios/BPT-Survey-Report.pdf
Nanayakkara, C. (2023, July 7). Microservices Patterns: The Saga Pattern. Cloud Native Daily. https://medium.com/cloud-native-daily/microservices-patterns-part-04-saga-pattern-a7f85d8d4aa3
Gaiardelli, S., Spellini, S., Panato, M., Tadiello, C., Lora, M., Cheng, D. S., & Fummi, F. (2024). Enabling Service-oriented Manufacturing through Architectures, Models and Protocols. IEEE Access, 1–1. https://doi.org/10.1109/ACCESS.2024.3385634
Huang, S.-C. (2006). A semiotic view of information: Semiotics as a foundation of LIS research in information behavior. Proceedings of the American Society for Information Science and Technology, 43(1), 1–17. https://doi.org/10.1002/meet.1450430166
Nuninger, L., Verhagen, P., Libourel, T., Opitz, R., Rodier, X., Laplaige, C., Fruchart, C., Leturcq, S., & Levoguer, N. (2020). Linking Theories, Past Practices, and Archaeological Remains of Movement through Ontological Reasoning. Information, 11, 338. https://doi.org/10.3390/info11060338
Machado, I. (2015). Graphic argumentation: diagrammatic modeling in the communication of science. Communicating and Evaluating Science. Covilhã: Labcom, 177–202. https://www.researchgate.net/profile/Catarina_Gracio_De_Moura/publication/324314608_Communicating_and_Evaluating_Science/links/5c6485c8299bf1d14cc4bc1c/Communicating-and-Evaluating-Science.pdf#page=181
Machado, I. (n.d.). Graphic argumentation: diagrammatic modeling in the. Communication and Evaluating Science, 177–202. Retrieved April 11, 2024, from https://www.academia.edu/download/92934020/Irene_Machado.pdf
Jerzy Zajadło. (2019). Banał formuły “dura lex sed lex.” Banał formuły “dura lex sed lex,” R. 64, nr 5, 5–12. https://palestra.pl/pl/czasopismo/wydanie/5-2019/artykul/banal-formuly-dura-lex-sed-lex
Korycka-Zirk, M., & Dobrzeniecki, K. (2018). Logika dla prawników: kompendium i zadania (Wydanie II rozszerzone). Towarzystwo Naukowe Organizacji i Kierownictwa “Dom Organizatora.”
Lewandowski, S., & Malinowski, A. (Eds.). (2002). Logika dla prawników. Wydaw. Prawnicze “LexisNexis.”
Lewandowski, S., Machińska, H., Malinowski, A., Petzel, J., & Pełka, M. (Eds.). (2022). Logika dla prawników (Wydanie 13). Wolters Kluwer.
Lewandowski, S., Malinowski, A., & Petzel, J. (Eds.). (2021). Logika dla prawników: słownik encyklopedyczny (3. wydanie zaktualizowane i rozszerzone). Wolters Kluwer.
Friedman, J. (1997). What’s wrong with Libertarianism. Critical Review, 11(3), 407–467. https://doi.org/10.1080/08913819708443469
Singla, A., Nathan, V. T., & Vageesh, S. (2016). Model Based Self‐Learning System Engineering Approach. INCOSE International Symposium, 26(s1), 219–233. https://doi.org/10.1002/j.2334-5837.2016.00327.x
Sarnowski, J. (2022). Podatki w krajach nordyckich a gospodarka i dobrobyt. Doradztwo Podatkowe - Biuletyn Instytutu Studiów Podatkowych, 5(309), 4–14. https://doi.org/10.5604/01.3001.0015.8617
Ackoff, R. L., Magidson, J., Addison, H. J., & Ehrlich, A. (2007). Projektowanie ideału: kształtowanie przyszłości organizacji. Wyższa Szkoła Przedsiębiorczości i Zarządzania im. Leona Koźmińskiego : Wydawnictwa Akademickie i Profesjonalne. https://repozytorium.kozminski.edu.pl/pl/pub/3442
Babalola, V. (2016). Public Private Partnership: Imperative in Educational Planning and Management for Human Security in Nigerian Schools. 6.
Keet, C. M., & Fillottrani, P. R. (2015). An Analysis and Characterisation of Publicly Available Conceptual Models. In P. Johannesson, M. L. Lee, S. W. Liddle, A. L. Opdahl, & Ó. Pastor López (Eds.), Conceptual Modeling (Vol. 9381, pp. 585–593). Springer International Publishing. https://doi.org/10.1007/978-3-319-25264-3_45
Busboom, A. (2024). Automated generation of OPC UA information models — A review and outlook. Journal of Industrial Information Integration, 100602. https://doi.org/10.1016/j.jii.2024.100602
Michalak. (n.d.). Ustawa o prawie autorskim i prawach pokrewnych. Komentarz. Wolters Kluwer. Retrieved March 23, 2024, from https://www.ksiegarnia.beck.pl/media/product_custom_files/1/8/18361-ustawa-o-prawie-autorskim-i-prawach-pokrewnych-komentarz-arkadiusz-michalak-fragment_1.pdf
Brambilla, M., Cabot, J., & Wimmer, M. (2012). Model-driven software engineering in practice. Morgan & Claypool.
Boisot, M., & Canals, A. (2004). Data, information and knowledge: have we got it right? Journal of Evolutionary Economics, 14(1), 43–67. https://doi.org/10.1007/s00191-003-0181-9
Chen, M., Ebert, D., Hagen, H., Laramee, R. S., Van Liere, R., Ma, K.-L., Ribarsky, W., Scheuermann, G., & Silver, D. (2008). Data, information, and knowledge in visualization. IEEE Computer Graphics and Applications, 29(1), 12–19. https://ieeexplore.ieee.org/abstract/document/4736452/
Floridi, L. (2005). Is Semantic Information Meaningful Data? Philosophy and Phenomenological Research, 70(2), 351–370. https://doi.org/10.1111/j.1933-1592.2005.tb00531.x
Zins, C. (2007). Conceptual approaches for defining data, information, and knowledge. Journal of the American Society for Information Science and Technology, 58(4), 479–493. https://doi.org/10.1002/asi.20508
Foehr, M., Vollmar, J., Calà, A., Leitão, P., Karnouskos, S., & Colombo, A. (2017). Engineering of Next Generation Cyber-Physical Automation System Architectures. In Multi-Disciplinary Engineering for Cyber-Physical Production Systems: Data Models and Software Solutions for Handling Complex Engineering Projects (pp. 185–206). https://doi.org/10.1007/978-3-319-56345-9_8
(N.d.).
(N.d.).
Therefore, use a Repository, the purpose of which is to encapsulate all the logic needed to obtain object references. The domain objects won’t have to deal with the infrastructure to get the needed references to other objects of the domain. They will just get them from the Repository and the model is regaining its clarity and focus. (n.d.).
Therefore, a new concept is necessary to be introduced, one that help to encapsulate the process of complex object creation. This is called Factory. Factories are used to encapsulate the knowledge necessary for object creation, and they are especially useful to create Aggregates. When the root of the Aggregate is created, all the objects contained by the Aggregate are created along with it, and all the invariants are enforced. (n.d.).
Therefore, use Aggregates. An Aggregate is a group of associated objects which are considered as one unit with regard to data changes. The Aggregate is demarcated by a boundary which separates the objects inside from those outside. Each Aggregate has one root. The root is an Entity, and it is the only object accessible from outside. The root can hold references to any of the aggregate objects, and the other objects can hold references to each other, but an outside object can hold references only to the root object. If there are other Entities inside the boundary, the identity of those entities is local, making sense only inside the aggregate. (n.d.).
A Service should not replace the operation which normally belongs on domain objects. We should not create a Service for every operation needed. But when such an operation stands out as an important concept in the domain, a Service should be created for it. There are three characteristics of a Service: 1. The operation performed by the Service refers to a domain concept which does not naturally belong to an Entity or Value Object. 2. The operation performed refers to other objects in the domain. 3. The operation is stateless. (n.d.).
Entities are important objects of a domain model, and they should be considered from the beginning of the modeling process. It is also important to determine if an object needs to be an entity or not, which is discussed in the next pattern. (n.d.).
(N.d.).
(N.d.).
However, when domain-related code is mixed with the other layers, it becomes extremely difficult to see and think about. Superficial changes to the UI can actually change business logic. To change a business rule may require meticulous tracing of UI code, database code, or other program elements. Implementing coherent, model-driven objects becomes impractical. (n.d.).
In an object-oriented program, UI, database, and other support code often gets written directly into the business objects. Additional business logic is embedded in the behavior of UI widgets and database scripts. This some times happens because it is the easiest way to make things work quickly. (n.d.).
Patrz architektura heksagonalna. (n.d.).

Jarosław Żeliński

Jarosław Żeliński: autor, badacz i praktyk analizy systemowej organizacji: Od roku 1991 roku, nieprzerwanie, realizuje projekty z zakresu analiz i projektowania systemów, dla urzędów, firm i organizacji. Od 1998 roku prowadzi samodzielne studia i prace badawcze z obszaru analizy systemowej i modelowania (modele jako przedmiot badań: ORCID). Od 2005 roku, jako nieetatowy wykładowca akademicki, prowadzi wykłady i laboratoria (ontologie i modelowanie systemów informacyjnych, aktualnie w Wyższej Szkole Informatyki Stosowanej i Zarządzania pod auspicjami Polskiej Akademii Nauk w Warszawie.) Oświadczenia: moje badania i publikacje nie mają finansowania z zewnątrz, jako ich autor deklaruję brak konfliktu interesów. Prawa autorskie: Zgodnie z art. 25 ust. 1 pkt. 1) lit. b) ustawy o prawie autorskim i prawach pokrewnych zastrzegam, że dalsze rozpowszechnianie artykułów publikowanych w niniejszym serwisie jest zabronione bez indywidualnej zgody autora (patrz Polityki Strony).

Ten post ma 8 komentarzy

  1. Świetny artykuł! Zgadzam się w 100%. Powinniśmy dążyć do ideału jako punktu odniesienia (inna sprawa, że trzeba wyczuć kiedy na tej drodze się zatrzymać). Ale oznacza to, że musimy wiedzieć czym jest ten ideał.

    Przychodzi mi na myśl taka refleksja: starajmy się tworzyć rzeczy piękne! Piękno to przecież nie tylko sztuka czy natura. Piękne mogą być prawa fizyki czy modele matematyczne. W informatyce oznacza to dla mnie przemyślany model, czytelną architekturę, spójną logikę, dobrze zdefiniowane moduły itd.

    A dlaczego powinniśmy to robić? Słyszałem ostatnio myśl, która świetnie nadaje się na podsumowanie:

    “Jeżeli coś dobrze wygląda to jest szansa, że będzie dobrze działać. Ale jak coś wygląda fatalnie to na pewno jest schrzanione.”

    Weźmy to sobie do serca. Projektujmy rzeczy dobrze wyglądające, bliskie ideałowi – i piękne 🙂

    1. Rafał Osiecki

      Dobrze powiedziane. Niestety z definicją piękna jest tak jak z d**ą i szczoteczką do zębów, każdy ma własną. Czasem naszą definicję musimy zbudować począwszy od odkrycia prawd podstawowych, co do których zgodni będą wszyscy interesariusze.

      Za największy problem w drodze do ideału uważam ludzkie EGO, które potrafi przysłonić zdrowy rozsądek. Bywamy głusi na argumenty, skupiając się na własnym subiektywnym poczuciu piękna, zamiast dążyć do odkrycia piękna obiektywnego, co czasem kończy się takimi potworkami jak Pałac Parlamentu w Bukareszcie.

  2. jacek2v

    Kluczowe jest “dążenie do ideału”. Nie ma idealnych projektów 🙂

    1. Jarek Żeliński

      podobnie jak nie ma ciał doskonale czarnych….

      i nikt nie twierdzi że są, problem w tym, że nie znając ideału nawet nie wiemy czy warto się za projekt brać. Kolejna rzecz nielubiana przez wielu dostawców nie tylko IT: studium wykonywalności… Bardzo wiele zarzuconych projektów zostało rozpoczętych choć nie miało to żadnego realnego uzasadnienia. Idiotyczna “prawda” w rodzaju “wszyscy wiedzą, że się nie da, a ten co nie wiedział zrobił” jest typowym bełkotem guru “samorozwoju”…

  3. jacek2v

    To nie jest kwestia znajomości ideału, tylko mądrego podejścia do wdrożenia. Np. błędem jest zakładanie, że każdy system informatyczny usprawni działanie przedsiębiorstwa. Należy wykonać “badanie” – nazwijmy je studium wykonalności – które zweryfikuje założenia. Zgadzam się, że takie badanie powinno obejmować szerszy zakres niż sam system, ale powinno też nie być zbyt szczegółowe ze względu na koszty.

    W informatyce wszystko da się zrobić, tylko nie wszystko ma sens i się opłaca 🙂

    1. Jarek Żeliński

      Wdrożenie systemu IT, dotyczy to jakiegokolwiek narzędzia pracy, ma w zasadzie dwa cele: usprawnienie lub umożliwienie robienia czegoś. Co do pracochłonności Studium wykonywalności: ono także musi być rentowne. Dlatego najpierw należy ocenić co zyskamy jeżeli “usprawnimy lub umożliwimy robienia czegoś”, potem trzeba ocenić ryzyko i ustalić budżet na studium wykonywalności.

  4. Cichy

    Jak porównywać model idealny z rzeczywistym ? Jest na to sposób np w Visual Paradigm ? Generowanie takiego porównania w dokumentacji projektowej było by potężnym narzędziem w wykrywaniu ograniczeń, długu technologicznego a także w ocenie ryzyka i kosztu utrzymania projektu.

    1. Jarek Żeliński

      Jeżeli podejdziemy do tego tak, że as-is to model rzeczywisty a to-be to idealny to jesteśmy w domu :), pytanie brzmi “co podlega porównaniu” czyli jakie kryteria oceny (coś jak u ludzi: porównać można oceny w szkole, wzrost, wagę,… ale coś z tego trzeba wybrać). A pojęcie ‘długu technologicznego” bardzo mi się podoba, tu jeżeli uznać, że stan idealny to stan “robimy to zgodnie z zasadami” to takie porównanie jest dobrym narzędziem do oceny tego długu…

Dodaj komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.