정처기 - 소프트웨어 개발 방법론

2023. 1. 28. 18:06·정보처리기사/정처기 요약

핵심적인 부분만 요약하였습니다.

 

◆시스템 소프트웨어

●시스템 소프트웨어의 정의

▷사용자가 손쉽고 효율적으로 컴퓨터 시스템을 사용하도록 돕는 소프트웨어이다

●시스템 정의(기본 요소 포함)

▷컴퓨터 시스템과 같은 의미로 쓰이며, 특정 업무를 수행하기 위해 중앙 처리 장치를 중심으로 구성된 하드웨어 및 소프트웨어의 총칭이다.

▷컴퓨터 시스템은 기본적으로 입력, 처리, 출력, 제어, 피드백의 기능을 수행하기 위한 장치들이 존재한다.

 

◆소프트웨어 개발 프레임워크

●모듈(Module)

▷프로그램을 기능별로 분할하여 재사용이 가능하게끔 부품화한 것이다.

▷개발자가 프로그램의 기본 틀을 제공하고, 모듈을 활용하여 기능을 구체화한다.

 

●라이브러리(Library)

▷툴킷이라고도 하며, 관련 있는 모듈들을 모아놓은 것이다.

▷라이브러리에 존재하는 각 모듈이 반드시 독립적인 것은 아니다.

-표준 라이브러리 : 프로그래밍 언어에 내장

-외부 라이브러리 : 별도의 설치를 통해 사용 가능

 

●디자인 패턴(Design Pattern)

▷특정 기능에 대한 문제해결을 위한 추상적인 가이드라인을 제시한 것이다. 

▷프로그램의 세부적인 구현 방안을 위해 참조하는 해결 방식을 제시한것이다.

 

●소프트웨어 개발 프레임워크(FrameWork)

▷디자인 패턴에 모듈의 장점 및 기능을 결합하여 실제적인 개발의 틀을 제공한다.

▷프레임워크가 프로그램의 기본 틀을 제공하고, 개발자가 기능을 구체화하는 제어의 역 흐름이 발생한다.

▷프로그램의 기반, 구조를 잡아주는 코드의 모임이며 자연스럽게 특정 디자인 패턴을 유도한다.

▷이미 검증된 프레임워크를 사용함으로써 품질, 예산, 유지보수에 이점이 있다

▷프로그램 구성의 복잡도가 감소하여 상호 운용성과 개발 및 변경이 용이해진다.

 

●소프트웨어 아키텍쳐(Architecture)

▷다수의 프레임 워크를 체계적으로 구성, 설명하는 구조체를 말한다.

▷소프트웨어의 설계와 업그레이드를 통제하는 지침과 원칙을 제공한다.

 

●컴포넌트(Component)

▷모듈의 형태로 재사용 가능한 확장된 소프트웨어 블럭이다.

▷일반적인 코딩을 벗어나 마치 레고를 쌓아 올리듯이 개발하는 기법을 말한다.

▷프레임워크 및 아키텍쳐가 적용되어 있어 안정적이다.

▷협약에 의한 설계를 따를 경우에 포함되어야 할 조건은 아래와 같다.

-선행조건 : 컴포넌트 오퍼레이션 사용 전에 참이여야 하는 조건

-결과조건 : 컴포넌트 오퍼레이션 사용 후에 참이여야 하는 조건

-불변조건 : 컴포넌트 오퍼레이션 사용 중에 참이여야 하는 조건


◆소프트웨어 개발 수명 주기 (SDLC)

●소프트웨어 개발 수명 주기 정의

▷소프트웨어 개발 과정을 단계별로 구성한 것으로 단계별 산출물이 존재한다,

 

●폭포수 모델

▷계획 → 요구분석 → 설계 → 구현 → 테스트 → 유지보수

▷정해진 단계를 한 번씩만 진행하며 이전 단계로 돌아갈 수 없다.

▷단계별로 결과물이 명확하게 산출되어야 다음 단계로 넘어가는 방식이다.

 

●프로토타입 모델

