• 소프트웨어 설계 접근법
    BOOK 2024. 9. 28. 10:43

    소프트웨어 설계의 정석
    소프트웨어 설계의 정석

    "한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 제공 받아 작성된 서평입니다."

    외부 설계와 내부 설계

    모두에게 통용되는 설계 구분 방법은 없지만 이 책에서는 '외부 설계, 내부설계'로 나누고 있음

    • 외부 설계 - 기본 설계, 기능 설계, 개요 설계
      • 시스템이 제공해야 하는 기능을 구체적으로 설계하는 작업
      • 시스템 사용자나 외부 시스템에 제공하는 기능이나 인터페이스가 해당
    • 내부 설계 - 상세 설계, 프로그램 설계
      • 외부 설계에서 결정된 입출력으로 내부 설계에서는 입력과 출력 사이에서 이뤄지는 내부 처리 설계
      • 구체적인 소프트웨어 내부 설계와 데이터 처리 방법, 관리 방법, 병렬 처리 방법, 트랜젝션 방법 설계

     

    외부 설계, 내부 설계, 아키텍처 설계의 목적
    외부 설계, 내부 설계, 아키텍처 설계의 목적

    외부 설계와 내부 설계의 차이점

    외부 설계는 시스템의 구체적인 기능을 설계하는 작업

    시스템이 사용자나 외부 시스템에 제공하는 기능이나 인터페이스가 해당

    시스템 설계에서는 입력과 출력을 명확히 하는 것이 기본

     

    외부 설계 작업 및 결과물
    외부 설계 작업 및 결과물

     

    외부 설계에서 입력과 출력이 결정되고, 내부 설계에서는 입력과 출력 사이에서 이루어지는 내부 처리를 설계

    구체적인 소프트웨어 내부 설계와 데이터 처리 방법, 관리 방법, 병렬 처리 방법, 트랜잭션 방법 등을 설계

     

    내부 설계 작업 및 결과물
    내부 설계 작업 및 결과물

    객체지향 설계

    그렇다면 객체지향 설계란 무엇인가?

    기존의 구조와 설계와 대비되는 개념으로 구조화 설계에서는 플로차트, DFD와 같은 다이어그램을 작성하여 기능을 세분화 했다면

    객체지향은 구조화 설계의 단점을 해결하기 위해 몇 가지 메커니즘을 도입

    • 클래스, 상속, 다형성, 인스턴스화

     

    클래스

    데이터와 처리를 하나의 정의로 묶은 것

    데이터 - 속성, 멤버 변수, 필드

    처리 - 조작, 메서드

    클래스는 필드를 숨길 수 있고, 클래스의 필드값을 변경하려면 메서드를 호출해야 하는데 이를 캡슐화

    캡슐화를 통해 클래스는 메서드의 시그니처(메서드 이름, 인수, 반환값)만을 공개하게 되고

    이를 통해 클래스의 필드 구조가 변경되어도 메서드의 시그니처가 변경되지 않으면 클래스를 호출하는 쪽에서는 변경의 영향을 받지 않음

    이러한 클래서의 메서드와 시그니처를 인터페이스라고 부름

    변경에 강한 시스템 설계를 위해 인터페이스를 중요하게 생각해야 함

     

     

    상속

    상속은 클래스를 확장하기 위한 메커니즘

    원본 클래스에 영향을 주지 않고 확장할 수 있음

    상속의 목적은 크게 2가지 

    • 오버라이딩(재정의)
      • 슈퍼 클래스의 메서드를 서브 클래스의 구현 정의로 대체
    • 오버로딩
      • 슈퍼 클래스 메서드를 확장

     

    다형성

    클래스의 인터페이스는 그대로 두고 구현만 변경하여 메서드를 호출하는 측에 영향을 주지 않은 채 구현 클래스를 변경

     

     

    728x90

    'BOOK' 카테고리의 다른 글

    chatGPT 활용 데이터 분석  (1) 2024.11.17
    쿠버네티스 모니터링  (2) 2024.10.26
    뉴스 기사 탐색 챗봇 만들기  (2) 2024.08.24
    회의 요약 보고서 작성법  (1) 2024.07.25
    부트캠프 QA편  (0) 2024.06.23
go.