[Ⅰ] 요구사항 확인

박은지·2022년 4월 23일
0

1. 소프트웨어 개발방법론


🔷 소프트웨어 생명주기( SDLC ) 🔔

시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차

  • 폭포수 모델 : 소프트웨어 개발 시 각 단계를 확실히 마무리 지은 후 다음 단계로 넘어감
  • 프로토타이핑 모델 : 고객이 요구한 주요 기능을 프로토타입으로 구현하여, 고객의 피드백 반영
  • 나선형 모델 : 위험을 최소화하기 위해 점진적으로 완벽한 시스템 개발
  • 반복적 모델 : 구축대상을 나누어 병렬적, 반복적 개발 후 통합

🔷 소프트웨어 개발방법론 🔔

소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차

  • 구조적 방법론 : 전체를 기능에 따라 나누어 개발 + 통합 ( 하향식 접근 & 나씨-슈나이더만 차트 )
  • 정보공학 방법론 : 정보시스템 개발에 필요한 관리절차와 작업 기법 체계화 ( 대형 프로젝트 )
  • 객체지향 방법론 : '객체'라는 기본 단위로 시스템 분석 및 설계 ( 객체 , 클래스 , 메시지 )
  • 컴포넌트 기반 방법론 : 소프트웨어를 구성하는 컴포넌트를 조립해서 SW 개발 ( 확장성 , 재사용 )
  • 애자일 방법론 : 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응 ( 효율 , 신속 )
  • 제품 계열 방법론 : 특정 제품에 적용하고 싶은 공통된 기능 정의하여 개발 ( 임베디드 SW )

📝 나씨-슈나이더만 차트 : 논리의 기술에 중점을 둔 도형식 표현 방법

🔷 애자일( Agile ) 방법론 ⭐ 🔔

절차보다는 사람을 중심으로 변화에 유연하고 신속하게 적응 & 개발기간이 짧고 신속

◼ XP ( eXtreme Programming)

의사소통 개선과 즉각적 피드백으로 SW 품질을 높임

[1] XP의 5가지 가치

  • 용기
  • 단순성
  • 의사소통
  • 피드백
  • 존중

[2] XP의 12가지 기본원리

  • 짝 프로그래밍
  • 공동 코드 소유
  • 지속적인 통합 ( CI )
  • 계획 세우기
  • 작은 릴리즈
  • 메타 포어
  • 간단한 디자인
  • 테스트 기반 개발 ( TDD )
  • 리팩토링
  • 40시간 작업
  • 고객 상주
  • 코드 표준

◼ 스크럼 ( SCRUM )

매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 프로젝트 관리 중심

  • 백로그 ( Backlog ) : 제품과 프로젝트에 대한 요구사항
  • 스프린트 ( Sprint ) : 2~4주의 짧은 개발 기간의 반복적 수행으로 품질 향상
  • 스크럼 미팅 ( Scrum Meeting ) : 매일 15분 정도의 미팅으로 To-Do List 계획 수립 / 데일리 미팅 ( Daily Meeting )
  • 스크럼 마스터 ( Scrum Master ) : 프로젝트 리더 / 스크럼 수행 시 문제 인지 & 해결하는 사람
  • 스프린트 회고 ( Sprint Retrospective ) : 스프린트 주기를 되돌아보며 규칙 준수 여부, 개선점 등 확인 및 기록
  • 번 다운 차트 ( Burn Down Chart ) : 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트

◼ 린 ( LEAN )

도요타의 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용 -> 낭비요소 제거 및 품질 향상

  • JIT ( Just In Time ) 사용
  • 칸반 ( Kanban ) 보드 사용

7가지 원칙
낭비 제거 / 품질 내재화 / 지식 창출 / 늦은 확정 / 빠른 인도 / 사람 존중 / 전체 최적화

🔷 비용산정 모형 🔔

소프트웨어 규모파악을 통한 투입 자원, 소요시간을 파악하여 계획의 비용을 산정

- 하향식 산정기법

◼ 전문가 판단

◼ 델파이 기법

전문가의 경험적 지식을 통한 문제 해결 기법

- 상향식 산정기법

◼ 코드 라인 수 ( Loc ; Lines of Code )

각 기능의 원시 코드 라인의 낙관치, 중간치, 비관치를 통해 예측

  • 낙관치 : 가장 적게 측정된 코드 라인 수
  • 중간치 : 측정된 모든 코드 라인 수
  • 비관치 : 가장 많이 측정된 코드 라인 수
  • 예측치 = ( 낙관치 + 4*중간치 + 비관치 ) / 6

◼ Man Month ⭐

한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 비용 산정

  • Man Month = LoC / 프로그래머의 월간 생산정
  • 프로젝트 기간 = Man Month / 프로젝트 인력

◼ COCOMO ( COnstructive COst MOdel ) 모형

