소프트웨어 개발 방법론
소프트웨어 개발 방법론
1) 소프트웨어 생명주기 모델
소프트웨어 생명주기란? -> 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차이다
(SDLC: Software Development Life Cycle)
소프트웨어 생명주기 모델 종류 [폭프나반]
- 폭포수 모델: 소프트웨어 개발시에 각 단계를 다 마무리 지은 후에 다음 단계로 넘어간다. 가장 오래된 모델이고 요구사항 변경이 어렵다. 절차 - 타당성 검토 -> 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수
- 프로토타이핑 모델: 고객이 요구한 주요 기능을 프로토타입으로 구현하여, 고객의 피드백을 반영하여 소프트웨어를 만들어가는 모델
- 나선형 모델: 시스템 개발시 위험을 최소화 하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델
- 반복적 모델
2) 소프트웨어 개발 방법론
소프트웨어 개발 방법론 종류
- 구조적 방법론: 전체 시스템을 기능에 따라 나누어 개발하고 통합, 하향식 방법론, 나씨- 슈나이더만 차트 사용
- 정보공학 방법론: 정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화
- 객체 지향 방법론: 객체라는 기본 단위로 시스템 분석 및 설계
- 컴포넌트 기반 방법론: 소프트웨어 구성하는 컴포넌트 조립해 응용 프로그램을 작성하는 방법론, 생산성 향상, 기능추가 쉽고 재상용이 가능
- 애자일 방법론: 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하는 방법론
애자일 방법론
유형
- XP
의사소통 개선과 피드백
XP
XP의 5가지 가치
- 용기
- 단순성
- 의사소통
- 피드백
- 존중
XP의 12가지 기본원리
- 짝 프로그래밍: 둘이서 짝으로 코딩
- 공동 코드 소유: 누구든지 수정 가능
- 지속적인 통함 CI: 매일 여러번 통합하고 빌드
- 계획 세우기
- 작은 릴리즈
- 메타포어: 공통적인 이름 체계와 시스템 서술서 통해 의사소통 원활
- 간단한 디자인
- 테스트 기반 개발 TDD: 작성해야 하는 프로그램에 대한 테스트를 먼저 수행하고 이 테스트를 통과할 수 있도록 코드 작성
- 리팩토링: 중복제거, 단순화
- 40시간 작업
- 고객 상주
- 코드 표준
- 스크럼
매일 정해진 시간, 장소에서 짧은 시간의 개발
- 린
도요타 린 시스템 품질기법 적용 , 낭비 요소를 제거해 품질 향상
린
7가지 원칙 [낭품지늦빠사전]
- 낭비제거
- 품질 내재화
- 지식 창출
- 늦은 확정
- 빠른 인도
- 사람 존중
- 전체 최적화
3) 객체 지향 분석 방법론
객체 지향 분석 방법론 종류
- OOSE (야콥슨): 유스케이스에 의한 접근 방법
- OMT (럼바우): 객체 모델링 -> 동적 모델링 -> 기능 모델링 [객동기]
- OOD (부치): 설계 문서화를 강조해 다이어그램 중심
비용산정, 일정관리 모형
1) 비용산정 모형
비용산정 모형은 소프트웨어 규모파악을 통한 투입자원, 소요시간을 파악해 실행 가능한 계획을 수립하기 위해 비용을 산정하는 방식이다
비용산정 모형 분류
- 하향식 산정방법
전문가 통해 산정하는 방식
종류: 전문가 판단, 델파이 기법
- 상향식 산정방법
세부적인 요구사항과 기능에 따라 필요한 비용 계산
종류: LOC, Man Month, COCOMO, 푸트남, 기능점수(FP)
- LOC: 원시 코드 라인 수의 낙관치, 중간치, 비관치 측정해 예측치 구한다.
- Man Month: 한 사람이 1개월 동안 할 수 있는 일의 양 기준
- Man Month = LoC / 프로그래머의 월간 생산성
- 프로젝트 기간 = Man Month / 인력
- COCOMO: 보헴이 제안한 모형, 규모에 따라 비용 산정 ( 조직형, 반 분리형, 임베디드형)
- 푸트남: 개발주기의 단계별로 요구할 인력의 분포 가정 (생명주기 예측 모형)
- 기능점수(FP): 요구 기능 증가시키는 인자별로 가중치 부여
2) 일정관리 모델
- 주 공정법 (CPM): 노드 간 연결 통해 계산, 일정계산은 종료까지 가장 긴 시간 걸리는 경로를 계산
- PERT: 비관치, 중간치, 낙관치의 3점 추정방식
- 중요 연쇄 프로젝트 관리(CCPM): 자원지약사항을 고려
현행 시스템 분석
현행 시스템 파악
1) 현행 시스템 파악 절차
구성/기능/인터페이스 파악 -> 아키텍처 및 소프트웨어 구성 파악 -> 하드웨어 및 네트워크 구성 파악
2) 소프트웨어 아키텍처
소프트웨어 아키텍처 4+1 뷰 [유논구프배]
- 1 은 유스케이스이다
- 4는 논리, 구현, 프로세스 배포 뷰 이다.
소프트웨어 아키텍처 패턴 유형
- 계층화 패턴: 계층으로 구분, 하위 모듈들은 특정 수준의 추상화 제공
- 클라이언트-서버 패턴: 하나의 서버와 다수의 클라이언트로 구성
- 파이프-필터 패턴: 스트림을 생성 처리 재사용성 좋고 확장 용이
- 브로커 패턴: 분리된 컴포넌트들로 이루어졌다.
- MVC 패턴: 모델(핵심 기능과 데이터보관)-뷰(사용자에게 정보표시)-컨트롤러(사용자로부터 요청 입력받아 처리)
소프트웨어 아키텍처 비용 평가 모델 [SACAA]
- SAAM: 변경 용이성과 기능성에 집중
- ATAM: 아키텍처 품질 속성 만족시키는지
- CBAM: ATAM 바탕의 시스템 분석 중심, 경제적 의사결정에 대한 요구
- ADR: 구성요소 간 응집도
- ARID: 특정 부분에 대한 품질요소 집중
3) 디자인 패턴
소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법
디자인 패턴 유형
생성
- - Builder: 복잡한 인스턴스 조립, 복합 객체 생성할 때 생성 방법과 구현 방법 분리
- - Prototype: 일반적인 원형 만들어 놓고 복사하고 필요한 부분만 수정
- - Factory Method: 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위 클래스에서 인스턴스를 생성하도록 하는 방식
- - Abstract Factory: 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴
- - Singleton: 객체를 하나만 생성하도록 하며 어디에서든지 참조할 수 있도록 하는 패턴
구조
- - Bridge: 기능의 클래스 계층과 구현의 클래스 계층을 연결하고 구현부에서 추상화된 부분, 실제 구현 부분을 독립적으로 확장
- - Decorator: 기존에 구현되어 있는 클래스에 필요한 기능을 추가해 나가는 설계 패턴
- - Facade: 단순한 인터페이스를 제공해서 시스템과의 결합도를 낮추어 구조 파악 쉽게 하는 패턴
- - Flyweight: 다수의 객체로 생성될 경우 모두가 갖는 본질적인 요소를 클래스 화하여 공유, 클래스 경량화 목적인 패턴
- - Proxy: 실체 객체에 대한 대리 객체로 실체 객체에 대한 접근 이전에 필요한 행동을 취할 수 있게 만들고 정보은닉의 역할도 수행
- - Composite: 객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴
- - Adapter: 기존 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할, 상속 이용하는 클래스 패턴, 위임 이용하는 인스턴스 패턴 두가지 형태로 사용
행위
- - Mediator: 객체 수가 너무 많아지면 서로 간 통신 위해 복잡해져 느슨 결합 특성 해칠 수 있기에 이를 통제하고 지시할 수 있는 역할 하는 중재자를 둔다.
- - Interpreter: 구체적으로 구문을 나누고 그 분리된 구문의 해석을 맡는 클래스를 각각 작성해 해석할 수 있게 만든다. 문법 캡슐화
- - Iterator: 컬렉션 구현 방법 노출시키지 않으면서도 집합체 안에 들어있는 모든 항목에 접근할 방법 제공
- - Template Method: 어떤 작업 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일은 수행하며 특정 단계에서 수행 내역 바꾼다
- - Observer: 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에 연락이 가고 자동으로 내용 갱신, 일대 다의 의존성 가진다
- - State: 객체 상태를 캡슐화하여 클래스화, 그것을 참조하게 하는 방식, 행위 내용을 변경, 원시코드 수정 최소화, 유지보수 편의성
- - Visitor: 각 클래스 데이터 구조로부터 처리 기능 분리해 별도의 클래스 만들고 해당 클래스의 메서드가 돌아다니며 특정 작업 수행
- - Command: 실행될 기능을 캡슐화, 주어진 여러 기능 실행할 수 있는 재사용성 높은 클래스 설계, 하나의 추상 클래스에 메서드를 만들어 명령이 들어오면 그에 맞는 서브 클래스 선택
- - Strategy: 알고리즘 군을 정의하고 같은 알고리즘을 각각 하나의 클래스로 캡슐화, 필요할 때 서로 교환해 사용
- - Memento: 클래스 설계 관점에서 객체의 정보를 저장할 필요가 있을 때 적용 Undo 기능 개발
- - Chain of Responsibility: 정적으로 하드코딩되어있을때 기능 처리의 연결 변경이 불가능한데, 동적으로 연결되어 있는 경우에 따라 다르게 처리될 수 있도록 연결
개발 기술 환경 정의
운영체제 종류 및 특징
- PC
- Windows - 중/소규모 서버, 일반 pc 등 유지
- UNIX - 대용량 처리
- Linux - 중/대규모 서버 대상, 높은 보안성 제공
- 모바일
- Android
- iOS
OSI 7계층
- - 물리 계층: 프로토콜 - RS-232C, 전송단위 - 비트
- - 데이터 링크 계층: 이더넷 ,프레임
- - 네트워크 계층: IP ICMP , 패킷
- - 전송 계층: TCP UDP , 세그먼트
- - 세션 계층: SSH TLS
- - 표현 계층: JPEG MPEG
- - 응용 계층: HTTP FTP
요구사항 확인
요구사항
요구사항의 분류
- - 기능적 요구사항: 시스템이 제공하는 기능 , 서비스에 대한 요구사항
- - 비기능적 요구사항: 기능 이외의 사항, 시스템 구축에 대한 제약사항에 관한 요구사항
요구사항 도출 단계 주요 기법
- - 인터뷰
- - 브레인스토밍
- - 델파이 기법
- - 롤 플레잉
- - 워크숍
- - 설문 조사
요구사항 명세 단계 주요 기법
- - 비정형 명세 기법: 자연어
- - 정형 명세 기법: 수학적인 원리와 표기법
상세 정형 기술 검토 기법
- - 관리 리뷰
- - 기술 리뷰
- - 인스펙션
- - 워크 스루
- - 감사
'▸정보처리기사' 카테고리의 다른 글
[정보처리기사 실기 요약정리] 6. SQL 응용 (0) | 2023.04.18 |
---|---|
[정보처리기사 실기 요약정리] 5. 인터페이스 구현 (2) | 2023.04.17 |
[정보처리기사 실기 요약정리] 4. 통합 구현 (0) | 2023.04.16 |
[정보처리기사 실기 요약정리] 3. 데이터 입출력 구현 (0) | 2023.04.15 |
[정보처리기사 실기 요약정리] 2. 화면 설계 (0) | 2023.04.13 |