빙응의 공부 블로그
[정처기] 실기 요점 정리 1~6장 본문
📝1장 요구사항 확인
소프트웨어생명주기 : 소프트웨어를 개발하기 위한 과정을 단계별로 나눈 것
- 폭포수 모형 : 고전적 생명 주기 모형
- 프로토타입 모형 : 견본품 제작을 통해 최종작품 예상하는 것
- 나선형 모형 : 계획수립 - 위험분석-개발및검증-고객평가(반복)
- 애자일 모형 :
- Scrum : 팀이 중심이 되어 개발 효율성을 높임
- 스프린트계획회의 - 스프린트 -일일스크럼회의 -스프린트 검토 회의- 스프린트 회고
- XP 핵심가치 : 의사소통/단순성/용기/존중/피드백
- 실천 방법 : Pair Programming, Collective Ownership, TDD, Whole Team, Continuous integragion
- Scrum : 팀이 중심이 되어 개발 효율성을 높임
소프트웨어 공학: 소프트웨어의 위기를 극복하기 위한 방안으로 연구된 학문
요구사항의 유형 : 기능 요구사항/ 비기능 요구사항/사용자 요구사항/ 시스템 요구사항
요구사항개발 프로세스 : 도출 - 분석 - 명세-확인
요구공학: 요구사항을 정의하고, 분석 및 관리하는 프로세스를 연구하는 학문
요구사항명세기법
- 정형명세기법 : 수학적기호
- 비정형명세기법 : 서술/ 다이어 그램
요구사항분석 : 요구사항을 이해하고 문서화하는 활동
- 구조적 분석 기법 : DFD / DD/ 소단위명세서/ 개체 관계도/ 상태 전이도
- 자료흐름도 : 프로세스/자료흐름/ 자료저장소/ 단말
- 자료 사전 : = / + / () / [] / {} / * *
요구사항분석용 CASE : 요구사항 자동 분석 및 명세서 기술 개발 도구
- SADT : Souft Tech 사에서 개발 / 블록 다이어그램 채택
- SREM : TRW 사에서 개발 / 실시간 처리 소프트웨어 시스템에 사용
- PSL/PSA : 미시간 대학에서 개발
- TAGS : 통합 자동화 도구
HIPO : 시스템 실행과정을 입력/처리/출력의 기능으로 표현한 하향식 기법(가시적 도표/ 총체적 도표/ 세부적 도표)
UML : 의사소통을 위한 객체지향 모델링 언어 / OMG 표준 지정/ 구성요소 : 사물, 관계, 다이어그램
- 사물 : 구조사물/ 행동사물/ 그룹사물/ 주해사물
- 관계
- 연관관계
- 집합관계
- 포함관계
- 일반화관계
- 의존관계
- 실체화관계
- 다이어그램
- 구조적 다이어그램
- 클래스 다이어그램 : 클래스 속성, 클래스 관계 표현
- 객체 다이어그램 : 객체 사이의 관계 표현/ 럼바우 모델의 객체 모델링에 서용
- 컴포넌트 다이어그램 : 인터페이스 표현 / 구현 단계
- 배치 다이어그램 : 물리적 위치 표현/ 구현 단계
- 패키지 다이어그램 : 그룹화한 패키지 관계 표현
- 행위 다이어그램
- 유스케이스 다이어그램 : 사용자의 요구 분석/ 기능 모델링
- 시퀀스 다이어그램 : 주고받는 메시지 표현
- 커뮤니케이션 다이어그램 : 객체간의 연관관계 표현
- 상태 다이어그램 : 상태 변화 표현 / 럼바우 동적 모델링에 사용
- 활동 다이어그램 : 처리 흐름 순서 표현
- 상호작용 다이어그램 : 제어 흐름 표현
- 구조적 다이어그램
- 스테레오 타입 : include/ extends/ interface / exception / constructor <<>>
소프트웨어개발방법론 : 소프트웨어 개발, 유지보수에 필요한 각종 기법 및 도구를 정리하여 표준화한 것
- 구조적 방법론 : 타당성검토 - 계획 - 요구사항 - 설계 - 구현 - 시험 - 운영/유지보수
- 정보공학 방법론 : 계획,분석,설계,구축에 정형화된 기법들을 통합하는 자료 중심의 방법론
- 객체지향 방법론
- 구성요소 : 객체/ 클래스 메시지
- 기본원칙 : 캡슐화 / 정보은닉 / 추상화 / 상속성 / 다형성
- 컴포넌트기반 방법론 : 컴포넌트를 조합하여 새로운 애플리케이션을 만드는 방법론
소프트웨어재사용 : 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용하는 것
소프트웨어재공학 : 기존 시스템에 새로운 기능을 추가하여 소프트웨어 성능을 향상시키는 것
비용산정기법
- 하향식 비용 산정
- 전문가 감정 기법 : 2명 이상의 전문가에게 비용 산정의뢰
- 델파이 기법 : 많은 전문가와 1명의 중재자를 통해 비용 산정
- 상향식 비용 산정
- LOC : 코드 라인 수의 비관치, 낙관치, 기대치를 측정
- Effort Per Task : 각 기능에 필요한 노력을 단계별로 산정
- 수학적 산정기법
- COCOMO : 보헴이 개발/ 개발 유형 : Organic, Semi-Detached, Embedded
- Putname : 전 과정 동안에 사용될 노력 분포를 예측
- 기능 점수 : 알브레히트, 기능을 증대시키는 요인별로 산정
프로젝트 일정 계획
- WBS : 계측적 업무 구조표
- PERT : 전체 작업의 상호 관계를 표시하는 네트워크
- CPM : 작업에 필요한 소요 시간을 예측
- 간트차트 : 작업 일정을 막대 도표로 표시
소프트웨어 개발 표준
- ISO/IEC 12207 : ISO에서 만든 표준 소프트웨어 생명 주기 프로세스
- CMMI : 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
- 초기 / 관리 / 정의/ 정략적 관리 / 최적화
- SPICE : 소프트웨어 품질 및 생산성 향상을 위한 프로세스 평가 및 개선하는 국제 표준
- 불완전 / 수행/ 관리 / 확립 / 예측 / 최적화
소프트웨어 개발 프레임워크 : 소프트웨어 개발에 사용되는 구성요소와 아키텍처를 일반화, 반제품화
- 종류 : 스프링, 전자정부, 닷넷
- 특성 : 모듈화 / 제어의 역전/ 재사용성/ 확장성
📝2장 데이터입출력 구현
데이터베이스 개요
- DBMS : 사용자 요구에 따라 데이터베이스를 관리하는 소프트웨어 / 기능 : 정의, 조작, 제어
- 데이터의 독립성 : 논리적 독립성 / 물리적 독립성
- 스키마 : 데이터베이스 구조와 제약조건에 관한 전반적인 명세를 기술한 것
- 외부 스키마 : 데이터베이스의 논리적 구조를 정의한 것 ( 사용자 사용 입장)
- 개념 스키마 : 데이터를 통합한 조직 전체의 데이터베이스
- 내부 스키마 : 물리적 저장장치 입장에서 본 데이터베이스 구조
데이터베이스 설계 순서 : 요구조건 분석 - 개념적 설계 - 논리적 설계 - 물리적 설계 - 구현
- 개념적 설계 : 현실 세계에 대한 인식을 추상적인 개념으로 표현하는 과정 / 트랜잭션 모델링 / E-R 다이어그램
- 논리적 설계 : 특정 DBMS를 지원하는 논리적 자료 구조로 변환하는 과정 / 트랜잭션 인터페이스
- 물리적 설계 : 물리적 구조의 데이터로 변환하는 과정
데이터 모델 : 현실 세계의 정보들을 체계적으로 표현한 개념적 모형
데이터 모델 구성요소 : 개체 / 속성 / 관계
- 개체 : 개념이나 정보 단위 같은 현실 세계의 대상
- 속성 : 데이터베이스를 구성하는 가장 작은 논리 단위
- 관계 : 개체와 개체 사이의 논리적 연결
데이터 모델 표시 요소 : 구조 / 연산 / 제약조건
E - R 모델 : 현실 세계의 무질서한 데이터를 논리 데이터로 표현하기 위한 방법
관계형데이터베이스 : 2차원 표를 이용하여 데이터 상호관계를 정의하는 데이터베이스
- 튜플 == 카디널리티
- 속성 == 디그리
- 도메인 : 같은 타입의 원자값들의 집합
관계형데이터베이스의 키
- 후보키 Candidate Key : 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합 / 유일성 + 최소성
- 기본키 Primary Key : 후보키 중에서 특별히 선정된 주키/ 중복과 null 불가
- 대체키 Alternate Key : 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키
- 슈퍼키 Super Key : 유일성을 보장하며 최소성을 보장하지 않는다.
- 외래키 Foreign Key : 다른 릴레이션의 기본키를 참조하는 속성들의 집합
무결성 : 데이터베이스에 저장된 데이터 값과 현실 세계의 실제 값이 일치하는 정확성을 의미
- 종류 : 개체 무결성/ 참조 무결성/ 도메인 무결성/ 사용자 정의 무결성
관계대수 : 언하는 정보를 검색하기 위한 절차적인 언어
- 순수관계연산자
- Select : 선택 조건 / 튜플
- Project : 새로운 릴레이션
- Join : 교차곱
- Division : 선택 속성 제외 속성 구하는 연산
- 일반집합 연산자
- 합집합 UNION
- 교집합 INTERSECTION
- 차집합 DIFFERENCE
- 교차곱 CARTESIANPRODUCT
관계해석 : 관계 데이터를 연산을 표현하는 방법으로 비절차적이다 / 종류 : 튜플 , 도메인
이상(Anomaly) : 테이블의 중복이 발생하여 이로 인해 발생하는 문제(삽입, 삭제, 갱신)
정규화: 테이블 속성들의 상호 종속 관계를 이용하여 테이블을 무손실 분해하는 과정
- 1정규화 : 도메인 원자값
- 2정규화 : 부분적 함수 종속 제거
- 3정규화 : 이행적 함수 종속 제거
- BCNF : 결정자이면서 후보키가 아닌것 제거
- 4정규화 : 다치 종속 제거
- 5정규화 : 조인 종속 제거
함수적 종속 종류 : 완전(Full)/ 부분(Partial), 이행적(Transitive)
반정규화 : 정규화된 데이터 모델을 통합, 중복, 분리를 통해 정규화 원칙을 일부러 위배하는 행위
트랜잭션 : 논리적 기능을 수행하기 위한 작업의 단위
- 원자성 Atomicity : 데이터베이스에 모두 반영되거나 모두 취소되어야함
- 일관성 : Consistency : 언제나 일관성 잇는 데이터베이스 상태여야 함
- 독립성 : Isolation : 트랜잭션 실행 중에 다른 트랜잭션 연산이 끼어들 수 없다.
- 지속성 : Durability : 성공된 트랜잭션 결과는 영구 반영
인덱스 : 데이터 레코드를 빠르게 접근하기 위해 <키값, 포인터> 쌍으로 구성되는 데이터 구조
- 트리 기반 인덱스
- 비트맵 인덱스
- 함수 기반 인덱스
- 클러스터드인덱스 : 인덱스 키의 순서에 따라 데이터가 정렬
- 넌클러스터드인덱스 : 인덱스 키 값만 정렬되어 있고 데이터는 정렬되어 있지 않음
뷰 : 하나 이상의 기본테이블로부터 유도된 가상 테이블
클러스터 : 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 방법
파티션 : 대용량의 테이블이나 인덱스를 파티션 단위로 나누는 것
- 범위 분할 : 열의 값을 기준으로 분할
- 해시 분할 : 해시 함수 적용 값에 따라 분할
- 조합 분할
분산데이터베이스의 목표 : 위치 투명성/ 장애 투명성 / 중복 투명성/ 병행 투명성
데이터베이스 이중화 : 동일한 데이터를 복제하여 관리
- Eager기법 : 이중화된 데이터를 모두 즉시 갱신
- Lazy기법
클러스터링 : 두 대 이상의 서브를 하나의 서버처럼 운영하는 기술 / 고가용성 클러스터링
- RTO : 비상사태 시점부터 복구되어 가동될 대 까지의 소요 시간
- RPO : 비상사태 시점부터 데이터를 복구할 수 있는 기준점
접근통제 3요소 : 접근통제 정책 / 접근통제 매커니즘 / 접근통제 보안모델
접근통제 기술
- 임의접근통제DAC : 사용자의 신원에 따라 접근 권한 부여
- 강제접근통제MAC : 주체와 객체의 등급 비교 권한 부여
- 역할기반접근통제RBAC : 사용자 역할에 따라 접근 부여
스토리지 : 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS : 전용 케이블로 직접 연결
- NAS : 네트워크를 통해 연결
- SAN : 전용 네트워크를 별도 구성
📝3장 통합구현
통합구현 : 송수신 모듈과 중계 모듈 간의 연계를 구현하는 것
XML : 특수한 목적을 갖는 마크업 언어를 만드는데 사용하는 다목적 마크업언어
SOAP : 네트워크 상에서 HTTP/HTTPS/SMTP를 이용하여 XML을 교환하기 위한 통신 규약
RESTful : HTTP 자원을 관리하는 데 사용되는 웹 서비스 API 집합
WSDL : 웹 서비스와 관련된 서식이나 프로토콜 등을 표준적인 방법으로 기술하고 게시하기 위한 언어
UDDI : 전 세계의 비즈니스 업체 목록에 자신의 정보를 등록하기 위한 XML 기반 규격
📝4장 서버 프로그램 구현
소프트웨어아키텍처 : 소프트웨어 구성하는 요소들 간의 관계를 표현하는 시스템 구조
협약에 의한 설계 : 클래스에 대한 여러 가정을 공유할 수 있도록 명세한 것(선행조건-결과조건-불변조건)
아키텍처패턴 : 아키텍처를 설계할 때 참조할 수 있는 전형적인 해결 방식
- 레이어패턴 : 스템을 계층으로 구분하여 구성하는 패턴
- 클라이언트 서버 패턴
- 파이프 필터 패턴
- MVC 패턴
- 마스터 슬레이브 패턴
- 피어투피어 패턴 : 피어 컴포너늩가 클라이언트 ,서버 둘다 수행
객체지향 : 각 요소들을 객체로 만든 후 객체들을 조립하여 소프트웨어를 개발하는 기법
객체지향 구성 요소 : 객체/ 클래스/ 메시지
객체지향 특징 : 캡슐화 / 상속 / 다형성/ 연관성
객체지향분석 OOA : 사용자 요구사항과 관련된 객체, 속성, 연산, 관계 등을 정의하여 모델링하는 것
- Rumbaugh(럼바우) : 객체모델 - 동적모델 - 기능 모델
- 객체 모델링 - 정보모델링이라 불림 / 객체 다이어그램 사용
- 동적 모델링 - 상태 다이어그램 사용
- 기능 모델링 - 자료 흐름도 사용
- Booch : 미시적, 거시적 개발 프로세스 사용
- Jacobson : 유스케이스 사용
- Coad와 Yourdon : E-R 다이어그램 사용
객체지향 설계 원칙 SOLID : 변경이나 확장에 유연한 시스템을 설계하기 위해 지켜야 할 원칙
- 단일책임원칙(SRP) : 단하나의 책임
- 개방폐쇠원칙(OCP) : 코드 변경 없이 기능 추가
- 리스코프치환법칙(LSP) : 부모클래스 기능을 자식클래스로 사용 가능
- 인터페이스분리원칙(ISP) : 자신 외 인터페이스와 의존관계 X
- 의존역전원칙(DIP) : 추상 클래스에 의존
결합도 : 모듈 간에 상호 의존 정도/ 낮으면 좋음
- 내용 결합도 (Content Coupling) : 내부 기능 및 내부 자료 직접 참조
- 공통 결합도 (Common Coupling) : 공유되는 공통 데이터 영역 사용
- 외부 결합도 (External Coupling) : 외부의 다른 모듈에서 참조
- 제어 결합도 (Control Coupling) : 논리적 흐름을 제어하기 위해 제어 신호 전달
- 스탬프 결합도 (Stamp Coupling) : 배열이나 레코드 등 자료 구조 전달
- 자료 결합도 (Data Coupling) : 자료 요소로만 구성될 때
응집도 : 모듈의 내부 요소들이 서로 관련되어있는 정도/ 강하면 좋음
- 기능적응집도 (Functional Cohesion) : 기능 요소들이 단일 문제와 관련
- 순차적응집도 (Sequential Cohesion) : 출력데이터를 다음 입력데이터로 사용
- 교환적응집도 (Communication Cohesion) : 동일한 입출력 사용
- 절차적응집도 (Procedural Cohesion) : 기능을 순차적을 수행
- 시간적응집도 (Temporl Cohesion)
- 논리적응집도 (Logical Cohesion) : 유사한 성격을 모음\
- 우연적응집도 (Coincidental Conhesion)
IPC : 통신 방식을 구현하기 위해 사용되는 프로그래밍 인터페이스 집합
- Shared Memory
- Socket
- Semaphores
- Pipes & named pipes
- Message Queueing
코드 : 자료의 분류, 조합, 집계 ,추출을 용이하게 하기위한 기호
코드의 주요기능 : 식별 / 분류 / 배열 / 표준화 / 간소화
- 순차 코드
- 블록 코드
- 10진 코드
- 그룹 분류 코드
- 연상 코드
- 표의 숫자 코드
디자인패턴 : 모듈간의 관계 및 인터페이스 설계 시 참조할 수 있는 해결 방식 (생성/구조/행위)
생성패턴
- 추상팩토리 Abstract Factory : 해결방식 추상적 표현
- 빌더 Builder: 인스턴스 건축, 조합
- 팩토리 메소드 Factory Method: 서브 클래스 캡슐화 및 가상 생성자 패턴
- 프로토타입 Prototype: 복제
- 싱글톤 Singleton: 1개의 객체만 참조
구조패턴
- 어댑터 Adapter : 호환성 변환
- 브리지 Bridge : 구현부와 추상층을 분리
- 컴포지트 Composite : 복합 객체와 단일 객체를 모두 다루기 위해 사용
- 데코레이터 Decorator : 객체간의 결합으로 능동적 확장
- 퍼싸드 Facade : 서브클래스 상위에 인터페이스 구성
- 플라이웨스트 Flyseight : 생성하지 않고 공유
- 프록시 Proxy : 객체 사이 연결 인터페이스, 대리자라고도 함
행위패턴
- 책임연쇄 Chain of Responsibility : 객체 고리로 엮어 수행 못하면 다음 객체로 이동
- 커맨드 Command : 요청을 로그로 남김
- 인터프리터 Interpreter : 언어 문법 표현 정의
- 반복자 Iterator : 접근 잦은 객체에 동일 인터페이스 제공
- 중재자 Mediator : 복잡한 상호작용을 캡슐화
- 메멘토 Memento : 객체의 내부 상태를 객체화하여 특정 위치로 돌아갈 수 잇음
- 옵서버 Observer : 객체 상태 변화 전달
- 상태 State : 객체 상태에 따라 다르게 처리할 때 사용
- 전략 Strategy : 동일 계열 알고리즘 캡슐화
- 템플릿 메소드 Template Method : 상위에서 골격을 정의하고 하위 클래스에서 세부 처리 구체화
- 방문자 Visitor : 처리 기능을 분리
통합개발환경 IDE : 개발에 필요한 환경 등 다양한 툴을 하나의 인터페이스로 통합 제공
배치프로그램 : 여러 작업들을 미리 정해진 순서에 따라 일괄 처리
📝5장 인터페이스 구현
인터페이스 요구사항 검증 : 요구사항이 명세서에 정확하게 기술되었는지 검토하는 기준
요구사항검증방법
- 요구사항검토
- 동료검토
- 워크스루 : 회의전 미리 배포하여 사전 검토 방식
- 인스펙션 : 전문가들이 검토
- 프로토타이핑
- 테스트설계
- CASE도구활용
미들웨어 : 운영체제와 응용 프로그램 사이에서 서비스를 제공하는 소프트웨어
- DB
- RPC : 원격 프로시저 호출
- MOM : 비동기형 메시지 전달
- TP-Monitor : 트랜잭션 처리, 감시 미들웨어
- ORB: 코바 표준 스펙 구현
- WAS : 동적 컨텐츠 처리
모듈 연계 : 내부 모듈 간 데이터 교환을 위해 관계를 설정하는 것
- EAI : 기업 내 각종 플랫폼 간 상호 연동 기능
- Point-to-Point
- Hub & Spoke
- Message bus
- Hybrid
- ESB : 범용 표준 기반의 인터페이스를 제공하는 솔루션
- Web Service : 네트워크 정보를 표준화된 서비스 형태로 만들어 공유
- SOAP : HTTP, HTTPS, SMTP 등 XML 기반 메시지 교환 프로토콜
- UDDI : WSDL을 등록하여 접근
- WSDL : 웹 서비스 관련 프로토콜 표준 방법을 기술
JSON : 데이터 객체를 속성과 값의 쌍 형태로 표현하는 개방형 표준 포멧
AJAX : 클라이언트 서버 간에 XML 데이터를 주고받는 비동기 통신 기술
인터페이스 보안 기능
- 네트워크 영역 : 스니핑 예방(IPSec, SSL, S-HTTP)
- IPSec : 네트워크 계층에서 데이터 변조 방지, 은닉 기능 제공
- SSL : TCP/IP 계층과 애플리케이션 계층사이에 인증, 암호화, 무결성 보장
- S-HTTP : 클라이언트 서버 간 메시지 암호화 프로토콜
데이터 무결성 검사도구(Tripwire, AIDE, Samhain, Claymore, Slipwire, Fcheck)
인터페이스 구현 검증 도구
- xUnit : 단위 테스트 프레임워크
- STAF : 분산 소프트웨어, 데몬 사용
- FitNesse : 웹기반 테스트 프레임워크
- NTAF : NAVER의 테스트 자동화 프레임워크
- Seleninm : 웹 애플리케이션 테스트 프레임워크
- Watir : Ruby 사용 테스트 프레임 워크
APM : 애플리케이션 성능 관리를 위해 다양한 모니터링 기능 제공 도구
- 리소스 방식 : Nagios, Zabbix, Cacti
- 엔드투엔드 방식 : VisualVM, 스카우터, 제니퍼
📝6장 화면설계
사용자 인터페이스 UI : 사용자와 시스템 간 상호작용이 이뤄지도록 도와주는 소프트웨어
- CLI : 명령과 출력이 텍스트 형태로 이뤄짐
- GUI : 아이콘이나 메뉴 그래픽 환경의 인터페이스
- NUI : 사용자 움직임으로 조작
사용자 인터페이스 기본 원칙
- 직관성 : 누구나 쉽게 이해
- 유효성 : 사용자 목적을 완벽하게 달성하게 함
- 학습성 : 쉽게 학습 가능
- 유연성 : 사용자의 요구사항을 최대한 수용하고 실수 최소화
UI 설계 도구
- 와이어프레임
- 목업
- 스토리보드
- 프로토타입
- 유스케이스
품질요구사항
- ISO/IEC 9126 : 소프트웨어 품질 특성 국제 표준
- ISO/IEC 25010 : 9126 + 호환성, 보안성
- ISO/IEC 12119 : 패키지 소프트웨어 일반 국제 표준
- ISO/IEC 14598 : 평가 필요 절차 생명주기 규정 표준
HCI : 사람이 시스템을 보다 편리하고 안전하게 사용할 수 있도록 연구하는 것
UX : 사용자의 경험(주관성/정황성/총체성)
'정처기' 카테고리의 다른 글
[정처기]실기 SQL (0) | 2024.04.22 |
---|---|
[정처기]실기 요약 7~12장 (0) | 2024.04.21 |
[정처기]실기 12장 - 제품 소프트웨어 패키징 (0) | 2024.04.14 |
[정처기]실기 11장 - 응용 SW 기초 기술 활용 (0) | 2024.04.12 |
[정처기]실기 9장 - 소프트웨어 개발 보안 구축 (0) | 2024.04.10 |