자료구조와 프로그래밍 기초

Ryu Honggyu·2024년 7월 26일
0

컴퓨터 사이언스

목록 보기
2/6
post-thumbnail

자료형과 자료구조

자료형

  • 자료형 = 데이터타입
  • 데이터가 저장되는 방식

파이썬에서의 자료형

자료형설명예시
int정수형 데이터 타입123, -456
float실수형 데이터 타입 (소수점 포함)3.14, -2.71
bool논리형 데이터 타입True, False
str문자열 데이터 타입"hello", "world"
list배열, 리스트. 순서가 있는 변경 가능한 시퀀스형 자료구조[1, 2, 3], ['a', 'b', 'c']
tuple순서가 있는 변경 불가능한 시퀀스형 자료구조(1, 2, 3), ('a', 'b', 'c')
dict키-값 쌍으로 구성된 변경 가능한 매핑형 자료구조{'key1': 'value1', 'key2': 'value2'}
set순서가 없고 중복을 허용하지 않는 변경 가능한 자료구조{1, 2, 3}, {'a', 'b', 'c'}

자료구조

  • 자료구조: 데이터를 효율적으로 저장하기 위한 논리와 규칙 모음

선형구조

  • 데이터들을 순차적으로 나열한 배열들.
자료구조설명사용 예
리스트임의의 위치에 데이터를 저장하나 각 데이터 간 순서는 존재배열, 리스트
스택먼저 들어온 데이터를 나중에 처리하는 선입후출의 자료구조DFS, 백트래킹, 후위연산
먼저 들어온 데이터를 먼저 처리하는 선입선출의 자료구조BFS, 작업 스케줄링, 티켓 시스템

노드와 간선으로 연결된 자료구조

자료구조설명특징
그래프부모-자식과 같은 관계가 명확하지 않다어떻게든 이어질 수 있음
트리계층적이며 루트 노드(시작 노드)를 제외한 모든 노드는 부모를 가진다-
트리의 종류
종류설명
이진트리각 부모노드의 자식이 2개를 넘을 수 없음
편향트리각 부모노드는 지정된 방향으로만 자식을 1개 가짐
포화이진트리각 부모노드의 자식은 0개 또는 2개여야 함
완전이진트리모두 채워져있되 마지막 레벨의 노드들은 가능한 왼쪽부터 채워져 있는 이진 트리

프로그래밍 기본

컴파일러와 인터프리터

유형설명
공통점스크립트를 기계어로 번역해주어 컴퓨터가 실행하게 해줄 수 있게 만들어주는 프로그램
컴파일러스크립트 전체를 째로 번역 후 실행
인터프리터한 문장씩 해석하고 시행하기를 반복
예시파이썬, 자바스크립트 등이 인터프리터를 채택

메모리

메모리 영역설명
코드 영역프로그램을 실행하기 위한 명령어들의 저장소
데이터 영역정적 및 전역 변수를 저장. 프로그램 실행 시 나타나고 종료 시 소멸
힙 영역동적으로 할당된 메모리의 저장소. 필요에 따라 프로그램 실행 중에 메모리를 할당하고 해제할 수 있음. 데이터 인출은 선입선출 방식으로 진행됨
스택 영역함수 호출, 지역 변수, 및 함수의 매개변수를 저장. 함수 호출 시 할당되고, 함수가 종료되면 해제됨

객체 지향 프로그래밍 (Objected-Oriented Programming, OPP)

개념설명
객체스크립트로 구성된 여러 개의 독립된 단위. (클래스 등)
객체 지향 프로그래밍스크립트를 단순히 명령어를 순차적으로 수행하는 것을 넘어, 명령어 블록을 만들고 그것을 불러오는 방식으로 구성하는 프로그래밍
클래스내가 원하는 객체를 생성할 방법들을 작성해 넣은 것

객체 지향 프로그래밍의 주요 개념

개념설명
캡슐화클래스라는 캡슐 안에 기능들을 저장
추상화클래스를 설계하는 단계
상속클래스 안에 다른 클래스를 넣어 부모-자식 관계를 만듬
다형성변수나 함수 하나가 상황에 따라 다른 기능을 수행함
오버라이딩상속받은 클래스 내에서 기능을 재정의
오버로딩함수의 이름은 같으나 매개변수는 다르게 설정해, 사용 목적에 따라 다르게 불러오기

클래스 관련 다이어그램

다이어그램설명
클래스 다이어그램클래스의 속성과 메소드를 나타내는 다이어그램
복합체 구조 다이어그램클래스 간의 복합적인 관계를 나타내는 다이어그램

소프트웨어 개발 방법론

방법론설명장점단점
폭포수 방법론계획, 설계, 개발, 시험, 유지보수 순으로 진행하며 소프트웨어 개발 생명 주기가 굉장히 김.명확한 단계와 문서화로 큰 플젝에 적합변경 및 수정이 어려움
애자일 방법론반복적이고 점진적으로 개발하되, 각 주기마다 기능을 추가하고 개선함. 소프트웨어 개발 생명 주기가 짧음.빠른 피드백 및 적응성명확한 계획 수립이 어려움

디자인 패턴

패턴MVCMTV
Model데이터와 비즈니스 로직을 관리데이터와 비즈니스 로직을 관리
Template-데이터를 표시하는 템플릿
View사용자에게 데이터를 표시템플릿과 모델을 연결하고 데이터 전달
Controller사용자 입력을 처리하고 모델 및 뷰와 상호작용-
  • MVC: JAVA 진영. 역할을 분리하여 유지보수성과 확장성을 높임.
  • MTV: Django 진영. 역할 분리를 통해 명확한 웹 페이지 구성을 지원.

형상 관리를 위한 툴

설명
git분산 버전 관리 시스템
gerrit코드리뷰 지원 툴
sourcetreegit 을 GUI로 보기 편하게 해줌

V&V (Verification & Validation)

  • 정의: 배포 전 소프트웨어의 완성도를 검증하는 과정. (QA)
  • Verification: 개발자 중심에서 니즈를 충족하는지 검증. (요구사항)
  • Validation: 사용자 중심에서 쓰기 좋은지 확인. (사용감)

테스트 단위

테스트 단위설명
Unit Test함수, 모듈 등 가장 작은 단위들을 테스트
Integration Test함수, 클래스, 모듈 간 기능 등을 합쳤을 때 잘 굴러가는지 테스트
System Test실제 적용할 하드웨어에 소프트웨어를 깔아 테스트
Acceptance Test인수 시험. 출시 및 배포 전 최종 테스트

테스트 종류

테스트 종류설명
정적 테스트소프트웨어를 구동하지 않고 테스트
동적 테스트소프트웨어를 구동해서 테스트
정적 테스트 종류
종류설명
동료 검토동료 간의 코드 검토
코드 리뷰코드의 품질을 검토하고 개선하기 위한 리뷰
기술 검토기술적인 측면에서의 검토
동적 테스트 종류
종류설명
블랙박스 테스트소프트웨어 작동원리를 모른 채 니즈에 일치하는지만 보고 판단
화이트박스 테스트소프트웨어 작동원리를 안 채 의도대로 작동하는지 확인
profile
알고리즘 & 웹 & CS & AI

0개의 댓글