[정처기]요구사항 확인 - 소프트웨어 개발 방법론

Inung_92·2023년 6월 27일
2

정처기

목록 보기
1/7
post-thumbnail

소프트웨어 개발 방법론

⚡️ 소프트웨어 생명주기 모델(SDLC)

🖥️ 소프트웨어 생명주기 모델 개념

📖시스템의 요구분석에서 유지보수까지 전 공정을 체계화한 절차이자 작업 프로세스를 모델화

🖥️ 소프트웨어 생명주기 모델 프로세스(5)

📖요구사항 분석 > 설계 > 구현 > 테스트 > 유지보수

  • 요구사항 분석 : 기능 / 비기능 요구사항
  • 설계 : 시스템 구조, 프로그램, 사용자 인터페이스 설계
  • 구현 : 인터페이스, 자료 구조 개발 및 오류 처리
  • 테스트 : 단위, 통합, 시스템, 인수 테스트
  • 유지보수 : 예방, 완전, 교정, 적응 유지보수

🖥️ 소프트웨어 생명주기 모델 종류(4)

📖폭포수(Waterfall) / 프로토타이핑(Prototyping) / 나선형(Spiral) / 반복적(Iteration)

  • 폭포수 모델 : 확실히 마무리 후 다음 단계 진행 / 가장 오래된 모델 / 고전적 생명주기
    • 타당성 검토 > 계획 > 요구사항 분석 > 설계 > 구현 > 테스트 > 유지보수
  • 프로토타이핑 모델 : 고객의 피드백 반영 / 공동의 참조 모델 제공
  • 나선형 모델 : 위험을 최소화 / 점진적 완벽한 시스템 개발
    • 계획 및 정의 > 위험 분석 > 개발 > 고객 평가
  • 반복적 모델 : 병렬적 개발 후 통합 / 반복적 개발

⚡️ 소프트웨어 개발 방법론

🖥️ 소프트웨어 개발 개념

📖소프트웨어를 하나의 생명체로 간주하고 전 과정을 형상화한 방법론

🖥️ 소프트웨어 개발 종류(6)

📖구조적(Structured) / 정보공학(Information Engineering) / 객체지향(Object-Oriented)
컴포넌트 기반(CBD : Component Based) / 애자일(Agile) / 제품계열(Product Line)

  • 구조적 방법론 : 기능에 따라 나누어 개발 / 분할과 정복 접근 / 프로세스 중심 하향식 / 나씨-슈나이더만
  • 정보공학 방법론 : 대형 프로젝트 수행
  • 객체 지향 방법론 : '객체' 이용 분석 및 설계
  • 컴포넌트 기반 방법론 : 생산성 향상 / 새로운 기능 추가 쉬움 / 확장성
  • 애자일 : 절차보다 사람 중심의 방법론 / 신속 적응적 경량 개발
  • 제품계열 방법론 : 공통된 기능 정의 / 임베디드 소프트웨어 작성에 유용

🖥️ 애자일

  • 개념 : 개발 기간 짧음 / 폭포수 모형에 대비 / 유동적 개발
  • 등장배경 : 소프트웨어 개발 환경의 변화 / 기존 개발 방법론 한계
  • 애자일 방법론의 유형(3)
    • XP / 린(Lean) / 스크럼(SCRUM)
    • XP(eXtreme Programming)
      • 의사소통 개선 / 즉각적 피드백
      • 5가지 가치 : 용기 / 단순성 / 의사소통 / 피드백 / 존중
      • 12가지 기본원리(핵심만) : 짝 프로그래밍 / 지속적인 통합 / 메타포어 / 테스트 기반 개발 / 리팩토링
    • 스크럼(SCRUM)
      • 짧은 시간의 개발 / 팀을 위한 프로젝트 관리 중심
      • 흐름 : 백로그 > 팀 구성 > 스프린트 > 스크럼 미팅 > 스프린트 회고
      • 번 다운 차트 : 남아있는 백로그 대비 시간 표현
    • 린(Lean)
      • 도요타 / 낭비요소 제거 / JIT & 칸반 보드 사용
      • 7가지 원칙 : 낭비제거 / 품질 내재화 / 지식 창출/ 늦은 확정 / 빠른인도 / 사람 존중 / 전체 최적화

⚡️ 객체 지향 분석 방법론

