소프트웨어 개발 방법론 활용
소프트웨어 개발 방법론
구조적 방법론
정형화
된 분석 절차에 따라 사용자 요구사항 파악해 문서화하는 처리중심
의 방법론
- 분할과 정복 원리 적용
- 1960년대 이전까지 많이 적용된 소프트웨어 개발방법론
- 타당성검토 - 계획 - 요구사항 - 설계 - 구현 - 시험 - 운용/유지보수
정보공학 방법론
정형화된 기법들을 상호 연관성있게 통합 및 적용하는 자료중심
의 방법론
- ERD를 사용한다
- 정보 전략 계획 수립 - 업무영역 분석 - 업무 시스템 설계 - 업무 시스템 구축
객체지향 방법론
현실 개체를 기계부품처럼 객체로 만들어 조립하듯이 개발
- 내가 프로젝트에서 여태 해오던 방법
- 요구분석 - 설계 - 구현 - 테스트 및 검증 - 인도
컴포넌트 기반 방법론
기존 소프트웨어나 시스템을 구성하는 컴포넌트를 조합해 새로운 애플리케이션 만드는 방법론
- 컴포넌트 재사용 가능
- 요지보수 확장성이 우수함
- 개발 준비 - 분석 - 설계 - 구현 - 테스트 - 전개 - 인도
애자일 방법론
고객 요구사항 변화에 유연하게 대응하도록 일정한 주기 반복 개발
- XP, 스크럼, 칸반, 크리스탈 등이 있다
- 요구사항이후 계획 - 개발 - 승인테스트 반복
제품 계열 방법론
특정 제품에 적용하고 싶은 공통된 기능 정의해 개발
- 임베디드 소프트웨어에 적합
S/W 공학의 발전적 추세
소프트웨어 재공학 주요 활동
- 분석 : 동작이해, 재공학 대상 선정
- 재구성 : 향상을 위해 코드 재구성 but 동작 바뀌지않음
- 역공학 : 개발을 반대방향으로 코드 복구또는 설계도 추출
- 이식 : 다른 환경에서 사용할수있도록 변환하는 활동
CASE
요구분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는
일부를 컴퓨터와 전용 소프트웨어 도구를 사용해 자동화하는 것
- 상위 CASE 도구 : 요구분석, 설계과정
- 하위 CASE 도구 : 구현, 테스트 과정
주요기능
- 생명 주기 전 단계의 연결
- 개발 모형 지원
- 그래픽 지원
- 모순 검사 및 오류검증
- 자료흐름도 작성
원천 기술
- 구조적 기법
- 프로토타이핑
- 자동프로그래밍
- 정보저장소
- 분산처리
이점
- 개발 기간 단축, 비용 절감
- 품질 향상
- 유지보수 간편
- 생산성 향상
- 재사용성 향상
- 표준을 확립(일관성)
- 문서화 EASY
상향식 비용산정 기법
LOC(source Line Of Code) 기법
- 말그대로 코드 라인수에 따라 비용산정방법(보면 계산 가능함)
- 예측치를 구하긴 위해선 비관치,낙관치,기대치가 있음
- 예측치 = (낙관치 + 4*비관치 + 기대치) / 6
- 낙관치 : 가장 적게 측정된 코드라인수
- 비관치 : 가장 많이 측정된 코드라인수
- 기대치 : 측정된 모든 코드라인수의 평균
수학적 산정 기법
COCOMO 모형
- 보헴(Boehm)이 제안한 것으로 LOC에 의한 비용 산정 기법이다.
- 중소 규모 소프트웨어 프로젝트 비용 추정에 적합
- 결과는 완성에 필요한 노력으로 나타냄
개발 유형
- 조직형(Organic) : 5만라인 이하(비즈니스 자료 처리, 과학 기술 계산용등)
- 반분리형(Semi-Detached) : 30만 라인 이하(운영체제,데이터베이스 관리시스템등)
- 내장형(Embedded) : 30만 라인 이상, 초대형 규모(미사일 유도, 신호 제어등)
Putnam 모형
- Putnam이 제안함, 생명 주기 예측 모형이라함
Rayleigh-Norden
곡선의 노력 분포도를 기초함- 개발 기간 up -> 적용 인원 노력 down
- SLIM : Rayleigh-Norden곡선과 Putnam 예측 모델 기초로한 자동화 추정도구
FP(기능점수) 모형
- 알브레히트가 제안, 기능 증대시키는 요인별로 가중치 부여,
- 요인별 가중치 합산해 총 기능 점수 산출,
- 영향도도 같이 이용해 FP 구한 후 비용산정
- ESTIMACS : FP 모형 기초로 한 자동화 추정 도구
소프트웨어 기능 증대 요인
- 입력양식
- 출력 보고서
- 명령어
- 데이터 파일
- 외부루틴과의 인터페이스
프로젝트 일정 계획
PERT(Program Evaluation and Review Technique)
- 원 노드에는 작업, 간선에는 낙관치, 기대치, 비관치를 표시
- 낙관치 : 최소시간
- 기대치 : 정상시간
- 비관치 : 최대시간
- 결정 경로는 가장 긴 기간이 걸리는 방향으로 설정
PERT로 알 수 있는 사항
- 결정경로
- 작업에 대한 경계 시간
- 작업 간의 상호 관련성
CPM(임계 경로 기법)
- 임계 경로 : 최장 경로
- 노드는 작업, 간선은 전후 의존 관계
CPM 네트워크 일정 계획 순서
- 프로젝트 규모 추정
- 각 단계 필요한 작업 분할
- 상호 의존 관계를 CPM 네트워크로 나타냄
- 일정 계획을 간트차트로 나눔
간트차트(Gantt Chart)
- 작업 시작 종료 일정을 막대 도표를 이용해 표시하는 일정표
- 수평막대 : 각 작업의 기간
PERT말고는 사용해봐서 보면 알거임
소프트웨어 개발 표준
ISO/IEC 12207
- 국제표준에서 만든 표준 소프트웨어 생명 주기 프로세스
- 기본 생명주기 프로세스, 지원 생명 주기 프로세스, 조직 생명 주기 프로세스 지원
- 기본 생명 주기 프로세스: 획득, 공급, 개발, 운영, 유지보수 프로세스
- 지원 생명 주기 프로세스 : 품질보증, 검증, 확인, 활동검토, 감사 문서화, 형성관리, 문제해결 프로세스
- 조직 생명 주기 프로세스 : 관리, 기반구조, 훈련, 개선 프로세스
CMMI(Capability Maturity Model Integration)
- 업무능력 및 조직 성숙도 평가 모델
CMMI 성숙도 5단계
- 초기
- 관리
- 정의
- 정략적 관리
- 최적화
SPICE(Software Process Improvement and Capability dEtermination)
- ISO/IEC 15504가 공식명칭
- 소프트웨어 품질 향상을 위해 프로세스 평개 및 개선하는 국제 표준
SPICE 프로세스 수행 능력단계
- Level 0 - 불완전
- Level 1 - 수행
- Level 2 - 관리
- Level 3 - 확립
- Level 4 - 예측
- Level 5 - 최적화
소프트웨어 개발 프레임워크
프레임워크 특성
- 모듈화 : 캡슐화를 통해 모듈화를 강화하고 영향을 최소화함으로 품질향상, 모듈화로 인해 유지보수 용이
- 재사용성 : 재사용 가능한 모듈을 제공해 여러 이점
- 확장성 : 다형성을 통한 인터페이스 확장이 가능해 다양한 형태와 기능을 가진 애플리케이션 개발 가능
- 제어의 역흐름 : 개발자가 관리 통제할 객체 제어를 프레임워크에 넘겨 생산성 향상
IT프로젝트 정보 시스템 구축 관리
신기술 관련은 최근 전산 필기에서 본적이 단 한번도 없기에
배제하고 갈것이며 필요할때 다시 추가하도록 하겠다.
네트워크 구축
네트워크 설치 구조는 통신망을 구성하는 요소들을 공간적으로 배치하는 방법
성형
- 중앙 집중식
- Point to Point 방식
- 단말장치의 추가 제거가 쉬움
- 교환 노드의 수가 가장 적음
링형
- 이웃한 단말장치끼리 Point to Point 방식
- 단방향, 양방향이 있는데 단방향일 경우 하나라도 고장나면 전체 영향끼침
- 단말장치의 추가/제거 및 기밀 보호 어렵
- 분산 및 집중 제어 모두 가능
버스형
- 물리적 구조 간단, 단말장치 추가 제거 용이
- 단말장치 고장 나도 전체에 영향 x
- 기밀 보장 어렵, 통신 회선 길이 제한
계층형
- 분산 처리 시스템 구성 방식
- 트리형이라 생각하면됨
망형
- 모든 지점의 컴퓨터 단말장치 연결, 노드의 연결성이 높음
- 많은 단말자치로 부터 많은 양 통신 필요할때
- 공중 데이터 통신망에서 사용
- 노드수가 n개면, n(n-1)/2의 회선, n-1개의 포트 필요
네트워크 분류
LAN(근거리 통신망; Local Area Network)
- 주로 버스형이나 링형 구조 사용
- 전송 속도 빠르고 에러 발생률 낮음
- 자원공유를 목적
WAN(광대역 통신망; Wide Area Network)
- 국가와 국가 처럼 멀리떨어진 사이트 연결
- 통신속도 느림, 에러발생률도 높음
- 일정 지역 사이트끼리 근거리통신망으로 연결후 각근거리 통신망을 연결하는 방식
LAN의 표준안
너무 지엽적이라 안나올거 같은데 가끔씩 자꾸 보이길래
한번씩 보다보면 외워질수도 있으니 기록해두겠다.
- 802.1 : OSI 참조 모델과 관계,통신망 관리등 관한 규약
- 802.2 : 논리링크제어(LLC) 계층에 관한 규약
- 802.3 : CSMA/CD 방식의 매체 접근 제어(MAC) 계층에 관한 규약
- 802.4 : 토큰 버스 방식의 MAC 계층에 관한 규약
- 802.5 : 토큰 링 방식의 MAC 계층에 관한 규약
- 802.6 : 도시형 통신망(MAN)에 관한 규약
- 802.9 : 종합 음성/데이터 네트워크에 관한 규약
- 802.11 : 무선 LAN에 관한 규약
802.11의버전
- 802.11(초기버전) : 2.4GHz, CSMA/CA 기술을 사용해 최고 2Mbps전송속도
- 802.11a : 5GHz, OFDM 기술 사용해 최고 54Mbps까지 지원
- 802.11b : 802.11 초기버전 개선안, 최고 11Mbps속도
- 802.11e : 802.11 의 부가기능 표준, QoS기능 지원을 위해 MAC 계층에 해당하는 부분 수정
- 802.11g : 2.4GHz, but 최고 54Mbps까지 전송속도 지원
- 802.11i : 802.11의 보안 기능 표준, 인증방식으로 WPA/WPA2사용
- 802.11n : 2.4GHz, 5GHz 사용하는 규격 최고 600Mbps까지 전송속도 지원
WPA(Wi-Fi Protected Access) : 와이파이에서 제정한 무선 랜 인증 및 암호화 관련 표준
WPA2 : 802.11i표준을 완전 수용못한 WPA 개선버전
CSMA/CD(Carrier sense Multiple Access/Collision Detection)
- 데이터 프레임간의 충돌이 발생하는 것을 인정하고 해소를 위해 CSMA 방식에 충돌 검출 기능과 충돌 발생시 재송신하는 기능 부가
- 유선 방식
- 충돌 일어나면 감지하고 멈춘뒤 다시 시도
- 옛날 유선 이더넷에서 사용
CSMA/CA(Carrier Sense Multiple Access/Collision Avoidance)
- 무선 랜에서 데이터 전송시 매체가 비어있음확인후 충돌피하기위해 일정시간 기다린후 데이터 전송
- 무선 방식
- 충돌을 최대한 미리 피하려함
- wifi같은 무선 네트워크에서 사용
경로 제어 / 트래픽 제어
경로제어(Routing)
- 송수신 측 간의 경로 중에서 최적 패킷 교환경로를 결정하는 기능
- 한 경로에 데이터의 양이 집중되는 것을 피하면서 최저 비용으로 최단 시간 송신 가능한 경로
경로 제어 프로토콜(Routing Protocol)
IGP(Interior Gateway Protocol, 내부 게이트 웨이 프로토콜)
- 하나의 자율 시스템 내의 라우팅에 사용되는 프로토콜
- 자율시스템 : 하나의 도메인에 속하는 라우터 집합
- RIP(Routing Information Protocol)
- 현재 가장 널리 사용됨
- 거리 벡터 라우팅 프로토콜
- 최단 경로탐색으로 벨만 포드 알고리즘 사용
- 최대 홉수를 15로 제한
- OSPF(Open Shortest Path First protocol)
- RIP 단점 해결한 인터넷 프로토콜, 대규모 네트워크에서 사용
- 링크 상태 라우팅 프로토콜
- 최단 경로 탐색에 다익스트라 알고리즘 사용
- 아직까진 RIP를 많이 사용함
- 다익스트라 vs 벨만포드
- 다익스트라 : 벨만포드보다 빠름 대신 음수가중치 못함
- 벨만포드 : 다익스트라보단 느림 대신 음수가중치 가능 안전함
- 둘다 최적경로를 찾는 알고리즘
EGP(Exterior Gateway Protocol, 외부 게이트웨이 프로토콜)
- 자율 시스템간의 라우팅, 게이트웨이 간의 라우팅에 사용되는 프로토콜
BGP(Border Gateway Protocol)
- EGP 단점 보완
- 초기에는 전체 경로 제어표를 교환 이후에는 변화된 정보만 교환
트래픽 제어 기법
- 흐름 제어
- 폭주(혼합) 제어
- 교착 상태 방지 기법
흐름 제어(Flow Control)
- 네트워크 내 원활한 흐름을 위해 패킷의 양이나 속도를 규제
- 송수신 간의 처리속도 또는 버퍼 크기 차이때매 생길수 있는 수신측 버퍼의 오버플로 방지를 위한 기능
정지-대기
한번에 하나의 패킷만 전송
슬라이딩 윈도우
알고리즘 이름처럼 미리 정해진 패킷의 수만큼 연속적으로 전송하는 방식, 패킷의 최대치를 window size라 부름
폭주(혼잡) 제어(Congestion Control)
- 네트워크 내 패킷수를 조절해 네트워크의 오버플로를 방지
느린시작
윈도우 크기를 2배씩 증가시켜 초기엔 느리지만 갈수록 빨라짐
임계값 도달하면 혼잡회피 단계로 넘어감
혼잡회피
느린시작하다 임계값오면 혼잡으로 간주하고 회피를 위해
윈도우크기를 1씩 선형적으로 증가 시켜 혼잡 예방
교착상태(Dead Lock) 방지**
교착 상태 : 교환기 내 패킷들을 축적하는 공간이 꽉차 다음 패킷들이 기억공간에 들어가기 위해 무한정 기다리는 현상
- 교착상태에 있는 단말장치 선택해 패킷 버퍼 폐기
회복 / 병행제어
회복관리기
- DBMS의 구성요소
- 트랜잭션이 성공적으로 완수 x -> undo시켜 모든변화 취소
- 메모리 덤프, 로그를 이용하여 회복함
- 덤프 : 주기적으로 데이터베이스 전체 복사해두는것
- 로그 : 갱신되기 전후의 내용을 기록하는 별도의 파일, 저널이라함
회복기법
연기갱신기법
- 트랜잭션 성공하기까지 데이터베이스에 대한 실질적인 갱신을 연기함
- 수행되는 동안 갱신내용은 log에 저장
- 장애 발생해 rollback되도 실제 데이터베이스에 영향x 그래서 undo할필요 x
- Redo 작업만 가능
- Redo : 덤프, 로그를 사용해 최근 정상적 데이터베이스로 회복시킨후 트랜잭션 재실행
즉각갱신기법
- 트랜잭션이 데이터를 갱신하면 부분 완료되기 전이라도 즉시 실제 데이터 베이스에 반영
- 장애를 대비해 갱신 내용들을 log에 보관
- redo, undo 둘다 가능
그림자페이지 대체 기법(Shadow Paging)
- 갱신 이전의 데이터베이스를 일정 크기로 나눠 페이지마다 복사본 저장후 장애로 rollback시 그림자페이지 대체
- 그림자 페이지가 대체해주기 때문에 log, undo, redo 필요없음
검사점 기법(check Point)
- 특정 단계에서 재실행 가능하도록 내용,상황등 정보와 함께 검사점을 로그에 저장해 장애발생시 검사점부터 다시 시작
- 회복시간을 아낄수 있음
병행제어
다중프로그램 이점을 활용할때 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 상호작용을 제어하는것
병행제어 목적
- 데이터베이스 공유를 최대화
- 시스템의 활용도를 최대화
- 데이터베이스의 일관성 유지
- 사용자 응답시간 최소화
병행제어 기법의 종류
로킹(Locking)
- 트랜잭션들이 로킹 단위를 액서스하기 전에 lock을 요청해서 lock이 허가되야만 액서스 할 수 있도록하는 기법
로킹단위
- 병행제어에서 한꺼번에 로킹 할 수 있는 단위
- 데이터베이스, 파일 ,레코드, 필드 등이 로킹 단위가 됨
- 로킹단위 up -> 로크수 down, 병행수준 down, 관리 easy
- 로킹단위 down -> 로크수 up, 병행수준 up, 관리 복잡(오버헤드 증가)
- 병행수준 : 높으면 데이터베이스 공유도가 증가 낮으면 감소
타임스탬프 순서(Time Stamp Ordering)
- 직렬성 순서를 결정하기 위해 순서를 미리 선택하는 기법중 가장 보편적
- 트랜잭션 실행전 시간표(time stamp)를 부여하여 부여된 시간에 따라 작업 수행하는 기법
- 교착상태 발생 x
최적 병행수행(검증기법,확인기법,낙관적기법)
- 병행하고자하는 트랜잭션들이 대부분 read only일 경우 충동률이 낮기때문에 병행제어 기법 사용하지 않아도 일관성 유지한다는 점을 이용한 기법
다중 버전 기법
- 타임스탬프 개념 이용, 다중 버전 타임 스탬프 기법이라함
- 갱신 될때 마다 버전을 부여해 관리함
교착상태
교착상태 발생의 필요 충분 조건
- 상호배제(Mutual Exclusion) : 한번에 한개의 프로세스만이 공유 자원을 사용
- 점유와 대기(Hold and Wait) : 프로세스가 어떤 자원을 할당받은 상태에서 다른 자원을 기다리는 상태
- 비선점(Non-preemption) : 다른 프로세스에 할당 자원 끝나기 전까지 강제로 뺏을수 없음
- 환형대기(Circular Wait) : 점유와 대기 하는 프로세스가 원형을 이루고 있는 관계
교착상태 해결방법
- 예방기법(Prevention) : 사전에 시스템을 제어하는 방법, 교착상태 4가지중 하나 제거함, 자원의 낭비가 가장심한 기법
- 회피기법(Avoidance) : 발생시 적절히 피해가는 방법, 은행원알고리즘
- 발견기법(Detection) : 점검해 교착상태있는 프로세스와 자원 발견, 교착상태 발견 알고리즘과 자원할당 그래프등을 사용
- 회복기법(Recovery) : 교착상태 일으킨 프로세스 종료 or 자원을 선점시켜 회복하는 것
은행원알고리즘
E.J.Dijkstra가 제안함, 은행에서 모든 고객 요구가 충족되도록 현금 할당하는데서 유래함