공부 기록

[정보처리기사] 1. 소프트웨어 설계 정리 - 1

by 너나나

사진 뭐 넣지 하다가 너무 귀여운 사진 발견ㅋㅋㅋㅋㅋㅋ

8/14 정처기 필기 시험 정리!! 내가 모르는거 위주로 할 거!!! 3-2 수업(소공, db ...) 아직 못 들어서 헷갈리는 친구들이 좀 많다!!!! 없는 번호는 그냥 넘어간거

1. 소프트웨어 생명 주기

폭포수 모형(= 고전적 생명 주기 모형) 

  • 소프트웨어 개발 과정의 한 단계가 끝나야만 다음 단계로 넘어갈 수 있는 선형 순차적 모형
  • 모형을 적용한 경험과 성공 사례가 많음
  • 제품의 일부가 될 매뉴얼을 작성해야함
  • 각 단계가 끝난 후에는 다음 단계를 수행하기 위한 결과물이 명확하게 산출되어야함
  • 두 개 이상의 과정이 병행하여 수행되지 x
  • 타당성 검토 -> 계획 -> 요구 분석 -> 설계 -> 구현(코딩) -> 시험(검사) -> 유지보수

프로토타입 모형 

  • 사용자의 요구사항을 정확히 파악하기 위해 실제 개발될 소프트웨어에 대한 견본품을 만들어 최종 결과물을 예측
  • 시제품은 사용자와 시스템 사이의 인터페이스에 중점을 두어 개발

나선형 모형(Spiral Model, 점진적 모형) 

  • 폭포수 모형 장점 + 프로토타입 모형의 장점 + 위험 분석 기능
  • 여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 완벽한 최종 소프트웨어 개발
  • 소프트웨어를 개발하면서 발생할 수 있는 위험을 관리, 최소화 하는게 목적
  • 유지보수 과정 필요 x
  • 계획 수립 -> 위험 분석 -> 개발 및 검증 -> 고객 평가 -> 다시 계획수립 -> 위험 분석 -> ...

애자일 모형 :

  • 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발과정 진행
  • 어느 특정 개발 방법론 x 고객과의 소통에 초점을 맞춘 방법론 통칭
  • 스프린트(sprint) 또는 이터레이션(iteration)이라고 불리는 짧은 개발 주기 반복, 반복되는 주기마다 만들어지는 결과물에 대한 고객의 평가와 요구를 적극 수용
  • 각 개발주기에서 고객이 요구사항에 우선순위를 부여하여 개발 작업 진행
  • 소규모 프로젝트, 숙련된 개발자, 급변하는 요구사항에 적합
  • 애자일 모형 기반 소프트웨어 개발 모형 : 스크럼(scrum), XP(eXtreme Programming), 칸반(kanban), lean, 크리스탈, ASD(Adaptive Software Development), 기능 중심 개발(FDD; Feature Driven Developent), DSDM(Dynamic System Development Method), DAD(Disciplined Agile Delivery) 등

3. XP 기법

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

  • 릴리즈의 기간을 짧게 반복하면서 고객의 요구사항 반영에 대한 가시성을 높임
  • 릴리즈 테스트마다 고객을 직접 참여시킴으로써 요구한 기능이 제대로 작동하는지 고객이 직접 확인 가능
  • 소규모 인원의 개발 프로젝트에 효과적
  • XP의 5가지 핵심 가치 : 의사소통(Communication), 단순성(Simplicity), 용기(Courage), 존중(Respect), 피드팩(Feedback)

XP의 주요 실청 방법 : 

  • Pair Programming (짝 프로그래밍) : 다른사람과 함께 프로그래밍을 수행함으로써 개발에 대한 책임을 공동으로 나눠 갖는 환경 조성
  • Collective Ownership (공동 코드 소유) : 개발 코드에 대한 권한과 책임을 공동으로 소유
  • Test-Driven Development (테스트 주도 개발) : 개발자가 실제 코드를 작성하기 전에 테스트 케이스를 먼저 작성하므로 자신이 무엇을 해야할지를 정확히 파악, 테스트가 지속적으로 진행될 수 있도록 자동화된 테스팅 도구(구조, 프레임워크) 사용
  • Whole Team (전체 팀) : 개발에 참여하는 모든 구성원(고객 포함)들은 각자 자신의 역할이 있고 그 역할에 대한 책임을 가져야함
  • Continuous Integration (계속적인 통합) : 모듈 단위로 나눠서 개발된 코드들은 하나의 작업이 마무리될 때마다 지속정으로 통합
  • Design improvement(디자인 개선) 또는 Refactoring(리팩토링) : 프로그램 기능의 변경 없이, 단순화, 유연성 강화 등을 통해 시스템을 재구성함
  • Smal Releases (소규모 릴리즈) : 릴리즈 기간을 짧게 반복함으로써 고객의 요구 변화에 신속히 대응할 수 있음

참고 자료

「2021 시나공 정보처리기사 필기」

 

블로그의 정보

공부 기록

너나나

활동하기