🖥️ 객체 지향 개념

📖속성과 메서드가 결합한 형태의 객체로 표현

🖥️ 객체 지향 구성요소

📖클래스(Class) / 객체(Object) / 메서드(Method) / 메시지(Message) / 인스턴스(Instance) / 속성(Property)

  • 클래스 : 일종의 틀 / 데이터를 추상화하는 단위
  • 객체 : 상태와 식별성을 가지는 식별 가능한 대상
  • 메서드 : 객체를 사용하는 방법 / 구체적인 연산 / 함수 또는 프로시저에 해당
  • 메세지 : 객체와 객체 간 전달 / 상호 작용을 하기 위한 수단
  • 인스턴스 : 실제로 메모리에 할당 / 클래스를 통해 만든 실형 객체
  • 속성 : 객체의 상태를 표현 / 데이터의 값을 단위별로 정의

🖥️ 객체 지향 기법

📖캡슐화(Encapsulation) / 상속성(Inheritance) / 다형성(Ploymophism)
추상화(Absraction) / 정보 은닉(Information Hiding) / 관계성(Relationship)

  • 캡슐화 : 필요한 인터페이스만을 밖으로 드러내는 기법 / 정보 은닉과 관계
  • 상속성 : 속성과 메서드를 재정의 없이 물려받고 사용하는 기법
  • 다형성 : 각 객체의 고유한 방법으로 응답 / 오버로딩 / 오버라이딩
  • 추상화 : 공통 성질 추출 / 과정, 자료, 제어 추상화
  • 정보은닉 : 공개 인터페이스를 통해서만 접근 / 모듈 사이의 독립성 유지
  • 관계성 : 연관화(is-member-of) / 집단화(is part of) / 분류화(is-instance-of) / 일반화(is-a) / 특수화

🖥️ 객체 지향 설계원칙(SOLID)

📖단일책임 / 개방-폐쇄 / 리스코프 치환 / 인터페이스 분리 / 의존성 역전

  • 단일책임 원칙 : 하나의 책임 수행에 집중 / 나머지 4원칙의 기초
  • 개방-폐쇄 원칙 : 확장 - 오픈 / 수정 - 폐쇄
  • 리스코프 치환의 원칙 : 서브타입은 어디서나 기반 타입으로 교체
  • 인터페이스 분리의 원칙 : 사용하지 않는 인터페이스는 구현 x
  • 의존성 역전의 원칙 : 관계를 최대한 느슨하게 구성

🖥️ 객체 지향 분석의 개념

📖요구된 문제와 관련된 모든 클래스, 속성과 연산, 관계를 정의하여 모델링

🖥️ 객체 지향 분석 방법론 종류

📖OOSE(Object Oriented Software Engineering) / OMT(Object Modeling Technology) /
OOD(Object Oriented Design)

  • OOSE : 야콥슨 / 유스케이스 - 모든 모델의 근간 / 분석, 설계, 구현 단계 / 기능적 요구사항 중심

  • OMT : 럼바우 / 그래픽 표기법 / 객체(or 정보), 동적, 기능 모델링 순서

    • 객체 모델링 : 정보 모델링 / ER 다이어그램을 만드는 과정까지 / 객체 다이어그램 활용

    • 동적 모델링 : 시간의 흐름에 따라 동적인 행위를 표현 / 상태 다이어그램 활용

    • 기능 모델링 : 자료 흐름 중심 / 자료 흐름도(DFD) 활용

  • OOD : 부치 / 설계 문서화 강조 / 분석과 설계 분리 불가능

  • 코든-요든 : E-R 다이어그램 / 객체의 행위 모델링

  • 워프-브록 : 고객 명세서 평가 / 연속적 수행

🖥️ 기능 모델링 주요 기법

  • 데이터흐름도(DFD : Data Flow Diagram)
    • 개념 : 시스템 분석과 설계에서 매우 유용 / 자료흐름 그래프 or 버블 차트
    • 특징 : 구조적 분석 기법 / 데이터 흐름 중심 / 시간 흐름의 명확성 표현 x
  • 자료사전(DD : Data Dictionary)
    • 개념 : 다양한 데이터를 이용하여 자료를 참조하기 위한 방법
    • 목적 : 자료 용어 의미의 명확성 / 용어 정의 조정
profile
서핑하는 개발자🏄🏽

0개의 댓글