Big Picture .Metafora II

Czy kiedykolwiek kupiłeś samochód? Większość z nas ma. Nawet jeśli nigdy nie kupiłeś samochodu, prawdopodobnie wiesz, że samochody są wyposażone w różne typy silników (np. Diesel, benzynę lub silnik elektryczny). Jest to przykład procesu modularyzacji, który jest wynikiem zastosowania koncepcji warstwowania do samochodów. Posiadanie wyboru między różnymi silnikami przy zakupie samochodu może spowodować niesamowite różnice w pojeździe. Dwa samochody, które wyglądają identycznie z zewnątrz, różnią się znacznie w zależności od mocy silników, a co za tym idzie, mają bardzo różne osiągi. Dodatkowo, wybór silnika będzie miał wpływ na inne cechy samochodu, takie jak jego cena, koszty operacyjne, rodzaj zużywanego paliwa, układ wydechowy i wymiary hamulców. Mając to na uwadze, zrozumienie roli blockchain w wielkim obrazie będzie znacznie łatwiejsze.

Integralność

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

Rozważając dwie warstwy w tym samym czasie…

Identyfikacja aspektów funkcjonalnych i niefunkcjonalnych oraz oddzielenie aplikacji i  implementacja  warstwy może być wykonana w tym samym czasie, co prowadzi do dwuwymiarowej tablicy. Poniżej masz przykład mentalnego  nakładania warstw na telefon komórkowy w ten sposób.

Warstwa  : Aplikacja

Aspekty funkcjonalne : Robienie zdjęć, Dzwonienie, Wysyłanie maili, Przeglądanie Internetu, Czatowanie

Niefunkcjonalne aspekty: Wygląda graficzny interfejsu użytkownika jest piękny, Łatwy w użyciu, Wiadomości są wysyłane szybko

Warstwa : Implementacja

Aspekty funkcjonalne : Wewnętrzne zapisywanie danych użytkownika, Nawiązanie połączenia z najbliższą komórką, Uzyskiwanie dostępu do pikseli w aparacie cyfrowym

Niefunkcjonalne aspekty: Przechowuj dane wydajnie, Oszczędzanie energii , Zachowanie uczciwości, Zapewnij prywatność użytkownika

Powyższe, może wyjaśnić użytkownikom  konkretne elementy systemu (lub ich brak). 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.

Warstwy systemu oprogramowania

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.

Metafora

Czy masz telefon komórkowy? Zgaduję, że tak, ponieważ większość ludzi ma teraz co najmniej jeden. Ile wiesz o różnych protokołach komunikacji  bezprzewodowej, które są używane do wysyłania i odbierania danych? Jak dużo wiesz o falach elektromagnetycznych, które są podstawą komunikacji mobilnej? Cóż, większość z nas nie wie 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 nie dowiadywać . Oddzielamy umysłowo telefon komórkowy od części, które musimy znać, oraz części, które można zignorować lub przyjąć za pewnik. Takie podejście do technologii nie ogranicza się do telefonów komórkowych. Używamy go cały czas, kiedy uczymy się korzystać z nowego telewizora,  komputera, pralki i tak dalej. Jednak te podziały  mentalne są wysoce  indywidualne, ponieważ to, co uważane jest za ważne, a co nie zależy od naszych indywidualnych preferencji, konkretnej technologii oraz naszych celów i doświadczeń. W rezultacie twój umysłowy podział telefonu komórkowego może różnić się od mojej mentalnej partycji tego samego telefonu komórkowego. Zazwyczaj prowadzi to do problemów z komunikacją, w szczególności, gdy próbuję wytłumaczyć ci, co powinieneś wiedzieć o danym telefonie komórkowym. Dlatego też ujednolicenie sposobu podziału systemu jest kluczową kwestią podczas nauczania i omawiania technologii.  Dlatego na początku postaram się wyjaśnić , w jaki sposób podzielić lub złożyć system, a tym samym ustalić podstawę naszej komunikacji na temat blockchain

Zaczynamy “od klasyki”

Cóż,zacznijmy od ogólnodostępnej definicji :

“Blockchain lub łańcuch bloków (czasem też łańcuch blokowy) – zdecentralizowana i rozproszona baza danych w modelu open source w sieci internetowej o architekturze peer-to-peer (P2P) bez centralnych komputerów i niemająca scentralizowanego miejsca przechowywania danych, służąca do księgowania poszczególnych transakcji, płatności lub zapisów księgowych zakodowana za pomocą algorytmów kryptograficznych. W istocie blockchain to swoisty zdecentralizowany i rozproszony rejestr transakcji lub mówiąc inaczej jest to zdecentralizowana platforma transakcyjna w rozproszonej infrastrukturze sieciowej. Blockchain to publiczny i jawny rejestr do którego dostęp może uzyskać każdy” Wikipedia

Dzień dobry…

Witam serdecznie wszystkich, którzy weszli na ten blog dobrowolnie, jak i tych, którzy tu weszli przez przypadek. Mam nadzieję ,że temat blockchain’ów oraz tematów pokrewnych, jakie zostaną poruszone na tym blogu, mam nadzieję ,że w sposób zrozumiały, spowoduje ,że chociaż ze 3 osoby będą tu zaglądać regularnie 🙂 . Pierwszy wpis pozwolę sobie zakończyć staropolskim : “I to by było na tyle”. Widzimy się przy kolejnym wpisie 😉