본문 바로가기

All Categories/Special Qualifications

정보처리기사 - 소프트웨어의 뜻, 소프트웨어 개발 프로세스

반응형

1. 소프트웨어의 뜻

소프트웨어란?

소프트웨어는 컴퓨터 시스템, 프로그램, 데이터에 의해 처리된 모든 정보를 말합니다.

컴퓨터의 시스템을 구성하는 주요 요소 중 하나로, 컴퓨터를 사용하는 목적이기도 합니다.

소프트웨어가 없는 컴퓨터, 즉 하드웨어는 빈 껍질이기 때문입니다.


소프트웨어 개발 생명주기에 대해 설명하세요.

소프트웨어는 계획 단계를 시작으로 요구분석, 설계, 구현, 테스트, 유지보수 단계를 거쳐 개발됩니다.

하나의 제품소프트웨어만들기 위해 계획 단계에서 유지보수 단계에 이르기까지 일어나는 일련의 과정을 말합니다.


2. 소프트웨어 개발 프로세스

소프트웨어 개발 프로세스란?

어떤 작업에 대한 수많은 반복과 시행착오를 통하여 얻은 방법이나 도구 등에 관한 지식을 같은 작업을 수행하는 다른 사람들에게 전달함으로써 시행착오를 줄이빠르게 적응하여 일을 할 수 있도록 가이드 역할을 합니다.

여러 소프트웨어 프로세스 모델 중에서 가장 적합한 모델을 프로젝트 표준으로 정하고 모든 참여자가 그 표준의 질서에 따라 개발해야 합니다.


소프트웨어 프로세스 모델이란?

소프트웨어 개발 생명주기(Software Development Life-Cycle)라고도 하며, 공장에서 제품을 생산하듯이 소프트웨어를 개발하도록 개발의 전 과정하나의 프로세스로 정의합니다.

따라서 주어진 예산자원으로 개발하고 관리하는 방법을 구체적으로 정의합니다.

프로젝트에 대한 전체적인 기본 골격을 세워주며 그에 따른 일정 계획을 수립할 수 있고,

개발 비용 산정 뿐 아니라 여러 자원산정하고 분배할 수 있습니다.

또한 참여자 간의 의사소통 기준을 정할 수 있고 용어의 표준화를 가능케 할 뿐만 아니라 개발 진행 상황도 명확히 파악할 수 있습니다.


폭포수 모형(Waterfall Model)에 대해 설명하세요.

이전 단계로 돌아갈 수 없다는 전제하에 각 단계확실히 매듭짓고 그 결과철저하게 검토하여 승인 과정을 거친 후에 다음 단계를 진행하는 개발방법론입니다.

가장 오래되고 폭넓게 사용되는 전통적인 모형으로, 고전적 생명주기 모형이라고도 합니다.


프로토타입(Prototype Model, 원형 모형)에 대해 설명하세요.

사용자의 요구사항을 파악하기 위해 실제 개발될 소프트웨어에 대한 견본품(Prototype)을 만들어 최종 결과물을 예측하는 모형입니다.


나선형 모형(Spiral Model, 점진적 모형)에 대해 설명하세요.

나선을 따라 돌듯이 여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 완벽한 최종 소프트웨어를 개발하는 모형입니다.

보헴(Boehm)이 제안한 것으로, 폭포수 모형과 프로토타입 모형의 장점에 위험 분석 기능을 추가한 모형입니다.

누락되거나 추가요구사항을 반영할 수 있고, 유지보수 과정이 불필요하다는 장점이 있습니다.

애자일 모형(Agile Model)에 대해 설명하세요.

고객의 요구사항 변화유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발하는 모형입니다.

어느 특정 개발 방법론이 아니라 좋은 것을 빠르고 낭비 없게 만들기 위해 고객과의 소통에 초점을 맞춘 방법론입니다.

폭포수 모형과 대조적이며, 대표적인 개발 모형으로는 스크럼(Scrum), Xp(eXtreme Programming), 칸반, Lean, 기능 중심 개발(FDD) 등이 있습니다.

스크럼(Scrum) 기법이란?

팀이 중심이 되어 개발의 효율성을 높이는 기법으로,

팀원 스스로스크럼 팀을 구성하고 개발 작업에 관한 모든 것을 스스로 해결할 수 있어야 합니다.


Xp(eXtreme Programming) 기법이란?

수시로 발생하는 고객의 요구사항유연하게 대응하기 위해 고객의 참여개발과정의 반복극대화하여 개발 생산성을 향상시키는 방법입니다.

XP의 5개 핵심 가치로는 의사소통(Communication), 단순성(Simplicity), 용기(Courage), 존중(Respect), 피드백(Feedback)이 있습니다.


XP의 주요 실천 방법에 대해 나열하세요.
  1. Pair Programming(짝 프로그래밍): 다른 사람과 함께 프로그래밍을 수행함으로써 개발에 대한 책임공동으로 나눠 갖는 환경을 조성합니다.
  2. Collective Ownership(공동 코드 소유): 개발 코드에 대한 권한책임공동으로 소유합니다.
  3. Test-Driven Development(TDD, 테스트 주도 개발): 개발자가 실제 코드를 작성하기 전테스트 케이스를 먼저 작성하므로 자신이 무엇을 해야 할지를 정확히 파악할 수 있습니다.
  4. Whole Team(전체 팀): 개발에 참여하는 모든 구성원들은 각자 자신의 역할이 있고 그 역할에 대한 책임을 가져야 합니다.
  5. Continous Integration(CI, 지속적인 통합): 모듈 단위로 나눠서 개발된 코드들을 하나의 작업마무리 될 때 마다 지속적으로 통합합니다.
  6. Refactoring(리팩토링): 프로그램 기능의 변경 없이 시스템을 재구성합니다.
  7. Small Release(소규모 릴리즈): 릴리즈 기간을 짧게 반복함으로서 고객의 요구변화신속히 대응할 수 있습니다.

반응형