요구수집 → 빠른 설계 → 시제품 구현 → 고객평가(만족시 구현) → 시제품 조정 → 다시 요구수집

▷시제품을 통해 최종 결과물을 예측할 수 있다

▷시제품은 사용자와 시스템 사이의 인터페이스에 중점을 두어 개발한다.

▷시제품은 추후 최종 구현 단계에서 골격으로 사용된다.

 

●나선형 모델

▷폭포수 모델과 프로토타입 모델의 장점에 위험 분석기능을 더한 모델이다.

▷나선을 돌듯이 여러번의 지속적인 개발 과정을 통해 점진적으로 개발하는것이다.

▷개발 중 발행할 수 있는 위험을 최소화하는 것이 목적이며 유지보수가 필요 없다.

▷누락 및 추가된 요구사항 반영이 가능하다.

나선형... 그림아 미안해...

●애자일 모델 

▷소프트웨어를 사용할 고객과의 소통에 중심을 둔 방법론들의 통칭이다. 

▷짧은 개발 주기를 반복하면서 고객의 피드백을 소프트웨어에 반영한다.

▷고객과의 소통을 통해 작업의 우선순위를 지정하여 개발을 진행한다.

▷애자일 모델을 기반으로 하는 개발 모델은 Scrum, XP, Kanban, crystal, FDD(기능 주도 개발), ASD(적응형 소프트웨어 개발), DSDM(동적 시스템 개발)등이 있다.

▷절차, 문서, 계획보다 소통 협업, 변화 대응에 가치를 둔다.


◆스크럼 모델

●스크럼 모델 특징

▷스크럼 팀을 구성하여 팀을 중심으로 개발의 효율성을 높이는 개발 모델이다.

▷제품 택임자와 스크럼 마스터, 개발팀으로 구성된다

▷반복적인 스프린트를 통해 제품을 완성시켜 나간다.

- 스프린트(sprint) 2~4주 정도의 기간 내에서 하나의 task를 개발하는 과정

- 태스크(task) : 개발 요구사항(사용자 스토리)을 개발자(팀)별로 나눈 것

▷스크럼의 가치는 확약, 전념, 존중, 용기 등이 있다.

 

●제품 책임자(Product Owner)

▷목표 제품에 대한 택임을 지고 의사를 결정하는 역할을 담당한다.

●스크럼 마스터(Scrum Master)

▷개발팀원들의 원활한 업무를 위한 가이드 역할을 한다.

▷일일 스크럼 회의를 주관할 수 있으며 개발 과정에서 발생된 장애 요소를 공론화하여 해결할 수  있도록 처리한다.

▷스크럼 마스터의 역할은 팀원들이 상황에 유연하게 대응할 수 있도록 조력하는 역할이며 통제의 권한은 없다.

●개발팀(Development Team)

▷개발에 참여하는 모든 인원이다.

●스크럼 모델 개발 프로세스

스프린트 계획 회의 → 스프린트 진행 → 일일 스크럼 회의 → 스프린트 검토 회의 → 스프린트 회고 : n차 스프린트 시작

                                                                                                               ㄴ → 산출물

 

◆XP(eXtreme Programming) 모델

●XP모델 특징

▷고객의 참여와 짧은 개발 과정의 반복을 극대화하여 개발 생산성을 높이는 개발 모델이다.

▷소규모 인원으로 진행하는 프로젝트에 효과적이며 단계별 단순한 설계를 통해 개발 속도를 향상시킨다.

▷XP의 가치는 의사소통, 단순성, 용기, 존중, 피드백이 있다.

●XP 모델 개발 프로세스

▷사용자 스토리에 기록된 내용을 바탕으로 릴리즈 계획을 수립하고 분석된 스토리에 따라 스파이크 또는 이터레이션을 ▷진행한다.

- 소규모 릴리즈 : 기능별로 고객의 피드백을 받을 수 있도록 릴리즈의 규모를 작게 분할한다.

- 스파이크 : 특정 기술의 확인을 위해 다른 모든 조건을 무시하고 간단하게 개발하는 프로그램

