실제로 소프트웨어 엔지니어링의 모듈은 무엇입니까? [닫은]


18

Stephen Schach의“클래식 및 객체 지향 소프트웨어 엔지니어링”6 장에 따르면

모듈은 프로 시저, 함수 또는 메소드가 호출되는 방식으로 호출 할 수있는 단일 코드 블록으로 구성됩니다.

이것은 매우 모호하고 광범위하게 보입니다. 그렇다면 누구나 명확하게 설명하고 요구 사항을 모듈로 나누는 방법에 대한 실제 예를 보여줄 수 있습니까? 감사.

답변:


16

모듈

  • 코드와 데이터를 캡슐화하여 특정 기능을 구현합니다.
  • 클라이언트가 동일한 방식으로 기능에 액세스 할 수있는 인터페이스가 있습니다.
  • 인터페이스가 필요한 다른 모듈과 쉽게 연결할 수 있습니다.
  • 일반적으로 쉽게 배포 할 수 있도록 단일 장치로 패키지됩니다.

예를 들어 dapper.net은 데이터베이스 액세스를 캡슐화합니다. 기능에 액세스하는 API가 있습니다. 빌드 할 소스 트리에 연결할 수있는 단일 파일입니다.

모듈의 개념은 모듈 식 프로그래밍 패러다임에서 나옵니다. 모듈 식 프로그래밍 패러다임은 소프트웨어가 프로그램 기능을 모듈로 분류하여 모듈이라는 별도의 상호 교환 가능한 구성 요소로 구성되어야한다고 주장합니다. 각 모듈은 하나의 기능을 수행하며이를 달성하는 데 필요한 모든 것을 포함합니다.


요구 사항이 많으면 각 요구 사항을 모듈로 간주 할 수 있습니까? 예 : "직원 추가"요구 사항은 모듈 일 수 있습니까?
Hoan

1
아니오 또는 그것은 달려 있습니다. 프로그램 기능은 응집력있는 단위로 분류되어야합니다. 그러한 방식으로 요구 사항을 세분화 할 수 있다면 그렇습니다. 그러나 나는 아직 이와 같은 것을 보지 못했습니다. 또한 "직원 추가"는 모듈의 후보가되어서는 안됩니다. 일반적으로 모듈은 프로그램을 논리적으로 일관된 단위로 분해하는 상위 레벨 구조입니다.
theD

12

모듈은 과부하 된 용어 일 수 있으며, 위키 백과는 소프트웨어와 관련하여 그 사용을 논의 할 때 모듈 식 프로그래밍 이라는 용어로 설명합니다 . 하향식 설계 방식을 기반으로하는 구조적 프로그래밍 측면에서 논의합니다. 낮은 커플 링 및 높은 응집력 의 사용과 관련된 모듈성의 주요 특성 .

내 사용법은 C 또는 C ++과 같은 언어에서 모듈은 소스 파일 (.c 또는 .cpp)과 일반적으로 하나의 관련 헤더 파일 (.h)에서 별도로 컴파일 된 단위를 정의하는 것과 관련이 있습니다. 다른 언어는 모듈을 설명으로 사용하며, Modula-2 언어는 이름과 접근 방식으로 모듈을 중심으로 앞뒤에 구조를 설정합니다.

역사적으로 모듈은 DL Parnas 논문 "소프트웨어를 모듈로 분해하는 데 사용되는 기준"에 설명 된대로 다른 의미를 갖습니다 . 그는 기능 분해를 데이터 지향 분해로 대체하는 이점을 논의하는 데 주로 관심을 기울이고 있으며 이는 현재 객체 지향 분해 인 최신 기술을 향한 큰 발걸음이었습니다.

객체 지향 언어는 클래스를 중심으로 구성되므로 해당 용어에서 모듈이라는 용어가 덜 중요하고 덜 정확할 수 있습니다.


7

모듈에 대한 공식적인 정의는 없으며, 프로젝트의 맥락에서 모듈의 의미는 프로젝트의 특성과 디자인에 달려 있습니다.

일반적으로 모듈은 구체적이고 밀접하게 결합 된 기능을 제공하는 독립 실행 형 코드이며 모듈은 코드의 논리적 경계를 정의하고 적용합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.