[SW이론] 요구모델링

Kimseongeun·2022년 6월 6일
0

소프트웨어 공학

목록 보기
8/8
post-thumbnail
  • 요구사항을 소프트웨어 및 하드웨어 관점으로 대상을 정의하는 방법

🔽요구분석 & 요구모델링

  • 요구분석은 문제의 시스템과 관련해 고객의 요구를 만족시키기 위한 사양, 시스템을 구축하기에 충분한 정보를 제공하는 사양을 작성하는 프로세스.
  • 요구 모델링요구분석 + 개발자 이해방식 고려
    • 작업결과인 명세는 고객과 개발자가 동일한 방식으로 이해해야함.

요구분석의 주요목표는 구축중인 시스템에 대한 형식적 또는 준 형식적 설명을 제공하는 것

요구 모델링은 고객과 개발자가 무엇이 개발되고 있는지에 동의하는 것을 주된 목적으로 하는 요구 명세를 생성하는 것

✅요구모델링

  • 요구분석 작업은 주로 다루는 문제 영역에 있는 것들 중에서 대상 시스템에 구현할 것들만을 골라 요구로 정의하는 작업
  • 반면 요구모델링은 개발자가 이해하는 솔루션 영역의 관점으로 요구를 표현하는 작업

즉 요구를만족하기 위해 대상 시스템이 가져야 할 동작이나 구조를 나타내는 것이 모델링

명세=인터페이스

✔모델링을 하는 이유

  • 복잡함을 잘 관리하기 위하여
  • 형체가 없는 소프트웨어의 구조를 시각화 하기 위하여
  • 다른 사람과 커뮤니케이션 하기 위하여
  • 문제 도메인 및 제품 요구 사항을 이해하기 위하여
  • 개발 중인 시스템을 이해하기 위하여
  • 구현하기 전에 잠재적 솔루션을 실험해보기 위하여
  • 기존 시스템의 문서화

✔관점과 추상화 수준

  • 모델링에 있어서 가장 중요한 것은 추상화
  • 모델은 특정관점과 추상화(단순) 수준에 따라 달라짐.

🔽소프트웨어와 모델링

  • 소프트웨어 모델링은 거의 다 그래픽 기호와 주석으로 구성됨

  • 추상 수준 : 구체적, 추상적

  • 관점 : 비즈니스 프로세스, 구조적, 동작측면(작동)

✔모델 사이의 관계

✅UML(Unified Modeling Language)

  • 객체지향 소프트웨어를 모델링 하는 표준 그래픽 언어
    • 시스템의 여러측면을 그림으로 모델링, 하드웨어의 회로도 같은 의미
  • UML은 소프트웨어 모델링의 공통언어

🔽UML 다이어그램

  • 시스템의 모델링은 기능적, 구조적, 동적 관점으로 구성

구조 다이어그램 : 정적 모델링(요소)

동적 다이어그램, 인터랙션 다이어그램 : 동적 모델링(과정)

  • 소프트웨어를 복잡하게 만드는 특성 중 하나는 정적, 동적 모델링을 모두 갖추고 있는 것

✔UML 모델링 과정

  • 모델링 작업의 근본적인 목표는 시스템에 있어야 할 클래스와 그들의 관계를 찾아내는 것 → UML 클래스 다이어그램으로 표현
  • 클래스란?
    • 동일한 속성과 행위를 수행하는 객체의 집합
    • 객체를 생성하는 설계도
    • 즉, 클래스는 공통의 속성과 책임을 갖는 객체들의 집합이자 실제 객체를 생성하는 설계도
    • 클래스는 “변화의 기본 단위”
  • 클래스를 보다 세부적으로 나누면 Entity 클래스, Boundary 클래스, Control 클래스로 구분할 수 있다,
  1. 요구를 사용 사례로 정리하고 사용 사례 다이어그램을 작성
  2. 클래스 후보를 찾아내고 개념적인 객체 모형을 작성
  3. 사용 사례를 기초하여 순서 다이어그램을 작성
  4. 클래스의 속성, 오퍼레이션 및 클래스 사이의 관계를 찾아 객체모형을 완성
  5. 상태 다이어그램이나 액티비티 다이어그램 등 다른 다이어그램을 추가하여 UML 모델을 완성
  6. 서브시스템을 파악하고 전체 시스템 구조를 설계
  7. 적당한 객체를 찾아내거나 커스텀화 또는 객체를 새로 설계