프로그램 규모에 따라 비용 산정

  • 조직형 : 기관 내부에서 개발된 중/소규모의 SW ( 5만( 50KDSI ) 라인 이하 )
  • 반 분리형 : 조직형과 임베디드형의 중간 ( 30만( 300KDSI ) 라인 이하 )
  • 임베디드형 : 초대형 규모 시스템 프로그램 개발에 적용 ( 30만( 300KDSI ) 라인 이상 )

◼ 푸트남 ( Putnam ) 모형

개발주기의 단계별로 요구할 인력의 분포를 가정

◼ 기능 점수 ( FP ; Function Point ) 모형

요구 기능을 증가시키는 인자별로 가중치 부여, 총합으로 비용 산정

  • 기능점수( FP ) = 총 기능점수 x [ 0.65 + ( 0.1 x 총 영향도 ) ]

🔷 일정관리 모델 🔔

프로젝트가 일정 기한 내에 적절하게 완료될 수 있도록 관리하는 모델

◼ 주 공정법 ( CPM ; Critical Path Method )

  • 여러 작업의 수행 순서가 얽혀 있는 프로젝트의 일정을 계산하는 방법
  • 프로젝트의 시작에서 종료까지 가징 긴 시간이 걸리는 경로를 계산

◼ PERT ( Program Evaluation and Review Technique )

  • 일의 순서를 계획적으로 정리하기 위한 수렴 기법
  • 비관치, 중간치, 낙관치 3점 추정방식을 통해 일정 관리

◼ 중요 연쇄 프로젝트 관리 ( CCPM ; Critical Chain Project Management )

  • 주 공정 연쇄법
  • 자원제약사항을 고려하여 일정을 작성하는 기법

✔ 주 공정법( CPM )을 이용한 일정 계산

프로젝트의 시작에서 종료까지 가징 긴 시간이 걸리는 경로를 계산한다.



2. 현행 시스템 분석


🔷 현행 시스템 파악

현행 시스템이 어떤 하위 시스템으로 구성되어 있고, 제공 기능 및 기술 요소 등을 파악하는 활동

  1. 시스템 구성 / 기능 / 인터페이스 파악

  2. 아키텍처 및 SW 구성 파악

  3. 하드웨어 및 네트워크 구성 파악

🔷 소프트웨어 아키텍처

여러 가지 소프트웨어 구성요소와 특성, 관계를 표현하는 시스템 구조 또는 구조체

🔷 소프트웨어 아키텍처 4+1 뷰 🔔

고객의 요구사항을 정리해 놓은 시나리오를 4개의 관점에서 바라보는 소프트웨어적인 접근 방법
4개의 분리된 구조로 개념을 제시하고, 이들 구조의 충돌 여부 등을 유스케이스로 검증한다.

📝 유스케이스 ( Usecase ) : 시스템이 액터( 사용자 )에게 제공해야 하는 기능

◼ 유스케이스 뷰

  • 유스케이스 or 아키텍처 도출 & 설계 + 다른 뷰 검증
  • 사용자 & 설계자 & 개발자 & 테스트 관점

◼ 논리 뷰

  • 시스템의 기능적 요구사항이 어떻게 제공되는지 설명
  • 설계자 & 개발자 관점

◼ 프로세스 뷰

  • 시스템의 비기능적인 속성 표현 ( 자원의 이용 , 이벤트 처리 등 )
  • 개발자 & 시스템 통합자 관점

◼ 구현 뷰

  • 개발 환경 안에서 정적인 SW 모듈의 구성 설명
  • 컴포넌트 구조 & 의존성 & 부가적인 정보

◼ 배포 뷰

  • 컴포넌트가 물리적인 아키텍처에 어떻게 배치되는가를 설명

🔷 소프트웨어 아키텍처 패턴 🔔

SW를 설계할 때 참조할 수 있는 전형적인 해결방식 ( 일반화 , 재사용 솔루션 )

◼ 계층화 패턴 ( Layered Pattern )

시스템을 계층( Layer )으로 구분하여 구성

◼ 클라이언트-서버 패턴 ( Client-Server Pattern )

하나의 서버( Server )와 다수의 클라이언트( Client )로 구성

◼ 파이프-필터 패턴 ( Pipe-Filter Pattern )

데이터 스트림을 생성하고 처리하는 시스템에서 사용 ( 시스템 → 시스템 )

◼ 브로커 패턴 ( Broker Pattern )

분리된 컴포넌트들로 이루어진 분산 시스템에서 사용 ( 원격 서비스 실행 )

◼ 모델-뷰-컨트롤러 ( MVC ; Model View Controller ) 패턴

모델( Model ) , 뷰( View ) , 컨트롤러( Controller ) 3개의 서브 시스템으로 구조화

  • 모델 ( Model ) : 핵심 기능과 데이터 보관 ( ≋ DB )
  • 뷰 ( View ) : 사용자에게 정보 표시 ( ≋ Frontend )
  • 컨트롤러 ( Controller ) : 사용자의 요청을 입력받아 처리 ( ≋ Backend )

