시나공 책 한번 읽고나서 복습 겸 암기하기위해서 정리한 것
정말 중요한 개념들만 정리해놓은거라 여기서 모르는 거 없어야된다는 마음으로 적었다
내일은 2과목 복습해야지
+추가로 학습하는 개념이 생기면 계속 수정할 것
[소프트웨어 생명 주기]
폭포수 모형(Waterfall Model) //★특징, 개발 과정 순서
프로토타입 모형(Prototype Model, 원형 모형) //개념, 개발 과정 순서
나선형 모형(Spiral Model, 점진적 모형) //특징, 개발 과정 순서
애자일 모형(Agile Model) //★개념, 종류, 4가지 핵심 가치
- 스크럼(Scrum) //팀 구성원, 개발 과정 순서
- XP(eXtreme Programming) //5가지 핵심 가치(용단의피존), 개발 과정, 주요 실천 방법(종류)
- 칸반(Kanban)
- Lean, 크리스탈
- ASD 등
[현행 시스템 파악 절차]
1단계: 시스템 구성 파악, 시스템 기능 파악, 시스템 인터페이스 파악
2단계: 아키텍처 구성 파악, 소프트웨어 구성 파악
3단계: 하드웨어 구성 파악, 네트워크 구성 파악
[개발 기술 파악]
운영체제 //개념, 고려사항(가용성, 성능, 기술지원, 주변기기, 구축비용)
데이터베이스 관리 시스템(DBMS) //개념, 종류, 고려사항(가용성, 성능, 기술지원, 상호 호환성, 구축비용)
웹 애플리케이션 서버(WAS) //개념, 고려사항(가용성, 성능, 기술지원, 구축 비용)
[요구 사항]
요구사항 //★개념, 유형별 비교
- 기능 요구사항(Functional requirements)
- 비기능 요구사항(Non-functional requirements)
- 사용자 요구사항(User requirements)
- 시스템 요구사항(System requirements)(소프트웨어 요구사항)
요구사항 개발 프로세스 //★단계별 내용과 순서
- 도출(Elicitation) → 분석(Analysis) → 명세(Specification) → 확인(Validation)
- 요구사항 도출 기법: 인터뷰, 설문, 브레인스토밍, 프로토타이핑, 유스케이스 등
- 요구사항 분석 기법
- 요구사항 분류(Require Classification)
- 개념 모델링(Concept Modeling)
- 요구사항 할당(Requirement Allocation)
- 요구사항 협상(Requirement Negotiation)
- 정형 분석(Formal Analysis)
- 요구사항 확인 기법
- 요구사항 검토(Requirement Reviews)
- 프로토타이핑(Prototyping) //장단점
- 모델 검증(Model Verification)
- 인수 테스트(Acceptance Test)
UML(Unified Modeling Language) //개념 모델링에서 주로 쓰임, 개념, 구성 요소
- 사물 //구조(Structural), 행동(Behavioral), 그룹(Grouping), 주해(Annotation)
- 관계
- 다이어그램 //구조적(Structural), 행위(Behavioral)
[사용자 인터페이스 & 화면 설계]
UI의 3가지 분야 //물기표(물리적, 기능적, 표현과 구성)
UI의 특징
UI의 구분 //NCG
UI의 4가지 기본 원칙 //직유학유
- 직관성
- 유효성
- 학습성
- 유연성
UI표준 및 지침
한국의 웹 콘텐츠 접근성 지침(KWCAG) //인식, 운용, 이해, 견고성 +내비게이션 구조의 요소
UI 설계 도구 //★와스프유목
- 와이어프레임(Wireframe) //뼈대
- 목업(Mockup) //정적
- 스토리보드(Stroyboard) //흐름
- 프로토타입(Prototype) //동적
- 유스케이스(Use Case) //사용자
UI 요구사항 확인
SW 품질 표준 지침 ISO/IEC 9126
- 기능성(Functionality) //요구 만족 기능
- 신뢰성(Reliability) //일관되게 오류 없이
- 사용성(Usability) //사용자의 이해, 사용
- 효율성(Efficiency) //할당시간, 한정자원으로 신속 처리
- 유지 보수성(Maintainability) //개선, 확장 가능성
- 이식성(Portability) //다른 환경에도 적용
UI 프로토 타입 //장단점, 종류(페이퍼, 디지털), 제작 단계
UI 설계서 //개념, 작성 순서
UI의 유용성 평가 //실행 차(기능), 평가 차(결과)
UI 시나리오 문서 //작성원칙, 요건, 기대효과
HCI(Human Computer Interaction or Interface) //for 최적의 UX
UX(User Experience) //개념, 특징(주관성, 정황성, 총체성)
감성공학 //요소 기술(기반, 구현, 응용)
[소프트웨어 아키텍처]
소프트웨어 아키텍처의 기본 원리 //★
- 모듈화(Modularity)
- 추상화(Abstraction)
- 단계적 분해(Stepwise Refinement)
- 정보 은닉(Information Hiding)
소프트웨어 아키텍처의 품질 속성
- 시스템 측면
- 비즈니스 측면
- 아키텍처 측면
소프트웨어 아키텍처의 설계 과정
설계 목표 설정 → 시스템 타입 결정 → 아키텍처 패턴 적용 → 서브시스템 구체화 → 검토
*시스템 타입: 대화형, 이벤트, 변환형, 객체 영속형
*아키텍처 패턴: 레이어, 클라이언트-서버, 파이프-필터, 모델-뷰-컨트롤러 등
아키텍처 패턴 //★장점, 종류
- 레이어 패턴(Layers Pattern) //OSI 7계층
- 클라이언트-서버 패턴(Client-Server Pattern)
- 파이프-필터 패턴(Pipe-Filter Pattern) //데이터 스트림, UNIX의 Shell
- 모델-뷰-컨트롤러 패턴(Model-View-Controller Pattern) //대화형에 적절
- 기타 패턴(마스터-슬레이브, 브로커, 피어투피어, 이벤트-버스, 블랙보드, 인터프리터)
객체지향(Object-Oriented) //★구성요소, 개념
- 객체(Object)
- 클래스(Class)
- 캡슐화(Encapsulation)
- 상속(Inheritance)
- 다형성(Polymorphism)
결합도(Coupling) //★★★강약, 결합도는 낮을수록 품질 上
- 약 Data – Stamp – Control – External – Common – Content 강
응집도(Cohesion) //★★★강약, 응집도는 높을수록 품질 上
- 강 Funtional – Sequential – Communication – Procedure – Temporal – Logical – Coincidental 약
팬인(Fan-In), 팬아웃(Fan-Out) //최적화: 팬인은 높게, 팬아웃은 낮게 설계
- 팬인(자신을 호출하는 모듈의 수) //꽂혀있는
- 팬아웃(자신이 호출하는 모듈의 수) //뻗는
공통 모듈 //명세 기법
- 정확성(Correctness) //해당 기능 필요
- 명확성(Clarity) //중의적 해석X
- 완전성(Completeness) //모든 것을 기술
- 일관성(Consistency) //상호 충돌X
- 추적성(Traceability) //관계 파악
코드 //기능(식별, 분류, 배열, 종류
- 순차 코드(Sequence Code) //기준에 따라 차례대로
- 블록 코드(Block Code) //공통성에 따라 구분
- 10진 코드(Demical Code) //10진 분할
- 그룹 분류 코드(Group Clasification Code) //대중소분류 구분
- 연상 코드(Mnemonic Code) //관계있는 숫자나 문자
- 표의 숫자 코드(Significant Digit Code) //물리적 수치 그대로
- 합성 코드(Combined Code) //2개 이상 조합
디자인 패턴 //by, GoF,★아키텍처 패턴과 비교(아키텍처: 전체 시스템, 디자인 패턴: 서브)
- 생성 패턴(Creational Pattern) 5개
① 추상 팩토리(Abstract Factory) //구체적 클래스 의존 X
② 빌더(Builder) //인스턴스를 건축하듯 조합
③ 팩토리 메소드(Factory Method) //서브 클래스 처리, 캡슐화
④ 프로토타입(Prototype) //원본 객체 복제
⑤ 싱글톤(Singleton) //어디서든 참조, 동시에 X
- 구조 패턴(Structural Pattern) 7개
① 어댑터(Adapter) //호환성있게 변환
② 브릿지(Brigde) //서로 독립적이게 확장
③ 컴포지트(Composite) //복합, 단일 구분 없이
④ 데코레이터(Decorator) //능동적 기능들 확장
⑤ 퍼싸드(Façade) //복잡한 서브 클래스를 간편하게 사용
⑥ 플라이웨이트(Flyweight) //인스턴스를 가능한 공유해서 사용
⑦ 프록시(Proxy) //접근이 어려운 객체, 인터페이스 역할
- 행위 패턴(Behavioral Pattern) 11개
① 책임 연쇄(Chain of Resposibility) //다음 객체로 넘어감
② 커맨드(Command) //요청을 객체로 캡슐화
③ 인터프리터(Interpreter) //문법 표현 정의
④ 반복자(Iterator) //접근 잦은 객체
⑤ 중재자(Mediator) //객체간 상호작용을 캡슐화
⑥ 메멘토(Memento) //시간 되돌리는 기능
⑦ 옵서버(Observer) //상태의 변화 전달
⑧ 상태(State) //동일한 동작 다르게 처리
⑨ 전략(Strategy) //동일한 알고리즘 캡슐화
⑩ 템플릿 메소드(Template Method) //상위클래스, 하위클래스
⑪ 방문자(Visitor) //클래스들의 처리 기능 분리
[시스템 인터페이스]
시스템 인터페이스 요구사항 명세서 //내용, 분석, 절차
① 시스템 인터페이스 요구사항 목록 만듬
② 자료 준비
③ 기능적/비기능적 요구사항 분류
④ 요구사항 분석, 내용 추가 수정
⑤ 시스템 인터페이스 요구사항 명세서와 목록 공유
인터페이스 요구사항 검증
① 검토 계획 수립
② 검토 및 오류 수정
③ 베이스라인 설정
요구사항 검증 방법
- 요구사항 검토 //동료검토, 워크스루, 인스펙션
- 프로토타이핑
- 테스트 설계
- CASE 도구 활용 //일관성 분석
인터페이스 요구사항 검증의 주요 항목
- 완전성 //누락X
- 일관성 //충돌X
- 명확성 //이해O
- 기능성 //어떻게보다 무엇을
- 검증 가능성
- 추적 가능성 //명세서와 설계서 추적
- 변경 용이성
인터페이스 시스템 식별
- 개발 시스템
- 내외부 시스템
- 내외부 시스템 환경 및 관리 주체 //실제 운용 환경과 HW담당자
- 내외부 시스템 네트워크 연결 정보
- 인터페이스 //인터페이스 요구사항 명세서
- 인터페이스 시스템
송수신 데이터 식별
- 인터페이스 표준 항목 //시스템 공통부, 거래 공통부
- 송수신 데이터 항목
- 공통 코드
인터페이스 방법 명세화 //+송수신 방법 명세화, 송수신 데이터 명세화, 오류 식별 및 처리 방안 명세화
- 시스템 연계 기술
① DB link //DB에서 제공
② API/Open API //송신 DB에서 데이터 읽는 API 프로그래밍
③ 연계 솔루션 //EAI서버와 클라이언트 이용
④ Socket
⑤ Web Service //WSDL, UDDI, SOAP 프로토콜 이용
- 인터페이스 통신 유형
① 단방향 //시스템만 거래요청
② 동기 //거래 요청 후 응답 대기
③ 비동기 //거래 요청 후 다른 작업 수행하다 응답오면 처리
- 인터페이스 처리 유형
① 실시간 //바로 처리
② 지연 처리 //한건 당 비용이 높을 때
③ 배치 //다량의 데이터 처리
- 인터페이스 발생 주기
시스템 인터페이스 설계서 //구성, 작성
- (시스템 인터페이스 목록 + 시스템 인터페이스 정의서) 구성
시스템 인터페이스 목록 | 송수신 시스템 정보, 통신 유형 |
시스템 인터페이스 정의서 | 데이터 항목 및 구현 요건 기술 |
- (인터페이스 송수신 방법 + 인터페이스 송수신 데이터 명세화) 기반 작성
미들웨어 //개념, 종류
- DB //ODBC, IDAPI, Glue
- RPC(Remote Procedure Call) //Entera, ONC/RPC
- MOM(Message Oriented Middleware) //온라인 업무보다 이기종 분산 데이터 시스템에 적절
- TP-Monitor(Transaction Processing Monitor) //온라인 트랜잭션 처리 및 감시, tuxedo, tmax
- ORB(Object Request Broker) //COBBA, Orbix
- WAS(Web Application Server) //웹, 미션 크리티컬 가능, WebLogic, WebSphere