C S 강 의 2 주 차
ㅁ 파이썬 자료형
파이썬 자료형 | 영문 | 예시 |
정수 | integer | ... -5, -4, -3, -2, -1, 0, 1, 2, 3, 4... |
실수 | float | 3.14, -31.4, 100000000 ... |
논리형 | boolean | True, False |
문자열 | string | “hello안녕” |
리스트 | list | list=[1,2,3,4,5], list=[a,b,c,d,e,f] |
튜플 | tuple | tuple = (1, 2, 3, 3, 3), tuple = (’a’, ‘b’, ‘c’, ‘c’, ‘c’) 튜플은 리스트와 달리 값변경 안됨 |
딕셔너리 | dictionary | dict = { “key1”: 2024, “key2”: “안녕?”, “key3”: “안녕?” } 값의 중복은 상관없지만 키중복 안됨 |
세트 | set | set = { “중복은”, “안되는”, “세트” } 중복을 허용하지 않음 |
- 대표적으로 몇가지만 추린것!
ㅁ자료구조
- 데이터를 효과적으로 저장하기 위해 어ᄄᅠᆫ 논리나 규칙으로 자료를 모아 놓은 구조
ㅇ 선형구조
자료들 간에 관계가 1:1로 순차적으로 나열 되어있는 것
- 배열 : 메모리 상에 연속적인 공단에 데이터를 저장하는방법
리스트 : 메모리상에 임의의 위치에 데이터를 저장하지만 각 데이터들이 앞뒤 관계를
갖게 하는방법
스택 : 선입후출 방식의 자료구조(먼저 들어온 데이터가 나중에 처리되는 것)
- 히스토리기능을 구현할 때 유용하고, DFS(깊이우선탐색), 후위연산, 백트래킹,
유효성검사 등
큐 : 선입선출 방식의 자료구조(먼저 들어온 데이터 먼저처리)
- 작업스케줄링 기능구현시 유용, BFS(넓이우선탐색), 티켓시스템 등 다양한곳에서
사용
ㅇ 비선형구조
자료들 간에 관계가 1:N로 나열되어 있는 것
ex)집안 가계도, 회사구조 같은것들
- 그래프
노드와 간선으로 이루어진 자료
무방향 그래프, 방향그래프, 가중치 그래프 3가지가 있고 방향과 가중치 모두 갖는
그래프도 있다.
- 트리
그래프의 한 종류
나무의 가지나 뿌리가 뻗어나는 모양과 비슷
= 이진트리
- 이진트리 : 각 부모노드의 자식노드가 최대 2개인 트리
- 포화이진트리 : 이진트리에서 모든 부모가 2개의 자식노드를 갖는 이진트리
- 완전이진트리 : 거의 모든 노드가 채워져 있으며 가능한한 제일 왼쪽부터 채워져 있는
이진트리
- 편향이진트리 : 한쪽으로만 자식을 갖는 트리
ㅁ 프로그래밍 기본
ㅇ 컴파일러
- 고급프로그래밍언어로 작성된 소스코드를 기계어로 번역 및 실행하기 위한 프로그램
소스코드 전체를 분석하고 그다음 기계어로 번역 후 실행
ex) C, JAVA와 같은 언어는 컴파일러에 의해 컴파일 되고 실행
ㅇ 인터프리터
- 고급프로그래밍언어로 작성된 소스코드를 기계어로 번역 및 실행하기 위한 프로그램
한줄씩 소스코드를 번역하고 실행
ex) python, javascript
ㅇ 메모리영역
- 작업을 효율적으로 하기위해 운영체제에 의해 관리
ㅇ 코드영역
- 프로그램을 실행하기위해 명령어들이 저장되는 공간
- 작성한 소스코드들에 의해 생성된 명령어들이 저장
ㅇ 데이터영역
- static(정적)변수, 전역변수와 같은 데이터들이 저장되는 공간
- 프로그램 시작과 함께 할당되고 종료될 때 소멸
ㅇ heap 힙 영역
- 동적메모리 할당을 위한 곳
- 프로그래머가 직접 사용 및 관리해야하는 메모리 영역
- 사용한 메모리는 사용자가 직접 해제해줘야하지만 파이썬은 가비지컬렉터가 있어서 자동
으로 해줌
ㅇ stack 스택영역
- 정정메모리 할당을 위한 곳
- 함수, 지역변수, 매개변수등을 사용하기 위한 공간
- 함수시작시 지역변수가 살아나고 함수가 끝나면 지역변수가 죽음
- 재귀함수를 사용할 때@@ 그래서 스택(쌓는다)라고 함
ㅁ OOP(객체지향프로그래밍,Object-Oriented Programming)
객체지향이란?
추상화 하고자 하는 객체의 모습을 가상의 공간에 구체화하며 설계해 나가는것
쉽게말하면 (내가 그림을 그릴꺼면 물감칠 전에 스케치를 하는거라고 보면됨)
객체 : 현실의 어떤 대상을 추상화 한 것
- 객체를 생성하기 위해서는 클래스가 반드시 따라온다!!
- 클래스안에 클래스를 또 만들 수 있음!
■ 반드시 알아야 하는 개념 ■ | |
상속 | - 다른 클래스의 기능을 사용하고 싶다면 상송을 받아서 부모클래스와 자식클래스의 관계를 만든다 ex) 동물클래스(부모클래스) 안에 걷기, 숨쉬기 함수가 있다. 그럼 굳이 개(자식클래스), 고양이(자식클래스)가 동물클래스를 상속받으면 굳이 공통되는 기능(걷기, 숨쉬기...등)을 다시 구현하지 않아도 됨. |
오버라이딩 | - 상속받은 클래스에서 어떤 기능을 재정의 하는 것 ex) 동물클래스(부모클래스)에서 ‘get()’이라는 함수가 있지만 개,고양이클래스(자식클래스)에서 ‘get()’의 함수를 만들고 기능을 다시 정의하는 것 |
오버로딩 | - 함수의 이름은 같으나 매개변수를 다르게 설정하여 사용목적에 따라 불러오는것 - 연산자 오버로딩, 메소드 오버로딩, 함수 오버로딩등 다양하지만 파이썬에서는 함수오버로딩은 없음. |
- 클래스 안에 있는 함수와 변수에 접근하기 위해서는 반드시 객체를 이용해야 함
ㅁ 소프트웨어 개발방법론
방법론 종류 |
특 징 |
폭포수 방법론 |
- 하향식 방법으로 가장 오래된 개발방법 (((계획->설계->개발->시험->유지보수))) 순차적으로 진행 개발 생명 주기가 굉장히 길다 변경 및 수정이 어려운 단점 |
애자일 방법론 |
반복적이고 점진적으로 개발하는 방법 (((계획->설계->개발->시험->유지보수))) 순차적으로 진행 SDLC(개발생명주기)가 굉장히 짧아 여러번 반복하며 점진적으로 개발 이해관계자의 피드백을 빠르게 반영할 수 있지만 개발 계획을 세우기 어려울 수도 있음 |
- 개념 : 소프트웨어를 개발하기 위해서 어떤방법으로 개발해 나가는지에 대한 것
ㅁ디자인패턴
- 소프트웨어를 설계 및 구현할 때 어떠한 공통된 구조를 띄는 형태
ex) “부대찌개를 만들래!”하면 국에 햄, 파, 라면등등등의 재료가 들어가있는 모습
“생크림 케이크를 만들래!!”하면 생크림이 발라져있고 그 위에 과일이 올라가있는 모습
같은 이런 느낌이 디자인 패턴
=> 소프트웨어에서 “어떤 패턴으로 개발했어!“라고 했을 때 바로 어ᄄᅠᆫ 의도의 소프트웨이인
지, 어떤 구조로 되어있는지 쉽게 파악하기 위한 것
ㅇ MTV
파이썬 기반의 웹 구현을 위한 프레임 워크
Django가 MTV 디자인 패턴을 지향함
- M : model을 의미 /// DB에서 데이터를 적재하고 테이블 정의를 담당
T : Template을 의미 /// 사용자에게 보여지는 화면
V : View를 의미 /// 요청에 따라 필요한 로직을 수행하는 역할
ㅁ 형상관리
소프트웨어의 변경사항을 추적하고 통제하기위한 작업
ㅇ git(깃)
분산 버전 관리 시스템 : 프로젝트를 관리할 수 있게 해주는 매우 유용한 시스템
ex) github, gitlab
깃랩은 기업용으로 설계되어 좀 더 많은 기능을 제공하지만 비용이 발생!!
=>심화
- gerrit : 코드리뷰툴로 효과적으로 코드를 적용할 수 있도록 해주는 툴
sourcetree : 다소 불편한 git UI를 훨씬 편하게 보며 작업할 수 있게 해주는 툴
jira : 협업을 위한 툴, 서로의 작업을 확인하고 할당할 수 있게 도와줌, 깃하고 연동됨
ㅁV&V 검증과 확인
소프트웨어의 완성도 및 신뢰도를 검증 및 확인하는 작업
ㅇ 이걸 왜??
우리는 소프트웨어를 개발하면 우리의 의도대로 동작하는지, 충분한 성능을 나타내는지, 보안이슈가 없는지 등 다양한 방면에서 소프트웨어의 완성도를 검증하는 작업을 거쳐야함!!
- Verification (검증)
개발자 중심에서 제품이 ‘요구사항’에 만족하게 구현되었는지에 대해 검증하는 작업
- Validation (확인)
사용자 중심에서 제품이 ‘사용감’에 만족하게 구현되었는지에 대해 확인하는 작업
- Test (시험)
소프트웨어를 test하는 방법은 여러가지가 있습니다.
Test 단위 | |
보통 단위→통합→시스템→인수 테스트를 순차적으로 실행하지만 상황에 따라 몇 단계를 생략하거나 추가할 수 있고 순서가 바뀔수 있습니다. |
|
Unit Test (단위 시험) |
가장 작은 단위의 test로 함수, 모듈 등 제일 작은 단위의 기능을 test |
integration Test (통합 시험) |
함수간, 클래스간, 모듈간 등 어떤 기능이 합쳐져서 잘 동작하는지 test |
Sysrem Test (시스템 시험) |
실제 적용하려는 하드웨어나 어떤 시스템에 개발한 소프트웨어를 탑재한 뒤 test |
Acceptance Test (인수 시험) |
출시 및 배포전 최종 test |
Test 종류 | |
정적 Test | 소프트웨어를 구동하지 않고 test 하는 방법 - 동료 검토 - 코드 리뷰 (코드 리뷰를 통해 정적 test를 할 수도 있습니다.) - 기술 검토 |
동적 Test | 소프트웨어를 구동하며 test 하는 방법 - Black Box Test (블랙박스테스트) 소프트웨어의 작동 원리를 모르는 상태에서 진행하는 test 결과물이 요구사항과 일치하는지 알아보기 위한 test - White Box Test(화이트박스테스트) 소프트웨어의 작동 원리를 보며 진행하는 test 소프트웨어가 의도한대로 동작하는지 알아보기 위한 test |
=>심화 아닌 심화!
test종류는 위에 2가지 말고도 굉장히 많은 종류와 기법들이 있지만 아직은 여기까지~
'Daily note' 카테고리의 다른 글
Today I Learned(TIL)-34(CS정리3) (0) | 2024.08.09 |
---|---|
Today I Learned(TIL)-33(CS정리3) (0) | 2024.08.08 |
Today I Learned(TIL)-32(CS정리) (0) | 2024.08.06 |
Today I Learned(TIL)-31 (0) | 2024.08.05 |
Today I Learned(TIL)-30 (0) | 2024.08.02 |