🔷 디자인 패턴 ( Design Pattern ) 🔔

SW 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴
효율성 & 유지보수성 & 운용성이 높아지며 최적화에 도움이 된다.

◼ 유형 ⭐

  • 목적
    생성 : 클래스 정의 및 객체 인스턴스 생성
    구조 : 더 큰 구조 형성을 목적으로 클래스나 객체의 조합을 다룸
    행위 : 클래스나 객체의 상호작용 및 역할 분담을 다룸
  • 범위
    클래스 : 클래스 간 관련성, 컴파일 타임에 정적으로 결정
    객체 : 객체 간 관련성, 런타임에 동적으로 결정

◼ 종류 ⭐

  생성 패턴  

  • Builder : 복잡한 인스턴스를 조립하여 만드는 구조 ( 생성과 표기를 분리 )
  • Prototype : 일반적인 원형을 만들어 놓고, 이를 복사하여 필요한 부분만 수정 ( 기존 객체 복제 → 객체 생성 )
  • Factory Method : 상위 클래스에서 객체 생성 인터페이스 정의, 하위 클래스에서 인스턴스 생성
  • Abstract Factory : 구체적인 클래스에 의존 X , 연관되거나 의존적인 객체들의 조합
  • Singleton : 전역 변수를 사용 X , 객체를 하나만 생성 ( 한 클래스에 하나의 객체만 존재하도록 제한 )

  구조 패턴  

  • Bridge : 기능 클래스 계층과 구현 클래스 계층을 연결
  • Decorator : 기존에 구현되어 있는 클래스에 필요한 기능을 추가
  • Facade : 복잡한 시스템에 대하여 단순한 인터페이스 제공
  • Flyweight : 모두가 갖는 본질적 요소를 클래스와 하여 공유 ( 클래스의 경량화 )
  • Proxy : 실제 객체에 대한 대리 객체
  • Composite : 객체들의 관계를 트리 구조로 표현
  • Adapter : 기존 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할의 인터페이스

  행위 패턴  

  • Mediator : 객체 수가 너무 많아지면 결합이 강해질 수 있기에, 중재자를 두는 방식 ( 상호작용의 유연한 변경 지원 )
  • Interpreter : 언어의 다양한 해석, 구문을 나누고 이를 해석하는 클래스를 각각 작성 ( 문법 자체를 캡슐화 )
  • Iterator : 내부구조를 노출하지 않고 집합체 안에 들어있는 모든 항목에 접근
  • Template Method : 상위 작업 구조를 바꾸지 않으면서, 서브 클래스로 일부분 수행
  • Observer : 한 객체의 상태가 바뀌면 이를 의존하는 다른 객체에게 연락
  • State : 객체 상태를 캡슐화
  • Visitor : 클래스에서 처리 기능을 분리하여, 메소드가 클래스를 돌아다니며 작업
  • Command : 실행될 기능을 캡슐화
  • Strategy : 알고리즘 군을 정의
  • Memento : 객체를 이전 상태로 복구시켜야 하는 경우, 작업취소( Undo ) 가능
  • Chain of Responsibility : 한 요청을 2개 이상의 객체에서 처리

🔷 운영체제 ( Operating System )

컴퓨터 시스템이 제공하는 모든 HW, SW를 사용할 수 있도록 해주며 사용자와 HW간의 인터페이스를 담당

◼ 운영체제 현행 시스템 분석

  • 품질 측면
    -  신뢰도
    -  성능
  • 지원 측면
    -  기술 지원
    -  주변 기기
    -  구축 비용

◼ 종류

  • PC
    -  윈도즈 ( Windows )
    -  유닉스 ( UNIX )
    -  리눅스 ( Linux )
  • 모바일
    -  안드로이드 ( Android )
    -  iOS

🔷 네트워크 ( Network ) 🔔

컴퓨터 장치들의 노드 간 연결( 데이터 링크 )을 사용하여 서로에게 데이터를 교환할 수 있도록 하는 기술
데이터 링크들은 유선 매체( 광케이블 ) 또는 무선 매체( Wi-Fi )를 통해 확립한다.

  OSI 7계층 ( Layer )  