- 이터레이션 : 하나의 릴리즈를 1~3주의 개발 기간으로 세분화한 단위

▷스파이크를 통해 기술이 검증되면 해당 부분을 이터레이션으로 전달한다.

▷이터레이션 진행 도중에서 새로운 스토리가 작성될 수 있다.

▷이터레이션을 통해 부분 완료된 제품을 고객이 직접 사용자 스토리에 포함된 테스트 사항을 통해 승인 검사를 수행한다.

▷테스트 과정에서 새로운 요구사항, 오류 등이 발견되면 다음 이터레이션에 반영한다.

XP 모델 개발 프로세스

●XP 기본 원리

▷XP의 실천 사항은 12개 사항으로 나뉜다.

항목 설명
Planning Game 게임처럼 선수, 구칙, 목표 등을 설정하여 계획 수립
Small Releases 짧은 주기의 릴리즈로 고객의 피드백 최대화
System Metaphor 개발 과정에서 최종 목표 시스템의 구조를 조망
Simple Design 가능한 가장 단순한 설계
Test Driven Developement 우선 단위 테스트 이후 실제 코드 작성
Design improvement 기능을 유지하면서 코드 개선 작업 수행
Pair Programming 2명의 개발자가 코딩, 리뷰 공동 수행
Collective Ownership 시스템의 코드는 언제나 개발자 누구나 수정 가능
Contiunuous Integration 항상 빌드 및 배포가 가능한 상태 유지
Sustainable Pace 주당 일정 시간 이상을 일하지 않도록 오버타임 지양
Whole Team 개발 효율을 위해 고객을 프로젝트 팀원으로 상주시킴
Coding Standards 원활한 의사소통 위해 표준화된 관례에 따라 코드 작성

◆소프트웨어 개발 방법론

●소프트웨어 개발 방법론 정의

▷소프트웨어 개발 모든 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법을 말한다.

▷소프트웨어를 개발함에 있어 생산성과 소프트웨어 품질을 향상시킨다.

▷소프트췌어 공학에서 가장 많이 사용하는 방법론이다.

 

●소프트웨어 개발 방법론의 절차

▷소프트웨어 개발 방법론의 절차는 분석, 설계, 구현, 시험으로 나뉜다.

- 분석 : 개발 준비, 시스템 요구사항 분석, 소프트웨어 요구사항 분석

- 설계 : 시스템 설계, 소프트웨어 구조 및 상세 설계

- 구현 : 소프트웨어 코딩 및 단위 시험

- 시험 : 소프트웨어와 시스템 통합 및 테스트, 소프트웨어 설치 및 인수 지원

●소프트웨어 개발 방법론 선정

▷정형화된 소프트웨어 개발 방법론의 특징을 파악한다.

▷소프트웨어 개발 방법론의 특징을 고려하여 타당성과 적정성을 설정한다.

- 타당성 : 개발 절차에 따라 설정

- 적정성 : 개발 단계별 산출물에 따라 설정

▷개발 방법론 선정을 위한 계획서를 작성한다.

▷선정 계획서를 바탕으로 정성, 정량평가를 진행하여 개발 방법론을 선정한다.

 

◆소프트웨어 개발 방법론 종류

●구조적 방법론

▷Yourdon에 의해 개발되어 1970년대까지 가장 많이 적용되었던 방법론이다.

▷구조적 분석을 통해 고객의 요구사항을 자료 흐름도(DFD)로 표현하였다.

- 자료 흐름도(DFD) : 프로그램을 기능 단위별 데이터의 흐름으로 표현한 구조도

- 자료 사전(DD) : DFD에 표현된 자료 저장소를 구체화

▷모듈 중심의 설계를 통해 모듈 간 결합도를 낮춰 독립성을 높인다.

▷순차, 선택, 반복의 논리 구조 구성으로 프로그램 복잡성을 최소화한다.

구조적 방법론

●정보공학 방법론

▷1980년대 등장한 방법론으로 개발 단계별 정형화된 기법들을 통합 적용한 데이터 중심 방법론이다.

