728x90
반응형
시스템 생명 주기(System Life Cycle)
요구사항
- 시스템의 요구 사항을 파악, 분석
- 시스템이 무엇을 해야 하는지, 어떤 기능이 있어야 하는지, 사용자의 기대는 무엇인지 결정
분석
- 시스템의 동작, 기능 및 특성을 정의
- 시스템의 다양한 구성 요소, 시스템의 관계 및 상호작용 방식을 식별
설계
- 다양한 구성 요소, 구성 요소 간의 관계 및 인터페이스를 포함하여 시스템의 아키텍처 설계
- 시스템 구현에 대한 세부 계획 개발
정제와 코딩
- 설계 정교화, 소프트웨어 코드화
- 디자인을 컴퓨터에서 실행할 수 있는 코드로 변환
- 코드 작성, 테스트 및 디버깅 포함
검증
- 시스템을 테스트하여 요구사항을 충족하고 오류가 없는지 확인
- 사용자의 기대를 충족하고 의도한 대로 작동하는지 확인
객체 지향 설계
구조적 프로그래밍 설계와의 비교
- 유사점: 분할-정복 기법(복잡한 문제를 여러 개의 단순한 부분 작업으로 나누어 각각 개별적으로 해결)
- 차이점: 과제 분할 방법
객체 지향적 분해
- 응용 분야의 개체를 모델링하는 객체의 집합
- 소프트웨어의 재사용성 향상
객체 지향 프로그래밍의 기본 정의와 개념
객체(object)
- 계산을 수행, 상태를 갖음
- 데이터 + 절차적 요소
객체 지향 프로그래밍
- 객체는 기본적인 구성단위
- 각 객체는 어떤 타입의 인스턴스
- 클래스는 상속 관계로 연관됨
데이터 캡슐화와 추상화
데이터 캡슐화
- 정보 은닉
- 외부로부터 데이터 객체의 자세한 구현을 은닉
데이터 추상화
- 객체의 명세와 구현을 분리
- 무엇과 어떻게를 명확하게 구분
장점
- 소프트웨어 개발의 간소화 - 복잡한 작업을 부분 작업들로 분해
- 테스트와 디버깅 - 각 부분 작업을 독자적으로 테스팅, 디버깅
- 재사용성 - 자료 구조에 대한 코드와 연산을 추출해서 다른 소프트웨어 시스템에서도 사용
- 데이터 타입의 표현에 대한 수정
- 데이터 타입이 계속 똑같은 연산을 제공하고, 이들 연산이 계속 같은 기능을 하는 한 프로그램의 나머지 부분에 아무런 영향을 주지 않음
- 데이터 타입의 내부 구현에 직접 접근하는 연산들만 수정
데이터 타입
객체들과 객체들에 대한 연산의 집합
C++ 데이터 타입
기본 데이터 타입
- char, int, float, double 등
- 타입 수식어: short, long, signed, unsigned
파생 데이터 타입
- 포인터 타입, 참조 타입
데이터를 묶는 구조
- 배열, 구조체, 클래스
추상 데이터 타입
- 객체와 연산에 대한 명세가 객체의 표현과 연산의 구현으로부터 분리된 방식으로 구성된 데이터 타입
알고리즘 명세
알고리즘: 특정 작업을 수행하는 명령어들의 유한 집합
알고리즘의 요건
- 입력: 외부에서 제공되는 데이터가 0개 이상
- 출력: 적어도 한 개 이상의 결과 생성
- 명확성: 각 명령은 명확하고 모호하지 않아야 함
- 유한성: 각 알고리즘대로 수행하면 어떤 경우에도 반드시 종료
- 유효성: 반드시 실행(구현) 가능해야 함
알고리즘 기술 방법
- 자연어
- 흐름도(flowchart)
- C++
728x90
반응형
'전공 > 자료구조' 카테고리의 다른 글
[자료구조] 희소 행렬, 행렬 전치 (2) | 2023.05.04 |
---|---|
[자료구조] 다항식 표현, 다항식 덧셈 (2) | 2023.05.02 |
[자료구조] 공간복잡도, 시간복잡도, 성능평가 (0) | 2023.05.01 |
[자료구조] 이원 탐색, 순환 이원 탐색 (0) | 2023.04.30 |
[자료구조] 선택정렬 (0) | 2023.04.30 |