1. 소프트웨어 설계 시 구축된 플랫폼의 성능특성 분석에 사용되는 측정 항목
- 응답시간 : 사용자 측면에서 응답시간이 성능 목표 기준, 응답시간은 업무 처리에 소요되는 시간
- 업무량/처리량 : 업무 피크 시간 동안에 시스템이 처리해야 하는 단위 시간당 최대 업무 처리 건수
- 가용성 : 시스템이 정상적으로 사용 가능한 시간
- 사용률 : CPU, 메모리, 디스크, 네트워크 등의 사용비율
2. 플랫폼의 개념
- 소프트웨어의 가동을 위해 하드웨어, 소프트웨어, 네트워크 등 다양한 주변기기 등이 결합하여 있으며 제작된 소프트웨어에 대해 언제, 어디서나 실행 시키더라도 쉽게 구동시킬 수 있음
- 응용 소프트웨어 개발과 활용 등의 생산성 향상에 많은 도움을 줌
- 대표적인 플랫폼 사례 : 클라우드 플랫폼, 앱스토어 모바일 플랫폼, 정보를 제공해주는 검색 포털, 빅데이터 플랫폼인 하둡
- 자신의 시스템을 개방하여 개인, 기업할 것 없이 모두가 참여하여 원하는 일을 자유롭게 할 수 있도록 환경을 구축하여 플랫폼 참여자들 모두에게 새로운 가치와 혜택을 제공해 줄 수 있는 시스템을 의미
7. OSI 7 Layer
계층 | 설명 | 주요 프로토콜 | 단위 |
응용 계층 | 사숑자와 네트워크 간의 응용 서비스 연결, 데이터 생성 | HTTP, TELNET, DHCP, DNS, FTP, SSH, SMTP, SNMP | Data |
표현 계층 | 데이터의 형식 설정과 부호 교환, 암호화, 해독 | MIME, TLS, SSL, JPEG, MPEG, SMB, AFP | Data |
세션 계층 | 응용 프로세스 간의 연결 접속 및 동기 제어 | SSH, TLS, RPC | Data |
전송 계층 | • 프로세스 간 논리적 통신 서비스 제공 • 패킷들의 전송유효 확인, 실패한 패킷은 재전송하여 신뢰성 있는 통신 보장 |
TCP (3-Way Handshaking), UDP, SCTP, RTP | Segment |
네트워크 계층 | 단말 간 시스템끼리 Data를 전송하기 위한 최선의 통신경로 선택을 제공 | IP, ARP, ICMP, IGMP, IPses | Packet |
데이터링크 계층 | • 인접 시스템 간의 데이터 전송, 전송 오류 제어 (Frame) • 오류검출 / 재전송 / 흐름제어 |
Ethernet, ATM, PPP | Frame |
물리 계층 | 통신회선으로 Data를 나타내는 0과 1 비트의 정보를 회선에 내보내기 위한 정기적 변환이나 기계적 작업을 담당 | RS-485, RS-232, X25/21 | Bit |
12. 트랜잭션의 성질
- 원자성
- 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다는 성질
- 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 함
- 일관성
- 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다는 성질
- 시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 함
- 독립성, 격리성
- 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션의 실행 중에 빠른 트랜잭션의 연산은 진행되지 않음
- 수행중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없게 되는 것
- 영속성, 지속성
- 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다는 성질
14. 요구사항 개발 프로세스
- 요구사항 개발 프로세스의 순서 : 도출 (식별) → 분석 → 명세 → 확인
- 도출(식별) : 요구사항 원천 도출 기법
- 분석 : 요구사항 분류, 개념 모델링, 기술구조 설계, 요구사항 할당, 요구사항 협상
- 명세 : 시스템 정의서, 시스템 요구사항 명세서, 소프트웨어 요구사항 명세서
- 확인 : 검토, 프로토타이핑, 모델 검증, 인수테스트
18. 설계 구조
- 상위 설계
- 아키텍처 설계, 예비 설계
- 시스템 수준에서의 소프트웨어 구성 컴포넌트들 간의 관계로 구성된 시스템의 전체적인 구조와 시스템 구조도, 외부 파일 및 DB 설계도 (레코드 레이아웃, ERD) 화면 및 출력물 레이아웃 등이 포함
- 하위 설계
- 모듈 설계, 상세 설계
- 시스템의 각 구성 요소들의 내부 구조, 동적 행위 등을 결정하며 각 구성 요소의 제어와 데이터들 간의 연결에 대한 구체적인 정의를 하는 것
19. XP의 12가지 실천사항 Practice
- Planning game
- 사용자 스토리를 이용해서 다음 릴리스의 범위를 빠르게 결정
- 비즈니스 우선순위와 기술적 평가가 결합
- Small / Short releases
- 필요한 기능들만 갖춘 간단한 시스템을 빠르게 릴리즈
- 고객이 소프트웨어가 어떻게 돌아가는지 아주 짧은 (약 2주) 사이클로 볼 수 있도록 자주 새로운 버전 배포 유지
- Metaphor
- 공통의 name system : 의사 소통 및 공통 개념 공유
- 전체 개발 프로세스에 걸쳐서 시스템의 동작에 대한 전체 그림을 표현하는 것, 이해하기 쉬운 스토리로 이루어짐
- Simple design
- 당장 필요하지 않은 디자인 배제
- 항상 가능한 가장 간결한 디자인 상태 유지
- TDD Test Driver Development
- 개발자 먼저 단위 테스트, 실제 코드를 작성하기 전에 먼저 작성함으로써 자신이 무엇을 해야 하는지를 스스로 깨우침
- 고객은 기능 테스트를 작성하여 요구사항이 모두 반영되었는지를 확인
- Refactoring Design Improvement
- 프로그램 기능은 변경 없이 중복 / 복잡성 제거, 커뮤니케이션 향상, 단순화, 유연성 추가 등을 통해 시스템 재구성
- Pair programming
- 두 사람이 함께 프로그램 Driver/Partner
- 모든 프로그래밍은 하나의 컴퓨터에 2명의 프로그래머가 같이 공동작업 진행
- Collective Code Ownership
- 팀의 모든 프로그래머가 소스코드에 대하여 공동 책임을 지는 것
- 시스템에 있는 코드는 누구든지 언제라도 수정 가능함
- CI Continuous Integration
- 컴포넌트 단위로 혹은 모듈 단위로 나누어서 개발된 소스코드들은 하나의 작업이 끝날 때마다 지속적으로 통합되고 동시에 테스트
- 40-hour-week Sustainable Pace
- 일주일에 40시간 이상을 일하지 말도록 규칙으로 정하고 2주를 연속으로 오버타임하지 않도록 함
- Whole Team
- 개발 효율성을 위해 고객을 프로젝트에 상주시킴
- 고객은 스토리를 명확하게 해주고, 중요한 비즈니스 결정사항에 대해 명확한 답을 제공해주는 역할
- Coding Standard
- 팀원들 간 커뮤니케이션을 향상시키기 위해서는 코드가 표준화된 관례에 따라 작성되어야 함
21. DBC의 세 가지 유형
- 선행조건
- 루틴(함수/메소드/모듈)이 호출되기 위해 참이어야 하는 것 (루틴의 요구사항)
- 루틴의 선행조건이 위반된 경우 루틴이 호출되어서는 안 됨
- 제대로 된 데이터를 전달하는 것은 호출 쪽의 책임
- 후행조건
- 루틴이 자기가 할 것이라고 보장하는 것
- 루틴이 수행된 후 만족하여야 하는 조건
- 클래스 불변
- 호출자의 입장에서 볼 때는 이 조건이 언제나 참이라고 클래스가 보장
- 루틴의 내부 처리 중에는 불변식이 참이 아닐 수도 있지만, 루틴이 종료하고 호출자로 제어권이 반환되는 때에는 불변식이 참이 되어야 함
- 불변식에 대해서는 어떤 데이터 멤버에게도 클래스가 제한 없는 쓰기 접근권을 줄 수 없음
22. UML의 관계
- 실체화
- 객체들 사이의 의미적 관계로서 한 객체가 다른 객체의 계약을 지정
- 의존과 일반화의 혼합, 표기버비도 의존과 일반화에서 참고함
- 인터페이스와 인터페이스에 오퍼레이션이나 서비스를 제공하는 클래스나 컴포넌트 사이의 관계를 지정하기 위해 사용
- 일반화
- 일반화된 사물과 좀 더 특수화된 사물과의 관계 (is-kind-of 단계)
- 자식 객체가 부모 객체가 사용되는 어느 곳에서나 사용될 수 있다는 것을 의미 : 그 반대는 성립하지 않음
- 부모 자식 관계를 표현할 때 일반화를 사용
- 주로 클래스와 인터페이스 사이에서 상속 관계를 보여주기 위해 사용
- 의존
- 두 사물 간의 의미적 관계, 한 사물의 명세서가 바뀌면 그것을 사용하는 다른 사물에게 영향을 끼치는 것을 의미하는 개념 : 이 반대는 반드시 성립하는 것은 아님
- 표기 : 점선으로 된 직선을 사용, 의존하고 있는 사물을 향하고 있고, 의존은 한 클래스가 다른 클래스를 오퍼레이션의 매개변수로 사용하는 경우에 주로 나타남
- 연관
- 구조적 관계로서 어느 한 사물 객체가 다른 사물 객체와 연결을 의미
- 두 클래스가 서로 연결되어 연관이 있다면, 한쪽 객체에서 다른 쪽 객체로 이동할 수 있으며 반대도 가능
- 한 연관의 다른 양쪽 끝이 같은 클래스를 향해 원을 그리며 순환하는 것도 가능, 쌍방 연관 (정확히 두 클래스 연관), 다수 연관 (2개 이상의 클래스 연관)
- 이름 (방향성 가능) 과 역할을 가질 수 있으며, 객체 간 구조적 관계를 표현하기 위해 다중성을 표현하기도 함
- 표기 : 두 클래스를 연결하는 실선
25. 요구사항 도출 기법
- 문헌조사
- 유사 프로젝트 및 업무 문서나 양식을 조사하여 현재 시스템 정보에 대한 이해 도출
- 그 외 산업 및 기업 표준, 관련 정부 정책, 규제 등 문서 조사
- 개발팀은 도메인 영역 교육이나 설명서 참고
- 업무절차 및 양식조사
- 업무 관련 문서, 절차, 양식, 운영 매뉴얼 등을 조사함으로써 업무 절차와 처리 입출력의 이해
- 기업의 내부 표준을 검토함으로써 요구와 제한 사항을 찾아 시스템 요구 분석서의 제한 사항으로 적용
- 설문
- 이해당사자들로부터 요구를 찾는 도구
- 이해당사자들의 의사결정 과정에 포함하여 관심, 내부 정보, 개선 의견을 이끌어 냄
- 브레인스토밍 회의
- 여러 명으로부터 정보를 얻는 효과적 방법
- 인터뷰와 같이 수행하면 더 많은 정보 추출이 가능하며 훈련된 요원의 주재로 과정을 정돈하는 것이 성공의 키 포인트
- JAD : 사용자와 개발자가 공동참여하여 프로토타입 기반의 작업을 수행함으로써 비즈니스 요구사항을 명확히 도출하고 그에 따라 시스템을 설계 및 개발
26. 요구공학의 절차
- 요구사항 도출 (식별)
- 소프트웨어가 해결해야 할 문제를 이해하는 첫번째 단계
- 요구사항이 어디에 있고, 어떻게 수집할 것인지와 관련된 단계
- 이 단계에서 이해관계자가 식별되고 개발팀과 고객 사이의 관계가 만들어지며, 다양한 이해관계자와 효율적인 의사소통이 매우 중요
- 요구사항 분석
- 요구사항들 간 상충되는 것을 해결
- 소프트웨어 범위를 파악
- 소프트웨어가 환경과 어떻게 상호작용하는지를 이해
- 요구사항을 정제하여 소프트웨어 요구사항을 정리하는 업무
- 요구사항 명세
- 요구사항을 체계적으로 검토, 평가, 승인될 수 있도록 문서를 작성하는 것을 의미
- 시스템의 정의 및 시스템 요구사항, 소프트웨어 요구사항을 작성하는 업무
- 요구사항 확인
- 분석가가 요구사항을 이해했는지 확인이 필요
- 요구사항 문서가 조직의 표준에 적합하고 이해 가능하며, 일관성이 있고, 완전한지 검증
27. HIPO 도표의 특징
- HIPO : 하향식 개발을 위한 시스템 분석 및 설계 문서화 도구
- 시스템 분석용 디자인 도구 및 문서화 기법
- 시스템을 표현하는 모듈들을 계층적으로 나타내고 각 모듈들을 문서화하기 위해 사용
- Input-Process-Output으로 이루어진 모듈을 계층적으로 나타낸 도표
- HIPO 도표의 유형
- 가시적 도표 Visual Table of Contents : 시스템의 전체적인 기능과 흐름을 보여주는 Tree 형태의 구조도
- 총체적 도표 Overview Diagram : 프로그램을 구성하는 기능을 기술한 것으로 입력, 처리, 출력에 대한 전반적인 정보를 제공하는 도표
- 새부적 도표 Detail Diagram : 총체적 도표에 표시된 기능을 구성하는 기본 요소들을 상세히 기술하는 도표
30. 요구사항 분석과 요구사항 명세서
- 요구사항 분석
- 문제인식 : 사용자와 면담, 설문 조사 및 협조, 각종 문서 검토 등을 통행 요구사항 수집
- 평가와 종합 : 추출된 요구사항에 대한 정보를 평가하고 여러 가지 해결책을 종합
- 모델 제작 : 평가와 종합을 바탕으로 자료와 제어의 흐름, 기능 처리, 동작 행위, 정보 내용 등을 이해하기 쉽도록 모델로 작성
- 문서화와 검토 : 소프트웨어의 기능, 성능, 제약 조건 등에 대하여 명세 후 검토
- 요구사항명세서
- 요구사항 분석 단계에서 분석된 여러 결과를 바탕으로 소프트웨어의 기능, 제약 조건, 성능, 참조 자료 등을 기술한 문서
- 요구사항 분석서와 혼용하여 사용하기도 함
31. 요구공학의 절차
- 요구사항 도출 (식별)
- 소프트웨어가 해결해야 할 문제를 이해하는 첫번째 단계
- 요구사항이 어디에 있고, 어떻게 수집할 것인지와 관련된 단계
- 이 단계에서 이해관계자가 식별되고 개발팀과 고객 사이의 관계가 만들어지며, 다양한 이해관계자와 효율적인 의사소통이 매우 중요
- 요구사항 분석
- 요구사항들 간 상충되는 것을 해결
- 소프트웨어 범위를 파악
- 소프트웨어가 환경과 어떻게 상호작용하는지를 이해
- 요구사항을 정제하여 소프트웨어 요구사항을 정리하는 업무
- 요구사항 명세
- 요구사항을 체계적으로 검토, 평가, 승인될 수 있도록 문서를 작성하는 것을 의미
- 시스템의 정의 및 시스템 요구사항, 소프트웨어 요구사항을 작성하는 업무
- 요구사항 확인
- 분석가가 요구사항을 이해했는지 확인이 필요
- 요구사항 문서가 조직의 표준에 적합하고 이해 가능하며, 일관성이 있고, 완전한지 검증
32. 객체지향 프로그래밍 OOP
- 객체지향 프로그래밍의 개념
- 컴퓨터 프로그래밍의 패러다임 중 하나로 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위
- 객체들의 모임으로 파악하고자 하는 것
- 각각의 객체는 메시지를 주고 받고, 데이터를 처리할 수 있음
- 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용됨
- 소프트웨어 개발과 보수를 간편하게 하며 보다 직관적인 분석을 가능하게 하는 장점을 가짐
- 객체지향 프로그램의 구성
- 메서드 : 객체가 수행하는 기능, 객체가 갖는 데이터(속성, 상태)를 처리하는 알고리즘
- 객체 : 클래스의 인스턴스, 자신 고유의 데이터를 가지며 클래스에서 정의한 행위를 수행
- 클래스 : 공통된 특성과 연산을 갖는 객체의 집합, 같은 종류의 집단에 속하는 속성과 행위를 정의한 것
- 메시지 : 객체들 간 상호작용을 하는데 사용되는 수단, 객체에게 행위 지시를 하는 명령으로 객체 간의 통신
33. 객체 지향의 특징
- 캡슐화
- 속성(데이터)과 메서드(연산)를 하나로 묶어서 객체로 구성
- Readability 향상 : 유지보수 용이
- 재사용성이 높은 S/W 개발 가능
- 내부 자료의 일관성 유지
- 객체 간 인터페이스 이용, 종속성 최소화
- 추상화
- 공통 성질을 추출하여 슈퍼클래스로 구성
- 객체 중심의 안정된 모델을 구축
- 현실 세계를 자연스럽게 표현
- 분석의 초점이 명확해짐
- 다형성
- 동일한 이름의 여러 오퍼레이션(메서드)을 다른 사양으로 정의 가능
- 오버로딩 : 매개변수의 수 또는 타입을 달리하여 구분
- 오버라이딩 : 부모클래스의 메서드를 재정의
- 정보은닉
- 캡슐화된 항목을 다른 객체로부터 감춤
- 메시지 전달에 의해 다른 클래스 내의 메서드가 호출
- 상속성
- 부모클래스의 속성과 메서드를 상속받아 사용
- 부모와 자식 클래스 간의 관계가 슈퍼클래스와 서브 클래스로 유지
34. 객체지향 분석
- 사용자의 요구사항을 분석하여 요구되는 사항과 관련된 모든 객체, 클래스와 연관된 속성, 연산, 관계 등을 정의하여 모델링하는 작업
- 객체지향 분석의 목적은 클래스를 식별하는 것
- 클래스, 객체, 속성, 연산 등을 표현해서 문제를 모형화
- 객체지향 관점은 모형화 전후 단계에서 객체의 분류, 속성들의 상속, 메시지의 통신, 연산 등을 결합한 것
- 인스턴스화 : 인스턴스는 추상화, 클래스, 객체, 프로세스 등이 실제로 구현된 것
- 객체지향 방법론 중 Coad와 Yourdon 방법은 E-R 다이어그램을 사용하여 객체의 행위를 모델링
35. 객체지향 분석 방법론
- Rumbaugh 방법 OMT
- 객체모델링
- 정보 모델링
- 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 관계를 규정
- 실세계 문제 영역으로부터 객체와 클래스를 추출해 그들 간의 관계를 연관화, 집단화, 일반화 중심으로 규명
- 클래스의 속성과 연산을 함께 표현함으로써 시스템의 정적 구조를 생성
- 동적모델링
- 상태 다이어그램을 사용하여 시스템의 행위를 기술하는 모델링
- 기능모델링
- 자료 흐름도 DFD를 이용
- 다수의 프로세스들 간의 자료 흐름을 중심으로 처리 과정을 표현
- 어떤 데이터를 입력하면 어떤 결과를 구할 것인지 표현
- 객체모델링
- Booch 부치 방법
- 미시적 개발 프로세스와 거시적 개발 프로세스를 모두 포함하여 사용
- 클래스와 객체들을 분석 및 식별하고 클래스의 속성과 연산을 정의
- 클래스와 객체의 의미를 식별, 클래스와 객체들의 관계를 식별, 클래스와 객체를 구현
- 각 작업에 대한 다이어그램, 클래스 계층 정의, 클래스들의 클러스터링 작업을 수행
- Use Case를 강조하여 사용하는 분석 방법
- Coad와 Yourdon 방법
- 객체지향 분석 방법론 중 E-R 다이어그램을 사용하여 객체의 행위를 모델링
- 객체 식별, 구조식별, 주제 정의, 속성과 인스턴스 연결 정의, 연산과 메시지 연결 정의 등의 과정으로 구성
- Wirfs-Brock 워프스 브록 방법
- 분석과 설계 간의 구분이 없고 고객 명세를 평가해서 설계 작업까지 연속적으로 수행하는 기법
36. Rumbaugh 방법의 설계 순서
- 입출력 결정
- 자료 흐름도 작성 : 기능 의존 관계를 서술
- 기능의 내용을 상세히 기술
- 제약사항을 결정하고 최소화
37. 자료사전
- 자료 사전 작성 시 고려 사항
- 갱신하기 쉬워야 함
- 이름으로 정의를 쉽게 찾을 수 있어야 함
- 정의하는 방식이 명확해야 함
- 자료 사전의 기호
- = : 자료의 정의, A는 -로 구성되어 있다
- + : 자료의 연결, A와 B를 연결
- ( ) : 자료의 생략, 없어도 되는 자료
- [ | ] : 자료의 선택, A이거나 B
- { } : 자료의 반복
- ** : 자료의 설명
39. 자료흐름도
구성요소 | 의미 |
처리 | 입력된 자료를 출력으로 변환하는 것, 프로세스라고 하고 원 안에 처리 명칭을 기술 |
차료 흐름 | 발생지, 종착지, 처리 및 저장소 사이에서 자료의 흐름을 나타냄, 화살표 위에 자료의 명칭 기술 |
자료 저장소 | 시스템 상의 자료 저장소를 나타냄, 평행선 안에 자료 저장소 명칭을 기술 |
단말기 | 시스템에 필요한 자료가 입력되는 발생지와 시스템에서 처리된 자료가 출력되는 종착지 또는 외부에 존재하는 사람이나 조직을 나타냄, 사각형 안에 발생지나 종착지 명칭 기술 |
40. 요구사항
요구사항 정형 및 비정형 명세 기법 요약 | ||
구분 | 정형명세 | 비정형명세 |
기법 | 수학적 기반 / 모델링 기반 | 상태 / 기능 / 객체 중심 명세 기법 |
종류 | Z, VDM, Petri-Net (모형기반), CSP, CCS, LOTOS(대수적방법) | FSM, Decision Table, ER 모델링, State Chart(SADT), UseCase-사용자 기반 모델링 |
장점 | 시스템 요구특성 정확, 명세 간결, 명세 구현의 일치성 | 명세작성 이해 용이, 의사전달 방법 다양성 |
단점 | 낮은 이해도, 이해 관계자의 부담 가중 | 불충분한 명세 기능, 모호성 |
기법 | 설명 | |
상태모형 기반 (모델 기반) | • 시스템을 상태모형으로 인식, 집합과 수열 등의 수학적 요소로 표현 • 시스템의 오퍼레이션(연산)들이 시스템 상태를 어떻게 변화시키는가에 초점 • 시스템 연산이 어떻게 시스템 모델의 상태에 영향을 미치는지를 정의 |
|
Z | • 집합론 (Set Theory), 논리, 모델기반 명세기법 • 논리를 기반으로 한 Calculus적 표현을 사용하여 여러 특성을 VDM보다 함축적으로 표현 • 모든 특성을 스키마 안에 순서대로 기술하여 모듈화와 재사용성이 우수 • Z스키마 구조 : 스키마 이름, 스키마 시그니처, 스키마 술어 • 모듈 간의 재사용성 우수 • 스키마 간의 연산 가능 |
|
VDM | • 시스템의 비기능적인 요구사항을 제외한 기능적인 요구사항에만 한정 • 이와 관련된 기능 요구 명세와 검증 설계에 관해 적절한 표기법인 검증 방법을 제공 |
|
Decision Table | • 복잡한 의사결정논리를 기술하는데 사용 • 판단표는 4개의 4분원으로 구성 |
|
Event Table | 여러 사건이 상이한 조건으로 발생하였을 때 취해야 할 행위를 기술 | |
Transition Table | 시스템 내의 상태 변화를 기술하는데 사용 | |
FSM | • 컴퓨터 프로그램과 전자 논리회로를 설계하는데 쓰이는 수학적 모델 • 유한한 개수의 상태로 구성된 하나의 기계를 의미 • 일종의 Flow chart로서 조금 다른 점은 닫혀있다는 것, 모든 게임은 단발로 끝나는 게 아니라 영원히 도는 프로그램 |
|
Petri Net | 그래프에 의한 표기법을 제공, 병렬 처리를 기술할 때 유한상태기계의 한계성을 극복하도록 고안 | |
대수학적 기반 | • 오퍼레이션들과 이들 사이의 관계로 시스템을 표현 • 시스템을 분할한 서브시스템들의 인터페이스로 간주 • 클래스나 추상 데이터 타입을 오퍼레이션 사이의 관계들로 정의한 것과 유사 • 대수명세는 객체 연산이 객체 상태와 독립적이면 인터페이스를 정의하는데 이용될 수 있음, 연산을 적용한 결과는 앞의 연산과 무관 |
44. UML 관계의 종류
클래스 간 관계 | 설명 | 표기법 | 예시 코드 |
의존 관계 | • 연관 관계와 같이 한 클래스가 다른 클래스에서 제공하는 기능을 사용할 때 나타남 • 연관 관계와 차이점은 두 클래스의 관계가 한 메서드를 실행하는 동안과 같은, 매우 짧은 시간만 유지된다는 점 |
점선 화살표 : class A의 메서드가 class B의 메서드를 호출하거나 class B를 메서드의 인자로 받는 등 사용 | public class Car_A { public void dolt(GPmp_B gp){ gp.charge(); } } public class GPmp_B { public void charge(){ …. } } |
연관 관계 | • 클래스들이 개념상 서로 연결됐음을 나타냄 • 보통은 한 클래스가 다른 클래스에서 제공하는 기능을 사용하는 상황일 때 표시 |
실선 또는 화살표 | class A가 class B를 멤버 변수로 가지고 있고 사용하는 경우 public class Person_A { private Car_B car: public void dolt(){car.dolt();} } public class Car_B {public void dolt(){ …. }} |
일반화 관계 | • 객체지향 개념에서 상속관계라고 함 • 한 클래스가 다른 클래스를 포함하는 상위 개념일 때 이를 IS-A 관계라고 함 • UML에서는 일반화 관계로 모델링 |
속이 빈 화살표 | class A가 Super Class class B가 Sub Class public class SuperClass_A{} public class Class_B extends SuperClass_A {} |
실체화 관계 | • 책임들의 집합인 인터페이스와 이 책임들을 실제로 실현한 클래스들 사이의 관계를 나타냄 | 빈 삼각형과 점선 | interface A가 있고, class B가 interface A를 구현한 경우 public interface Interface { pulic void implMethod(); } public class implClass_B implements Interface { @Override public void implMethod() { …. } } |
집합 관계 | • 클래스들 사이의 전체 또는 부분 같은 관계를 나타냄 • 전체 객체의 라이프 타임과 부분 객체의 라이프 타임은 독립적 • 전체 객체가 사라져도 부분 객체는 남아 있음 |
속이 빈 다이아몬드 | class A가 class B를 멤버 변수로 가지고 있는 경우 (new)를 하지 않음 public class Person_A { private Addr_B addr; public Person_A(Addr addr) {this.addr = addr;} …. } public class Addr_B{ … } |
합성 관계 | • 클래스들 사이의 전체 또는 부분과 같은 관계를 나타냄 • 전체 객체의 라이프 타임과 부분 객체의 라이프 타임과 부분 객체의 라이프 타임이 의존적 • 전체 객체가 사라지면 부분 객체도 함께 사라짐 |
속이 찬 다이아몬드 | class A가 class B를 멤버 변수로 가지고 있는 경우 (new로 생성함) public class Car_A { Engine_B e = new Engine_B(); …. } public class Engine_B {…} |
45. 집단 관계의 구분
- 생명 주기의 일치화 여부에 따라 집합과 합성 두 개의 관계로 구분
집합 관계 | • 클래스들 사이의 전체 또는 부분 같은 관계를 나타냄 • 전체 객체의 라이프 타임과 부분 객체의 라이프 타임은 독립적 • 전체 객체가 사라져도 부분 객체는 남아 있음 |
속이 빈 다이아몬드 | class A가 class B를 멤버 변수로 가지고 있는 경우 (new)를 하지 않음 public class Person_A { private Addr_B addr; public Person_A(Addr addr) {this.addr = addr;} …. } public class Addr_B{ … } |
합성 관계 | • 클래스들 사이의 전체 또는 부분과 같은 관계를 나타냄 • 전체 객체의 라이프 타임과 부분 객체의 라이프 타임과 부분 객체의 라이프 타임이 의존적 • 전체 객체가 사라지면 부분 객체도 함께 사라짐 |
속이 찬 다이아몬드 | class A가 class B를 멤버 변수로 가지고 있는 경우 (new로 생성함) public class Car_A { Engine_B e = new Engine_B(); …. } public class Engine_B {…} |
46. 유즈케이스 다이어그램
- 포함 : 반드시 수행해야 하는 관계
- 확장 : 수행할 수도 있는 관계
49. 유즈케이스 다이어그램 구성요소
- 액터
- 시스템의 외부에 있고 시스템과 상호작용을 하는 사람 (시스템의 기능을 사용하는 사람)
- 시스템(시스템에 정보를 제공하는 또 다른 시스템)을 의미
- 유즈케이스
- 사용자 입장에서 바라본 시스템의 기능
- 시스템이 액터에게 제공해야 하는 기능을 시스템의 요구사항으로 나타냄
- 관계
- 포함관계
- 하나의 유즈케이스가 다른 유즈케이스 (포함 대상)의 실행을 전제로 할 때 형성되는 관계
- 포함 대상 유즈케이스를 반드시 실행되어야 하는 경우에 적용
- 포함되는 유즈케이스 방향으로 화살표를 점선으로 연결하고 <<include>>라고 표기
- 확장관계
- 하나의 유즈케이스와 다른 유즈케이스 (확장 대상) 사이에 형성되는 관계
- 특정 조건에 따라 확장 대상 유즈케이스를 수행하는 경우에 적용
- 확장 대상 유즈케이스 반대 방향으로 화살표를 점선으로 연결하고 <<extend>>라고 표기
- 포함관계
50. UML 다이어그램의 종류
- 구조적 다이어그램
- class
- 시스템 내 클래스들의 정적 구조를 표현
- 클래스는 객체들의 집합으로 속성과 동작으로 구성
- object
- 클래스의 여러 객체 인스턴스를 나타내는 대신 실제 클래스를 사용
- 관계 있는 모든 인스턴스를 표현
- component
- 코드 컴포넌트에 바탕을 둔 코드의 물리적 구조 표현
- 컴포넌트는 논리적 클래스 혹은 클래스 자신의 구현에 대한 정보를 포함하고 실질적인 프로그램 작업에 사용
- depolyment
- 시스템 하드웨어와 소프트웨어 간의 물리적 구조를 표현
- 실질적인 컴퓨터와 디바이스 간의 관계를 표현하는데 이용
- 컴포넌트 사이의 종속성을 표현
- package UML 2.0
- 시스템 계층적인 구조 표현
- 클래스들로 이루어진 패키지와 그들 간의 의존 관계를 보여줌
- composite Structure UML 2.0
- 전체 클래스 안에 각 컴포넌트 클래스 표현
- 클래스 내부 구조 파악에 용이
- class
- 행위 다이어그램
- use case
- 사용자의 입장에서 본 시스템의 행동 표현
- 유즈케이스는 시스템의 기능적인 요구를 정의
- state
- 클래스의 객체가 가질 수 있는 모든 가능한 상태와 상태 간의 전이를 표현
- 진입조건, 탈출조건, 상태전이에 필요한 사건 등 자세한 사항이 기술
- 설계단계에서 클래스 객체의 동적인 행동 방식을 표현하는데 사용
- activity
- 행위의 순서적 흐름을 표시
- 순서도나 병렬적인 처리를 요하는 행위를 표현할 때 사용
- use case
- 상호작용 다이어그램
- sequence
- 객체와 객체 간의 상호작용을 메시지 흐름으로 표시
- 오브젝트 사이에 메시지를 보내는 시간, 순서를 보여주기 위해 사용
- communication
- 상호작용에 참여하는 객체, 컴포넌트 간의 관계를 명시적으로 표현
- interaction overview UML 2.0
- 활동 다이어그램과 시퀀스 다이어그램 혼합
- 상호작용에 대한 제어흐름을 표현
- timing UML 2.0
- 시간적 제약과 객체상태의 변화를 표현
- 인스턴스 간의 상태 전이와 상호작용을 시간 제약으로 표현
- sequence
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 필기] 기출문제 - 101 ~ 150. 오답노트 (3) | 2025.03.03 |
---|---|
[정보처리기사 필기] 기출문제 - 051 ~ 100. 오답노트 (1) | 2025.02.28 |
[정보처리기사 필기] 시스템 보안 구축 - 157. 보안 솔루션 (0) | 2025.02.26 |
[정보처리기사 필기] 시스템 보안 구축 - 156. 로그 분석 (0) | 2025.02.26 |
[정보처리기사 필기] 시스템 보안 구축 - 155. 보안 아키텍처 / 보안 프레임 워크 (0) | 2025.02.26 |