- 자료형
- 데이터가 저장되는 형식
- 파이썬 자료형
- 정수 (integer): 음수, 양수를 포함한 모든 수, 소수점은 제외 형식
- 1, 0, -1
- 실수 (float): 정수의 형태를 포함한 모든 수, 소수점 포함 형식
- 1.0, 10.0, -1.0, -5.1234578
- 논리형 (boolean**): 참, 거짓을 가지는 형식
- True, False
- 문자열 (string): 문자로 이루어지는 형식
- "value1"
- 리스트 (list): 자료형들의 집합된 형식
- [value1, value2, [ value3 , value4], ( value5, value6), True, False, {key: value}, 1, 2, 3, 4.5 .....]
- 튜플 (tuple): 리스트와 유사하나 다른 점은 값이 변경 되지 않는다는 특징을 가진다
- (1, 2, 3, 3, 3), (’a’, ‘b’, ‘c’, ‘c’, ‘c’)
- 딕셔너리 (dictionary): 자료형들의 집합된 형식으로 리스트와 유사해 보인다. 리스트는 value 값만 가지는데 반해 딜셔너리는 key, value 형태로 이루어져 있다. 또한 리스트는 index를 통항여 value 값에 접근하는 방식이나 딕셔너리는 key를 통하여 value값에 접근한다
- value의 값은 기존 자료형들이 들어 갈 수 있다. 대신 key 값은 고유 key 값으로 중복이 되면 안된다
- { “key1”: 2024, “key2”: “안녕?”, “key3”: “안녕?” }
- 세트 (set): 중복을 허용하지 않는 자료형들의 집합된 형식
- 주로 집합관련하여 사용
- { “중복은”, “안되는”, “세트” }
- 정수 (integer): 음수, 양수를 포함한 모든 수, 소수점은 제외 형식
- 자료구조
- 데이터를 효과적으로 저장하기 위해 어떤 논리나 규칙으로 자료를 모아 놓은 구조
- 선형 구조
- 자료들 간에 관계가 1:1로 순차적으로 나열되어 있는 것을 의미
- 선착순, 랭킹, 줄서기 등등
- 배열 : 메모리상에 연속적인 공간에 데이터를 저장하는 방법
- 리스트 : 메모리상에 임의의 위치에 데이터를 저장하지만 각 데이터들이 앞뒤 관계를 갖게 하는 방법
- 스택 : 선입후출 방식의 자료구조, 선입후출(후입선출)이란 먼저 들어온 데이터가 나중에 처리되는 것을 의미
- 히스토리 기능을 구현
- DFS(깊이우선탐색), 후위연산, 백트래킹, 유효성검사 등 다양한곳에 사용
- 큐 : 선입선출 방식의 자료구조, 선입선출이란 먼저들어온 데이터를 먼저 처리 되는 것을 의미
- 작업스케줄링 기능을 구현
- BFS(넓이우선탐색), 티켓 시스템 등 다양한곳에서 사용
- 비선형 구조
- 자료들 간에 관계가 1:N로 나열되어 있는 것을 의미
- 집안 가계도나 회사 구조같은 것들이 비선형 구조
- 그래프 : 노드(요소)와 간선으로 이루어진 자료 구조
- 무방향 그래프 : 선으로만 나타낸 그래프
- 방향 그래프 : 간선에 방향이 추가되 형태의 그래프
- 가중치 그래프 : 간선에 해당 노드로 가는데 비용이 표시된 그래프
- 방향과 가중치를 모두 갖는 그래프
- 트리
- 그래프의 한 종류이며 나무의 가지나 뿌리가 뻗어나는 모양과 비슷하다고 하여 붙여진 이름
- 사이클이 존재하지 않으며 부모노드와 자식노드를 통해 구조
- 이진 트리
- 이진 트리 : 각 부모노드의 자식노드가 최대 2개인 트리
- 포화이진트리 : 이진트리에서 모든 부모가 2개의 자식노드를 갖는 이진트리
- 완전이진트리 : 이진트리에서 거의 모든 노드가 채워져 있으며 가능한한 제일 왼쪽부터 채워져 있는 이진트리
- 편향이진트리 : 한쪽으로만 자식을 갖는 트리
- 노드
- 루트노드 : 제일 상단에 있는 노드
- 부모노드 : 자식노드를 갖는 노드
- 자식노드 : 부모노드를 갖는 노드
- 조상노드 : 자식노드 상위에 있는 모든 노드
- 자손노드 : 부모노드 하위에 있는 모든 노드
- 프로그래밍 기본
- 컴파일러
- 고급 프로그래밍 언어로 작성된 소스코드를 기계어로 번역 및 실행하기 위한 프로그램
- 소스코드 전체를 분석하고 그다음 기계어로 번역 후 실행
- 함수 단위, {} 단위, 탭 단위
- 인터프리터
- 컴파일러와 마찬가지로 고급 프로그래밍 언어로 작성된 소스코드를 기계어로 번역 및 실행하기 위한 프로그램
- 한줄씩 소스코드를 번역하고 실행
- l = [1, 2, 3], for i in range(2), print('...')
- 파이썬 소스코드 작성 .py → PVM(파이썬 가상 머신)을 통해 바이트코드로 변환 .pyc → PVM이 바이트코드를 해석하고 기계어로 명령을 실행
- 메모리영역
- 운영체제에 의해 관리
- 코드 영역 : 실행할 프로그램의 코드
- 소스코드들에 의해 생성된 명령어들이 저장되는 영역
- 데이터 영역 : 전역 변수, 정적 변수
- static(정적) 변수, 전역 변수와 같은 데이터들이 저장되는 영역
- 프로그램 시작과 함께 할당되고 프로그램이 종료될 때 소멸
- 힙영역 : 사용자의 동적 할당
- 프로그래머가 직접 사용 및 관리해야하는 메모리 영역
- 큐와 같은 자료구조가 여기서 생성 및 사용
- 스택영역 : 지역변수, 매개변수
- 정적 메모리 할당을 위한 곳으로 함수, 지역변수, 매개변수 등을 사용되는 영역
- 함수가 시작할 때 지역변수가 생성 함수가 끝나면 지역변수 소멸
- 재귀함수를 사용할 때 이곳을 사용
- 컴파일러
- OOP (Object-Oriented Programming, 객체지향 프로그래밍)
- 추상화하고자 하는 객체의 모습을 가상의 공간에 구체화하며 설계
- 어떤 대상을 소스코드로 그리기 위한 컴퓨터 공학적 사고 방식
- 객체 (Instance, 인스턴스)
- 현실세계에 있는 어떤 대상을 추상화 한 것을 의미
- 동물, 학교, 은행, 아파트 등등 여러가지 특징을 가진 것들
- 클래스(Class)
- 객체를 생성하기 위해 어떤 속성과 방법의 집합을 추상화하여 표현한것
- 함수, 변수, 클래스가 존재 할 수 있다
- 클래스 안에 있는 맴버함수와 변수에 접근하기 위해서는 반드시 객체를 이용
- class Math: def sum(a, b): return a+b | sum_c = Math(), print(sum_c(1 + 2))
- 상속 : 선언 되어 있는 클래스를 복제 해와 따로 구현 없이 상속된 함수나 변수등을 사용가능
- 오버라이딩 : 상속시 만들어진 변수 혹은 함수를 내가 만든 것으로 다시 선언 하는 기법
- 오버로딩 : 상속시 만들어진 함수에 매개변수를 달리 하여 다르게 사용하는 기법
- 소프트웨어 개발 방법론
- 소프트웨어를 개발하기 위해서 어떤 방법으로 개발해 나가는지에 대한 개념
- 폭포수 방법론
- 하향식 방법으로 가장 오래된 개발 방법
- ’계획 → 설계 → 개발 → 시험 → 유지보수’ 순차적으로 진행하며 SDLC(소프트웨어 개발 생명 주기)가 굉장히 길다
- 매우 큰 규모의 프로젝트에 적합
- 변경 및 수정이 어렵다는 단점
- 애자일 방법론
- 반복적이고 점진적으로 개발하는 방법
- ’계획 → 설계 → 개발 → 시험 → 유지보수’ 순차적으로 진행하되 SDLC(소프트웨어 개발 생명 주기)가 굉장히 짧기 때문에 여러번 반복하며 점진적으로 개발
- 이해관계자의 피드백을 빠르게 반영
- 개발 계획을 세우기 어려울 수 있다
- 디자인 패턴
- 소프트웨어를 설계 및 구현할 때 어떠한 공통된 구조를 띄는 형태
- 어떤것을 건축 한다고 했을 때 그 어떤것들에 공통으로 무엇이 들어 가는 패턴이 있다
- 편의점을 만약 만든다고 할때 기본적으로 떠오는 형식이 있다. 일단 기본적으로 사각형 건물에 입구가 있고 입구위에 편의점 간판이 있을 것이고 안은 상품 진열대가 있으며 카운터가 있을것이다
- 이 처럼 어떤 특징 혹은 패턴이 존재하는 이것을 디자인 패턴이라고 한다.
- MTV
- python기반의 웹 구현을 위한 프레임워크인 Django(장고)가 MTV 디자인 패턴을 지향
- M은 model(모델)을 의미하며 DB에 데이터를 적재하고 테이블을 정의를 담당
- T는 Template(템플릿)을 의미하며 사용자에게 보여지는 화면을 의미
- V는 View(뷰)를 의미하며 요청에 따라 필요한 로직을 수행하는 역할을 담당
- MTV 패턴은 MVC 패턴에 영감받아 만들어진 패턴
- MTV 패턴은 장고에 국한된 개념
- MTV에서 MVC는 각 개념이 대응
- MTV에서 M모델 ==MVC에서 M 모델 같은 개념
- MTV에서 T템플릿==MVC에서 V뷰 같은 개념
- MTV에서 V뷰==MVC에서 C컨트롤러 같은개념
- MTV에서 MVC는 각 개념이 대응
- python기반의 웹 구현을 위한 프레임워크인 Django(장고)가 MTV 디자인 패턴을 지향
- 형상관리
- 소프트웨어의 변경사항을 추적하고 통제하기위한 작업
- git, gerrit, sourcetree, jira
- 상업 프로젝트의 경우 혼자 하는 경우가 거의 없기에 협업이 필수 이다. 이때 매번 변경 사항을 공유 하기 위하여 회의를 할 수 없기에 협업 툴을 이용하여 위의 툴을 통하여 비용을 줄일 수 있다.
- V&V (Verification & Validation) 검증과 확인
- 소프트웨어의 완성도 및 신뢰도를 검증 및 확인하는 작업
- Verification (검증)
- 개발자 중심에서 제품이 요구사항에 맞게 구현되었는지 검증하는 작업
- Validation(확인)
- 사용자 중심에서 제품이 사용감에 만족되게 구현되었는지 확인하는 작업
- Test (시험)
- 단위→통합→시스템→인수 테스트를 순차적으로 실행
- 상황에 따라 몇 단계를 생략하거나 추가할 수 있고 순서가 바뀔수 있다
- Test 단위
- Unit Test (단위 시험)
- 가장 작은 단위의 test로 함수, 모듈 등 제일 작은 단위의 기능을 test
- Integration Test (통합 시험)
- 함수간, 클래스간, 모듈간 등 어떤 기능이 합쳐져서 잘 동작하는지 test
- System Test (시스템 시험)
- 실제 적용하려는 하드웨어나 어떤 시스템에 개발한 소프트웨어를 탑재한 뒤 test
- Acceptance Test (인수 시험)
- 출시 및 배포전 최종 test
- Unit Test (단위 시험)
- Test 종류
- 정적 Test
- 소프트웨어를 구동하지 않고 test 하는 방법
- 동료 검토, 코드 리뷰, 기술 검토
- 동적 Test
- 소프트웨어를 구동하며 test 하는 방법
- Black Box Test (블랙박스테스트), White Box Test(화이트박스테스트)
- 정적 Test
- 강의 듣고 난 후..
- 이번 특강에서는 파이썬에 사용하는 대부분의 자료형 을 배웠으며 자료구조 중 트리에 대하여 좀 더 알게 되어 좋았다.
- 그리고 디자인 패턴이라는 개념을 확실하게 알아가게 되었다.
- 디자인 패턴을 들어봤던 거 같았으나 정확히 무엇인지 몰랐는데 이번에 확실히 알게 되어 좋았다
- 또한, 검증과 확인의 경우 잘 못 이해했었던 내용 또한 이번에 바로 잡게 되었다. 둘다 개발자 시점으로 생각했던 부분이었는데 검증이 개발자 시점이고 확인 사용자 시점의 프로그램의 사용감을 테스트 하는 것
'CS' 카테고리의 다른 글
5. 소프트웨어 문서 (0) | 2024.07.31 |
---|---|
4. 빅데이터 및 인공지능 (1) | 2024.07.30 |
3. 네트워크 (1) | 2024.07.29 |
1. 컴퓨터 구조와 운영체제 (0) | 2024.07.26 |