Czym właściwie jest moduł w inżynierii oprogramowania? [Zamknięte]

18

Według Stephena Schacha, „Klasyczna i obiektowa inżynieria oprogramowania”, rozdział 6:

moduł składa się z jednego bloku kodu, który można wywołać w taki sposób, w jaki wywoływana jest procedura, funkcja lub metoda

Wydaje się to bardzo niejasne i ogólne. Czy ktoś mógłby to jasno wyjaśnić i pokazać rzeczywiste przykłady, jak rozbić wymaganie na moduły? Dzięki.

Hoan
źródło

Odpowiedzi:

16

Moduł,

  • hermetyzuje kod i dane w celu wdrożenia określonej funkcjonalności.
  • ma interfejs, który umożliwia klientom dostęp do jego funkcji w jednolity sposób.
  • można łatwo podłączyć do innego modułu, który oczekuje interfejsu.
  • jest zwykle pakowany w pojedynczą jednostkę, aby można go było łatwo wdrożyć.

Na przykład dapper.net hermetyzuje dostęp do bazy danych. Ma interfejs API umożliwiający dostęp do jego funkcji. Jest to pojedynczy plik, który można podłączyć do drzewa źródłowego, które ma zostać zbudowane.

Koncepcja modułu pochodzi z modułowego paradygmatu programowania, który głosi, że oprogramowanie powinno składać się z oddzielnych, wymiennych komponentów zwanych modułami poprzez rozbicie funkcji programu na moduły, z których każdy spełnia jedną funkcję i zawiera wszystko, co jest konieczne do osiągnięcia tego celu.

theD
źródło
jeśli mamy wiele wymagań, więc każde wymaganie można uznać za moduł? Np .: wymóg „Dodanie pracownika” może być modułem?
Hoan,
1
Nie lub to zależy. Funkcje programu należy podzielić na spójne jednostki. Jeśli wymagania można rozbić w taki sposób, może być tak. Ale jeszcze czegoś takiego nie widziałem. Ponadto „Dodawanie pracownika” nie powinno być kandydatem do modułu. Zwykle moduły są strukturami wyższego poziomu, które rozkładają programy na logicznie spójne jednostki.
theD
12

Moduł może być pojęciem przeciążonym, do tego stopnia, że ​​Wikipedia opisuje go pod terminem Programowanie modułowe podczas omawiania jego zastosowania w stosunku do oprogramowania. Omawiają to w kategoriach programowania strukturalnego opartego na odgórnym podejściu projektowym. Kluczowe cechy modułowości związane z zastosowaniem niskiego sprzężenia i wysokiej kohezji .

Moje użycie polegało na tym, że w języku takim jak C lub nawet C ++ moduł jest powiązany z definiowaniem osobno skompilowanej jednostki z pliku źródłowego (.c lub .cpp) i zazwyczaj jednego skojarzonego pliku nagłówka (.h). Inne języki używają modułu jako opisu, a język Modula-2 umieszcza strukturę wokół modułów z przodu i na środku w swojej nazwie i podejściu.

Historycznie, moduł ma pewne inne implikacje, jak opisano w dokumencie DL Parnas „O kryteriach, które należy zastosować w rozkładaniu oprogramowania na moduły” . Zajmuje go przede wszystkim omówienie korzyści płynących z zastąpienia dekompozycji funkcjonalnej dekompozycją zorientowaną na dane, co stanowiło duży krok w kierunku naszego obecnego stanu wiedzy, jakim jest dekompozycja zorientowana obiektowo.

Języki obiektowe są zorganizowane wokół klas, więc być może termin moduł jest mniej ważny i mniej precyzyjny w tym kontekście.

DeveloperDon
źródło
7

Nie ma formalnej definicji modułu, a to, czym jest moduł (lub nie jest) w kontekście twojego projektu, w dużej mierze zależy od charakteru i projektu projektu.

Mówiąc ogólnie, moduł jest samodzielnym fragmentem kodu, który zapewnia określoną i ściśle powiązaną funkcjonalność, moduły definiują i egzekwują logiczne granice w kodzie.

Roc Martí
źródło