소프트웨어 설계 및 개발 지원 도구

유동우·2023년 4월 7일
0

소프트웨어 공학

목록 보기
6/6
post-thumbnail

소프트웨어 설계 지원 도구

UML의 이해

UML (Unified Modeling Language, 통합 모델링 언어)

  • 통합모델링 언어
  • 1997년 객체관리그룹(OMG)에서 여러 표기법을 통합하며 UML을 발표
  • UML은 객체지향 시스템 개발 분야에서 가장 우수한 모델링 언어로 인식

UML 역사

  • 1990년대의 수많은 방법론들은 실제 시스템을 구축할때 각각의 방법론마다 객체지향 기술이 갖는 방법과 심볼이 서로 달랐다
  • 호환성 또한 장애가 있었다.
  • 이러한 많은 객체지향 언어의 문제점을 인식하고, 해결을 위해 통합된 객체지향 모델링 언어인 UML이 탄생했다.

UML 특징

  • UML은 가시화 언어이다

    	UML은 소프트웨어의 개념 모델을 시각적 그래픽 형태로 작성

    표기법에 있어 심볼 각각에 대해 명확한 정의가 존재한다
    => 개발자들간 원활한 의사소통 가능

  • UML은 명세화 언어이다

    	명세화: 정확 + 명백 + 완전한 모델

    UML은 소프트웨어 개발 과정인 분석, 설계, 구현 단계의 각 과정에서 필요한 모델을 정확하고 완전하게 명세화 할 수 있는 언어이다

  • UML은 구축 언어이다

    	Java, C++, Visual Basic과 같은 다양한 프로그래밍 언어로 표현

    UML로 명세화된 설계 모델 -> 프로그램 소스코드 변환, 구축 가능
    구축되어 있는 소스를 UML로 역변환하여 분석하는 역공학이 가능하다

  • UML은 문서화 언어이다

UML 용도

  • 시스템 만들기 전 모델 개발 = 건물 짓기위한 설계도
  • 시스템 개발할 때 어휘와 규칙을 마련 -> 시스템을 개념적 + 물리적 표현하는 모델 필요
  • 따라서 성공적인 시스템을 위해 표준으로 인정받는 모델링 언어인 UML + 객체지향적인 분석

UML 다이어그램

13가지 다이어그램들 중에서
클래스, 컴포넌트, 디플로이먼트, 패키지, 액티비티, 시퀀스, 유스케이스, 스테이트를 그나마 많이 쓴다.

위의 다이어그램 중에서도
클래스, 시퀀스, 유스케이스 를 현업에서 많이 사용한다.

  • 클래스 다이어그램: 클래스 명세와 클래스 간의 관계를 표현

  • 컴포넌트 다이어그램: 파일과 데이터베이스, 프로세스와 스레드 등의 소프트웨어 구조를 표현

  • 디플로이먼트 다이어그램: 하드웨어와 네트워크 등 시스템의 물리 구조를 표현

  • 패키지 다이어그램: 패키지 간의 연관 관계를 표현

  • 액티비티 다이어그램: 일련의 처리에 있어 제어의 흐름을 표현

  • 시퀀스 다이어그램: 인스턴스 간의 상호작용을 시계열로 표현

  • 유스케이스 다이어그램: 시스템이 제공하는 기능과 이용자의 관계를 표현

  • 스테이트 머신 다이어그램: 인스턴스 상태 변화를 표현

다이어그램의 3분류
구조 다이어그램, 행동 다이어그램, 상호작용 다이어그램


객체지향 모델링

객체지향 개념

  • 1970년대 이전의 소프트웨어 개발 방식 : 체계적인 계획, 설계 X, 필요할때마다 하나씩 개발

  • 1970년대 : 프로그램을 여러개의 작은 부분으로 쪼개어 개발하는 구조적 개발 방법을 많이 사용

    	구조적 개발 방법?

    소프트웨어를 단위 모듈로 분할하여 전체 프로그램의 구조를 세부적으로 쪼갠 다음 각 부분을 구현하고 다시 통합하여 완성하는 방법
    프로그램논리와 데이터를 분리해서 설계 -> 생명주기 각 단계에서 자연스럽게 연결되지 않는다
    문제점: 유지보수 비용이 많아지고 기계중심의 개발 방식이다..
    => 인간위주의 개발방법론은 없을까? => 객체지향 방법

  • 객체지향이란

    	현실에 있는 사물(객체)을 그대로 이용하는 방법론

    구조적 방법의 문제점을 극복하고 인간의 사고방식대로 프로그램을 개발하려는 노력으로 탄생
    현실세계에 존재하는 개념들 중 소프트웨어 개발 대상이 되는 것들을 모두 객체라 할 수 있다.

