요구사항 분석의 개요

  • 사용자 요구의 타당성 조사, 비용과 일정에 대한 제약 설정
  • 정확하고 일관성 있게 분석해서 문서화해야 함

구조적 분석 기법

  • 자료의 흐름과 처리를 중심으로
  • 도형 중심의 분석용 도구 -> 사용자간 의사소통 용이
  • 하향식 방법, 시스템을 세분화할 수 있고 분석의 중복 배제 가능
  • 자료 흐름도(DFD), 자료 사전(DD), 소단위 명세서(Mini-spec), 개체 관계도(ERD), 상태전이도(STD), 제어 명세서

자료흐름도 (DFD) (= 자료 흐름 그래프, 버블차트)

  • 의미: 자료의 흐름 및 변환괒어과 기능을 도형 중심으로 기술하는 방법
  • 시스템 안의 프로세스와 자료 저장소 사이에 자료의 흐름을 나타내는 그래프
  • 자료는 process를 거쳐 변환될 때마다 새로운 이름이 부여됨
  • 프로세스(Process), 자료흐름(Flow), 자료저장소(Data store), 단말(Terminator)의 4가지 기본 기호로 표시

자료사전(DD)

  • 의미: 자료 흐름도에 있는 자료를 더 자세히 정의하고 기록한 것
  • 메타데이터라고도 한다.

표기 기호

  • =: 자료의 정의, ~로 구성되어 있다(be compose of)
  • +: 자료의 연결, 그리고(and)
  • (): 자료의 생략, 생략 가능한 자료(optional)
  • [|]: 자료의 선택, 또는(or)
  • {}: 자료의 반복, interation of
  • * *: 자료의 설명, 주석(comment)

요구사항의 개념 및 특징

  • 뜻: 소프트웨어가 어떤 문제를 해결하기 위해 제공되는 서비스에 대한 설명, 운영의 제약조건
  • 개발이나 유지보수 과정에 필요한 기준과 근거 제공
  • 이해관계자들의 의사소통 원활하게 해줌

요구사항의 유형

  • 기술하는 내용에 따라 달라짐

기능 요구 사항(Functional requirements)

  • 시스템이 뭘 하는지, 어떤 기능을 하는 지, 시스템의 입력과 출력으로 무엇이 포함 되어야 하는지, 시스템이 반드시 수행해야 하는 기능

비기능 요구 사항(Non-functional requirements)

  • 장비 구성, 성능, 인터페이스, 데이터, 테스트, 보안, 품질, 프로젝트 관리, 프로젝트 지원 요구사항

요구 사항 개발 프로세스

  • 요구사항 도출 -> 분석 -> 명세서(specific document) -> 확인 및 검증
  • 요구사항 개발 프로세스 전에 프로세스의 타당성 조사 진행

요구사항 도출

  • 요구사항이 어디 있는지 어떻게 수집할 것인지 식별하고 이해되는 과정
  • 소프트웨어 생명 주기 동안 주기적으로 반복
  • 요구사항을 도출하는 주요기법: 청취, 인터뷰, 설문, 브레인스토밍, 워크샵, 프로토타이핑, 유스케이스

요구사항 분석

  • 요구사항 중 명확하지 않거나 모호한 부분을 발견하고 걸러내기 위한 과정
  • 타당성 조사, 비용과 일정에 대한 제약 설정
  • 자료흐름도(DFD), 자료 사전(DD)등의 도구 사용

요구사항 명세

  • 요구사항을 바탕으로 모델을 작성하고 문서화하는 것
  • 기능 요구사항 -> 완전하고 명확하게, 비기능 요구사항 -> 필요한 것만 명확하게
  • 설치 과정에서 잘못되면 요구사항 정의서에서 그 내용을 추적할 수 있어야 함
  • 소단위 명세서 사용될 수 있음

요구사항 명세 기법

  • 정형 명세기법: 수학적원리, 모델 기반, 결과가 작성자와 상관없이 동일 하므로 완전성 검증 가능(VDM, Z, Petri-net, CSP)
  • 비정형 명세기법: 자연어를 기반으로 서술 또는 다이어그램으로 작성, 일관성 떨어짐 (FSM, Decision Tabke, ER모델링, State chart)

