소프트웨어 공학 개론
소프트웨어 공학
-
소프트웨어 공학이란 SW 규모가 커짐에 따라 SW 생산의 모든 측면과 관련된 공학
-
소프트웨어 공학 필요성 소프트웨어를 최소 비용으로 최소 시간에 개발하기 위해서 (※ 소프트웨어 위기)
-
소프트웨어 품질 평가 국제표준 (ISO 9126) ① 기능성 ② 신뢰성 ③ 사용성 ④ 효율성 ⑤ 유지보수성 ⑥ 이식성
-
소프트웨어 생명 주기 모형
- 프로젝트 비용 산정과 개발 계획 수립의 기본 골격
- 요구사항 분석(정의) -> 개발(설계, 구현, 테스트) -> 유지보수
- 폭포수 모델(Waterfull Model)
- 선형 순차적 모델
- 처음부터 사용자들이 요구사항 명확하게 제시해야함
- 프로토타입 모델(Prototype Model)
- 프로토타입 모델 (샘플 모델 제시)
- 개발 단계에서의 빠른 오류 수정
- 나선형 모델(Spiral Model)
- 대규모 프로젝트에 적합
- 여러 차례 개발 과정 반복
- 리버스 엔지니어링
- 이미 만들어진 시스템을 역으로 추적
- 유지보수의 과정, 대상 시스템 분석
-
Verfication과 Validation Verfification : 요구사항 명세서와 설계 명세서에 따라 소프트웨어를 구현하였는지 평가하는 프로세스 (개발자 입장) Validation : 사용자의 입장에서 소프트웨어가 만족스러운지 평가하는 프로세스
-
SW 개발 단계에 따른 테스트(V모델)
- 단위 테스트(모듈 중심)
- 통합 테스트(모듈간의 상호작용)
- 시스템 테스트(시스템 전체 작동)
- 인수 테스트(사용자 주도 알파,베타)
- 회귀 테스트(확정 테스트)
- 블랙박스 테스트 / 화이트박스 테스트 블랙박스 테스트
- 명세 기반 테스트
- 입력 값에 대한 예상 출력값 확인 화이트박스 테스트
- 코드 기반 테스트(내부 논리구조 분석)
- 입력 데이터를 갖고 실행 상태 추적
블록체인
- 데이터 분산 처리 기술
-
네트워크에 참여하는 모든 사용자가 모든 거래 - 내역 등의 데이터를 분산, 저장하는 기술을 지칭
- 블록들을 체인형태로 묶은 형태이기 때문에 블록체인이라고 부름
기존 은행의 역할
-
- 보관: 거래 내역이 담긴 장부 보관
-
- 검증 : 거래 내역에 이상 유무 확인
블록체인 특징
-
- 분산 저장 => 데이터 위변조 불가능 (모두에게 장부 저장)
-
- 작업 증명 => 거래 내역 정리 및 이에 대한 보상(코인, 거래수수료)을 받음-> 채굴 중앙 관리자가 필요없음 ※ 채굴 작업 증명(Proof of Work)과 보상을 합친 개념
※ 작업증명: 목표값 이하의 해시를 찾는 과정을 무수히 반복, 해당 작업에 참여했음을 증명하는 합의 알고리즘. 작업 증명을 통과해야 블록 생성 가능 (이를 통해 네트워크를 수 많은 공격들로부터 보호 가능)
※ 합의 알고리즘: 어떤 트랜잭션이 발생했을 경우 해당 트랜잭션이 유효한 트랜잭션인지에 대한 합의 방법 및 새로운 블록 검사
※ 보상 : 새로 발행되는 비트코인과 해당 블록에 포함되는 거래의 거래 수수료의 합 활용 가능성
- Banking & Payment
- 암호화폐 ex) 비트코인 디지털 기록이 투명하게 보관, 국가 간 거래도 수수료 없이 진행.
- Supply chain management (공급망 관리)
- 중국산 감자인지 국내산인지 찾기 좋다.
- 실제로 쓰이는 분야 –‘다이아몬드’,’약품’
- Charity 기부금
- Voting 투표
- public benefits
- 영수증, 증빙서류 없이 사용 가능
현재 상황
- 인프라가 부족 ex) 싱가폴 항공 블록체인 시스템을 구현했지만, 결제 등에 필요한 인프라 부족으로 어려움 겪음
- 다른 기술의 확장과 함께 이뤄져야 보다 빠른 상용화 가능 ex) 블록체인 기반 농산물 공급망 관리 시스템 -> Iot 관련 기반 시설 투자 선행 필수
- 가트너 하이프 사이클 3단계에 접어 들어선시점(기술의 실체가 알려지고 그 한계가 드러나면서 관심이 줄어드는 시기)
걸림돌
- 대량 데이터 처리 문제
- 제도와 법률
- 생태계 조성 여건 x (기술 공유x)
참고자료