▷현행 업무 프로세스 및 시스템을 분석하여 정보 전략 계획을 수립한다.

▷업무 영역 분석을 통해 개념적인 수준의 데이터와 프로세스를 설계한다.

- 데이터 모델링 도구 : 개체-관계 다이어그램(ERD)

- 프로세스 모델링 도구 : 자료 흐름도, 프로세스 의존도(PDD), 프로세스 계층도(PHD)

▷ERD를 기반으로 분할 다이어그램, 액션 다이어그램, 의존 다이어그램 등을 활용해 실질적인 시스템을 설계한다.


정보 전략 계획(Information Strategy Planning)

↓

업무 영역 분석(Business Area Analysis)[데이터, 상관관계(상호작용), 프로세스]

↓

업무 시스템 설계(Business System Design)

↓

업무 시스템 구축(Business System Construction)


●객체지향 방법론

▷실체(Entity)를 독립된 형태으 객체(Object)로 표현하고, 객체들 간 메세지 교환을 통해 상호작용하도록 프로그램을 개발하는 방법론이다.

- 속성 : 객체를 나타내는 성질, 값, 데이터

- 메소드 : 객체의 속성을 이용한 일련의 동작들 

▷데이터 객체를 저장하기 위해서 관계형 테이블로 변환하는 과정(Object-Relation Mapping)이 필요하다.

▷객체지향 방법론의 기본 원칙은 캡슐화, 정보은닉, 추상화, 상속성, 다형성이 있다.

- 캡슐화 : 데이터와 해당 데이터의 처리 기능을 하나로 묶어냄

- 정보은닉 : 다른 객체에게 자신의 정보를 숨김

- 추상화 : 객체의 공통적인 속성을 상위 객체로 도출

- 상속성 : 상위 객체의 속성을 하위 객체가 물려받아 사용

- 다형성 : 하나의 수행 방법으로 여러 형태의 기능 수행

객체지향 방법론

●컴포넌트 기반(CBD : Component Based Develoment) 방법론

▷컴포넌트들을 조립해서 하나의 새로운 프로그램을 개발하는 방법론이다.

▷개발 생산성, 이식성 및 호환성, 신속성, 유연성, 표준화 등의 장점이있다.

▷일반적으로 프로세스 설계과정에선 객체지향 방법론을, 데이터 설계 과정에선 정보공학 방법론을 사용한다.

▷선행 투자 비용이 높고, 조립식 시스템에 따르는 책임 및 지적 재산권을 고려해야 한다.

▷컴포넌트 기반의 단계별 산출물은 아래와 같다.

컴포넌트 기반 방법론

- 분석 단계 : 사용자 요구사항 정의서, 유스케이스 명세서, 요구사항 추적표 등

- 설계 단계 : 사용자 인터페이스 설계서, 컴포넌트 설계서, 인터페이스 설계서, 아키텍처 설계서, 총괄시험 계획서, 시스템시험 시나리오, 엔티티 관계 모형 기술서, 데이터베이스 설계서, 통합시험 시나리오, 단위시험 케이스, 데이터 전환 및 초기  데이터 설계서 등

- 구현 단계 : 프로그램 코드, 단위 시험 결과서, 데이터베이스 테이블

- 시험 단계 : 통합시험 결과서, 시스템 시험 결과서, 사용자 지침서, 운영자 지침서, 시스템 설치 결과서, 인수시험 시나리오, 인수시험 결과서

 

●애자일 방법론

▷수시로 변하는 상황과 고객의 요구사항을 바로바로 반영하여 개발하는 방법

 

●제품 계열 방법론

▷특정 제품에 적용하고 싶은 공통된 기능을 개발하는 방법론이다.

▷임베디드 소프트웨어를 작성하는 데 유용하며 영역공학과 응용공학으로 구분된다.

- 영역공학 : 영역 분석, 영역 설계, 핵심 자산을 구현하는 영역

- 응용공학 : 제품 요구 분석, 제품 설계, 제품을 구현하는 영역