요구사항 확인

  • 개발 자원을 요구사항에 할당하기 전에 요구사항 명세서가 정확한지 검토
  • 요구 사항 관리도구를 이용하여 요구사항 정의 문서들에 대한 형상관리를 수행한다.

형상: 프로그램을 설명하는 문서, 데이터들을 통칭 / 형상관리: 모든 형상들의 변경 사항을 관리하는 일련의 활동

Data engineering for every one[Data camp]

Data Workflow

  • 데이터 수집 및 저장 -> 데이터 엔지니어링
  • 데이터 정리(preparation)
  • 탐색, 시각화
  • 실험, 예측

데이터 엔지니어

  • 데이터 엔지니어가 제공하는 것

    • 정확한 데이터

    • 올바른 형태로

    • 올바른 사람들에게

    • 효율적인 형태로

  • 데이터 엔지니어가 하는 일

    • 데이터 수집
    • 데이터베이스 최적화
    • 데이터 손상 관리
    • 데이터베이스 아키텍처 개발, 구성, 테스트 및 유지

데이터 엔지니어 vs 데이터 사이언티스트

  • 데이터 엔지니어
    • ingest and store data
    • set up database
    • build data pipeline
    • strong software skills
  • 데이터 사이언티스트
    • exploit data
    • access database
    • use pipeline output
    • strong analytical skills

Data pipeline

  • 데이터 수집
  • 처리
  • 저장
  • 파이프라인이 필요하다!
  • 모든 station을 자동화
  • 정확하고 relevant한 데이터를 제시간에 제공
  • 데이터 파이프라인은 데이터가 조직 전체에 흐르게 한다
  • 자동화한다
    • 추출
    • 변환
    • 결합
    • 검증
    • 로드
  • 줄인다
    • 인간의 개입
    • 에러
    • 걸리는 시간

ETL

  • 데이터 파이프라인을 디자인하는 프레임웍
    • Extract
    • Transform
    • Load
  • 데이터를 한 시스템에서 다른 시스템으로 이동시킨다.

데이터 스트럭쳐

구조화된 데이터

  • 쉽게 검색하고 구성
  • 행과 열의 엄격한 구조
  • 각 열은 특정 데이터 타입이 있음
  • 관계를 형성하기 쉽게 그룹화됨
  • 관계형 데이터 베이스에 저장됨
  • 거의 20%의 데이터가 구조화된 데이터다
  • SQL을 사용하여 만들어지고 쿼리된다.

semi-structured data

  • 검색하고 구조화하기 쉬움
  • 구조에 덜 엄격함
  • 여러가지 타입가능
  • 그룹화될 수 있지만 더 많은 작업이 필요함
  • NoSQL database: Json, XML, YAML

Unstructured data

  • 행과 열 형식으로 표현될 수 없는 데이터
  • 검색 및 구조화가 어려움
  • 텍스트, 사운드, 사진, 비디오
  • 일반적으로 데이터 레이크에 저장됨
  • 거의 대부분의 데이터는 unstructure다
  • 매우 가치있을 수 있음

Adding some structure

  • unstructured 데이터를 검색하고 구조화하기 위해 AI를 사용

  • semi-structure로 만들기 위해 정보를 더한다.(장르, 태그...)

SQL 데이터베이스

SQL

  • Structured Query Language
  • RDBMS에서 쿼리를 하는 데 사용됨
  • 한번에 많은 레코드에 엑세스할 수 있고 그룹화, 필터링, 집계할 수 있다.
  • 영어에 가까워서 쓰기와 이해가 쉽다
  • 데이터 엔지니어는 데이터베이스를 유지하고 만드는데 사용
  • 데이터 과학자는 SQL를 이용해 쿼리함
CREATE TABLE employee (
    employee_id INT,
    first_name VARCHAR(255),
    last_name VARCHAR(255),
    role VARCHAR(255),
    team VARCHAR(255),
    full_time BOOLEAN,
    office VARCHAR(255)
);

데이터베이스 스키마

  • 데이터 베이스는 많은 테이블로 구성된다.
  • 데이터 베이스 스키마는 테이블이 어떻게 related 되는지 관리한다.

