5장
- 소프트웨어개발 방법론
- 개발 유지보수 등에 필요한 여러가지 일들을 효율적으로 수행하려는 과정에서 기법 및 도구를 체계적으로 정리하여 표준화함
- 소프트웨어개발 방법론은 생산성 향상과 품질향상이다.
- 구조적방법론
- 정보공학방법론
- 객체지향방법론
- 컴포넌트기반방법론
- 애일 방법론
- 제품계열방법론
- 구조적 방법론
- 정형화된 분석절차에따라 요구사항을 파악하여 문서화하는 처리중심의 방법이다.
- 쉬운코드 및 검증이 가능한 프로그램 코드를 생성하는것이 목적이다.
- 분할정복(divide and conquer)
- 타당성검사 ->계획->요구사항단계 ->설계단계 ->구현단계->시험단계@@->운용/유지보수단계
- 정보공학방법론
- 정보시스템 개발을 위해 계획 분석 설계 구축에 정형화된 기법을 연관성있게 통합및 적용하는 자료중심 방법론
- 계획수립 - 업무영역분석 -업무시스템설계 - 업무시스템구축
- 객체지향방법론
- 엔티티를 기계의 부품처럼 하나의 객체로 만들어 부품을 조립하듯이 객체를 조립해서 필요한 소프트웨어를 구현
- 문제점은 위기의 해결책이다.
- 구성요소로는 객체 클래스 메시지등이있다.
- 캡슐화, 정보은닉, 추상화, 상속성, 다형성
- 요구분석 - 설계 - 구현 -테스트및 검증 - 인도단계
- 컴포넌트기반(CBd)
- 기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 어플리케이션을 만드는 방법론
- 재사용이 가능하여 시간과 노력을 절감한다.
- 유지보수 최소화하고 생산성 및 품질을 향상
- 애자일방법론
- 요구사항에 유연하게 대응하기위해서 일정한 주기를 반복하면서 개발과정을 진행한다.
- 소규모프로젝트 고도로 숙달된 개발자, 급변하는 요구사항
- XP ,스크럼, 칸반 , 크리스탈
- 스토리 ->(계획 - 개발 - 승인테스트)(반복)
- 제품계열방법론
- 특정제품에 적용하고 싶은 공통된 기능을 정의하여 개발한다.
- 임베디드 소프트웨어를 만듬
- 영역공학 : 영역분석, 영역설계, 핵심자산
- 응용공학 : 요구분석, 제품설계 , 제품구현
- 이들의 연계를 위해서는 요구사항 아키텍처 조립생산이 필요하다.
- 소프트웨어 비용산정
- 개발규모를 소요되는 인원, 자원, 기간등으로 확인하여 실행가능한 계획을 수립하기위해 필요한 비용을 산정하는것이다.
- 비용을 너무 높게하면 효율성이저하 , 비용을 너무 낮게 정하면 부담이 가중되고 품질의 저하
- 소프트웨어의 비용을 결정하는 세가지 요소
- 프로젝트 요소
- 제품 복잡도 - 문제점들의 난이도
- 시스템크기
- 요구되는 신뢰도 -일정기간 내 주어진 조건하에서 프로그램이 필요한 기능을 수행하는 정도
- 자원요소
- 인적자원 - 개발 관련자들이 갖춘 능력 혹은 자질
- 하드웨어 자원 - 필요한 장비
- 소프트웨어 자원 -언어분석기 , 문서화 도구 등
- 생산성요소
- 개발자 능력 - 전문지식, 경험 , 이해도 ,책임감, 창의력
- 개발기간 - 소프트웨어를 개발하는 기간
- 하향식 비용 산정 기법
- 전문 지식이 많은 개발자들이 참여한 회의를 통해 비용을 산정하는 비과학적인 방법이다.
- 프로젝트 전체비용을 산정한 후 작업별로 비용을 세분화한다.
- 전문가 감정기법과 델파이 기법이 있다.
- 전문가 감정기법
- 경험이 많은 두명 이상의 전문가에게 비용 산정을 의뢰한다.
- 가장편리하고 신속
- 다른요소들이 있다는 것을 간과할 수 있다.
- 개인적이고 주관적이다.
- 델파이 기법
- 많은 의견을 종합해서 산정한다.
- 한명의 조정자와 여러전문가로 구성
- 순서
- 시스템 정의서와 비용 내역을 기록할 서식을 준비한다.
- 익명으로 비용을 산정한다.
- 조정자는 반응을 요약하여 배포한다.
- 산정자들은 결과를 다시 익명으로 산정한다.
- 의견이 일치할때까지 반복한다.
- 상향식 비용 산정 기법
- 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 기법이다
- LOC 기법
- 개발 단계별 인월수 기법(effort per task)
- LOC 기법
- 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 비용을 산정하는 기법
- 예측치 = a +4m +b/6
- 노력 = 개발기간 X 투입인원 =LOC/1인당 월평균 생산코드라인수
- 개발비용 = 노력 X 단위비용(1인당 인건비)
- 개발기간 = 노력 X 투입인원
- 생산성 =LOC/노력
- 개발 단계별 인월수 기법
- LOC기법의 보안으로 필요한 노력을 생명주기의 각 단계별로 산정한다
- 수학적 산정기법
- 상향식 비용 산정기법이다.
- 경험적 추정모형, 실험적 추정모형이라고도한다.
- 개발 비용 산정의 자동화를 목표로한다.
- COCOMO모형
- 보헴(bohem)이 제안한 것으로 LOC에 의한 비용산정 기법이다.
- 유연성이 높다.
- 같은 프로젝트라도 성격에 따라서 다르게 산정된다.
- 비용산정결과는 프로젝트를 완성하는데 필요한 노력(man-month)로 표현된다.
- COCOMO의 소프트웨어 개발 유형
- 원시 프로그램의 규모에 따라 조직형, 반분리형, 내장형으로 나눌수 잇다.
- 조직형
- 중,소 규모의 소프트웨어
- 5만라인 이하의 소프트웨어개발
- 반분리형
- 조직형과 내장형의 중가으로 트랜잭션, 운영체제 , DB관리등
- 30만 라인 이하의 소프트웨어 개발
- 내장형
- 최대 규모의 트랜잭션 처리시스템이나 운영체제
- 30만 이상의 소프트웨어 처리
- COCOMO 모형의 종류
- 기본형, 중간형, 발전형
- 기본형
- 소프트웨어의 크기와 개발유형만을 이용하여 비용을 산정
- 중간형
- 기본형의 COCOMO의 공식을 토대로 사용하지만 4가지 15가지 요인에 의해 비용을 산정한다.
- 제품의 특성
- 컴퓨터의 특성
- 개발요원의 특성
- 프로젝트 특성
- 발전형
- 중간형 COCOMO를 보완하여 만들어진것으로 자세하고 정확하게 노력을 산출한다.
- 소프트웨어 환경과 구성요소가 사전에 정의되어 있어야하면 개발과정의 후반부에 등장한다.
- Putnam모형
- 생명주기 전과정동안에 사용될 노력의 분포를 가정하는 것이다.
- 생명주기 예측모형
- 대형 프로젝트의 노력 분포 산정에 이용된다.
- 개발기간이 늘어날 수록 프로젝트 적용 인원의 노력이 감소한다.
- FP(기능점수 모형)
- 소프트웨어의 기능을 증대시키는 요인별로 가중치를 부여하고 요인별 가중치를 합산하여 총 기능점수를 산출
- 푸트남이나 COCOMO는 LOC를 기반으로 산정하지만 기능점수모형은 FP를 이용해서 산정한다.
- 비용산정의 자동화도구
- SLIM : rayleigh-Norden곡선과 putnam예측모델을 기초로하는 자동화 추정도구
- ESTIMACS : 다양한 프로젝트와 개인별 요소를 수용하도록 FP모형을 기초로하여 개발된 자동화추정도구
- IOT
- 인터넷으로 서로 연결하여 진보된 서비스를 제공하기위한 서비스기술
- 개방형 아키텍쳐가 필요하기 때문에 정보보안기술이 중요하다.
- M2M(machine to machine)
- 모바일 컴퓨팅
- 휴대형 기기로 이동하면서 자유로이 네트워크에 접속한다.
- 클라우드 컴퓨팅
- 컴퓨팅자원을 중앙컴퓨터에 두고 인터넷 기능을 갖는 단말, 통신포트만 연결하면 업무수행가능
- 그리드 컴퓨팅과 다른것
- 그리드컴퓨팅
- 수많은 컴퓨터를 하나의 컴퓨터처럼 묶어 분산처리하는 것이다.
- 다른것은 클라우드는 데이터센터의 자원을 필요한 순간 순간적으로 빌려주는 것이다.
- 모바일 클라우드 컴퓨팅(MCC)
- 모바일 기기로 클라우드 컴퓨팅 인프라를 구성하여 여러 가지 정보와 자원을 공유한다.
- 인터클라우드 컴퓨팅
- 각 다른 클라우드 서비스를 연동
- 대등접속: 클라우드 서비스 제공자 간 직접연계
- 연합 : 동적 자원할당을 통해 논리적으로 하나의 서비스제공
- 중개 : 제공자를 통한 중개 서비스 제공
- 메시 네트워크
- 차세대 이동통신, 홈네트워킹, 공공안전 , 대규모 디바이스의 네트워크에 최적화
- 와이선(Wi -sun)
- 장거리 무선 통신을 필요로 하는 사물인터넷 서비스를 위한 저전력 장거리 통신기술
- NDN(named data networking)
- 콘텐츠 자체 정보와 라우터 기능만으로 데이터 전송을 수행한다. 클라이언트와 서버가 패킷의 헤더에 내장되어있는 주소정보를 이용하여 기존의 IP망을 대체할 새로운 인터넷 아키텍처로 떠오른다.
- NGN(next generation network)
- 차세대 유선망 기반의통신망으로 완전한 이동성의 제공이 목표이다.
- 하나의 망이 인터넷 처럼 모든 정보와 서비스등을 압축하여 전송한다.
- SDN(software defined networking)
- NFC (near field communication)
- UWB (ultra wide band)
- 짧은 거리에서 많은 양의 디지털 데이터를 낮은 전력으로 전송하기 위한 무선기술로 디지털펄스라고하며 블루투스와 비교된다.
- 피코넷(PICONET)
- 여러개의 독립된 통신장치가 블루투스 혹은 UWB를 사용해서 통신망을 형성하는 무선 네트워크 기술이다.
- 사전에 네트워크 정의와 계획 없이 상황에 따라 조정 프로토콜에의해 마스터와 슬레이브 역활 ,좁은곳을 모두 포함한다.
- WBAN(wireless body area network)
- 웨어러블 혹은 몸에 심는 형태의 센서나 기기를 무선네트워크로 연결
- GIS(geographic information system)
- 지리적인 자료를 컴퓨터 응용시스템으로 , 위성을 이용해 사물의 위치정보를 파악
- USN(ubiquitos sensor network)
- 모든곳에 RFID태그를 부착 주변환경정보까지 탐색,
- SON(self organizing network)
- 주변상황에 맞추어서 스스로 네트워크를 구성한다.
- ad-hoc network
- 재난현장과 같이 고정된 유선망을 구축할수없을때 모바일 호스트를 이용하여 구성한 네트워크
- 네트워크 슬라이싱
- 하나의 물리적인 코어 네트워크 인프라를 독립된 가상 네트워크로 불리한다.
- 저전력 블루투스 기술(BLE - bluetooth low energy)
- 일반적인 블루투스와 동일한 2.4ghz주파수를 이용하지만 연결되지 않은 대기상태에서는 절전모드를 유지한다.
- 지능형 초연결망
- 4차 산업혁명 시대를 맞아 새로운 변화에 급격하게 증가하는 데이터 트래픽을 효과적으로 수용하기위한 정부주관사업
- 성형 네트워크(star형)
- 중앙에 중앙컴퓨터가있고 단말장치들이 연결된다.
- point to point
- 중앙컴퓨터를 통해 데이터 교환
- 장치의 추가와 제거가 쉽다.
- 중앙컴퓨터가 망가지면 전부다 망가진다.
- 중앙집중식이기 때문에 교환 노드의 수가 가장 적다.
- 링형 네트워크(Ring형)
- 이웃하는 것 끼리 point to point
- 단말장치의 추가 제거가 힘들다.
- 전송지연 발생 가능
- 중계기의 수가 많다.
- 하나가 고장나면 전체가 고장난다.
- 버스형 네트워크(BUS)
- 한개의 통신회선에 여러대의 단말장치가 연결되어있다.
- 물리적구조간단
- 추가와 제거가 용이
- 단말장치는 고장나도 영향주지않는다. 신뢰도가 높다.
- 기밀보장이 어렵고 길이의 제한이있다.
- 계층형 네트워크(Tree)
- 망형(Mesh)
- 모든 지점의 컴퓨터와 단말을 연결한 형태로 노드와 연결성이 높다.
- 많은 단말장치로부터 많은 양의 통신이 필요로 하는 경우이다.
- 통신 회선의 경로가 가장길다.
- 장애시에 따른 경로를 통해 데이터를 전송가능
- n(n-1) /2
- 네트워크 분류 LAN vs WAN
- 근거리 통신망(LAN)
- 전송속도가 빠르다
- 에러발생율이 낮다.
- 버스형 혹은 링형
- 광대역 통신망 (WAN)
- 멀리 떨어진 사이트를 연결하여 구성한다.
- 통신속도가 느리고 에러 발생률이 높다.
- AI
- 인간의 두뇌와 같이 스스로 추론 학습 판단 한다. Ex) lisp , prolog
- 뉴럴링크
- 생각을 업로드하고 다운로드하는것이 목표이며 컴퓨터와 뇌를 연결한다.
- 딥러닝
- 인간의 두뇌를 모델로 만들어진 인공신경망을 기반으로 하는 기계 학습 기술
- 전문가시스템
- 의료진단과 같은 분야의 전문가가 수행하는 고도의 업무를 지원하기 위한 컴퓨터 응용 프로그램
- 지식베이스 + 추론기구
- 증강현실(AR)
- 실제 촬영한 화면에 가상의 정보를 부가하여 보여주는 기술로 MR이라고도 한다.
- 블록체인
- 온라인 금융 거래 정보를 온라인 네트워크의 디지털 장비에 분산하여 저장한다.
- 생성된 블록은 기존의 블록체인에 연결되고 다시 복사되어 각 사용자의 디지털 장비에 분산 저장된다.
- 비용이 절감되고 해킹이 어려워짐에 따라 보안 및 거래 안전성도 향상된다.
- 분산 원장 기술(BLT)
- 중앙 관리자가 중앙 데이터 저장소가 존재하지 않고 p2p 참여자에게 모든 거래목록이 분산 저장되어 거래할때마다 지속적으로 갱신되는 디지털 원장을 의미한다.
- 해시(hash)
- 메지를 고정된 길이의 값이나 키로 변환시키는것이다.
- 양자 암호키 분배(QKD :Quantum key distribution)
- 양자 통신을 위해 비밀키를 분배하여 관리하는 것이다.
- 프라이버시 강화기술(pet : privacy enhancing technology)
- 디지털 저작권 관리 (DRM : digital rights management)
- 인터넷이나 기타 디지털 매체를 통해 유통되는 데이터의 저작권을 보호하고 안전한 배포를 활성화하기위함
- 공동평가기준(CC : common criteria)
- Iso 15408 표준으로 채택된 정보보호 제품 평가기준이다.
- 개인정보영향평가제도(PIA : privacy impact assessment)
- 개인정보 시스템의 중요한 변경시 국민의 사생활에 미칠 영향에 미리 조사 분석 평가하는 제도이다.
- 그레이웨어(GRAYware)
- 제공자는 악의적이지 않지만 사용자는 악의적일수도 있으며 그렇지 않을수도 있는 공유웨어이다.
- 메시업(mash up)
- 웹에서 제공하는 정보 및 서비스를 이용하여 새로운 소프트웨어나 서비스 데이터베이스를 만드는 것이다.
- 리치 인터넷 어플리케이션(RIA : rich internet application)
- 플래시 애니메이션 기술과 웹 서버 애플리케이션 기술을 사용해 역동적이고 인터렉티브한 웹페이지 제작 기술이다.
- 시멘틱 웹(semantic web)
- 컴퓨터가 사람을 대신하여 정보를 읽고 이해하며 가공하여 새로운 정보를 만들어 낼 수 있도록 이해하기 쉬운 의미를 가진 차세대 지능형 웹이다.
- 증발품(vaporware)
- 계획 혹은 배포 계획은 발표되었지만 아직 배포는 되지 않은 소프트웨어이다.
- 오픈그리드 서비스 아키텍처 (OGSA)
- 웹 서비스를 그리드 상에서 제공하기 위해 만든 개방형 표준
- 서비스 지향 아키텍쳐(SOA : service oriented architecture)
- 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 구축하는 정보기술 아키텍처
- 서비스형 소프트웨어 (Saas : service as a service)
- 소프트웨어의 여러기능 중에서 사용자가 필요로 하는 서비스만 이용할 수 있도록 한 소프트웨어이다.
- 소프트웨어 에스크로(임치) software escrow
- 저렴한 비용으로 소프트웨어를 안정적으로 사용및 유지보수 받을 수 있도록 소스 프로그램과 기술 정보 등을 제3기관에 보관하는 것이다.
- 복잡 이벤트 처리(CEP : complex event processing)
- 많은 사건들 중 의미가 있는 것만을 추출할수 있도록 조건의 정의하는 데이터
- 디지털 트윈
- 디지털 트윈은 현실속의 사물을 소프트웨어로 가상화한 모델로 여러분야에서 주목받고있다.
- 고가용성(HA : high availability)
- 장애 발생 시 즉시 다른 시스템으로 대체 가능한 환경을 구축하는 메커니즘을 의미한다. ( 클러스터 ,이중화 )
- 3D 프린팅T
- 평면에 출력하는 것이 아니라 손으로 만질 수 있는 실제 물체로 만들어 내는 것을 말한다.
- 4D 프린팅
- 스스로 형태를 변화시키거나 제조되는 자가 조립기술 , 인간의 개입 없이 열 진동 습도 중력등 다양한 환경이 필요
- RAID
- 여러개의 하드디스크로 디스크 배열을 구성하여 저장한다.
- 4K 해상도
- 앤스크린 (N - screen)
- N개의 서로 다른 단말기에서 동일한 콘텐츠를 다양하게 즐길수 있는 서비스
- 컴패니언 스크린
- 방송내용을 공유하며 추가적인 기능을 수행하는 것 , 세컨트 스크린
- 신 클라이언트(thin client)
- 주변장치는 없이 기본적인 메모리만 갖추고 서버와 네트워크로 운용되는 개인용 컴퓨터
- 패블릿(phablet)
- C형 usb
- 아래위의 구분이 없고 속도는 초당 10기가비트고 전력은 최대 100w까지 전송가능하다.
- 멤스
- 초정밀 반도체 제조 기술을 바탕으로 댜양한 기술로 미세 가공하여 전기기계적 동작을 할수있도록한다.
- 트러스트존 기술
- 일반 어플리케이션을 처리하는 노멀 구역과 보안이 필요한 어플리케이션을 처리하는 보안구역으로 분할하여 관리하는 하드웨어 기반의 보안기술
- 운영체제 수준에서 안전하게 보호하는 것이 가능하다.
- 엠디스크
- 한 번 의 기록만으로 자료를 영구 보관할수있는 광 저장장치이다.
- 변하지 않고 외부 요인의 영향을 받지도 않는다.
- 멤리스터
- 메모리와 레지스터의 합성어로 전류의 방향과 양등 기존의 경험을 모두 기억하는 특별한 소자이다.
- 전류가 끊어져도 복원이 된다.
- 빅데이터
- 분석체계로는 처리하기 어려운 막대한 양의 정형 또는 비정형데이터의 집합
- 브로드 데이터
- 다양한 채널에서 소비자와 상호작용을 통해서 생성된 기업마케팅에 있어 효율적이고 다양한 데이터이며 기존 데이터에 새로운 가치가 더해진 데이터를 의미한다.
- 메타 데이터
- 일련의 데이터를 정의하고 설명해 주는 데이터이다.
- 디지털 아카이빙
- 디지털 정보 자원을 장기적으로 보존하기 위한작업 , 효율적인 관리
- 하둡
- 오픈 소스를 기반으로 한 분산 컴퓨팅 플랫폼
- 데이터 세트를 병렬로 처리할 수 있도록 개발된 자바 기반 프레임워크
- 타조
- 아파치 하둡 기반의 분산데이터 웨어하우스 프로젝트
- 대규모 데이터 처리 혹은 실시간 상호 분석에 모두 사용할 수 있다.
- 데이터 다이어트
- 압축하고 중복된 정보는 중복을 배제하고 새로운 기준에 따라 나누어 저장하는 작업
- 데이터 표준화
- 시스템을 구성하는 데이터에 대한 원칙을 수립하고 적용한다.
- 데이터 표준
- 표준 단어 : 최소 단위의 단어를 의미한다.
- 표준 도메인 : 컬럼에 성질에 따라 그룹핑
- 표준 코드 : 이미 정의된 코드값으로 도메인읜 한유형
- 표준 용어 : 단어 도메인 코드가 정의되면 이를 기준으로 용어를 구성한다.
- 데이터 관리 조직
- 조직 내의 데이터에 대한 정의 체계화 감독등의 업무를 담당한다.
- 데이터 관리자(DA)는 데이터를 관리하고 데이터베이스 관리자(DBA)는 데이터베이스를 관리한다.
- 데이터 표준화 절차
- 데이터 표준화 요구사항 수집
- 데이터 표준 정의
- 데이터 표준 확정
- 데이터 표준 관리
- 데이터 표준화 대상
- 데이터 명칭
- 데이터 정의
- 데이터 형식
- 데이터 규칙
GRADE B
- ISO/IEC 12207
- CMMI
- 성숙도를 평가하는 모델
- 초기 - 관리 - 정의 - 정량적관리 - 최적화
- 초기 : 작업자의 능력이 성공여부
- 관리 : 특정한 프로젝트 내부의 프로세스 정의 및 수행
- 정의 : 조직의 표준 프로세스를 활용
- 정량적관리 : 프로젝트를 정량적으로 관리 및 통제
- 최적화 : 역량 향상을 위해 지속적인 프로세스 개선
- SPICE
- 생산성의 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준으로 공식명칭 ISO/IEC 15504
- 기관스스로하는것
- 5개의 프로세스범주와 40개의 세부 프로세스
- 고객 공급자 범주
- 공학 범주
- 지원
- 소프트웨어가 생명주기에서 다른프로세스에 의해 이용된다.
- 관리
- 조직
- 6단계
- 불완전 - 수행- 관리 - 확립 - 예측 - 최적화