Wprowadzenie: Celem fazy projektowania w cyklu życia oprogramowania (Software Development Life Cycle) jest wytworzenie rozwiązania problemu podanego w dokumencie SRS(Software Requirement Specification). Wynikiem fazy projektowania jest Sofware Design Document (SDD).

Podstawowo, projektowanie jest dwuczęściowym procesem iteracyjnym. Pierwsza część to Projekt Koncepcyjny, który mówi klientowi, co system będzie robił. Druga część to Projekt Techniczny, który pozwala konstruktorom systemu zrozumieć rzeczywisty sprzęt i oprogramowanie potrzebne do rozwiązania problemu klienta.

Projekt koncepcyjny systemu:

  • Pisany prostym językiem, tj. językiem zrozumiałym dla klienta.
  • Szczegółowo wyjaśnia charakterystykę systemu.
  • Opisuje funkcjonalność systemu.
  • Jest niezależny od implementacji.
  • Połączony z dokumentem wymagań.

Techniczny projekt systemu:

  • Komponent sprzętowy i projekt.
  • Funkcjonalność i hierarchia komponentu oprogramowania.
  • Architektura oprogramowania
  • Architektura sieci
  • Struktura danych i przepływ danych.
  • Komponent wejścia/wyjścia systemu.
  • Prezentuje interfejs.

Modularyzacja: Modularyzacja jest procesem dzielenia systemu oprogramowania na wiele niezależnych modułów, gdzie każdy moduł działa niezależnie. Istnieje wiele korzyści z Modularyzacja w inżynierii oprogramowania. Niektóre z nich są podane poniżej:

  • Łatwe do zrozumienia systemu.
  • Utrzymanie systemu jest łatwe.
  • Moduł może być używany wiele razy, jak ich wymagania. Nie ma potrzeby, aby napisać go ponownie i ponownie.

Sprzężenie: Sprzężenie jest miarą stopnia współzależności między modułami. Dobre oprogramowanie będzie miało niskie coupling.

Types of Coupling:

  • Data Coupling: Jeśli zależność między modułami opiera się na tym, że komunikują się one poprzez przekazywanie tylko danych, to mówi się, że moduły są sprzężone z danymi. W sprzężeniu danych, komponenty są niezależne od siebie i komunikują się poprzez dane. Komunikacja w modułach nie zawiera danych śladowych. Przykład – system fakturowania klienta.
  • Sprzężenie znaczków W sprzężeniu znaczków kompletna struktura danych jest przekazywana z jednego modułu do drugiego. Dlatego wiąże się to z danymi typu „tramp”. Może to być konieczne ze względu na czynniki wydajności – ten wybór dokonany przez wnikliwego projektanta, a nie leniwego programistę.
  • Sprzężenie kontrolne: Jeśli moduły komunikują się poprzez przekazywanie informacji kontrolnych, wtedy mówi się, że są one sprzężone kontrolnie. To może być złe, jeśli parametry wskazują na zupełnie inne zachowanie i dobre, jeśli parametry pozwalają na faktoring i ponowne wykorzystanie funkcjonalności. Przykład – funkcja sortowania, która pobiera funkcję porównania jako argument.
  • Zewnętrzne sprzężenie: W sprzężeniu zewnętrznym moduły zależą od innych modułów, zewnętrznych w stosunku do tworzonego oprogramowania lub do określonego typu sprzętu. Ex- protokół, plik zewnętrzny, format urządzenia, etc.
  • Wspólne sprzężenie: Moduły mają wspólne dane, takie jak globalne struktury danych.zmiany w globalnych danych oznacza śledzenie wstecz do wszystkich modułów, które dostęp do tych danych, aby ocenić efekt zmiany. Więc to ma wady, takie jak trudności w ponownym użyciu modułów, zmniejszona zdolność do kontroli dostępu do danych i zmniejszona maintainability.
  • Content Coupling: W sprzężeniu treści, jeden moduł może modyfikować dane innego modułu lub przepływ sterowania jest przekazywany z jednego modułu do drugiego modułu. Jest to najgorsza forma sprzężenia i należy jej unikać.

Spójność: Spójność jest miarą stopnia, w jakim elementy modułu są powiązane funkcjonalnie. Jest to stopień, w jakim wszystkie elementy ukierunkowane na wykonanie pojedynczego zadania są zawarte w komponencie. Zasadniczo, spójność jest wewnętrznym klejem, który trzyma moduł razem. Dobry projekt oprogramowania będzie miał wysoką spójność.

Typy spójności:

  • Spójność funkcjonalna: Każdy istotny element dla pojedynczego obliczenia jest zawarty w komponencie. Spójność funkcjonalna wykonuje zadania i funkcje. Jest to sytuacja idealna.
  • Spójność sekwencyjna: Element wyprowadza pewne dane, które stają się wejściem dla innego elementu, czyli przepływ danych między częściami. Występuje ona naturalnie w funkcjonalnych językach programowania.
  • Spójność komunikacyjna: Dwa elementy operują na tych samych danych wejściowych lub przyczyniają się do uzyskania tych samych danych wyjściowych. Przykład – aktualizacja rekordu w bazie danych i wysłanie go do drukarki.
  • Spójność proceduralna: Elementy spójności proceduralnej zapewniają kolejność wykonywania działań. Akcje są nadal słabo połączone i mało prawdopodobne, że będą mogły być ponownie wykorzystane. Ex- oblicz GPA studenta, wydrukuj rekord studenta, oblicz skumulowaną GPA, wydrukuj skumulowaną GPA.
  • Spójność czasowa: Elementy są powiązane przez ich czasowe zaangażowanie. Moduł związany ze spójnością czasową wszystkie zadania muszą być wykonane w tym samym przedziale czasowym. Ta spójność zawiera kod do inicjalizacji wszystkich części systemu. Wiele różnych działań występuje, wszystkie w czasie init.
  • Spójność logiczna: Elementy są powiązane logicznie, a nie funkcjonalnie. Ex- Komponent odczytuje dane wejściowe z taśmy, dysku i sieci. Cały kod dla tych funkcji znajduje się w tym samym komponencie. Operacje są powiązane, ale funkcje są znacząco różne.
  • Spójność koincydentalna: Elementy nie są powiązane(niepowiązane). Elementy nie mają żadnej konceptualnej relacji innej niż lokalizacja w kodzie źródłowym. Jest to przypadkowa i najgorsza forma spójności. Ex- print next line and reverse the characters of a string in a single component.

Attention reader! Nie przestawaj się teraz uczyć. Zdobądź wszystkie ważne koncepcje CS Theory dla wywiadów SDE z Kursem CS Theory w przyjaznej dla studenta cenie i stań się gotowy do pracy w przemyśle.

Tagi artykułu :

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.