데이터 웨어하우스 & 데이터 레이크

  • 데이터 레이크
    • 모든 raw data 저장
    • 정형, 반정형, 비정형 모든 타입
    • 비용이 적게 듬
    • 분석하기 어려움
    • 데이터 카탈로그를 최신상태로 유지해야 함
    • 데이터 사이언티스트에게 쓰임
    • 큰 데이터, 실시간 데이터
  • 데이터 웨어하우스
    • 특수 목적을 위해 특정한 데이터를 수집
    • 상대적으로 작음
    • Structured data 상태로 저장하기 때문에 업데이트에 비용이 듬
    • 분석에 최적화되어 잇음
    • data analytics에게 주로 쓰임
    • read only queries

data catalog for data lakes

  • 데이터의 출처
  • 어떻게 사용?
  • 누가 유지 관리를 하는가
  • 얼마나 업데이트가 자주 되는가
  • 데이터 거버넌스(가용성, 사용성 무결성, 보안)
  • 프로세스의 재현을 보장

Database vs data warehouse

  • Databasse
    • 일반적인 용어
    • organized data stored and accessed on computer
  • Data warehouse
    • 데이터베이스의 한 종류

Processing data

  • 원시데이터를 의미있는 정보로 바꾸는 것

Data processing value

  • 원하지 않는 데이터 제거
  • 메모리, 프로세스, 네트워크 비용을 최적화 한다.
  • 사용하기 쉬운 타입으로 데이터를 변경한다.
  • 데이터를 구조화 함
  • 특정 스키마와 구조를 갖게 함
  • 생산성 향상

데이터 엔지니어가 data processing을 하는 법

  • 데이터 조작, 정리
    • 자동화될 수 있음
  • 데이터를 적절이 구조화 된 데이터베이스에 저장
  • create views on top of database tables(뷰 생성)
  • 데이터베이스 성능 최적화 (ex. 데이터 인덱싱)

Scheduling data

  • 데이터 프로세싱의 모든 과정에 적용 가능
  • 데이터 엔지니어링 시스템의 접착제
  • task가 특정 순서로 작동되고 모든 종속성을 해결되도록 한다.

Manual, time, sensor scheduling

  • 수동으로
  • 특정시간, 조건(sensor scheduling)에 처리가 실행되도록 자동화
  • sensor scheduling은 항상 조건을 확인하기위해 수신 대기 상태에 있어야 하는 단점
  • 수동과 자동의 합성

Batches and stream

  • Batches

    • 한 인터벌마다 기록을 모음
    • 더 저렴
  • Streams

    • 개별 데이터를 바로 전송(ex. 유저 가입)
  • 스케줄링 툴: airflow, Luigi

Parallel computing

  • 최신 데이터 처리 툴의 기초
  • 메모리와 프로세싱 파워를 늘려줌
  • 데이터 처리 툴이 작업을 할때 task를 더 작은 subtask로 나누고 이 것들을 여러 컴퓨터에 분산시킴

pararell computing의 장점/e단점

  • 장점
    • 더 많은 프로세싱 파워
    • reduce memory footprint
  • 단점
    • 데이터를 이동시키는 것이 비용을 발생시킴
    • 통신 시간이 필요

Cloud computing

  • severs on premise
    • 직접 구입
    • 공간 필요
    • 전기요금, 유지 관리 비용
    • 피크타임에 적절한 프로세싱 파워
  • servers on cloud
    • 대여
    • 공간이 필요 없음
    • 필요할때만 자원 사용
    • 서버와 사용자가 가깝게 함
    • 데이터베이스 안정성

cloud computing for data storage

  • 데이터 베이스 안정성
  • 민감한 데이터에 대한 위험관리

AWS

  • File Storage: S3
  • computation: EC2
  • database: RDS

Microsoft Azure

  • File Storage: Blob Storage
  • computation: Virtual Machine
  • database: SQL Database

Google Cloud

  • File Storage: google cloud storage
  • computation: google compute engine
  • database: google cloud SQL

Multi cloud

  • 장점
    • 한 공급자에 대한 의존도를 줄임
    • 비용 절감
    • 법률
    • 재난에 대비
  • 단점
    • 클라우드 공급자는 서비스를 통합해 가두고자 한다
    • 호환성
    • 보안 및 거버넌스 관리를 어렵게 한다.

'Data Science > [DSF] Data engineering' 카테고리의 다른 글

Introduction to flat file  (0) 2022.05.15
What is Data Engineering?  (0) 2022.05.15

+ Recent posts