네트워크 통신에서 생긴 여러 가지 문제를 완화하기 위해 국제 표준화 기구( ISO ; International Standardization Organization)에서 제시한 네트워크 기본 모델

  응용 계층 ( Application )  

  • 사용자와 네트워크 간 응용 서비스 연결, 데이터 생성
  • 프로토콜 : HTTP , FTP
  • 전송단위 : 데이터 ( Data )

  표현 계층 ( Presentation )  

  • 데이터 형식 설정과 부호 교환, 암/복호화
  • 프로토콜 : JPEG , MPEG
  • 전송단위 : 데이터 ( Data )

  세션 계층 ( Session )  

  • 연결 접속 및 동기 제어
  • 프로토콜 : SSH , TLS
  • 전송단위 : 데이터 ( Data )

  전송 계층 ( Transport )  

  • 신뢰성 있는 통신 보장
  • 프로토콜 : TCP , UDP
  • 전송단위 : 세그먼트 ( Segment )

  네트워크 계층 ( Network )  

  • 단말 간 데이터 전송을 위한 경로 제어
  • 프로토콜 : IP , ICMP
  • 전송단위 : 패킷 ( Packet )
  • 인접 시스템 간 데이터 전송
  • 프로토콜 : ETHERNET
  • 전송단위 : 프레임 ( Frame )

  물리 계층 ( Physical )  

  • 0과 1의 비트 정보를 회선에 보내기 위한 전기적 신호 변환
  • 프로토콜 : RS-232C
  • 전송단위 : 비트 ( Bit )

🔷 DBMS ( Database Management System )

데이터베이스라는 데이터의 집합을 만들고, 저장 및 관리할 수 있는 기능들을 제공하는 응용 프로그램

◼ 기능

  • 중복 제어
  • 접근 통제
  • 인터페이스 제공
  • 관계 표현
  • 샤딩 / 파티셔닝
  • 무결성 제약조건
  • 백업 및 회복

◼ DBMS 현행 시스템 분석

  • 성능 측면
    -  가용성
    -  성능
    -  상호 호환성
  • 지원 측면
    -  기술 지원
    -  구축 비용

🔷 미들웨어 ( Middleware )

분산 컴퓨팅 환경에서 응용 프로그램 ↔ 환경(시스템) 간에 원만한 통신이 이루어질 수 있도록 제어해주는 SW
대표적인 미들웨어로는 WAS ( Web Application Server ) 가 있다.

◼ 웹 애플리케이션 서버 ( WAS ; Web Application Server ) ⭐

서버 계층에서 애플리케이션이 동작할 수 있는 환경을 제공하고, 안정적인 트랜잭션 처리와 관리, 이기종 시스템과의 애플리케이션 연동을 지원하는 서버

◼ 미들웨어 현행 시스템 분석

  • 성능 측면
    -  가용성
    -  성능
  • 지원 측면
    -  기술 지원
    -  구축 비용


3. 요구사항 확인


🔷 요구공학 ( Requirements Engineering )

사용자의 요구가 반영된 시스템을 개발하기 위해 요구사항에 대한 도출, 분석, 명세, 확인 및 검증을 하는 활동

◼ 분류

❐ 기능적 요구사항

시스템이 제공하는 기능, 서비스에 대한 요구사항

❐ 비기능적 요구사항

기능 이외의 사항, 시스템 구축에 대한 제약사항에 대한 요구사항

◼ 요구공학 프로세스

요구공학 프로세스는 요구사항 개발 단계와 요구사항 관리 단계로 구성된다.

❐ 요구사항 개발 단계 구성 ( CMM Level 3 프로세스 영역 )

① 도출

  • 인터뷰
  • 브레인스토밍
  • 델파이 기법
  • 롤 플레잉
  • 워크숍
  • 설문 조사

② 분석

  • 청취 / 인터뷰 & 질문 / 분석 / 중재 / 관찰 / 작성 / 조직 / 모델 작성

③ 명세

  • 산출물 : 요구사항 명세서
  • 비정형 명세 기법 ( 자연어 기반으로 서술 )
  • 정형 명세 기법 ( 수학적 원리와 표기법으로 서술 )

④ 확인 및 검증

  • 요구사항 검토
  •  정형 기술 검토 활용 
    동료 검토 ( Peer Review ) : 명세서 작성자가 설명, 이해 관계자들이 설명을 들으며 진행 (2~3명)
    워크 스루 ( Walk Through ) : 검토 자료를 회의 전에 배포하여 사전 검토 후 짧은 시간 동안 회의
    인스펙션 ( Inspection ) : 저작자 외의 다른 전문가 또는 팀이 검사하여 오류를 검사
  • 프로토타이핑 활용
  • 모델 검증
  • 테스트케이스 및 테스트를 통한 확인
  • CASE 도구 활용 검증
  • 베이스라인을 통한 검증
  • 요구사항 추적표( RTM )를 통한 검증

❐ 요구사항 관리 단계 구성 ( CMM Level 2 프로세스 영역 )

  • 산출물
    -  요구사항 변경 요청서
    -  요구사항 변경 승인서
    -  요구사항 추적표
  • 절차
    ① 요구사항 협상
    ② 요구사항 기준성 설정
    ③ 요구사항 변경관리
    ④ 요구사항 확인 및 검증

0개의 댓글