티스토리 뷰
예상문제 풀면서 계속 반복해서 나온 내용을 외우기 위해 블로그에 정리하기로 했다!
정처기 실기를 준비하는 모두에게 도움이 됐으면 좋겠다
01. 요구사항 확인
- 현행 시스템 파악 절차 : 구성/기능/인터페이스 파악 -> 아키텍쳐 및 소프트웨어 구성 파악 -> 하드웨어 및 네트워크 구성 파악
- 요구공학 : 시스템 개발, 변경의 목적을 식별하기 위해 이해관계자들의 요구를 이해, 조정하는 과정
- 요구사항 개발 프로세스 : 도출 -> 분석 -> 명세 -> 확인
- 요구사항 도출 필요성 : 범위 기준선 제공, 일정/원가 영향, 추적성 제공
- 요구사항 도출 기법 : 핵심그룹, 심층워크샵, 인터뷰, 집단창의력기법, 프로토타입 등
- 요구사항 추출 방법 : 기능적 (사용자, 기능, 자료, 인터페이스) / 비기능적 (자원, 성능, 보안, 품질)
- UML의 특징
- 가시화 언어 : 개념 모델 작성, 오류없이 전달, 의사소통 용이, 그래픽 언어
- 명세화 언어 : 정확한 모델 제시, 완전한 모델 작성, 분석/설계의 결정 표현
- 구축 언어 : 다양한 프로그래밍 언어와 연동, 왕복공학 가능, 실행 시스템 예측 가능
- 문서화 언어 : 시스템에 대한 통제/평가, 의사소통의 문서
- UML 4+1 View Model : 설계자, 시스템 통합자, 개발자, 시스템 엔지니어 관점으로 SW architecture를 구축하는 설계 방법
- 요구사항 명세서 평가 기준 : 정확성, 명확성, 완전성, 일관성, 중요성, 검토/수정/추적 가능
- 요구사항 보장을 위한 방안 : 상세 요구사항 -> 분할 발주 -> 보증 활동 -> 감리 시행 -> 요구사항 보장
02. 데이터 입출력 구현
- 데이터모델링 절차 : 개념 모델링 -> 논리 모델링 -> 물리 모델링
- 정규화의 목적 : 데이터 중복 제거, 이상현상 제거, 데이터 무결성 확보, 데이터간 불일치 해소
- 제1정규화 (도메인이 원자값) / 제2정규화 (부분적 함수 종속 제거) / 제3정규화 (이행적 종속 제거) / 제4정규화 (다가종속되는 속성을 2개 이상 갖지 않음)
- 테이블 제약조건 : CASCADE / RESTRICTED / NULLIFY
- 뷰 속성 :
- WITH CHECK OPTION (조건을 만족하는 경우에 한해 행 변경 가능)
- WITH READ ONLY (DML 작업 불가)
- 권한 옵션
- WITH GRANT OPTION (revoke시 다른 사용자들의 권한도 회수)
- WITH ADMIN OPTION (revoke시 회수되지 않는 권한 부여)
03. 통합 구현
- 통합 구현 방식 : 송신 시스템, 중계 시스템, 수신 시스템과 각각의 모듈로 구성
- 연계 데이터 식별 및 표준화 절차
- 연계 범위 및 항목 정의 -> 연계 코드 매핑 및 정의 -> 변경된 데이터 구분 방식 정의 -> 데이터 연계 방식 정의
- 연계방식
- 직접 연결 (DB Connection Pool, DB Link, JDBC, API)
- 간접 연결 (EAI, Web service/ESB, Socket)
- 암호화 알고리즘
- 블록 암호화 (DES, SEED, ARIA, AES)
- 스트림 암호화 (LFSR, SEAL, RC4)
- EAI : 기업에서 운영하는 서로 다른 어플리케이션을 비지니스 차원에서 통합하는 솔루션 (Point-to-Point / Hub&Spoke)
- ESB : 메시징, 웹서비스, 데이터변형, 인텔리전트 라우팅을 결합하여 트렌젝션 무결성으로 연결하는 표준 기반 통합 플랫폼
- 웹 서비스 : 네트워크에 연결된 다른 컴퓨터 간 상호작용을 위한 서비스 또는 플랫폼
- 웹 서비스의 구성요소
- SOAP : 서비스 등록, 검색이 가능한 웹 서비스 레지스트리
- UDDI : 웹 서비스를 표현하고 기술하는 언어 (XML 문법)
- WSDL : 메시지 프로토콜, 플랫폼 독립적인 XML 기반 포맷
04. 서버 프로그램 구현
- 서버 환경 구성
- 웹 서버 : 정적 파일을 제공하는 웹 서버 어플리케이션이 설치되는 하드웨어
- 웹 어플리케이션 서버 : 동적 웹 서비스를 제공하기 위해 WAS와 서비스에 관련된 어플리케이션이 설치되는 하드웨어
- 형상관리의 절차 : 형상 식별 -> 형상 통제 -> 형상 감사 -> 형상 기록
- 응집도 : 모듈 내부 처리 요소 간 기능적 연관도를 나타내는 척도
- 우연적 응집도 : 관련 없는 작업을 모은 경우
- 논리적 응집도 : 유사 성격 또는 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
- 시간적 응집도 : 같은 시간대에 처리되어야하는 활동을 한 모듈에서 처리하는 경우
- 절차적 응집도 : 모듈 안의 구성요소들이 기능을 순차적으로 수행하는 경우
- 통신적 응집도 : 동일한 입출력을 사용하여 다른 기능을 수행하는 작업들이 모인 경우
- 순차적 응집도 : 모듈 내의 한 활동으로부터 나온 작업 결과를 다른 모듈의 입력으로 사용하는 경우
- 기능적 응집도 : 하나의 기능만을 수행하는 경우
- 결합도 : 소프트웨어 구조에서 모듈 간 연관성을 측정하는 척도
- 자료 결합도 : 모듈들이 변수 파라미터를 교환하며 모듈 간 상호작용 하는 경우
- 스탬프 결합도 : 모듈 간 인터페이스로 배열이나 오브젝트를 교환하는 경우
- 제어 결합도 : 모듈들이 제어용 신호를 주고받는 경우
- 외부 결합도 : 모듈 밖에서 도입된 데이터, 프로토콜, 인터페이스 등을 공유하는 경우
- 공통 결합도 : 모듈 밖의 전역 변수를 참조하는 경우
- 내용 결합도 : 내부에 있는 변수나 제어 정보를 다른 모듈에서 사용하는 경우
- 프레임워크 : 빠른 개발을 위해 기본적으로 필요한 기능을 갖추고 있는 것
- 프레임워크의 특징 : 모듈화, 재사용성, 확장성, 제어의 역흐름
- 배치 프로그램 : 상호작용없이 작업을 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄처리하는 프로그램
- 배치 프로그램의 필수요소 : 대용량, 자동화, 견고함, 안정성, 성능
- 배치 스케쥴러 : 일괄처리를 위해 주기적으로 발생, 반복하는 작업을 지원하는 도구
- Spring 배치 : Spring source사에서 탄생한 배치 기반 오픈소스 프레임워크
- Quartz 스케쥴러 : Job과 Trigger를 분리하여 유연성을 제공하는 스케쥴러
- 디버그/디버깅 : 컴퓨터 프로그램의 논리적 오류를 찾아내는 과정
06. 화면 설계
- UI 설계원칙
- 직관성 : 누구나 큰 노력없이 쉽게 이해하고 사용할 수 있도록 제작
- 유효성 : 사용자의 목적이 정확하고 완벽하게 달성되도록 제작
- 유연성 : 사용자의 요구사항을 최대한 수용하고 오류를 최소화하여 제작
- 학습성 : 초보자와 숙련자 모두 쉽게 배우고 익힐 수 있도록 제작
- ISO/IEC 9126 품질 요구사항 특성
- 기능성 : 요구된 기능이 제공되는지 확인 (적절성, 정밀성, 상호운용성, 보안성, 호환성)
- 신뢰성 : 믿을만한 소프트웨어인지 확인 (성숙성, 고장 허용성, 회복성)
- 사용성 : 사용하기 쉬운 소프트웨어인지 확인 (이해성, 학습성, 운영성, 친밀성, 준수성)
- 유지보수성 : 수정이 용이한 소프트웨어인지 확인 (분석성, 변경성, 안정성, 시험성)
- 이식성 : 환경전환이 용이한지 확인 (적용성, 설치성, 대체성)
- 효율성 : 얼마나 효율적인 소프트웨어인지 확인 (시간 효율성, 자원 활용성)
- 프로토타입 : 전체적인 기능을 간략한 형태로 구현한 시제품
- 웹 콘텐츠 접근성 지침
- 인식의 용이성 : 장애유무에 상관없이 모든 컨텐츠 인식 (대체 텍스트, 멀티미디어 대체수단, 명료성)
- 이해의 용이성 : 장애유무에 상관없이 모든 컨텐츠 이해 (가독성, 예측가능성, 컨텐츠의 논리성, 입력 도움)
- 운용의 용이성 : 장애유무에 상관없이 모든 기능 운용 (쉬운 네비게이션, 입력장치 접근성, 충분한 시간 제공, 광과민성 발작 예방)
- 견고성의 지침 : 사용자가 콘텐츠를 이용하는데에 기술의 영향을 받지 않음 (문법 준수 / 웹 어플리케이션 접근성)
07. 애플리케이션 테스트 관리
- 산업 범용 소프트웨어 구분
- 시스템 소프트웨어 : 응용 소프트웨어 실행을 위한 플랫폼 제공, 하드웨어가 동작/접근할 수 있도록 함
- 미들웨어 : 운영체제로부터 제공받는 서비스 이외에 추가적으로 이용할 수 있는 서비스 제공
- 응용 소프트웨어 : 운영체제에서 실행되는 모든 소프트웨어
- 서비스 제공 소프트웨어 구분
- 신규 개발 소프트웨어 : 새로운 서비스 제공 목적
- 기능 개선 소프트웨어 : 기존 서비스에서 편의성 또는 UI 개선을 목적
- 추가 개발 소프트웨어 : 업무, 산업 환경 등의 변화로 새로운 기능 추가 개발이 목적
- 시스템 통합 소프트웨어 : 원스톱 서비스 제공을 위해 통합하여 개발하는 것이 목적
- 소프트웨어 테스트의 필요성 : 요류 발경 관점 / 오류 예방 관점 / 품질 향상 관점
- 소프트웨어 테스트의 원리
- 완벽한 테스팅은 불가능하다 (모든 경우를 테스팅하는 것은 불가능하다)
- 조기 테스팅으로 비용과 시간을 절약할 수 있다 (가능한 빠른 시점에 테스팅을 시작하는 것이 좋다)
- 결합 집중 (대부분의 결함은 소수의 모듈에 집중되어 발생한다)
- 살충제 패러독스 (같은 테스트를 반복하면 결함 발견에 한계가 있다)
- 테스팅은 정황에 의존한다 (테스팅은 정황에 따라 다르게 진행한다)
- 오류-부재의 궤변 (사용자 요구사항을 만족하지 못하면 모든 결함을 제거했다고 해도 품질이 낮다)
- 낚시의 법칙 (특정 기능, 모듈, 라이브러리에서 결함이 많이 발생한다)
- 파레토의 법칙 (전체 결함의 80%는 전체 기능 중 20%에 집중되어 있다)
- 테스트 프로세스 : 테스트 계획 -> 테스트 분석 및 디자인 -> 테스트 케이스, 시나리오 작성 -> 테스트 수행 -> 테스트 결과 평가
- 소프트웨어 테스트 유형
- 프로그램 실행 여부
- 정적 테스트 : 소프트웨어 실행없이 명세, 구현, 개발 단계에서 테스트
- 동적 테스트 : 실행하면서 수행하는 테스팅 (화이트박스, 블랙박스 테스트)
- 테스트 기법
- 화이트박스 테스트 : 내부 구조, 구현을 기반으로 테스트 도출
- 블랙박스 테스트 : 적잘한 테스트 베이시스에 대한 분석을 통해 테스트
- 테스트에 대한 시각
- 검증 : 생산과정을 테스트하여 올바른 제품을 생산하고 있는지 검증
- 확인 : 제품이 정상적으로 동작하는지, 요구사항을 만족하는지 검증
- 테스트 종류
- 명세 기반 테스트 : 주어진 명세를 기반으로 테스트 케이스 도출
- 구조 기반 테스트 : 소프트웨어나 시스템 구조를 중심으로 테스팅
- 경험 기반 테스트 : 유사 경험, 직관, 테스터의 능력으로부터 테스트 케이스 도추
- 프로그램 실행 여부
- 통합 테스팅 : OS, 파일시스템, 하드웨어, 시스템 간 인터페이스와 같은 각기 다른 부분과 상호 연동하는 동작을 테스트
- 상향식 통합 : 최하위에서 위쪽 방향으로 제어의 경로를 따라 이동하며 테스트, 클러스터와 드라이버 사용
- 하향식 통합 : 최상위에서 하위로 스텁을 사용하며 테스트
- 회구 테스팅 : 통합 테스트 완료 후 변경된 모듈이나 컴포넌트가 있는 경우에 수행
- 테스트 도구의 장점 : 시간 절약 / 일관적인 검증에 유리 / 객관적인 평가 기준 제공 / 정밀 테스트 가능 / 테스팅 정보 접근 용이
09. 소프트웨어 개발 보안 구축
- 기밀성 : 인가된 사람, 프로세스, 시스템만이 접근 가능 (접근제어, 암호화)
- 무결성 : 정보가 불법적으로 생성, 변경, 삭제되지 않음 (접근제어, 메시지 인증)
- 가용성 : 합법적 사용자가 서비스 사용을 거절당하지 않음 (데이터 백업, 중복성 유지)
- 위협원 : 조직 자산의 파괴, 손해가 발생하는 행동을 할 수 있는 주체
- 위협 : 위협이 되는 위협원의 공격 행동
- 위험 : 나쁜 행동의 결과를 가져올 확률과 영향도
- 취약점 : 위협이 발생하기 위한 사전조건에 따른 상황
- 개발 보안 요구사항 도출 필요성 : 범위 기준선 제공, 일정/원가 영향, ,추적성 제공
- 시큐어 코딩
- 입력 데이터 검증 및 표현
- SQL 삽입 : SQL 문을 삽입하여 DB에서 정보 열람, 조작이 가능하므로 PreparedStatement 객체로 상수 스트링 생성
- 경로 조작 및 자원 삽입 : 경로 조작을 통해 접근 불가한 파일에 접근할 수 있으므로 경로 순회문자 필터링 로직을 사용
- 크로스사이트 스크립트 : 외부입력을 검증없이 동적 웹페이지 생성시 악성스크립트가 실행될 수 있으므로 XSS 필터링 수행
- 보안 기능
- 부적절한 인가 : 접근제어 검사를 하지 않으면 권한이 없는 파일에 접근할 수 있으므로 반드시 권한을 체크해야함
- 중요정보 평문 저장 : 중요정보를 평문 저장 시 데이터가 노출되므로 반드시 암호화하여 저장
- 취약한 비밀번호 허용 : 패스워드 조합 규칙을 사용해야함
- 무결성 검사 없는 코드 다운로드 : 무결성 검사 없이 코드를 다운로드 하지 않음
- 시간 및 상태
- 종료되지 않는 반복문과 재귀함수 : 무한 루프 실행시 자원고갈을 유발해 정상 서비스 제공이 어려우므로 반복 횟수를 지정
- 에러처리 표현
- 오류 메시지를 통한 정보 노출 : 에러메세지를 화면에 출력하지 않고 로그 파일에 출력하여 확인
- 코드 오류
- Null Pointer 역참조 : Null 값인지 확인하는 로직을 사용해야함
- 부적절한 자원 해제 : 제때 자원을 반환하지 않아 사용이 끝난 자원을 반환하지 못하는 경우
- 해제된 자원 사용 : 해체된 메모리를 참조하는 경우
- 초기화되지 않은 변수 사용
- 입력 데이터 검증 및 표현
- SW 개발 보안 테스트의 종류 : 정적 분석 (소스코드를 분석하여 결함 찾음) / 동적 분석 (소프트웨어를 실행하며 분석)
- SW 개발 보안 결함의 종류 : 발견된 보안 결함 (설치, 운영 전에 발견된 결함) / 잠재된 보안 결함 (설치, 운영 환경에 전달된 결함)
10. 프로그래밍 언어 활용
- 객체 지향 설계 원칙
- 단일책임 원칙 : 하나의 객체는 하나의 책임만 부여
- 개방폐쇄 원칙 : 변화는 확장가능, 변경은 어려운 구조
- 리스코프 원칙 : 자식이 부모 대체 가능
- 인터페이스 분리 원칙 : 자주 사용하는 메소드를 분리
- 의존관계 역전 원칙 : 참조 대상은 추상 클래스
- 객체 지향 기본 원칙
- 캡슐화 : 클래스는 속성과 메소드 구성, 속성은 특정 메소드를 통해 접근 가능
- 다형성 : 기능을 상속받아 재정의 가능, 동명 메소드 선언 가능
- 정보은닉 : 복잡, 변경가능한 부분을 캡슐 내부에 감출 수 있음
- 상속성 : 부모 클래스의 기능과 속성을 상속받아 재정의없이 사용 가능
- 추상화 : 세부 사항은 배제하고 중요한 부분 중심으로 간략화 (기능 추상화, 자료 추상화, 제어 추상화)
- 용어 정의
- 클래스 : 객체를 표현하는 추상 데이터 타입, 객체를 생성하는 틀
- 속성 : 객체의 타입을 정의
- 객체 : 클래스의 인스턴스
- 메소드 : 객체간의 통신
- 변수 : 특정값을 주기억장치에 기억시키기 위해 사용하는 공간
11. 응용 소프트웨어 기초 기술 활용
- 클라우드 컴퓨팅
- IaaS : 가상화 환경을 만들어 인프라 자원을 사용할 수 있게 제공
- PaaS : 복잡한 과정없이 애플리케이션을 개발, 실행, 관리할 수 있게 제공
- SaaS : 하나의 플랫폼을 이용해 다수의 고객에게 SW 제공
- OSI 7계층
- 7계층 (Application) : FTP, POP, SMTP, Telnet, HTTP, TFTP, SNMP, DNS, DHCP
- 6계층 (Presentation) : JPEG, MPEG, SMB
- 5계층 (Session) : SSH, TLS
- 4계층 (Telent) : TCP, UDP
- 3계층 (Network) : IP, ICMP, ARP, RARP
- 2계층 (Data Link) : MAC, LLC, PPP
- 1계층 (Physical) : RS232C
- 4계층의 TCP와 UDP
- TCP : 수신 가능 상태 여부를 체크하여 신뢰성 있는 전송 (FTP, Telnet, Http)
- UDP : 확인 작업 없이 망으로 데이터 송신 (SNMP, DNS, TFTP, NFS)
- 라우팅 알고리즘
- 거리벡터 알고리즘 : 최단경로스패닝트리를 찾아 이동, 계산이 비교적 단순
- 링크상태 알고리즘 : 가능한 모든 경로를 파악하여 대체 경로를 미리 마련
- TCP/IP 프로토콜 계층 순서 : 응용계층 - 전송계층 -인터넷 - 네트워크 인터페이스
- 허브 : 여러대의 컴퓨터 연결, 송신
- 리피터 : 디지털 신호 증폭
- 브리지 & 스위치 : 두 시스템을 연결
- 라우터 : 망 연동 장비
12. 제품 소프트웨어
- 모듈화 : 소프트웨어 성능 향상, 시스템 수정이 용이하도록 하는 소프트웨어 설계 방법
- 모듈와의 목표 : 모듈 내 요소간의 응집도 최대화, 모듈 간 결합도 최소화
- 버전관리 항목
- Import : 로컬을 repository에 복사
- Check-out : repository 파일 받기
- Check-in : repository에 새로운 버전 갱신
- Commit : conflict 알림, commit 수행
- Repository : 현 버전과 변경이력 저장
- 버전 등록 순서 : Add -> Check-out -> Commit -> Update -> Diff
- 버전 관리 도구 유형
- 공유 폴더 방식 (RCS, SCCS) : 매일 공유 폴더에 복사
- 서버/클라이언트 방식 (CVS, SVN) : 중앙에 버전 관리 시스템이 항시 동작
- 분산 저장소 방식 (Git, Bitkeeper) : 로컬&원격저장소 구조
+ OSI 7계층
1계층 Physical Layer (물리 계층)
- 전기적, 기계적, 기능적 특성을 이용해 통신 케이블로 데이터를 전송
- 비트를 사용하여 통신
- 통신 케이블, 리피터, 허브 등
2계층 DataLink Layer (데이터 링크 계층)
- 물리 계층을 통해 전송되는 데이터의 오류와 흐름 제어
- 맥 주소를 가지고 통신하며 프레임 단위로 전송
- LLC, MAC 두 개의 서브레이어로 구성
- 브리지, 스위치 등
3계층 Network Layer (네트워크 계층)
- 논리주소 지정 및 패킷의 이동경로 결정
- 라우터
- IP 계층 : TCP/IP 상에서 네트워크 주소를 정의하고, IP 패킷의 전달 및 라우팅을 담당
- IP 프로토콜 : TCP/IP 기반의 인터넷 망을 통해 데이터그램 전달을 담당하는 프로토콜
4계층 Transport Layer (전송 계층)
- 정보를 분할하고 상대편에 도달하기 전에 다시 합치는 과정을 담당하는 계층
- 수신측과 송신측 사이 통신의 에러와 흐름 제어 수행
- 세그먼트 단위로 전송
- TCP : 수신 가능 상태 여부를 체크하여 신뢰성 있는 전송, 연결지향적 프로토콜, Connection-ful(연결을 유지하며 전송하는 방식)
- UDP : 비 신뢰성, 비 연결지향적 프로토콜, Connection-less(연결을 유지하지 않고 전송하는 방식, data손실을 신경쓰지 않음)
5계층 Session Layer (세션 계층)
- 네트워크 상 통신에서 양쪽 Host 간 최초 연결을 시킨 후, 통신 중 연결을 지속시키는 역할
- 동시 송수신 방식(duplex), 반이중 방식(half-duplex), 전이중 방식(Full Duplex) 통신
- TCP/IP 세션을 만들고 없애는 책임
6계층 Presentation Layer (표현 계층)
- 전송하는 데이터의 구성 방식 결정
- 다양한 데이터 포맷을 일관되게 상호 변환, 압축 및 암호화, 복호화 기능 수행
7계층 Application Layer (응용 계층)
- 사용자 인터페이스를 담당하는 계층
- 최종 목적지로 HTTP(80), FTP(20,21), Telnet(23), SMTP(25), DNS(53), TFTP(69) 등의 프로토콜을 가짐