🔽객체와 클래스

  • 객체: 상태, 동작, 고유 식별자를 가진 모든 실체
  • 클래스: 공통 속성을 공유하는 객체 집합에 대한 정의

✔객체지향 개념

  • 속성과 오퍼레이션
    • 객체란 필요한 자료 구조와 이에 수행되는 함수들을 가진 하나의 독립된 존재
    • 각 객체가 자료 구조를 갖는다는 것은 각 객체가 어떤 속성을 가지고 있다는 것을 의미
    • 예를 들어 그래픽 프로그램에서 하나의 점을 객체로 본다면 수평과 수직 위치가 자료이면서 그 값이 객체의 속성을 의미한다
    • 각 객체가 적용될 수 있는 연산을 갖는다는 것은 각 객체가 어떤 연산을 수행할 수 있는 능력을 갖고 있다는 것을 의미
      • 객체는 하나의 변수자료구조와는 구별

✔객체지향과 절차적 방법의 비교

  • 객체지향은 주어진 문제 영역을 그 안에 존재하는 객체의 집합으로 보며, 객체들은 서로 정보를 주고받아 상호 작용한다고 여김

자료구조와 함수가 하나로 묶이는 것이 객체지향

  • 클래스 : 속성과 오퍼레이션을 캡슐화
  • 객체 : 클래스의 인스턴스
  • 인스탄스 : 같은 클래스에 속하는 개개의 객체로, 하나의 클래스에서 생성된 객체를 의미

✔객체와 속성

  • 객체 : 속성과 오퍼레이션을 가진 애플리케이션의 독립된 존재
  • 속성 : 객체의 특징을 결정
  • 객체의 구조 : 소프트웨어 모듈(객체) = 자료구조 + 함수
  • 객체는 상태(state), 능력(behavior), 정체성(identity)을 가짐
  • 캡슐화 : 객체의 속성 부분과 오퍼레이션 부분을 하나로 모아서 단위화, 정보은닉
    • 캡슐화의 정의 : 속성과 관련된 오퍼레이션을 클래스 안에 묶어서 하나로 취급하는 것
    • 추상화의 수단 : 객체의 속성, 오퍼레이션 등의 세부사항은 차후에 생각
    • 정보은닉(information hiding) : 외부의 직접적 접근 불가, 일종의 블랙박스
    • 구현에 따라 선택 가능 → 문법 : public, private, protected
  • 연관 : 서비스를 제공하는 객체와 서비스를 요청하는 객체가 상호작용하는 관계 (캡슐화를 통한 결과)
  • 가시성 : 객체의 접근 가능성(연관이 있다는 것을 볼 수 있도록하는..)
    서버와 클라이언트 (객체와 객체간의 관계)
  • 집합 : 전체 개념(whole)과 부분 개념(part) 사이의 관계, 격납(containment)의 의미

  • 상속 : 일반화된 클래스가 갖는 속성과 연산을 하위 개념의 구체화된 클래스가 그대로 물려받는 것
    • 복수상속 (multiple inheritance) : 두 개 이상의 수퍼 클래스에서 상속 받음
  • 다형성 : 같은 이름의 메시지를 다른 객체 또는 서브 클래스에 호출할 수 있는 특징

🔽객체지향 키워드 : 클래스, 객체, 캡슐화, 상속, 다형성

  • 클래스 : 추상((abstract) 표현 대상의 특징에 대한 서술) → 속성 + 오퍼레이션 ⇒ 캡슐화 된 것
    • 프로시져 추상화(Procedural abstraction) : 함수
    • 데이터 추상화 (Data abstraction) : 구조체, 배열, 포인터
  • 객체 : 실체(클래스의 인스턴스, 개개의 존재)
  • 캡슐화 : '데이터’와 ‘데이터에 대한 조작'을 묶는 것
  • 상속 : 하나의 클래스가 가지고 있는 특징들을 그대로 다른 클래스가 물려받는 것
  • 다형성 : 상속성의 계층을 따라서 각 클래스에 동일한 이름의 메소드를 사용할 수 있는 것(같은 명령을 각기 다른 객체에 줄 수 있다는 뜻)
profile
김성은입니다.

0개의 댓글