본문 바로가기

정보처리기사/필기

1과목 - 소프트웨어 설계[소프트웨어 개발 방법론]

소프트웨어 개발 방법론

이 챕터의 목적 : 앞 현행 시스템에서는 정보 토대로 산출물 작성이 목적이였다면, 개발은 어떤 식으로 할 것인지? 애자일 방법, 담당자에게 의사소통 방법은? 등에 관련해서 프로젝트마다 최적의 방법론을 채택하는 부분이다.

 

즉, 어떻게 구현할지? 추후 테스트시 에러 등을 파악하여 개선하는 일련의 작업을 말합니다.

 

요구사항 분석 -> 설게 -> 구현(개발) -> 테스팅 -> 유지보수
  • 소프트웨어 개발 생명주기 모델
    • 폭포수
      • 계획
      • 수정이 어려움
    • 원형
      • 폭포수의 개선형 즉, 고객의 요구사항 반영
      • 프로토타입
    • 나선형
      • 4단계를 반복적으로 1회성으로 끝나는 것이 아니라... 회오리 처럼 (개발 -> 위험분석 -> 고객 피드백 -> 반영) 진행하면서 빙글빙글 돕니다.
      • 위험 분석 - 위험 요소를 파악하는게 목적
    • 애자일
      • 계획보다 기능중심
      • 문서보다 개발
      • 애자일 방법론
        • XP
          • 익스트림 프로그래밍을 구동시키는 원리는 상식적인 원리와 경험을 최대한 끌어올리는 것 
          • 5개의 가치
            • 피드백
            • 의사소통
            • 존중
            • 용기
            • 단순성
          • 12개의 실천사항 (LG 전자 배포통제시스템 경험 위주로 작성)
            • 계획게임(Planning Game) - 규칙, 목표를 가지고 개발
              • WBS로 개발 주기 및 기능별 마감기간 정리
            • 짝 프로그램밍(Pair Programming) - 2명이서 개발, 짝을 지어서 피드백 주기
              • 방동현 연구원, 이충현 연구원
            • 짧은 릴리즈 추가(Short/Smail Release)  - 짧고/작은 규모로 배포하여 고객의 피드백
              • 기능단위로 고객에게 보여주고 피드백 받기
            • 코드 공동 소유(Collective OwnerShip) - 모든 개발자는 코드를 소유해야함
              • branch라는 레파지토리에 lch, bdh 각 레파지토리를 만들고 공통으로 공통된 코드를 소유하는 방법
            • 메타포(Metaphor) - 규칙적인 언어로 의사소통하기
              • LG전자 투입시, RCS, NEXT ITSM 등 사내에서 사용되는 용어로 소통하기
            • 지속적인 통합(Continueous integration) - 빌드/배포 가능한 상태
              • 기능단위로 지속적인 빌드/배포
            • 단순 설계(Simple design) - 단순한 구조와 설계 및 디자인
              • 일관성 있고, 규칙적인 구조(Controller -> Service -> Repository)
            • 주당 40시간(40-hour week) - 개발자는 피곤하지 않게하기
            • 테스트 기반 개발(Test Driven Development) - 테스트, 개발, 운영 환경으로 구성
              • LG전자 테스트 완료 후에 개발에 배포하는 방식
            • 고객의 참여(On-site customer) - 고객사를 같이 상주
              • 이창용 책임님과 김혜진 책임님과 같은 건물에 상주하면서 즉각적인 피드백과 의사소통이 가능
            • 리팩토링(Refactoring) - 불필요한 기능 제거
              • 중복코드, 주석, 출력문 등을 파악하여 쓸데 없는 코드 개선
            • 코딩 표준(Coding Standards) - 표준화된 관리
              • 커멀케이스 등 변수 명 규칙
        • 스크럼
          • 유연성을 강조하여 피드백
          • 스크럼 용어 - LG전자 프로젝트를 잘 떠올리자
            • PO(Product Owner) - 제품 책임자, 제품에 대한 요구사항(백로그)을 작성하는 주체
            • SM(Scrum Master) - 문제해결 및 스크럼 회의가 잘 진행되도록 도와주는 역할
            • 백로그 - 요구사항이 적혀진 리스트
            • 스프린트 - 개발이 완료된 시스템을 사용자에게 제공하고 피드백을 받고 오류부분 개선함
          • 도요타사
          • 생산과 효율을 극대화하기
        • 크리스탈
        • ASD
        • FDD(기능중심개발)
        • 객체지향 방법론
          • 속성과 메소드로 구성된 객체
          • 객체 재사용을 통해서 효율성을 높이는 것
          • UML을 가지고 클래스 다이어그램을 만듬
HIPO
- 하향식 소프트웨어 개발을 위한 문서화
- 용어나 부호등은 관련자가 아니더라도 쉽게 알 수 있도록함
  • 개발 방법론의 종류
    • 구조적 분석 
      • 목적 : 요구사항을 파악하고 문서화
      • 모듈화 통해 기능적으로 분할하여 하향식으로 개발
      • 자료 흐름도(Data Flow Diagram)
        • 처리(동그라미), 자료흐름(실선), 자료저장소(줄 2개), 단말(사각형)
        • 자료 흐름 그래프 또는 버블(Bubble) 차트라고도함
      • 자료사전
        • 목적 : 자료 흐름도(Data Flow Diagram)에 기술된 자료들을 명확하게 정의
        • =은 정의
        • +은 복합적인 자료 요소
        • {}은 반복
        • []은 선택
        • ()은 생략가능
        • **은 주석
        • | 또는 ;은 대체 항목 나열
      • 소단위 명세서
        • 목적 : 자료 흐름도(Data Flow Diagram)에 나타난 자료를 토대로 절차, 논리적인 활동을 기술함 
        • 구조적 언어
        • 의사소통 결정표
        • 의사결정도