이 영역을 누르면 첫 페이지로 이동
와이즈레코드 블로그의 첫 페이지로 이동

와이즈레코드

페이지 맨 위로 올라가기

[자료구조] 2. 자료구조 기본 개념

와이즈레코드

[자료구조] 2. 자료구조 기본 개념

  • 2023.10.21 15:15
  • ✍🏻배움일지/자료구조

이전 정리글 ↓

 

[자료구조] 1. 자료구조 쉽게 이해하기

글을 쓰기에 앞서, C언어를 기반으로 서술함을 알립니다. 자료구조(Data Structure) 자료구조의 사전적 의미는 이렇다. 컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저

w8err.tistory.com

 

 

글을 쓰기에 앞서, C언어를 기반으로 서술함을 알립니다. 

 

목차 

▷ System Life Cycle의 개념 

▷ 알고리즘 명세 Algorithm Specification

 

System Life Cycle의 개념

System Life Cycle은 보통 S/W Life Cycle이라고도 칭한다.

소프트웨어 개발의 과정을 단계별로 나눈 것이다. 

 

보통은 위와 같이 요구사항 분석 - 시스템 분석 - 설계 - 구현 - 검증 5단계로 크게 나뉜다. 

해당 모델은 Waterfall Model(폭포수 모델) 이다. 

자료구조에선 이해만 하자. Life Cycle이 궁금하다면 검색해보자.

 

요구사항 분석(Requirements)

문제와 결과 정보를 규정한다. 

프로젝트의 방향성을 이해하는 단계.

 

시스템 분석(Analysis)

시스템 분석에는 상향식 설계(Bottom-Up Analysis)와 하향식 설계(Top-Down Analysis) 2개로 나뉜다.

 

상향식 설계

☞ 세부 기능의 구현을 초기에 강조

☞ 결과 프로그램은 세부 기능들의 조합임

☞  단점 : 주어진 문제의 고유 특성을 고려하지 않는 설계가 될 수 있다. 

 

하향식 설계

☞ 프로그램을 관리 가능한 세그먼트들로 분할

☞ 단점 : 도미노 효과가 발생 가능

 

도미노 효과?
한 가지 세그먼트에 문제가 발생했을 때, 연관된 요소 전부를 뜯어고쳐야 될 수도 있다. 

 

설계 단계(Design)

데이터와 연산의 관점에서 접근해, 실제로 구현이 가능하도록 계획하는 단계다.

프로그래밍 언어엔 독립적이다. 

 

☞ 데이터 관점 : 추상적 데이터 타입(Abstraction Data Type, ADT)으로 접근

먼저 데이터를 어떻게 구조화할지 고려하는 단계다.

이때 추상적 데이터 타입 (ADT)를 사용해 추상하여 필요한 요소들을 정한다. 

 

☞ 연산의 관점 : 알고리즘(Algorithm)으로 접근

데이터를 어떻게 처리할지를 생각하는 단계다.

 

구현 단계(Refinement and Coding)

괜히 아이콘을 삽으로 해놓은 것이 아니다. 굉장한 삽질이 필요한 시간. 

이때부터는 실제 구현 단계에 돌입한다. 

데이터의 구현 방법을 선택하고, 각 연산들의 구현 알고리즘을 선택해 개발한다. 

주요 고려 사항은 성능(Performance)이다. 

 

검증 단계(Verification)

구현을 완료했다면, 검증할 시간이다.

검증에도 몇 가지 프로세스가 있다.

 

정확성 증명(Correctness Proof)

☞ 수학적 기법으로, 시간이 많이 소요된다.

     매우 많이 소요되서 불가능할 수도 있다.

☞ 신뢰성이 높은 알고리즘들을 사용해 증명한다.

☞ 구현 단계 이전이나 구현 중에 진행 가능하다.

 

검사(Testing)

☞ 양질의 테스트 데이터는, 실행 코드의 모든 부분을 검사하는 것.

☞ 프로그램의 실행 시간(성능 고려)도 측정한다

 

오류 제거(Error Removal)

☞ 우리가 흔히 아는 디버깅이다. 경우에 따라 개빡셀 수도 있다.

