Blockchain Dla Nie-TechnikówNew Economy

Myślenie warstwami i aspektami



Analiza systemów poprzez podzielenie ich na warstwy i aspekty

Ten krok stanowi podstawę naszej ścieżki uczenia się blockchain poprzez wprowadzenie sposobu organizacji i standaryzacji naszej komunikacji na temat technologii. W tym kroku wyjaśniono, w jaki sposób można analizować system oprogramowania i dlaczego ważne jest rozważenie systemu oprogramowania jako kompozycji warstw. Ponadto krok ten ilustruje, co możesz zyskać, biorąc pod uwagę różne warstwy w systemie i jak to podejście pomaga nam zrozumieć blockchain. Wreszcie krok ten stanowi krótkie wprowadzenie do koncepcji integralności oprogramowania i podkreśla jej znaczenie.

Metafora

Czy masz telefon komórkowy? Sądzę, że tak, ponieważ większość ludzi ma teraz co najmniej jeden. Ile wiesz o różnych protokołach komunikacji bezprzewodowej używanych do wysyłania i odbierania danych? Ile wiesz o falach elektromagnetycznych, które są podstawą komunikacji mobilnej? Cóż, większość z nas nie wie zbyt wiele o tych szczegółach, ponieważ nie trzeba ich znać, aby korzystać z telefonu komórkowego, a większość z nas nie ma czasu, aby się o nich dowiedzieć. W myślach dzielimy telefon komórkowy na części, które musimy znać, i części, które można zignorować lub przyjąć za pewnik. To podejście do technologii nie ogranicza się do telefonów komórkowych. Używamy go przez cały czas, gdy uczymy się, jak korzystać z nowego telewizora, komputera, pralki i tak dalej. Jednak te mentalne partycje są wysoce indywidualne, ponieważ to, co jest uważane za ważne, a co nie zależy od naszych indywidualnych preferencji, konkretnej technologii oraz naszych celów i doświadczeń. W rezultacie twoja mentalna partycja telefonu komórkowego może różnić się od mojej mentalnej partycji tego samego telefonu komórkowego. Zwykle prowadzi to do problemów w komunikacji, w szczególności gdy próbuję wyjaśnić ci, co powinieneś wiedzieć o określonym telefonie komórkowym. Dlatego ujednolicenie sposobu partycjonowania systemu jest kluczowym punktem podczas nauczania i omawiania technologii. W tym kroku wyjaśniono, jak podzielić system na partycje lub nałożyć na niego warstwy, i tym samym stanowi on podstawę naszej komunikacji na temat łańcucha bloków.

Warstwy systemu oprogramowania

My będziemy używać dwóch sposobów partycjonowania systemu:

• Aplikacja a implementacja

• Aspekty funkcjonalne a niefunkcjonalne

Aplikacja a implementacja

Mentalne oddzielenie potrzeb użytkownika od wewnętrznych elementów technicznych systemu prowadzi do oddzielenia warstwy aplikacji od warstwy implementacji. Wszystko, co należy do warstwy aplikacji, dotyczy potrzeb użytkownika (np. słuchanie muzyki, robienie zdjęć lub rezerwacja pokoi hotelowych). Wszystko, co należy do warstwy implementacyjnej, ma na celu wprowadzenie tych rzeczy (np. przekształcenie informacji cyfrowej w sygnały akustyczne, rozpoznawanie koloru piksela w aparacie cyfrowym lub wysyłanie wiadomości przez Internet do systemu rezerwacji). Elementy warstwy wdrożeniowej mają charakter techniczny i są uważane za środek do osiągnięcia celu.

Aspekty funkcjonalne a niefunkcjonalne

Rozróżnienie, co system robi i jak robi to, co robi, prowadzi do rozdzielenia aspektów funkcjonalnych i niefunkcjonalnych. Przykładami aspektów funkcjonalnych są przesyłanie danych przez sieć, odtwarzanie muzyki, robienie zdjęć i manipulowanie poszczególnymi pikselami obrazu. Przykładami niefunkcjonalnych aspektów są piękny graficzny interfejs użytkownika, szybko działające oprogramowanie oraz możliwość utrzymywania prywatnych danych użytkownika i oszczędzania. Inne ważne niefunkcjonalne aspekty systemu to bezpieczeństwo i integralność. Uczciwość oznacza, że system zachowuje się zgodnie z przeznaczeniem i obejmuje wiele aspektów, takich jak bezpieczeństwo i poprawność. Istnieje przyjemny sposób na zapamiętanie różnicy między funkcjonalnymi i niefunkcjonalnymi aspektami systemu poprzez odniesienie do użycia gramatyki w języku angielskim: czasowniki opisują działania lub co się robi, podczas gdy przysłówki opisują sposób wykonania czynności. Na przykład osoba może chodzić szybko lub powoli. W obu przypadkach działanie "spaceru" jest identyczne, ale sposób wykonania akcji jest różny. Z reguły można powiedzieć, że aspekty funkcjonalne są podobne do czasowników, podczas gdy aspekty niefunkcjonalne są podobne do przysłówków.