▷두 공학을 연계하기 위한 제품 요구사항, 제품 아키텍쳐, 제품의 조립생산이 필요하다.


◆소프트웨어 보안 개발 방법론

●보안 개발 방법론 정의

▷소프트웨어의 보안 취약점을 최소화하기 위한 지침 및 사례를 기반으로 개발하는 방법론이다.

▷시스템 환경에 따라 다양한 취약점이 발견되므로 다양한 보안 방법론들이 존재한다.

 

●MS-SDL

▷마이크로소프트사가 자체적으로 수립한 소프트웨어 개발 모델이다.

 

●Seven Touchpoints

▷실무적으로 검증된 소프트웨어 보안의 모범 사례 7가지를 개발 모델에 통합한 것이다.

- 코드 검토(code review)

- 아키텍쳐 위험 분석(architectural risk analysis)

- 침투 테스트(penetration testing)

- 위험 기반 보안 테스트(risk-base security testing)

- 악용 사례(abuse cases)

- 보안 요구(security requirement)

- 보안 운영(security operation)

 

●CLASP(Comperhensive, Lightweight Application Security Process)

▷소프트웨어 개발 초기 단계의 보안을 강화하기 위한 정형화된 절차이다.

▷활동 중심, 역할 기반의 프로세스로 구성되어 있으며 이미 운영중인 시스템에 적용하기 좋다

▷개념, 역할 기반, 활동 평가, 활동 구현, 취약성의 5가지 관점에 따라 보안 절차를 진행한다.

 

●CEW(Common Weakness Enumeration)

▷소프트웨어 보안 취약점을 유발하는 원인을 7가지로 정리한 보안 개발 방법론이다.

- 입력 데이터 검증 및 표현 : 입력값에 대한 잘못된 검증, 잘못된 형식 지정

- 보안 기능 : 부적절한 보안 기능 구현

- 시간 및 상태 : 병렬 시스템 환경에서 부적절한 시간 및 상태 관리

- 에러 처리 : 에러 처리가 미흡하거나 처리 가정에서 중요 정보 포함

- 코드 오류 : 인가되지 않은 사용자에게 데이터 유출

- 캡슐화 : 중요한 데이터 등을 충분히 캡슐화하지 않아 데이터 누출

- API 오용 : 보안에 취약한 API를 잘못된 방법으로 사용 

'정보처리기사 > 정처기 요약' 카테고리의 다른 글

23년도 정처기 필기 합격 후기  (0) 2023.03.06
정처기 필기 개념 블로그  (0) 2023.03.04
'정보처리기사/정처기 요약' 카테고리의 다른 글
  • 23년도 정처기 필기 합격 후기
  • 정처기 필기 개념 블로그
메카인
메카인
  • 메카인
    메카인의 지식창고
    메카인
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 코딩 공부
        • TIL(Today I Learn)
        • TIL
        • 백준(C++)
        • Python
        • 알고리즘
        • 프로젝트 회고
      • C++
        • C++
        • C++ STL
        • C,C++ mCoding yotube
      • 게임개발
        • 언데드서바이벌_골드메탈_클론코딩
        • 3D_골드메탈_클론코딩
        • 유니티_문제해결
        • 게임 수학
      • Unreal 공부
        • UE5 GameDev
        • Unreal Engine 4 C++ The Ult..
      • 교재 문제 풀이
        • 운영체제
      • 정보처리기사
        • 정처기 요약
        • 정처기 오답노트
      • 학교수업
        • 데이터베이스
        • 프로그래밍 언어론
        • 리눅스 시스템
        • 네트워크
      • 일상
        • 주식
        • 독서
      • (비공개 전용)
        • memory
        • Build
        • OOP
        • Smart Pointer
        • lamda
        • 게임 수학
        • 모던 C++
        • 모던 C++ STL
        • 모던 C++ Concurrency, Paralle..
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 블로그 관리
  • 링크

  • 공지사항

    • 공지사항 - 인생과 블로그의 목표
  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
메카인
정처기 - 소프트웨어 개발 방법론
상단으로

티스토리툴바