☞ 문서화가 안 되어있고, 최적화가 되지 않은 코드를 디버깅 한다는건 ... 상상하기도 싫다. 

 

+ 좋은 프로그램이란, 1) 문서화가 되어있고  2) 전체 프로그램이 기능적으로 잘 분리되어 있는 프로그램이다.

 

 

알고리즘 명세(Algorithm Specification)

알고리즘의 정의는 이렇다.

어떤 일을 수행하기 위한 유한 개의 명령어들의 나열. 

프로젝트에서 사용될 알고리즘을 정의하고 설명하는 단계다.

이 명세는 소프트웨어 시스템에서 특정 작업이나 기능을 수행하기 위한 알고리즘의 여러가지 사항들을 나열한다. 

 

알고리즘이 만족해야 할 조건들

1장에도 설명되어 있지만, 복습하자.

☞ 입력(Input) : 0 혹은 그 이상의 입력이 존재해야 한다.

☞ 출력(Output) : 적어도 하나 이상의 결과물이 출력되어야 한다.

☞ 명확성(Definiteness) : 알고리즘을 구성하는 명령어들의 의미는 명확해야 한다. 

☞ 유한성(Finiteness) : 알고리즘은 유한 개의 명령어들을 수행한 후 종료되어야 한다.

☞ 실행가능성(Effectiveness) : 모든 명령어들은 실행 가능하여야 한다.

 

 

이렇게 실제 C언어로 자료구조를 구현해보기 전의 기본 개념들을 간단하게 알아봤다.

 

다음 정리글 ↓

 

[자료구조] 3. C언어 배열과 구조체

글을 쓰기에 앞서, C언어를 기반으로 서술함을 알립니다. 이전 정리글 ↓ [자료구조] 2. 자료구조 기본 개념[자료구조] 1. 자료구조 쉽게 이해하기 글을 쓰기에 앞서, C언어를 기반으로 서술함을

w8err.tistory.com

 

728x90
반응형

'✍🏻배움일지 > 자료구조' 카테고리의 다른 글

[자료구조] 순환(recursion) / 반복(iteration)  (12) 2023.10.25
[자료구조] 5. 포인터(Pointer)  (33) 2023.10.23
[자료구조] 4. 배열의 응용 : 다항식  (0) 2023.10.22
[자료구조] 3. C언어 배열과 구조체  (0) 2023.10.22
[자료구조] 1. 자료구조 쉽게 이해하기  (2) 2023.10.18

댓글

댓글을 사용할 수 없습니다.

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [자료구조] 5. 포인터(Pointer)

    [자료구조] 5. 포인터(Pointer)

    2023.10.23
  • [자료구조] 4. 배열의 응용 : 다항식

    [자료구조] 4. 배열의 응용 : 다항식

    2023.10.22
  • [자료구조] 3. C언어 배열과 구조체

    [자료구조] 3. C언어 배열과 구조체

    2023.10.22
  • [자료구조] 1. 자료구조 쉽게 이해하기

    [자료구조] 1. 자료구조 쉽게 이해하기

    2023.10.18
다른 글 더 둘러보기

정보

와이즈레코드 블로그의 첫 페이지로 이동

와이즈레코드

  • 와이즈레코드의 첫 페이지로 이동

공지사항

  • 공지 - 📢공지글입니다

검색

카테고리

  • 전체 글 (58)
    • 💼 회사일지 (1)
    • 🧑‍💻개발일지 (2)
      • 게임기획 (0)
      • Unity (0)
    • 🎶음악일지 (5)
    • ✍🏻배움일지 (2)
      • 컴퓨터구조 (3)
      • 데이터통신 (8)
      • 자료구조 (7)
    • ⭐리뷰일지 (4)
      • 🎮게임 (2)
      • 🔧IT기기 (1)
    • 🔗공유일지 (7)
    • 🖋️Original (12)
      • 글 (12)
    • 💬Off the Record (4)

메뉴

  • 🏠Home
  • 🐈‍⬛Github
  • ✏️GuestBook
  • 🔧Setting

최근 글

반응형
250x250

정보

w8er의 와이즈레코드

와이즈레코드

w8er

블로그 구독하기

  • 구독하기
  • 네이버 이웃 맺기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © w8er.

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.