요구사항 확인
소프트웨어 개발 절차 : 요구사항 분석 – 설계 – 구현 – 테스트 – 유지보수
요구분석 *캡쳐3
- 도출된 요구사항들간의 상충을 해결하고 SW 범위를 파악하며 SW가 환경과 어떻게 상호작용하는지 분석하는 과정
- 외부사용자와의 인터페이스 및 내부시스템 구성 요소간의 인터페이스를 정확히 분석해 시스템을 계층적이고 구조적으로 표현
요구분석 기법 - 사용자 그룹 인터뷰, 이해관계자 설문조사, 문헌 조사(개발팀은 업무 도메인 교육이나 튜토리얼에 참가한다)
- 프로토타이핑(기본적인 기능만 빠르게 구현), 사용자 스토리텔링(애자일 방법)
객체지향 개발
- 현실 세계를 프로그램에 반영
- 소프트웨어 재사용, 유지보수 향상 -> 소프트웨어 위기 해결 방안
- 관련 용어 : 객체, 클래스 메시지 / 캡슐화, 정보은폐, 추상화, 상속성, 다형성
객체
- 클래스의 인스턴스, 객체들 간의 상호작용은 메시지를 통해 이루어짐
- 데이터 : 객체가 가지고 있는 상태(속성, 변수)
- 연산자 : 객체의 데이터를 처리하는 행위(메소드, Operation, 함수)
클래스
- 하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화
- 공통된 속성과 연산을 갖는 객체의 집합(객체의 일반적 타입)
- 인스턴스 : 클래스에 속한 각각의 객체
캡슐화(Encapsulation)
- 속성과 메소드를 하나로 묶어서 객체로 구성하는것, 재사용 용이, 외부에서 변경 불가능
정보은폐(Information Hiding)
- 객체는 다른 객체로부터 자신의 자료를 숨기고 자신의 연산만을 통하여 접근을 허용
- 고려되지 않은 영향들을 최소화
상속(Inheritance)
- 상위 클래스의 메소드와 속성을 하위 클래스가 물려받는 것 -> 재사용이 가장 큰 이점
다형성(Polymorphism)
- 한 메시지가 객체에 따라 다른 방법으로 응답하는 것
- 많은 클래스들이 동일한 메소드명을 이용하는 것
UML (OMG에서 발표)
- 객체지향 소프트웨어 개발과정에서 산출물을 명세화, 시각화, 문서화할 때 사용되는 표준화된 범용 모델링 언어
UML 특징
- 가시성 : 반복/점진적으로 구체화하여 소프트웨어의 가시성 제공
- 문서화 : 개발규모나 프로세스 및 언어와 무관하게 개발자간 의사소통 도구 제공
- 명세화 : 단순 표기법이 아닌 구현에 필요한 개발적 요소 및 기능에 대한 명세 제공
UML 구성요소
- View : 모델화된 시스템의 서로 다른 모형 제공(관리자, 사용자, 개발자 등 서로 다른 관점)
- Diagram : View의 내용을 나타내기 위한 9가지 다이어그램 제공
- Model Element : 객체지향 개념을 표현하기 위해 사용되는 요소(클래스, 속성, 오퍼레이션)
- General Mechanism : 모델 요소에 대하여 주석과 의미 제공
UML 다이어그램 종류 책 참고
- Use Case : 사용자의 입장에서 본 시스템의 행동 , 시스템의 기능적인 요구 정의
- Class : 시스템 내 클래스들의 정적 구조 표현, 속성과 동작으로 구성
- Object : 객체 사이의 정적인 관계를 파악하기 위해 작성, 클래스 다이어그램 구체화
- Component : 코드 컴포넌트에 바탕을 둔 코드의 물리적 구조, 실질적인 프로그래밍 작업에 사용
- Deployment : 시스템 HW와 SW간의 물리적 구조 표현, 실질적 컴퓨터와 Device간 관계 표현, 컴포넌트 사이의 종속성 표현
- Activity : 행위의 순서적 흐름 표시, 순서도나 병렬적인 처리
- State : 클래스의 객체가 가질 수 있는 모든 가능한 상태와 상태간의 전이 표현, 진입과 탈출 조건 등 자세히 기술, 둥근 직사각형으로 상태 표현
- Sequence : 객체와 객체간의 상호작용을 메시지 흐름으로 표시, 시간 또는 순서가 중요
- Collaboration : 오브젝트간의 연관성을 표현(네트워크 형태), 내용이 중요, 상위버전에선 Communication
Agile(기민한, 좋은것을 빠르고 낭비없게 만드는 것)
- 전체 개발 단계에서 변화에 대한 신속한 대응으로 요구사항을 지속적으로 분석, 반영하여 배포 시간차를 최소화하는 개발방법론
애자일선언문 (가치있게 여기기)
- 개인과 상호작용 > 공정화 도구
- 작동하는 소프트웨어 > 포괄적인 문서
- 고객과의 협력 > 계약 협상
- 변화에 대응하기 > 계획을 따르기
XP (Extreme Programming)
- 의사소통 개선과 즉각적인 패드백에 의한 단순한 코딩으로 SW 품질 높이는 방법론
- 1~3주 고객과 함께 반복 (고객만족 강요)
- 5가지 가치 : 용기, 단순성, 의사소통, 피드백, 존경
- 12개 실천 항목
SCRUM
- 매일 정해진 시간 정해진 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리중심 방법론
- 30일마다 동작 가능한 제품을 제공하는 Sprint 반복 중심
- 백로그 : 제품과 프로젝트에 대한 요구사항들간의
- 스크럼미팅 : 매일 스크럼(15분 정도)미팅으로 오늘과 내일 해야 할 일 계획 수립
- 스크럼마스터 : 프로젝트 리더
Lean (낭비=결함라는 철학적인 접근 방식)
- 린시스템의 품질기법을 소프트웨어 개발 프로세스에 적용하여 프로세스의 낭비요소를 제거 후 결과를 측정, 성과를 분석해 소프트웨어의 품질을
향상시키는 개발방법론 - 도요타의 생산방식( 낭비 발견하고 제거 -> 고객에게 가치 빠르게 제공 )
- 7가지 원칙 : 낭비제거, 품질 내재화, 지식창출, 늦은확정, 빠른 인도, 사람 존중, 전체 최적화
애자일과 전통 방법론 비교 - 폭포수 기법 vs 애자일 기법 *캡쳐4
문제1 자료사전, 데이터 사전
- 데이터를 설명하는 데이터(메타 데이터)
- 기호 =(정의), +(연결), |, { }(반복), **(주석), ( )(생략)