UML

1. 사물 : 구조, 행동, 그룹, 주해

2. 관계 :

   연관 - 다중도 / 의존 - 짧은시간 연관,

   집합 - 포함, 서로 독립적 / 포함 - 변화포함, 독립X

   일반화 - 상속 / 실체화 - 인터페이스(행위)

3. 다이어그램

  구조 다이어그램 : 클래스, 객체, 컴포넌트(구현모듈), 배치, 복합체, 패키지

  행위 다이어그램 :

    유스케이스

    시퀀스 - 메시지

    커뮤니케이션 - 메시지 + 연관

    활동 - 처리흐름 순서

    상호작용

    타이밍 - 시간제약

 

● UI 설계원칙

 - 직관성(누구나 쉽게), 유효성(목적을 정확), 학습성(모두가 쉽게 배울), 유연성(요구사항 최대수용)

 

● UI 설계도구

 - 와이어프레임 : 개략적인 레이아웃과 UI 등 뼈대 셜계

 - 목업 : 정적인 형태

 - 스토리보드 : 개발자가 참고하는 작업 지침서, 디스크립션 포함

 - 프로토타입 : 동적인 형태, 인터렉션 적용

 - 유스케이스 : 사용자의 요구사항, 다이어 그램 형식

 

● 품질 요구사항(ISO/IEC 9126)

 - 기능성, 신뢰성(오류없이), 사용성(사용자가 이해), 효율성(시간동안 얼마나 빠른지), 유지보수성(개선이나 확장), 이식성(다른 환경)

 

● 모듈 - 분해

1. 결합도 -> 자스제외공내

  자료 : 자료요소(변수)

  스탬프 : 자료구조(컬렉션)

  제어 : 제어신호, 제어요소

  외부 : 외부 다른요소 참조

  공통 : 공통 데이터

  내용 : 내부기능, 내부자료

 

2. 응집도 -> 기순교절시논우

  기능적 : 하나의 기능(단일 문제)

  순차적 : 출력데이터-> 다음 입력데이터

  교환(통신)적 : 같은 입출력 데이터로 서로 다른 기능

  절차적 : 다수의 기능이 순차적으로 실행

  시간적 : 특정 시간

  논리적 : 유사성격, 특정 형태

  우연적 : 서로관련 X

 

● 디자인 패턴(GoF) - 서브시스템

1. 생성패턴(5) - 객체생성

 - 추상팩토리 : 연관된 객체들을 그룹화

   빌더 : 생성자로써 빌더를 사용함

   팩토리메소드 : 객체생성을 하위클래스로 분리하여 캡슐화

   프로토타입 : 복제

   싱글톤 : 하나의 인스턴스만 생성

 

2. 구조패턴(7) - 객체조합해서 더 큰 구조

 - 어댑터 : 다른 클래스의 인터페이스를 이용할 수 있게 변환

   브리지 : 기능(클래스)과 구현(클래스)을 독립적으로 만든다음 연결

   컴포지트 : 합성

   데코레이터 : 기존 코드를 수정하지 않고 새로운 기능으로 확장

   퍼싸드 : 상위에 인터페이스 구성 (각 각의 클래스를 상위에서 통합)

   플라이웨이트 : 용량이 큰 클래스를 메모리 절약을 위해 공유해서 사용 (싱글톤과 비슷) 

   프록시 : 접근이 어렵기에 간접적으로 접속을 도와줌 -> 인터페이스 역할

 

3. 행위패턴(11) - 객체간의 상호작용, 책임분배

 - 책임연쇄 : 한 객체에서 처리 못하면 다음 객체로 넘어감

   커맨드 : 실행될 기능(커맨드)을 캡슐화

   인터프리터 : 문법 정의

   반복자 : 반복해서 접근할 수 있게 인터페이스

   중재자 : 객체들간의 상호작용을 캡슐화

   메멘토 : 특정 시점의 객체상태를 객체화후 돌림(ctrl+z)

   옵서버 : 변수를 관찰하고 있다가 변화가 생기면 특정 클래스에게 전달하여 그에 맞게 행동하게 만듦 

   상태 : 객체 상태에 따라 다르게 처리

   전략 : 기능을 인터페이스로 캡슐화 하고 이를 implements 받아 하위에서 구현

   템플릿메소드 : 상위클래스에서 골격 정의, 하위 클래스에서 구체화

   방문자 : 처리 기능을 분리해서 별도의 클래스로 구성 -> 여기에 방문함


데이터 흐름도(DFD) = 버블차트 / 구조분석 기법

 - 프로세스(Process) : 데이터를 변환하여 출력하기 위한 과정, 원

 - 데이터 흐름(Data Flow) : 구성요소 간의 데이터 흐름, 화살표(->)

 - 데이터 저장소(Data Store) : 등호(=)

 - 단말(Terminator) : 프로세스 처리과정에서 시작과 종료를 나타냄, 사각형

 

