소프트웨어 생명 주기 : 소프트웨어를 개발 과정을 단계별로 나눔
< 종류 >
1. 폭포수 모형
● 한 단계가 끝나야 다음 단계로 이동 가능
● 매뉴얼 작성
-> 매뉴얼 : 프로그램 사용/운영 내용 기술
● 결과물이 명확하게 산출 ● 병행 수행 X
2. 프로토타입 모형
● 시제품은 User와 System 사이의 인터페이스에 중점 두어 개발
● 폭포수 모형의 단점 보완( 개발 완료 시 오류 발생 )
3. 나선형 모형
● 점진적 모형 ● 위험 관리, 최소화 목적 ● 추가된 요구사항 첨가 가능 ● 대규모 프로젝트
4. 애자일 모형
● 고객의 요구사항 변화에 유연하게 대응 ● 일정 주기 반복하며 개발과정 진행
● 스프린트, 이터레이션이라는 짧은 주기 반복
● 요구사항에 우선순위 부여 ● 소규모 프로젝트 ● 스크럼, XP, ASD
-> 애자일 개발 4가지 핵심 가치
상호작용, 실행되는 SW, 고객과 협업, 변화의 반응
스크럼 : 팀 중심
1. 제품 책임자( PO )
● 제품 이해 높고, 요구사항 책임지고 의사 결정할 사람
● 백로그 작성, 백로그에 대한 우선순위 지정
-> 백로그 : 요구사항에 우선순위 부여
2. 스크럼 마스터( SM )
● 조언을 해주는 사람
3. 개발팀( DT )
● 제품 책임자와 스크럼 마스터를 제외한 모든 팀원
< 개발 과정 >
1. 제품 백로그
2. 스프린트 계획 : 스프린트 백로그 작성
3. 스프린트 : 실제 개발 작업 진행하는 과정( 2 – 4주 )
4. 일일 스크럼 : 짧은 시간동안 진행 상황 점검, 소멸 차트
-> 소멸 차트 : 시간의 경과에 따라 남은 작업 시간을 그래프로 표현
5. 스프린트 검토 : 사용자가 포함된 참석자 앞에서 테스팅
6. 스프린트 회고 : 개선될 점, 규칙 준수를 확인하고 기록
XP : 요구사항에 유연하게 대응, 고객의 참여, 개발 과정 극대화
● 짧고 반복적인 개발 주기, 단순한 설계 ● 소규모 프로젝트
● 릴리즈의 기간을 잛게 반복, 고객의 요구사항 반영에 대한 가시성 높임
● XP의 핵심 가치 : 의사소통, 단순성, 용기, 존중, 피드백
< XP 개발 단계 >
1. 사용자 스토리 : 요구사항을 시나리오로 표현
2. 릴리즈 계획 : 부분 혹은 전체 개발 완료 시점에 대한 일정 수립
3. 스파이크 : 요구사항의 신뢰성을 높이고 위험 감소 위해 별도로 만드는 간단한 프로그램
4. 이터레이션 : 하나의 릴리즈를 더 세분화
5. 승인 검사 : 고객이 직접 수행
6. 소규모 릴리즈 : 고객의 요구사항에 좀 더 유연하게 대응 가능
< XP 주요 실천 방법 >
● Pair Programming : 개발 책임 나눔
● Test-Driven Development : 테스트 케이스 작성
● Whole Team : 각자 자신의 역할이 있고 그 역할에 대한 책임 가짐
● Continuous Integration : 하나의 작업이 마무리 될 때마다 지속적으로 통합
현행 시스템 파악
< 1단계 >
1. 시스템 구성 파악 : 기간 업무/지원업무
2. 시스템 기능 파악 : 주요 기능/하부 기능/세부 기능
3. 시스템 인터페이스 파악 : 데이터 종류, 형식, 프로토콜, 주기 명시
< 2단계 >
1. 아키텍처 구성 파악 : 어떤 기술 요소들이 사용되는지 표현
2. 소프트웨어 구성 파악 : SW 제품명, 용도, 라이선스 적용 방식, 라이선스 수 명시
< 3단계 >
1. 하드웨어 구성 파악 : 서버의 주요 사양, 수량, 이중화의 적용 여부 명시
2. 네트워크 구성 파악 : 서버의 위치, 서버 간 네트워크 연결 방식을 네트워크 구성도로 작성
OS : 컴퓨터 시스템의 자원들을 효율적으로 관리
< 고려사항 >
● 가용성 : OS 고유 장애 발생 가능성, 메모리 누수로 인한 성능 저하 및 재가동
● 성능 : 대규모 동시 사용자 요청에 대한 처리, 대규모 및 대용량 파일 작업에 대한 처리
● 기술 지원 : 여러 사용자들 간 정보 공유
DBMS : User와 DB 사이에서 User의 요구에 따라 정보를 생성, DB 관리, 데이터 종속성과 중복성 문제 해결
< 고려사항 >
● 가용성 : 백업이나 복구의 편의성
● 성능 : 대규모 데이터 처리 성능, 대용량 트랜잭션 처리 성능
WAS( Web Application Server ) : 데이터 접근, 세션 관리, 트랜잭션 관리
< 고려사항 >
● 가용성 : WAS 결함 등으로 인한 패치 설치를 위한 재가동, 안정적인 트랜잭션 처리
● 성능 : 대규모 트랜잭션 처리 성능, 다양한 설정 옵션 지원
요구사항 : SW 개발이나 유지 보수 과정에서 필요한 기준과 근거 제공
-> 기능 요구사항
● 시스템이 뭘 하는지, 어떤 기능을 수행하는지 ● 사용자가 시스템을 통해 제공받기를 원하는 기능
-> 비기능 요구사항
● 시스템 장비 구성, 성능, 인터페이스, 데이터, 테스트, 보안, 품질
-> 사용자 요구사항
● 사용자 관점에서 본 시스템이 제공해야 할 요구사항
-> 시스템 요구사항
● 개발자 관점에서 본 시스템 전체가 사용자와 다른 시스템에 제공해야 할 요구사항
< 요구사항 개발 과정 >
1. 도출
● 지속적 반복 ● 인터뷰, 설문, 브레인 스토밍, 유스케이스
2. 분석
● 요구사항이 불명확/모호한 것 발견하여 걸러냄
3. 명세
● 기능 요구사항 전부 기술, 비기능 요구사항은 필요한 것만 기술
● 사용자가 이해하기 쉬우며, 개발자가 효과적으로 설계할 수 있도록 작성
4. 확인
● 요구사항 명세서가 정확하고 완전하게 작성되었는지 검토
< 요구사항 분석 >
1. 요구사항 분류
2. 개념 모델링
● 단순화, 개념적으로 표현 ● 개체 간 관계 및 종속성 반영 ● UML로 모델링 표기
● 유스케이스 다이어그램, 데이터 흐름 모델, 객체 모델, 데이터 모델
3. 요구사항 할당
● 구성 요소 식별
4. 요구사항 협상
● 요구사항이 서로 충돌될 경우 해결
1. 요구사항과 자원이 충돌 2. 기능/비기능 요구사항 충돌
5. 정형 분석
● 요구사항을 수학적 기호로 표현 후 분석 ● 자원이 배정되기 전에 수행
< 종류 >
1. 요구사항 검토 : 요구사항을 훑어보면서 확인
2. 프로토 타이핑 : 프로토 타입 만든 후 개발 진행 동안 도출되는 요구사항 반영
-> 장점
● 최종 시스템 완성 전 추가/변경 요구사항이나 아이디어에 대한 피드백 가능
● 개발될 시스템의 사용에 대한 문제점을 시스템 완성 전 식별 가능
-> 단점
● 프로토 타입 제작에만 집중 될 수 있음
● 지속적이고 반복적인 프로토타입의 개선으로 인한 비용 부담
3. 모델 검증 : 개발된 모델이 요구사항을 충족시키는지 검증
4. 인수 테스트 : 사용자 입장에서 확인
UML : 객체지향 방법론의 장점 통합( OMG에서 표준으로 지정 )
1. 사물 : 다이어그램 안에서 관계가 형성될 수 있는 대상들
● 구조, 행동, 그룹, 주해
2. 관계 : 사물과 사물 사이의 연관성 표현
● 연관 관계
P.51 – 54
● 다이어그램 : 여러 관점에서 시스템을 가시화한 뷰 제공
-> 정적 모델링( 구조적 다이어그램 )
클래스, 객체, 컴포넌트, 배치, 복합체 구조, 패키지
< 컴포넌트와 배치 다이어그램은 구현 단계에서 사용 >
-> 동적 모델링( 행위 다이어그램 )
유스케이스, 시퀀스, 커뮤니케이션, 상태, 활동, 상호작용 개요, 타이밍
'자격증 > 정보처리기사 - 필기' 카테고리의 다른 글
소프트웨어 개발 - 통합 구현 (0) | 2020.02.04 |
---|---|
소프트웨어 개발 - 데이터 입/출력 구현 (0) | 2020.02.02 |
소프트웨어 설계 - 인터페이스 설계 (0) | 2020.01.30 |
소프트웨어 설계 - 애플리케이션 설계 (0) | 2020.01.24 |
소프트웨어 설계 - 화면 설계 (0) | 2020.01.21 |