[ 목차 ]
1. 소프트웨어개발 방법론 과정
1) 초기 개발 방법 : 무원칙, 개발자 위주 개발 -> 생산성 저하, 유지보수 어려움
2) 소프트웨어 위기 : 시스템 대규모화에 따라 신뢰성 저하, 개발비 증대, 개발시간 지연, 인력 부족, 인건비 상승, 계획의 지연, 요구다양, 공급<수요 등의 현상이 현저해 개발 계획의 수행을 매우 어렵게 함
3) 소프트웨어 공학 등장 : 신뢰도 높은 sw 만들기 위한 방법으로, 도구와 절차들을 체계화
4) 구조적 개발 방법론
1] 제어구조 : 순차, 반복, 선택구조 -> 순차적 실행 -> 간단하고 이해가 쉬움
2] 모둘화 -> 재사용가능
3] 폭포수 모델이 기본(계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수)
5] 소규모 프로젝트 적합
5) 객체 지향 개발 방법론
1] 객체 중심 개발 -> 재사용, 유지보수 우수 -> 소프트웨어 위기 극복
2] 객체 특징 : 다형성, 상속성, 추상화, 캡슐화, 정보 은닉
2. 소프트웨어 개발 생명주기 모델
1) 시스템을 계획, 개발, 시험, 채용하는 과정을 뜻하는 용어
2) 소프트웨어를 어떻게 개발할 것인가에 대한 추상적표현
3) 순차적 또는 병렬적 단계로 구성되며 개발 모델 또는 소프트웨어 공학 패러다임으로 정의
4) 타당선검토 - 분석 - 설계 - 개발 - 테스트 - 운영 - 유지보수 - 폐기 단계를 지님
3. SDLC의 특징
1) 개발 생명주기의 각 단계에 관련된 활동들이 정의되어 있음
2) 단계별 활동을 통해 다음 단계에 활용될 수 있는 산춘물이 작성
3) 전체 프로젝트의 비용 산정과 개발 계획을 수립할 수 있는 긴본 골격제시
4) 참여자들 간에 의사소통의 기준과 용어의 표준화
5) 문서화가 충실한 프로젝트 관리를 가능하게 함
3. SDLC의 구성단계
1) 정의단계
1] 타당선검토
2] 요구분석
2) 개발단계
1] 설계
2[ 구현
3] 테스트
3) 유지보수단계
1] 운영유지보수
2] 폐기
4. 소프트웨어 개발 생명주기 모델의 유형
1) 폭포수 모델
1] 검토/승인을 거쳐 순차적 하향식(고정적)으로 개발이 진행되는 생명주기 모델로, 이전 단계로 돌아갈 수 없음
2] 이해하기 쉬우며 다음단계 진행 전에 결과 검증과 관리가 용이
3] 요구도출이 어렵고 설계, 코딩, 테스트 지연 가능, 문제발견 지연
4] 요구사항 분석 - 설계 - 구현 - 테스트 - 유지보수
하향식 개발 : 최상위 모듈에서 코딩과 시험을 시작해 순차적으로 하위의 모듈을 코딩해서 상위 모듈과 결합
상향식 개발 : 확실하고 간단한 개념에서 보다 크고 복잡하며 추상적인 방향으로 나가는 개발 전략
5] 유지보수 종류 : 수정(오류 수정), 적응(최신 환경), 기능(기능 추가), 예방(정기적)
2) 프로토타입
1] 모형을 만들어 요구분석을 만족시키는 것
2] 핵심적인 기능을 만들어 평가한 후 구현하는 점진적 개발 방법
3] 실제 상황이 나오기 전에 가상으로 시물레이션해 최종 결과물에 대한 예측이 가능한 모형으로, 폭포수 모형 단점을 보완
4] 요구사항 도출이 용이하며 시스템 이해 용이, 의사소통 향상
5] 사용자의 오해(완제품이라는)와 폐기되는 프로토타입이 나온다는 단점이 존해
6] 과정 : 요구분석 - 프로토타입 개발, 개선 - 검토, 평가 - 승인 - 상세개발 - 설치 or 취소
3) 나선형 모델
1] 폭포수와 프로토타입 모델 장점에 위험분석을 추가한 모델
2] 계획 및 정의 - 위험 분석 - 개발(공학적 개발) - 고객 평가 단계를 계속 반복
3] 보헴이 제안했으며 점진적 모형(위험관리)으로 누락, 추가된 요구사항 첨가 가능하며 유지보수 과정이 불필요
4] 점증적인 개발로 실패할 위험감소, 테스트 용이, 피드백
5] 관리가 복잡한 단점이 존재, 시간과 비용이 많이 소요(대규모 시스템에 적합)
4) 반복 점증적 모델
1] 시스템을 여러번 나누어 릴리즈 하는 방법
2] incremental(점증, 증분, 증가) : 전체 기능을 분해한 뒤 릴리즈마다 기능을 추가개발
3] iterative(반복) : 전체 기능을 대상으로 릴리즈를 진행하면서 기능 개발
4] 위험의 조기 발견 및 최소화 전략이 구현 가능하며 변경 관리가 용이
5] 관리가 어렵고 시간과 비용이 증가
6] 반복적 모델 : 구축대상을 나눠 병렬적으록 ㅐ발 후 통합하거나 반복적으로 개발하여 점증 완성
7] 폭포수 모델이 릴리즈 하기 전에 사용자는 경험하지 못하고 피드백도 못한다는 단점을 보완하는 방법으로, 시스템을 조기에 경험하게 하고 출시를 빠르게 하기 위해 조금씩 점증적으로 개발
8] 증분형 개발모형과 진화적 개발모형으로 분류
5) RAD 모델 = 급속도 애플리케이션 개발
1] 짧은 주기(2~3달) 동안 소프트웨어를 개발하기 위한 순차적 프로세스 모델
2] 고객에게 핵심 요구사항 만족과 개발기간 단축이 목적
3] 꼼꼼하게 테스트나 위험분석을 함 수 없기에 위험이 적고 빠른 개발이 필요한 프로젝트에 적합
4] 우수한 소프트웨어 개발도구(CASE)를 이용해 전총적 개발 방법보다 적은 시간과 비용을 투자하더라도 보다 나은 품질의 소프트웨어를 개발 할 수 있는 과정
5] 전체 개발 과정을 하나로 통합, 기존의 반복적이고 점진적 개발 과정은 그대로 수용하면서도 개발 과정 초기에 사용자에게 실행 가능한 기본적 프로토 타입을 제공하며 사용자의 요구를 훨씬 더 명확하게 수용(자용자 적극 참여)해 하추에 일어날 수 있는 문제를 줄이고 설계 과정을 그대로 개발에 재사용해 전체적 개발 기간의 단축을 꾀함
6] JRP 분석 : 고객과 비즈니스모델 작성, 검토, 반복을 통한 분석
7] JAD 설계 : 고객과 프로토타입 반복을 통한 시스템 설계
8] 컷오버 : 기존에 운영되던 정보시스템을 완전히 중단시키고 새로 구축된 정보시스템을 본격 오픈
9] 요구사항 이해와 범위의 명확한 설정시 신속하고 완전한 기능 구현이 가능하지만 기술적 위험이 높을 경우 부적합하며 적절한 모듈화가 필수고 책임감 있는 구성원이 필요
5. 소프트웨어 개발 방법론
1) 소프트웨어 공학 원리를 소프트웨어 개발 생명주기에 적용한 개념으로, 정보시스템 개발을 위한 작업 활동, 절차,ㅡ 산출물, 기법 등을 체계적으로 정리한 것
2) 시스템 종류, 프로세스, 조직, 사람, 문화에 따라 다르게 선정되어야 함
3) 구성
1] 작업절차 : 작업단계의 체계
2] 작업방법 : 각 단계별 수행할 일
3] 산출물
4] 기법
5] 도구
6. 소프트웨어 개발 방법론 유형
1) 전통적 개발 방식
1] 검토, 승인을 거쳐 순차적하향식(구조적개발)으로 개발이 진행되는 생명주기 모델
2] 이해가 쉬우며 다음단계 진행 시 진행 전에 결과 검증, 관리가 용이
3] 요구도출이 어렵고 설계, 코딩, 테스트 지연이 가능하며 문제발견 지연도 가능
전통적 개발 방식 유형 특징
2) 애자일 방법론
1] 절차보다 사람이 중심이 되어 변화에 유연하고 신속하게 적응, 효율적 개발, 주위 변화 능동, 능동적으로 대응하는 방법
2] 고객의 요구사항 변화에 유연하게 대응하기 위해 일정한 주기를 반복하면서 개발
3] 사용자 스토리 -> 계획 -> 개발 -> 승인, 테스트의 반복
4] 변화 대응 : 계획 준수보다 환경 변화에 즉시 대응
5] 동작소프트웨어 : 포괄적 문서화, 정형적 프로세스를 지양
6] 고객협력 : 계약협상 중심에서 탈치
7] 개인과 상호작용 : 프로세스나 도구보다 구성원간의 의사소통 중시
8] 경험적 프로세스 제어모델로 개발을 관리
9] 제품 백로그(요구사항)을 일정 타입박스 기간 동안 설계, 개발 테스트를 수행, 구현된 소프트웨어를 고객에게 시연하며 이해하기 힘든 산출물이 아닌 경우 동작하는 소프트웨어에 의한 확인 수행을 통해 고객 요구사항을 조기에 명확히 하는 활동을 반복 수행
7. 소프트웨어
1) 하드웨어를 동작 시켜 사용자가 작업을 편리하게 수행하도록 하는 프로그램과 자료구조
2) 프로그램 개발, 운용, 유지보수와 관련된 모든 문서와 정보를 포함
3) 특성
1] 비가시성 : 구조가 외부에 노출되지 않고 코드에 내재
2] 복잡성 : 정형적 구조 없이 복잡, 비규칙, 비정규적
3] 비마모성 " 외부 환경에 의해 마모되지 않고 품질이 나빠짐
4] 복제성 : 간단하고 쉽게 복제 가능
5] 변경성 : 수정 가능한 진화성
6] 순응성 : 요구 및 환경의 변화에 적응하는 유연성
7] 무형성 : 실체적 형체가 없어 FP등으로 유형화하고자 함
4) 소프트웨어 분류
1] 기능에 의한 분류 : 시스템 소프트웨어, 응용 소프트웨어
2] 사용 분야 분류 : 프로그래밍, 문서, 통신, 분산처리, 멀티미디어, 개발, 인공지능
3] 개발 과정 성격 분류 : 프로토타입, 프로젝트 산출물, 패키지
4] 정보처리 방법 번류 : 일관처리, 온라인, 실시간
8. 시스템
1) 특정한 목적을 달성하기 위해 여러가지 관련된 구성요소들이 상호작용하는 유기적 집합체
2) 전체적으로 통일된 하나의 개체를 형성하면서 각각의 고유한 기능을 수행하고 공통적 목표를 달성하기 위해 상호작용하는 요소들의 집합
3) 행위적 관점에서 볼 때 시스템을 투입물을 받아 조직화된 변환과정을 통해 목표에 부합되는 산출물을 만들어내는데 관여되는 요소들의 집합
4) 시스템의 구성 요소
5) 시스템의 구성
1] 입력 : 처리 방법, 데이터, 조건을 시스템에 투입
2] 처리 : 입력된 데이터를 처리 방법과 조건에 따라 처리
3] 출력 : 결과를 시스템에서 산출
4] 제어 : 처리과정이 올바르게 진행되는지 감독
5] 피드백 : 목표 달성을 위해 반복 처리
6) 구조적 측면 특성
1] 입력 - 처리 - 출력 IPO의 구조를 지님
2] 피드백 구조를 지님
3] 계층적 구조를 지님
7) 기능적 측면 특성
1] 목표 지향적 : 시간 지연 유발
2] 상승 작용적 : 시스템 에너지 발생
3] 자기 제어적 : 엔ㅍ트로피 억제
9. 소프트웨어 위기
1) 개발 속도가 하드웨어 개발속도를 따라가지 못해 소프트웨어에 대한 사용자의 요규를 처리할 수 없는 문제가 발생
2) 원인 : 소프트웨어 특징 이해 부족, 소프트웨어 관리 부재, 프로그래밍에만 치중
3) 문제점
1] 개발인력 부족과 인건비 상승
2] 성능 및 신뢰성 부족
3] 개발 기간 지연 및 개발 비용 증가
4] 유지보수가 어려워 비용 증가
5] 소프트웨어 생산성 저하
6] 소프트웨어 품질 저하
10. 소프트웨어 공학의 필요성
1) 소프트웨어 위기를 극복하기 위해 품질과 생산성 향상을 목적으로 함
2) IEEE 정의 : 소프트웨어의 개발, 운용, 유지보수, 폐기 처분에 대한 체계적인 접근 방안
3) FAIRLEY : 체계적으로 생산하고 유지보수
4) BOEHM : 과학적인 지식을 소프트웨어 설계와 제작에 응용
11. 소프트웨어 공학의 접근 방법
1) 도구 : 케이스 도구 사용
2) 방법 : 소프트웨어 구축 기술적 방법 제공
3) 절차 : 개발 방법과 도구가 사용되는 순서, 계층화 기술들을 결합시켜 적잘한 방버으로 개발, 유지
4) 발전과정 : 60년대 소프투에어 공학과 구조적 프로그래밍 시작, 70년대 구조적 분석, 설계 도립, 80년대 하드웨어 가격 하락, 85년 객체지향 기술과 케이스 등의 활용, 재공학 시작
5) 품질
1] 사용자가 요구하는 대로 동작
2] 하드웨어 자원을 효율적으로 이용
3] 일정 시간 내 주어진 조건하에 원하는 기능 실행
4] 처리 정라체 맞게 수행되어 정확한 결과 산출
5] 개발, 유지보수 등이 초기 예상 비용 이내에 수행
6] 적당한 사용자 인터페이스를 제공해 사용 편리
7] 유지보수 용이, 신뢰성 높음
8] 에러 최소화
9] 소프트웨어 사용법, 구조 설명, 성능, 기능이 이해 쉬움
10] 실행 속도 빠르고 기억 용량 적게 차이
6] 생산선
1] 투입된 비용, 노력에 대한 생산량
12. 소프트웨어 공학의 3R
1) 완성된 소프트웨어 프로그램을 기반으로 역공학, 재공학, 재사용을 통해 소프트웨어의 생산성을 극대화 하는 것
2) 필요성
1] SW 위기 극복
2] 개발 생산성 향상
3] 유지보수 비용 절감
4] 소프트웨어 변경 요구사항의 신속한 대응
3) 역공학 : 자동화된 도구의 도움으로 물리적 수준의 소프트웨어 정보를 논리적은 소프트웨어 정보의 서술로 추출하는 프로세스로, 소프트웨어를 분석해 소프트웨어 개발 과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만들어내는 작업
4) 재공학 : 자동화된 도구로 현존하는 시스템을 점검, 수정하는 프로세스로, 기존 시스템을 이용하여 보다 나은 시스템을 구축하고 새로운 기능을 추가해 소프트웨어 성능을 향상시키는ㄱ ㅓㅅ
5) 재사용 : 이미 개발되어 그 기능, 성능 및 품질을 인정받았던 소프트웨어의 전체 도는 일부분을 다시 사용하는 것
6) 좋은 소프트웨어의 조건에 독창성은 없음
'자격증 > 정보처리기사 5과목' 카테고리의 다른 글
5-6강. IT프로젝트 정보시스템 구축 관리-네트워크 구축 관리(2) (0) | 2020.05.27 |
---|---|
5-5강. IT프로젝트 정보시스템 구축 관리-네트워크 구축 관리(1) (0) | 2020.05.27 |
5-4강. SW개발 방법론 활용-SW개발 방법론 테일러링 (0) | 2020.05.26 |
5-3강. SW개발 방법론 활용-SW개발 방법론 선정(3) (0) | 2020.05.25 |
5-2강. SW개발 방법론 활용-SW개발 방법론 선정(2) (0) | 2020.05.25 |