개발환경구축
개발환경구축
- 개별 프로젝트를 이해하고 SW 및 HW 장비를 구축
하드웨어 환경
- 사용자의 인터페이스 역할을 하는 클라이언트(Client), 클라이언트와 통신하여 서비스를 제공하는 서버(Server)로 구성
- 종류
- 웹 서버(Web Server) : 클라이언트로부터 직접 요청을 받아 처리
- 웹 애플리케이션 서버(WAS; Web Application Server) : 동적 서비스를 제공, 웹 서버와 데이터베이스 서버 또는 웹 서버와 파일서버 사이에서 인터페이스 역할을 수행
- 데이터베이스서버(DB SERVER) : 데이터베이스와 이를 관리하는 DBMS를 운영
- 파일서버(File Server) : 데이터베이스에 저장하기에는 비효율적, 서비스제공을 목적으로 하는 파일들 저장
소프트웨어 환경
- 클라이언트 서버 운영을 위한 시스템 소프트웨어(운영체제, 웹서버 및 was 운용을 위한 서버프로그램 ,dbms)와 개발에 사용되는 개발 소프트웨어로 구성
- 개발 소프트웨어 종류
- 요구사항관리도구 : 요구사항과 관련된 소프트웨어
- 설계/모델링도구 : uml(통합 모델링언어) 지원, 설계및 모델링 도와주는 소프트웨어
- 구현도구 : 구현을 지원하는 소프트웨어
- 빌드도구 : 빌드 및 배포,라이브러리 관리 지원하는 소프트웨어
- 테스트도구 : 테스트하는 소프트웨어
- 형상관리도구 : 산출물관리하는 소프트웨어
웹서버(Web Server)기능
- HTTP/HTTPS 지원
- 통신기록
- 정적파일관리
- 대역폭제한
- 가상 호스팅
- 인증
개발언어 선정 기준
- 적정성, 효율성, 이식성, 친밀성, 범용성
개발 패턴과 방법
소프트웨어 아키텍쳐
- sw를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체
- 소프트웨어 아키텍쳐 설계의 기본원리에는 모듈화, 추상화, 단계적 분해, 정보은닉
- 모듈화 : 시스템의 기능들을 모듈 단위로 나누는 것
- 추상화 : 전체적이고 포괄적인 개념 설계 후 차례로 세분화해서 구체화시킴
- 과정추상화 , 데이터 추상화, 제어 추상화
- 단계적 분해 : 상위의 중요 개념으로부터 하위의 개념으로 구체화 시킴(Niklaus Wirth에 의해 제안된 하향식설계 전략)
- 정보 은닉 : 한 모듈 내부에 포함된 절차와 자료들의 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하도록 함
- 상위 설계와 하위 설계
- 상위 설계 : 아키텍처, 예비 설계 / 구조, DB, 인터페이스를 설계(시스템의 전체적인 구조)
- 하위 설계 : 모듈, 상세 설계 / 컴포넌트, 자료구조, 알고리즘(시스템의 내부구조 및 행위)
- 상위 설계와 하위 설계
협약(Contract)에 의한 설계
- 컴포넌트 설계 시 클래스에 대한 여러 가정을 공유할 수 있도록 명세한 것
- 선행조건(Precondition) : 오퍼레이션이 호출되기 전에 참이되어야할 조건
- 결과조건(Postcondition) : 오퍼레이션이 수행된 후 만족되어야 할 조건
- 불변조건(Invariant) : 오퍼레이션이 실행되는 동안 항상 만족되어야 할 조건
아키텍처 패턴
- 아키텍처를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제
- 레이어 패턴(Layers Pattern): 시스템을 계층으로 구분하여 구성
- 클라이언트-서버 패턴(Client-Server Pattern): 하나의 서버컴포넌트, 여러개의 클라이언트 컴포넌트
- 파이프-필터 패턴(Pipe-Filter Pattern) : 데이터 스트림 절차의 각 단계를 필터로 캡슐화, 파이프 통해 전송/대표적으로 UNIX 쉘
- MVC 패턴(Model-View-Controller Pattern) : 모델,뷰,컨트롤러 구성, 대화형 애플리케이션 적합
- 마스터-슬레이브 패턴(Master-Slave Pattern) : 장애허용/병렬 컴퓨팅 시스템
- 브로커패턴(Broker) : 분산환경시스템, 사용자가 원하는 서비스와 특성을 브로커에 요청 -> 브로커가 연결
- 피어-투-피어 (Peer-To-Peer): 하나의 컴포넌트가 클라이언트 OR 서버 둘다 가능(파일공유네트워크)
- 이벤트-버스 패턴(Event-Bus) : 소스가 이벤트 메시지를 발행(퍼블리시)하면, 구독한 리스너들이 이벤트를 처리(알림서비스)
- 블랙보드 패턴(Blackboard) : 모든 컴포넌트들이 블랙보드 & 공유 데이터 저장소에 접근 가능(음성인식, 차량식별 등)
- 인터프리터 패턴(Interpreter) : 각 라인을 수행하는 방법을 지정, 기호마다 클래스를 갖도록 구성(번역기,컴파일러,인터프리터)
객체지향
- 객체 지향(Object-Oriented) : SW의 각 요소를 객체로 만든 후 그 객체를 조립해 SW를 개발하는 기법
- 객체(Object) : 데이터 + 함수
- 클래스(Class) : 공통된속성 및 연산을 갖는 객체 집합
- 메시지(Message) : 객체의 동작이나 연산을 일으키는 외부의 요구사항
- 캡슐화(Encapsulation) : 외부접근제한, 세부내용 은닉
- 상속(Inheritance) : 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것
- 다형성(Polymorphism) : 각각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 것
- 연관성(Relationship) : 두개이상의 객체들이 상호 참조하는 관계
- is member of : 연관화(Association), 2개 이상의 객체가 상호 관련
- is instance of : 분류화(Classfication), 동일한 특성을 갖는 객체들을 모아 구성
- is part of : 집단화(Aggregation), 하나의 상위 객체를 구성
- is a : 일반화(Generalization), 특수화/상세화(Specialization)
- 객체 지향 분석(OOA; Object Oriented Analysis) : 사용자의 요구사항과 관련된 객체, 속성, 연산, 관계 등을 정의하여 모델링하는 작업
- 방법론
- 럼바우(Rumbaugh)의 분석기법
- 모든 소프트웨어 구성요소를 그래픽 표기법을 이용하여 모델링하는 기법
- 객채모델링기법(OMT; Object-Modeling Technique)라고도 한다.
- 객동기
- 객채모델링 = 정보모델링 : 객체다이어그램으로 표시
- 동적모델링 : 동적인 행위 표현, 상태다이어그램
- 기능모델링 : 자료흐름도(DFD) 이용
- 부치(Booch) : 미시적,거시적
- 제이콥슨(Jacobson) : 유스케이스
- 코드와 요르돈(Coad Yourdon) : e-r 다이어그램
- wirfs-brock : 분석과 설계 간 구분 없음, 고객 명세서 평가
- 럼바우(Rumbaugh)의 분석기법
- 방법론
- 객체지향 설계 원칙
- SOLID원칙
- 단일책임원칙(SPR) : 객체는 단 하나의 책임
- 개방-폐쇄 원칙(OCP) : 기존의 코드변경 X, 기능을 추가 할 수 있어야함
- 리스코프치환원칙(LSP) : 자식 클래스는 최소한 부모클래스 기능 수행
- 인터페이스분리원칙(ISP) : 사용하지 않는 인터페이스와 의존관계 맺거나 영향 X
- 의존역전원칙(DIP) : 추상성이 높은 클래스와 의존관계 맺어야 함
모듈
- 모듈화를 통해 분리된 시스템의 각 기능
- 모듈의 독립성은 결합도와 응집도에 의해 측정(독립성 높이러면 결합도 약하게, 응집도 강하게 ,모듈크기 작게)
- 결합도(Coupling) : 모듈간에 상호 의존하는 정도 , 약할수록 품질이 높고 강할수록 품질이 낮다
- 자스제외공내
- 내용(Content) : 직접 참조 (결합도 강함)
- 공통(Common) : 공통 데이터 영역
- 외부(External) : 외부 다른 모듈
- 제어(Control) : 제어 요소를 전달
- 스탬프(Stamp) : 자료구조
- 자료(Data) : 자료 요소로만 구성 (결합도 약함)
- 응집도(Cohesion) : 모듈의 내부 요소들이 서로 연관되어 있는 정도, 응집도가 강할수록 품질 높고 약할수록 품질 낮다
- 우논시절교순기
- 우연(Coincidental) : 서로 관련 없음 ( 응집도 약함)
- 논리(Logical) : 유사한 성격이나 특정 형태
- 시간적(Temporal) : 특정 시간
- 절차(Procedural) : 순차적으로 수행
- 통신(Communication) : 동일한 입출력
- 순차적(Sequential) : 하나의 출력이 그 다음 입력
- 기능(Functional Cohesion) : 모든 기능 요소
- 팬인/팬아웃 : 팬아웃은 나가는 화살표 숫자 , 팬인은 들어오는 숫자
- 팬인 : 어떤 모듈을 제어하는 모듈의 수(팬인 높을경우 , 단일장애점(SPOF; Single Point Of Failure) 발생가능)
- 팬아웃 : 어떤 모듈에 의해 제어되는 모듈의 수
- N-S차트(Nassi-Schneiderman Chart) : 논리의 기술에 중점을 두고 도형을 이용해 표현하는 방법
- 단위모듈(Unit Module) : 한가지 동작을 수행하는 기능을 모듈로 구현한 것
- 단위기능 명세서 작성 -> 입출력기능 구현 -> 알고리즘 구현
- IPC(Inter-Process Communication) : 모듈간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합
- 대표메소드 5가지
- Shared Memory(공유메모리) : 공유 가능한 메모리를 구성해 다수의 프로세스 통신
- Socket(소켓) : 네트워크 소켓을 이용하여 네트워크를 경유하는 프로세스 간에 통신하는 방식
- Semaphores(세마포어) : 공유 자원에 대한 접근 제어를 통해 통신하는 방식
- Pipes & Named Pipes : Pipe라고불리는 선입선출 형태로 구성된 메모리를 여러 프로세스가 공유하여 통신하는 방식 , Pipe는 하나의 프로세스가 이용 중 이라면 다른프로세스 접근 x
- Message Queueing : 메시지가 발생하면 이를 전달하는 방식으로 통신하는 방식
- 대표메소드 5가지
테스트
- 단위 모듈 테스트 : 모듈이 정해진 기능을 정확히 수행하는지 검증하는 것, 단위테스트(Unit Test), 오류 검출 x
- 테스트케이스(Test Case)
- 소프트웨어가 요구사항을 정확하게 준수했는지 확인하기 위해 테스트 항목에 대한 명세서
- 공통 모듈
- 여러 프로그램에서 공통으로 사용할 수 있는 모듈
- 공통모듈명세기법의 종류
- 정확성(Correctness) : 시스템 구현 시 해당 기능이 필요하다는 것을 알 수 있도록 정확히 작성
- 명확성(Clarify) : 중의적으로 해석되지 않도록 명확히 작성
- 완전성(Completeness) : 필요한 모든 것을 기술
- 일관성(Consistency) : 상호 충돌이 발생하지 않도록 작성
- 추적성(Traceability) : 출저,관계를 파악할 수 있도록 작성
- 공통 모듈 테스트
- 화이트박스 테스트 : 내부구조와 동작을 검사하는
- 메서드 기반 테스트 : 공통 모듈의 외부에 공개된 메서드 기반의 테스트
- 화면 기반 테스트 : 화면에 데이터를 직접 입력하여 테스트 수행
- 테스트 드라이버/테스트 스텁 활용 테스트 : 기능을 테스트할 수 있는 화면 또는 하위모듈이 구현되지 않은 경우 테스트 드라이버, 테스트 스텁통해 테스트 수행
- 재사용(Reuse)
- 이미 개발된 기능들을 새로운 시스템이나 기능 개발에 사용하기 적합하도록 최적화하는 작업
- 재사용 규모에 따른 분류
- 함수와 객체(클래스나,메소드단위), 컴포넌트(컴포넌트 수정x), 애플리케이션(애플리케이션 공유
- 코드(Code)
- 자료의 분류 조합 집계 추출을 용이하게 하기 위해 사용하는 기호
- 코드의 주요기능
- 식별, 분류, 배열, 표준화, 간소화
- 코드 종류
- 순차코드(Sequence) : 1,2,3,4
- 블록코드(Block) : 1001~1100 : 총무부, 1101~1200: 영업부
- 10진코드(Decimal) : 1000:공학, 1100:소프트웨어공학 (도서분류식코드)
- 그룹분류코드(Group Classification) : 1-01-001 : 본사-총무부-인사계
- 연상코드(Mnemonic) : TV-40, 15W 220V의 램프
- 표의숫자코드(Significant Digit) : 120-720-1500 : 두꼐 폭 길이가 120*720*1500인 강판
- 합성코드(Combined) : 연상코드 + 순차코드 등 2개이상코드조합 , KE-711 : 대한항공 711기
디자인패턴
- 모듈 간의 관계 및 인터페이스를 설계할 때 참조할 수 있는 전형적인 해결방식 도는 예제
- 생성
- Builder : 조립
- Prototype: 복제(복사)
- Factory Method : 상위 클래스에서 인터페이스 정의, 하위클래스에서 인스턴스 생성
- Abstract Factory : 서로 연관-의존하는 객체 그룹을 만드는 인터페이스 제공
- Singleton : 생성된 객체 어디서든지 참조
- 구조
- Adapter : 기존에 생성된 클래스 재사용할 수 있도록 해줌
- Bridge : 구현부에서 추상층 분리
- Composit : 객체를 트리 구조로 구성
- decorate : 기존 클래스에 필요한 기능 추가
- facade(퍼싸드) : wrapper 객체 필요, 복잡한 시스템에 대한 단순한 인터페이스 제공
- flyweight : 메모리 절약
- proxy : 접근이 어려운 객체 여기에 연결하려는 객체 사이 인터페이스 역할수행, 실제 객체에 대한 대리객체
- 행위
- Mediator : 중간에 통제 중재자
- Interpreter : 언어의 다양한 해석(언어에 관련)
- Iterator : 내부 표현방법 노출없이 순차적 접근 가능
- Template Method : 상위클래스 -추상, 하위클래스 -구체(공통된 내용 상위 작성)
- Observer : 한 객체의 상태 바뀌면 의존하는 다른객체에 연락
- State : 상태에 따라 다르게 처리
- Visitor : 메소드가 각클래스를 돌아다니며 작업 수행
- Command : 명령(요쳥)이 들어오면 그에 맞는 서브클래스 선택되어 실행
- Strategy : 동일한 계열의 알고리즘들을 개별적으로 캡슐화하여 상호 교환할 수 있게 정의하는
- Memento : undo(작업취소), ctrl+z 같은 되돌리기 기능
- chain of responsibility(책임연쇄) : 한 객체가 처리하지 못하면 다음 객체로 넘어가는 , 해결 될때까지 고리를 따라 책임이 넘어간다.
개발지원도구
- 통합 개발 환경(IDE; Integrated Development Environment)
- 개발에 필요한 환경, 즉 편집기(Edtior), 컴파일러(Compiler), 디버거(Debugger) 등의 다양한 툴을 하나의 인터페이스로 통합하여 제공화는 환경
- 종류 : 이클립스, 비쥬얼스튜디오, 엑스코드, 안드로이드 스튜디오, idea
- 빌드 도구
- 빌드 : 소스 코드 파일들을 컴퓨터에서 실행할 수 있는 제품 소프트웨어로 변환하는 과정 또는 결과물
- 빌드 도구는 전처리(Preprocessing), 컴파일(Compile)등의 작업 수행
- 전처리(Preprocessing) : 컴파일에 앞서 코드에 삽입된 주석을 제거하거나 매크로들을 처리하는 과정
- 대표적인 빌드 도구
- Ant(Another Neat Tool) : 아파치 소프트웨어 재단에서 개발, 자바
- Maven : Ant대안으로 개발 , 의존성(Dependency)을 설정
- Gradle : ant와 maven 보완하여 개발, 안드로이드 스튜디오, 그루비(grooby) 기반 빌드스크립트
- 그루비 : 자바를 기반으로 여러 프로그래밍 언어들의 장점을 모아 만든 동적 객체지향 프로그래밍 언어
서버개발
- 웹 애플리케이션의 로직을 구현할 서버 프로그램을 제작하여 웹 애플리케이션 서버(WAS)에 탑재하는 것
- 서버개발프레임워크
- 다양한 네트워크 설정, 요청 및 응답처리, 아키텍처-모델 구현 등을 손쉽게 처리할 수 있도록 클래스나 인터페이스를 제공하는 소프트웨어, 대부분은 MVC패턴 기반
- 종류
- Spring : Java를 기반으로 만든 프레임워크, 전자정부표준프레임워크의 기반 기술로 사용
- Node.js : JavaScript를 기반으로 만든 프레임워크
- Django : Python을 기반으로 만든 프레임워크
- Codeigniter : pHp 를 기반으로 만든
- Ruby on Rails : ruby를 기반으로 만든 프레임워크
- 서버개발과정
- DTO(Data Transfer Object) : 데이터 교환을 위해 생성되는 객체
- VO(Value Object) : DTO와 동일, 읽기만 가능 변경 X
- DAO(Data Access Object) : DB접근하여 작업수행 객체
- DTO(Data Transfer Object)/VO(Value Object)구현 : 데이터 교환을 위해 사용할 객체를 만드는 과정
- sql 구현 : 데이터 작업을 수행할 sql문 생성하는 과정
- DAO(Data Access Object)구현 : 데이터베이스에 접근하고 데이터를 실제로 조작하는 코드를 구현하는 과정
- Service 구현 : 사용자의 요청에 응답하기 위한 로직을 구현
- Controller 구현 : 사용자의 요청에 적절한 서비스를 호출하여, 그 결과를 사용자에게 반환하는 코드를 구현하는 과정
기타
API(Application Programming Interface)
- 라이브러리를 이용할 수 있도록 규칙 등을 정의해 놓은 인터페이스
- 공개 api를 open api라고 한다
배치프로그램
- 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하도록 만든 프로그램
- 대용량 데이터, 자동화, 견고성, 안정성/신뢰성, 성능 이 꼭필요
- 배치 스케쥴러
- 일괄처리(Batch Processing)작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구
- 잡 스케쥴러(Job Scheduler)라고도 불린다.
- 종류
- 스프링 배치(Spring Batch) : Spring사와Accenture사가 2007년 공동개발한 오픈소스프레임워크, 다양한기능제공
- Quartz : 스프링 프레임워크로 개발되는 응용프로그램들의 일괄처리를 위한 다양한 기능을 제공하는 오픈소스 라이브러리, 유연성제공
- Cron : 리눅스의 기본 스케쥴러 도구 , crontab 명령어 통해 작업예약가능
- 분 시 일 월 요일 명령어, * 매시기마다 수행 0:일요일 6:토요일
패키지소프트웨어(Package Software)
- 기업에서 일반적으로 사용하는 여러 기능을 통합하여 제공하는 소프트웨어
'정보처리기사 > 실기' 카테고리의 다른 글
정보처리기사 정리본(1,2,4) (0) | 2023.04.17 |
---|---|
정보처리기사 - 7. 애플리케이션 테스트 관리 (1) | 2023.04.16 |
정보처리기사 - 2.데이터 입출력 구현 (0) | 2023.04.14 |
정보처리기사 - 6.화면설계 (0) | 2023.04.14 |
정보처기기사 - 1.요구사항 확인 (0) | 2023.04.12 |