Biorąc pod uwagę dwie warstwy w tym samym czasie

Identyfikacja aspektów funkcjonalnych i niefunkcjonalnych oraz oddzielenie aplikacji a warstwa implementacji może być wykonana w tym samym czasie, co prowadzi do dwuwymiarowej tabeli. Funkcjonalne aspekty warstwy aplikacji są najbardziej oczywistymi elementami systemu, ponieważ służą oczywistym potrzebom użytkowników. Te elementy są zazwyczaj tymi, których użytkownicy się uczą. Z drugiej strony, niefunkcjonalne aspekty warstwy implementacji rzadko są postrzegane jako główne elementy systemu. Są one zwykle brane za pewnik.

Integralność

Uczciwość jest ważnym niefunkcjonalnym aspektem każdego systemu oprogramowania. Ma trzy główne składniki:

• Integralność danych: dane wykorzystywane i utrzymywane przez system są kompletne, poprawne i wolne od sprzeczności.

• Integralność behawioralna: System zachowuje się zgodnie z przeznaczeniem i nie zawiera błędów logicznych.

• Bezpieczeństwo: system może ograniczyć dostęp do swoich danych i funkcjonalności wyłącznie do upoważnionych użytkowników. Większość z nas może uznać integralność systemów oprogramowania za pewnik, ponieważ przez większość czasu na szczęście współpracujemy z systemami, które zachowują swoją integralność. Wynika to z faktu, że programiści i inżynierowie oprogramowania poświęcili wiele czasu i wysiłku na rozwój systemów w celu osiągnięcia i zachowania integralności. W rezultacie możemy być nieco rozpieszczeni, jeśli chodzi o docenienie pracy wykonanej przez inżynierów oprogramowania w celu stworzenia systemów, które utrzymują wysoki poziom integralności. Ale nasze uczucia mogą się zmienić, gdy tylko wejdziemy w interakcję z systemem, który tego nie robi. Są to sytuacje, w których użytkownik staje w obliczu utraty danych, nielogicznego zachowania oprogramowania lub zdaje sobie sprawę, że obcy mogli uzyskać dostęp do prywatnych danych. Są to sytuacje, w których telefon komórkowy, komputer, oprogramowanie poczty e-mail, edytor tekstu lub kalkulator arkusza kalkulacyjnego wpadają w złość i zapominają o dobrych manierach! Przy takich okazjach zaczynamy zdawać sobie sprawę, że integralność oprogramowania jest bardzo cennym towarem. Dlatego nie powinno dziwić, że specjaliści od oprogramowania spędzają dużo czasu pracując nad tym pozornie małym niefunkcjonalnym aspektem warstwy implementacyjnej

Perspektywy

Na tym etapie przedstawiono wprowadzenie do ogólnych zasad inżynierii oprogramowania. W szczególności zilustrowano koncepcje integralności i aspektów funkcjonalnych vs. niefunkcjonalnych, a także zastosowania i implementacji systemu oprogramowania. Zrozumienie tych koncepcji pomoże docenić szersze możliwości zakres, w którym istnieje blockchain. Następny krok przedstawi większy obraz za pomocą koncepcji wprowadzonych w tym kroku.

Podsumowanie

Systemy można analizować, dzieląc je na :

• Warstwę aplikacji i implementacji

• Aspekty funkcjonalne i niefunkcjonalne.

• Warstwa aplikacji skupia się na potrzebach użytkownika, podczas gdy warstwa implementacji koncentruje się na robieniu rzeczy.

• Aspekty funkcjonalne koncentrują się na tym, co się robi, podczas gdy aspekty niefunkcjonalne koncentrują się na tym, jak się robi.

• Większość użytkowników interesuje się funkcjonalnymi aspektami warstwy aplikacji systemu, podczas gdy niefunkcjonalne aspekty systemu, w szczególności te warstwy implementacji, są mniej widoczne dla użytkowników.

• Integralność jest ważnym niefunkcjonalnym aspektem dowolnego systemu oprogramowania i ma trzy główne elementy:

• Integralność danych

• Integralność behawioralna

• Bezpieczeństwo

• Większość błędów oprogramowania, takich jak utrata danych, nielogiczne zachowanie lub nieznajomość uzyskiwania dostępu do prywatnych danych, jest wynikiem naruszenia integralności systemu.