-
정보처리기사 공부 (1) 소프트웨어 설계-생명주기,기본원칙,개발모형보안 2022. 12. 27. 16:52
소프트웨어 생명 주기 (software life cycle)
소프트웨어 생명 주기란 소프트웨어 개발 방법론의 바탕이 되는것
개발하기 위해 정의하고 운용,유지보수등의 과정을 각 단계별로 나눈것
소프트웨어의 개발단계와 각단계별 주요 활동
그리고 활동의 결과에대한 산출물로 표현, 소프트웨어 수명 주기라고도 한다.
소프트웨어 생명주기를 표현하는형태를
소프트웨어 생명주기 모형,소프트웨어 프로세스 모형,소프트웨어 공학패러다임 이라고도함
소프트웨어 공학(SE: software Engineering)
소프트웨어의 위기를 극복하기 위한 방안으로 연구된 학문
여러가지 방법론,도구,관리기법들을 통해 소프트웨어의 품질과 생산성 향상을 목적으로함
소프트웨어 공학의 기본원칙
현대적인 프로그래밍 기술을 계속적으로 적용해야함.
개발된 소프트웨어의 품질이 유지되도록 지속적으로 검증해야 함.
소프트웨어 개발 관련 사항 및 결과에 대한 명확한 기록을 유지해야 함.
폭포수 모형(Waterfall Model)
폭포수 모형- 폭포에서 한번 떨어진 물은 거슬러 올라 갈 수 없듯이 소프트웨어 개발도
이정 단계로 돌아갈 수 없다는 전제하에 각 단계를 확실히 매듭짓고 그 결과를 철저하게
검토하여 승인 과정을 거친후에 다음 단계를 진행하는 개발 방법론이다.
폭포수 모형은 소프트웨어 공학에서 가장 오래되고 가장 폭넓게 사용된 전통적인 소프트웨어 생명주기 모형이다
고전적 생명 주기 모형이라고도함
소프트웨어 개발 과정의 한 단계가 끝나야만 다음 단계로 넘어 갈 수 있는 선형 순차적 모형임
모형을 적용한 경험과 성공사례가 많다.
각 단계가 끝난후 다음 단계를 수행하기위한 결과물이 명확하게 산출 되어야함.
-장점-
단순한 선형 모델
단계별로 정형화된 접근방법
프로젝트의 진행 단계를 확인하기 쉬움
-단점-
변경 수용이 어려움(정형화됨)
대형프로젝트에 사용하기 부적합함
지나친 문서화
일정 지연 가능성이 큼
나선형 모형(Spiral Mode)
나선형 모형은 보햄(Boehm)이 제안한 것으로, 폭포수모형과 프로토타입 모형의 장점에 위험분석기능을 추가한 모형임
나선을 돗드이 여러번의 소프트웨어 개발 과정을 거쳐 점진적으로 완벽한 최종 소프트웨어를 개발하는것
점진적 모형이라고도 함
소프트웨어를 개발하면서 발생 할 수 있는 위험을 관리하고 최소화하는것을 목적으로함.
점진적으로 개발과정이 반복되므로 누락되거나 추가된 요구사항을 첨가할 수 있고 정밀함,유지보수과정이 필요없음.
※애자일 모형(Agile Model)※
고객의 요구사항의 변화에 유연한 대처가 가능하도록 일정한 주기를 반복하면서 개발과정을 진행함
애자일 모형은 어느 특정 개발 방법론이 아니라 좋은것을 빠르고 낭비 없게 만들기 위해
고객과의 소통에 초점을 맞춘 방법론을 통칭한다.
애자일 모형은 기업활동 전반에 걸쳐 사용된다.
애자일 기반의 개발모형은
스크럼,XP,칸반,리안,크리스탈,ASD,기능중심개발,DSDM,DAD 등이 있다.
애자일 개발 4가지 핵심가치
1.프로세스와 도구보다는 개인과 상호작용에 더 가치를 둔다.
2.방대한 문서보다는 실행되는 소프트웨어에 더 가치를 둔다.
3.계약 협상보다는 고객과 협업에 더 가치를 둔다.
4.계획을 따르기 보다는 변화에 반응하는 것에 더 가치를 둔다.
스크럼
팀이 중심이 되어 개발의 효율성을 높인 개발모형
스크럼은 팀원 스스로가 스크럼팀을 구성해야 하며 개발작업에 관한 모든것을 스스로 해결할 수 있어야한다.
스크럼 팀은 제품 책임자,스크럼 마스터,개발팀으로 구성된다.
제품 책임자
이해관계자들 중 개발될 제품에 대한 이해도가 높고, 요구사항을 책임지고 의사 결정할 사람으로 선정하는데,
주로 개발의뢰자나 사용자가 담당한다.
이해관계자들의 의견을 종합하여 제품에 대한 요구사항을 작성하는 주체다.
제품에 대한 테스트를 수행하면서 주기적으로 요구사항의 우선순위를 갱신한다.
스크럼 마스터
스크럼 팀이 스크럼을 잘 수행할 수 있도록 객관적인 시각에서 조언을 해주는 가이드 역할.
스크럼 회의를 주관하여 진행 사항점검, 개발과정의 장애 요소를 공론화하여 처리함
개발팀
제품 책임자와 스크럼 마스터를 제외한 모든 팀원들
개발자외에는 디자이너, 테스터등 제품 개발을 위해 참여하는 모든사람이 대상이됨.
스크럼 개발 프로세스
제품 백로그
제품의 필요한 모든 요구사항을 우선순위에 따라 나열한 목록
스프린트 계획회의
제품 백로그중 스프린트에서 수행할 작업을 대상으로 단기일정 수립
스프린트
실제 개발작업을 진행함
일일 스크럼 회의
모든팀원들이 짧은 시간동안 진행사항을 점검함.
스프린트 검토회의
부분,전체 완성 제품이 요구사항에 부합하는지 사용자가 포함된 참석자 앞에서 테스팅 수행
스프린트 회고
스프린트 주기를 되돌아보며 정해놓은 규칙을 잘 준수했는지, 개선할 점은 없는지 등을 확인하고 기록함
XP(eXtreme Programming)
수시로 발생하는 고객의 요구사항에 유연하게 대처하기위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상시키는 방법
짧고 반복적인 개발주기, 단순한 설계, 고객의 적극적 참여를 통해 소프트웨어를 빠르게 개발하는것이 목적
핵심가치
의사소통,단순성,용기,존중,피드백
XP개발프로세스
짝프로그래밍
다른사람과 함께 프로그래밍을 수행함으로써 개발에 대한 책임을 공동으로 나눠 갖는 환경을 조성함
공동코드소유
개발 코드에 대한 권한과 책임을 공동으로 소유함
테스트 주도 개발
개발자가 실제코드를 작성하기전 테스트케이스를 먼저작성하여 자신이 무엇을 해야할지 정확하게 파악함
테스트가 지속적으로 진행될 수 있도록 자동화된 테스팅도구를 사용함
전체팀
개발에 참여하는 모든 구성원(고객포함)들은 각자의 역활에 책임을 가져야함
계속적인통합
모듈 단위로 나눠 개발된 코드들은 하나의 작업이 마무리 될떄마다 지속적으로 통합됨
디자인개선(리팩토링)
프로그램 기능의 변경 없이,단순화,유연성 강화 등을 통해 시스템을 재구성함
소규모 릴리즈
릴리즈 기간을 짧게 반복함으로써 고객의 요구 변화에 신속히 대응할 수 있음
'보안' 카테고리의 다른 글
프로젝트 -eyepass(시선추적을 이용한 패스워드) (0) 2022.12.27 안티리버싱(anti-reversing) (0) 2022.11.22 피아트-샤미르(Fiat-Shamir)프로토콜 (0) 2022.11.16 도커(DOCKER) 상에서 비트코인 다운로드하기 (0) 2022.11.15 리버싱(0)-리버스엔지니어링이란 (0) 2022.11.01