● UML 확장수단

 - 스테레오타입 : 기본요소 외의 새로운 요소 확장 (<< >>)

 - 꼬리표값 : 속성 확장, {tag = value}

 - 제약 : 기존 규칙 수정 또는 새로 생성, {  }

 

● 럼바우 분석기법(OMT)

 - 1. 객체모델링 : 객체 다이어그램

 - 2. 동적 모델링 : 상태 다이어그램, 시간 흐름

 - 3. 기능 모델링 : 데이터 흐름도(DFD), 프로세스간의 자료흐름

 

● 객체지향기법

 - 집단화(part) : 클래스간의 구조적 집약관계 

 - 일반화(is) : 클래스간의 개념적 포함관계

 - 캡슐화 : 속성과 메소드를 하나의 객체로 모음

 - 추상화 : 공통 성질을 추출해 슈퍼클래스로

 - 연관성(is member of) : 객체간의 참조관계

 

● 데이터사전

 정의 =, 구성&연결 +, 반복 { }, 주석 **, 선택 [ | ], 생략 ( )

 

● CASE(Computer-Aided Software Engnering) - 5

 - 소프트웨어 개발과정 중 일부를 도구로 자동화

 - 생명주기 전단계 연결, 다양한 SW개발모델 지원, 그래픽 지원

 - 이점 : 개발 기간 단축, 비용절감, 품질향상, 생산성향상, 재사용성향상, 유지보수 용이, 개발주기 표준화

 - Upper : 다이어그램 표현, 모델 간 모순성 검사, 오류검사, DFD작성

   Intergrate : 화면출력, 상세설계

   Lower : 원시 코드 생성, 시스템 명세서 작성

 

 

● HIPO - 5

 - 하향식 소프트웨어 개발 문서화 도구

 - 가시적, 총체적, 세부적 차트

 - HIPO Chart : 시스템의 기능을 여러 개의 고유 모듈로 분할하고 이들 간의 인터페이스를 계층구조로 표현한 도면

 

● 시간복잡도(빅오 표기법) - 2

 

● 트리 순회 - 2

 - 전위순위(preorder) : root - 왼 - 오

 - 중위순위(inorder) : 왼 - root - 오

 - 후위순위(postorder) : 왼 - 오 - root

 

● 외계인코드 - 2

 - 너무 오래되거나 참조할 자료 또는 개발자가 없어 유지보수하기 힘든 코드

 

● 병행제어&로킹 - 3

 - 병행제어 : 동시에 여러 개의 트랙잭션이 병행수행될 때 DB의 일관성이 파괴되지 않도록 트랜잭션간의 상호작용을 제어/ 공유 최대화, 시스템 활용도 최대화, 일관성 유지, 응답시간 최소화

 - 로킹 : 어떤 로킹 단위가 Lock을 갖고있어야지만 액세스할 수 있음

 - 로킹 단위 : DB, 파일, 레코드, 필드 가능 / 단위↑ -> 로크수↓, 병행성수준↓, 공유도, 오버헤드↓, 관리쉬움

(로투낙타다)

락킹(Locking)기법 
2단계 락킹(2Phase Locking)기법 
낙관적 검증 기법 
타임스탬프 순서(Timestamp ordering) 기법
다중버전 동시성제어(MVCC) 기법

 

● 은행원 알고리즘 

 - 교착상태 회피기법(Avoidance)

 - 운영체제가 안전상태를 유지할 수 있는 요구만 수락, 불안전상태의 요구는 안전상태를 만족될 수 있을때 까지 거절

 

● 교착상태 

- 상호배제 : 한번에 한개의 프로세스만이 공유지원 사용

- 점유대기 : 이미 자원을 가진 프로세스가 다른 자원의 할당을 요구

- 비선점 : 할당된 자원이 끝날때까지 뻇을수 없음

- 순환대기 : 원형으로 구성되어있어 앞이나 뒤 프로세스의 자원 요구

 

● HDLC(Highest Data Ling Control Protocol) / F-A-C-D-S-F

 - 정규응답모드(NRM)

 - 비동기응답모드(ARM)

 - 비동기균형모드(ABM)

 - 비트위주 프로토콜, 점대점링크 및 멀티포인트 링크, 단방향/반이중/전이중, 전송효율과 신뢰성 높음, 흐름제어-슬라이딩윈도우, 오류제어-Go-Back-N과 재전송ARQ

 

● 해싱함수

 - 제산법 : % 연산자

 - 폴딩법 : XOR

 - 기수변환법 : 다른진법으로 변환 후 초과길이는 자름

 - 숫자분석법 : 균등한 분포의 숫자 선택

 - 중간제곱법 : 제곱한 후 중간숫자 선택

 

소프트웨어 품질 목표

 

+ Recent posts