객체지향 개념의 7가지

  • 객체

    	객체? 우리가 살아가는 세계에 존재하거나 생각할 수 있는 것을 말한다

    현실세계에 존재하는 개념들중 소프트웨어 개발 대상이 되는 것들은 모두 객체

  • 클래스

    	클래스? 객체를 생성할 수 있는 구조와 정보를 가지는 틀

    클래스 = 붕어빵 기계, 객체 = 붕어빵
    클래스는 개념적의미, 객체는 구체적 의미

  • 메시지

    	메시지? 객체들 사이의 상호작용 수단

    메시지는 객체 -> 객체 특정작업 요청하는 신호
    송신 객체(sender) : 메시지 보내는 객체
    수신 객체(receiver) : 메시지 받아서 동작하는 객체

  • 추상화

    	추상화? 현실세계에 존재하는 것을 하나의 객체로 표현하기 힘듦으로 특정 측면 강조

    추상화를 통해 현실세계를 간결하고 명확하게 모델링 구현 가능

  • 캡슐화

    	캡슐화? 자료와 오퍼레이션이 한 틀 안에서 결합

    객체 외부에서는 내부에 접근, 조작 X
    캡슐화는 클래스로 구현, 정보은닉이 가능하다 (=>높은 독립성, 유지보수성, 향상된 이식성)

  • 상속

    	상속? 객체지향의 기본 개념, 프로그램을 쉽게 확장할 수 있도록 도와주는 수단

    하위클래스가 상속받음으로써 이미 정의된 클래스를 재사용 및 확장
    특수화 : 상위클래스 -> 하위클래스 실체화
    일반화 : 하위클래스 -> 상위클래스 추상화

  • 다형성

    	다형성? 여러 클래스의 같은 이름의 함수에 대해 동작은 다르게 수행

    오버라이딩 방식으로 구현
    상위클래스에서 상속받은 메서드를 하위클래스가 다르게 실행하고 싶을 경우
    상속받은 메서드를 같은이름으로 재정의 -> 생성된 객체가 상위 클래스의 정의와 다른 동작


UML 다이어그램

UML 구성 요소

(실무에서는 굳이 분류안하고, 안쓰이지만 이론적인것은 시험에는 나옴(기사시험))

  • 사물: UML의 기본요소 구성
  • 관계: 사물간의 관계
  • 다이어그램: 사물과 관계를 도형으로 표현

사물

  • 구조사물 : 시스템의 구조 표현
    UMl 모델의 명사형 
    모델의 정적인 부분, 개념적/물리적 요소 표현
    클래스
    동일한 속성, 오퍼레이션, 관계 그리고 의미를 공유하는 객체를 기술
    클래스는 직사각형으로 표현
    사각형 안에 이름, 속성, 오퍼레이션
    통신
    교류를 정의, 서로 다른 요소와 역할이 모여있음
    행동적 + 구조적 중요성, 하나의 클래스에 다수의 통신이 참여한다
    실선의 사각형 안에 이름을 넣는다
    유스케이스
    시스템이 수행하는 활동을 순차적으로 기술
    액터(행위자)에게 의미있는 결과 제공
    유스케이스는 모델에서 행동사물을 구조화하기 위해 사용, 통신으로 실현
    실선의 타원 안에 이름을 넣는다
    컴포넌트
    시스템의 물리적이고, 대체 가능한 부분
    일반적으로 클래스 + 인터페이스 + 통신 과 같이 서로다른 논리요소를 물리적으로 패키지화
    탭이달린 직사각형 안에 이름을 넣는다
  • 행동사물 : 시스템의 행위 표현
    행동사물은 UML 모델의 동적 부분
    모델의 동사로서, 시간과 공간에 따른 행동을 나타낸다
    교류
    교류는 행동이고, 객체들간에 메세지로 구성
    교류의 다양한 요소: 메시지, 활동순서(메시지에 의해 호출되는 행동), 링크
    메시지는 직선, 항상 오퍼레이션 이름 포함

    상태 머신
    상태의 순서를 지정하는 행동
    개별 클래스의 행동이나 여러 클래스들로 된 특정 행동을 하나의 상태로 지정
    상태 머신의 서로 다른 요소 : 상태 전이(상태에서 다른 상태로의 흐름), 사건(전이를
    유발시키는 것), 활동(전이에 따른 응답)
    둥근 직사각형으로 표현, 안에이름 넣고 (필요시 하위 상태 포함)

  • 그룹사물 : 개념을 그룹화 그룹사물: UMl 모델을 조직화, 모델을 분해하고 담을 수 있는 상자
    그룹사물: 패키지 패키지
    패키지는 요소를 그룹으로 묶음
    구조사물, 행동사물, 다른 그룹사물들 까지도 하나의 패키지 안에 넣을 수 있다
    컴포넌트 = 물리적, 패키지 = 개념적 (개발시에만 존재)
    탭이달린 폴더로 표현, 보통 이름만씀 (가끔 안에 내용 표현)


  • 주해사물 : 부가적 개념 설명 주해사물은 UML 모델을 설명하는 부분이다
    주석역할, 모델의 어떤 요소에 대해 설명 + 비고 표시 노트
    하나의 요소 or 공동체에 첨부되는 제약과 주석을 표시하기 위해 사용
    접힌 직사각형으로 표현, 문자와 그래픽 함께 표기 가능

UML 지원도구

draw.io

profile
효율적이고 꾸준하게

0개의 댓글