ysuekkom의 IT study note

[CISSP] 소프트웨어 개발 보안, SDLC 방법론 및 폭포수 모델 등 본문

CISSP/domain8 Software Development Security

[CISSP] 소프트웨어 개발 보안, SDLC 방법론 및 폭포수 모델 등

ysuekkom 2023. 1. 2. 23:13

cissp 자격증 취득 및 보안 전반 study note로, 무단 복제 및 배포를 금함

Domain8 Software Development Security 8-1

 

 

I. SDLC(Software Development Life Cycle) 방법론 -출제**

1. Waterfall Model(폭포수 모델)

   시스템 개발을 단계별로 나누어, 각 단계에서 성과 확인/평가 후 다음 단계로 넘어가는 모델이며, 

   전 단계로 회귀할 수 없어 사양변경에 유연한 대처가 어렵다.

(추후 이미지 교체 예정)

-제조업 기반(공업사회를 근간으로 하여) 개발된 모델 

-시간의 흐름을 기반으로 하여, 받아들이기 수월함

-매 단계 산출물이 반드시 존재하여 성과 관리에 유용함(산출물 = 다음 단계)

-유사한 시스템의 개발 경험이 있는 경우 효율, 품질면에서 우수함

-전 단계 회귀 불가(최대 단점), 사용자와 개발자가 달라 의사소통에 한계(오해 발생 가능)

**keyword: 시간의 흐름, 산출물, 회귀불가, 혁신적인(=완성된 것으로 확인(중간 확인 과정없이 결과물로 확인)

 

2. Waterfall Verification & Validation Model(수정된 폭포수 모델)

Validation: 실제 개발 요구사항에 만족하는지 확인(선)

Verification: 스펙대로 제대로 만들어 졌는지 확인(후)

-전 단계 회귀가능(:수정된 폭포수모델)하나, 시작 단계 혹은 임의의 단계로 돌아갈 수 없음 ‘전’ 단계 회귀 가능: 폭포수모델 단점 커버

 

3. Prototyping Model(프로토타입 모델:시제품/원형패러다임)

시스템 개발 시 사용자(고객)가 목표를 정의하였으나, 기능적 구현이 어떻게 될지 모르는 경우 시제품을 만들어 보여주는 방법

고객의 요구 사항을 식별하기 위해 만든 실제 실행이 되는 시스템(반드시 동작해야하나 모든 기능을 구현할 필요 없이 최소한의 기능 구현)

 

-매 단계 확인과 검토의 과정을 반복하며 점진적으로 시스템을 개발하는 방법 : 폭포수모델 단점2(개발자와 사용자간 오해) 극복 (장점)

-용량산정, 설계 등 근사치에 더 접근하여 가능성과 유용성을 미리 확인할 수 있음(장점)

-생각하지 못했던 기능 및 서비스(=긍적적 Side Effect)가 발생함(장점)

-최소한의 기능 구현으로 성능, 보안, 견고함 등 신뢰도 특성 무시됨(단점)

-변경이 체계적으로 이루어지지 않아 유지보수/이슈관리/변경관리가 어려움(단점)

 

4. Spiral Model(나선형 모델)

이론상 가장 좋은 모델로, 기업 내 업무개선을 위해 사용되는 방법 

Plan - Do - Check - Action의 주기를 시스템 개발에 적용하여 점진적으로 최적화, 고도화 하는 방법

추후 이미지 교체 예정

-주기를 거듭하며 최선으로 수렴되며(보완과 버전이 업그레이드 되면서), 변경사항에 대해 유연하게 대응 가능함

-똑같은 단계를 반복하면서 시간과 비용이 많이 소요됨

-프로젝트 관리가 어려움

Q)응용시스템의 최종 품질은 이를 개발하거나, 유지 보수 하는 프로세스에 의해 결정된다는 전제에서 시작한 모델은?

 

5. 기타 모델

  5.1 CBD(Component-based Development)

-나선형 모델의 많은 특징들을 결합

-컴포넌트 기반 개발은 이미 만들어져 패키지화된 컴포넌트(클래스)를 사용하여 어플리케이션을 구성

-재사용성을 이끌며, 이러한 재사용성은 많은 소프트웨어 공학에 이점을 줌

 

 5.2 RAD(Rapid Application Development)

-시스템을 빠르게 개발하면서 개발비용을 줄이고, 품질을 유지할 수 있게 하는 방법론

-자동화 개발 도구(중앙저장소)

-훈련된 개발팀으로 구성된 개발기간의 엄격한 제한

 

 5.3 CASE(Computer Aided S/W Engineering)

-컴퓨터를 활용하여 자동화한 방법론

-체계적인 시스템 문서화 기능

 

 5.4 JAD(Joint Analysis Development)

-워크샵(사용자/고객이 설계에 참여하는 개발 방법론) 위주의 환경에서 어플리케이션 개발 시 팀 단위로 접근하는 방법

 

 5.5 Cleanroom

-구조화되고 공식적인 개발법과 테스트 방법에 대한 실수와 오류를 방지하기 위한 접근법

-엄격한 인증 절차를 거쳐야만 하는 고품질의 중요한 어플리케이션에 사용

 

 5.6 XP(Extreme Programming)

-소프트웨어 개발에 있어서 아래 네 가지의 가치 추구를 통해 비즈니스 가치 실현을 최고의 목표로 하는 실천적인 개발 방법론

-단순성(Simplicity), 소통(Communication), 피드백(Feedback), 용기(Courage)

 

Q) 소프트웨어 버전을 유지/관리하는 절차는 무엇인가?          a.가용성관리 b.형상 관리 c.변경 관리 d.자원통제