무지개곰
article thumbnail
반응형

소프트웨어 설계는 사용자의 비기능적 요구사항을 기반으로 제약을 반영하며, 기능적 요구사항을 구현할 구체적인 방법을 찾는 해결 과정입니다.


모듈화 (Modularity)

  • 정의: 시스템 기능을 모듈 단위로 분리하여 소프트웨어 성능과 재사용성을 높이는 기법
  • 모듈 크기
    • 큰 모듈: 모듈 수가 적고 통합 비용이 낮지만, 개별 모듈의 개발 비용이 큼
    • 작은 모듈: 모듈 수가 많아져 통합 비용이 높아질 수 있음
  • 장점: 모듈 단위의 관리가 가능해 성능 향상 및 유지보수가 용이함

추상화 (Abstraction)

  • 정의: 큰 개념을 설계한 후 이를 점차 구체화해 세부적인 설계로 발전시키는 방법
  • 유형
    • 과정 추상화: 전체 흐름만을 파악하고 수행 절차를 세세하게 정의하지 않음
    • 데이터 추상화: 데이터의 세부 속성을 생략하고 대표 표현으로 대체
    • 제어 추상화: 이벤트 발생의 절차를 정의하지 않고, 대표적인 절차 표현으로 대체
  • 장점: 복잡성을 줄이고, 전체적인 시스템 설계 시 효율적임

단계적 분해 (Stepwise Refinement)

  • 정의: 소프트웨어 기능에서 출발해 절차적이고 점진적으로 구체화하는 하향식 설계 방법
  • 특징: Niklaus Wirth가 제안한 기법으로, 추상화의 반복을 통해 점차적으로 세부 사항을 설계
  • 장점: 상세한 내역을 마지막 단계에서 결정하여 설계 변경이 용이함

정보 은닉 (Information Hiding)

  • 정의: 모듈 내부의 정보나 자료가 다른 모듈에 노출되지 않도록 숨기는 기법
  • 특징: 각 모듈이 독립적으로 기능을 수행하며, 외부 모듈이 접근하지 못하도록 제어
  • 장점: 모듈 변경 시 다른 모듈에 영향을 주지 않아 유지보수와 수정이 수월함
반응형
profile

무지개곰

@무지개곰

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!