📌프로그래밍 기본
🔸컴파일러
고급 프로그래밍 언어로 작성된 소스코드를 기계어로 번역 및 실행하기 위한 프로그램 🥕 특징: 소스 코드 전체를 분석하고 그 다음 기계어로 번역 후 실행함
🔸인터프리터
컴파일러와 마찬가지로 고급 프로그래밍 언어로 작성된 소스코드를 기계어로 번역 및 실행하기 위한 프로그램 🥕 컴파일러와 차이점: 한 문장씩 소스코드를 번역하고 실행한다는 점
🔸메모리 영역
작업을 효율적으로 하기 위해 다양한 영역으로 나뉨 (이러한 영역들은 운영체제에 의해 관리) 코드 영역 : 프로그램을 실행하기 위해 명령어들이 저장되는 공간
데이터 영역 : static(정적) 변수, 전역 변수와 같은 데이터들이 이곳에 저장, 프로그램 시작과 함께 할당되고 프로그램이 종료될 때 소멸
Heap 힙 영역 : 동적 메모리 할당을 위한 곳으로 프로그래머가 직접 사용 및 관리해야하는 메모리 영역 (큐와 같은 자료구조가 여기서 생성됨)
Stack 스택 영역 : 정적 메모리 할당을 위한 곳으로 함수, 지역변수, 매개변수 등을 사용하기 위한 공간 (재귀함수를 사용할 떄 이곳을 사용함)
📌OOP (Object-Oriented Programming, 객체지향 프로그래밍) (중요도🌟)
🔸객체 지향
추상화하고자 하는 객체의 모습을 가상의 공간에 구체화하며 설계해나가는 것
🔸객체
현실세계에 있는 어떤 대상을 추상화한 것을 의미
🔸클래스
객체를 생성하기 위해 어떤 속성과 방법의 집합을 추상화하여 표현한 것을 의미
클래스 안에는 함수, 변수, 클래스 안에 또 클래스 만들 수 있음
클래스 안에 있는 멤버함수와 변수에 접근하기 위해서는 반드시 객체를 이용해야 함
🌟반드시 알아야 되는 개념🌟
🥕상속
다른 클래스의 기능을 사용하고 싶다면 상속을 받아서 부모클래스와 자식클래스의 관계를 만들어주면 됨🥕오버라이딩(덮어쓴다, 재정의한다)
상속받은 클래스에서 어떤 기능을 재정의하는 것을 의미
부모클래스에서 'get()'이라는 함수가 있는데 이름을 똑같이 자식 클래스에서 'get()'이라는 함수를 만들고 그 기능을 다시 정의🥕오버로딩(덮어서 불러온다)
연산자 오버로딩, 메소드 오버로딩, 함수 오버로딩 등 다양하게 있지만 일단 파이썬에서는 함수오버로딩은 없다고 생각하면 됨
일반적으로 오버로딩이라고 하면 함수의 이름은 같으나 매개변수를 다르게 설정하여 사용 목적에 따라 다르게 불러오는 것을 의미
📌소프트웨어 개발 방법론
🔸폭포수 방법론
하향식 방법으로 가장 오래된 개발 방법 ’계획 → 설계 → 개발 → 시험 → 유지보수’
순차적으로 진행하며 SDLC(소프트웨어 개발 생명 주기)가 굉장히 김
단점: 매우 큰 규모의 프로젝트에 적합하며 이미 진행된 작업에 대해서는 변경 및 수정이 어려움
🔸애자일 방법론
반복적이고 점진적으로 개발하는 방법 '계획 - 설계 - 개발 - 시험 -유지보수'
이해관계자의 피드백을 빠르게 반영할 수 있지만 개발 계획을 세우기 어려움
🥕 변화가 빠른 산업군에서는 효과적
🥕 절차와 도구보다 고객과의 소통에 초점을 맞춤
💡 개발에서는 ’계획 → 설계 → 개발 → 시험 → 유지보수’ 중 계획이 중요함
📌디자인 패턴
🔸 디자인 패턴
소프트웨어를 설계 및 구현할 때 어떠한 공통된 구조를 띄는 형태
🔸 MTV
python기반의 웹 구현을 위한 프레임워크인 Django(장고)가 MTV 디자인 패턴을 지향
(백엔드를 이 패턴으로 구현하게 됨)
M : model(모델)을 의미하며 DB에 데이터를 적재하고 테이블 정의를 담당 T : Template(템플릿)을 의미하며 사용자에게 보여지는 화면을 의미 V : View(뷰)를 의미하며 요청에 따라 필요한 로직을 수행하는 역할을 담당
💡 아키텍처, 소프트웨어 패턴도 있음
📌형상관리
🔸 형상관리
소프트웨어의 변경사항을 추적하고 통제하기위한 작업을 의미
🔸 형상관리를 위한 툴
- git : github, gitlab
📌V&V (Verification & Validation) 검증과 확인
🔸 V&V
소프트웨어의 완성도 및 신뢰도를 검증 및 확인하는 작업
소프트웨어를 개발하면 우리의 의도대로 동작하는지 또는 충분한 성능을 나타내는지, 보안 이슈는 없는지 등 다양한 방면에서 소프트웨어의 완성도를 검증하는 작업
🥕 Verification (검증)
개발자 중심에서 제품이 ‘요구사항’에 만족하게 구현되었는지에 대해 검증하는 작업🥕 Validation (확인)
사용자 중심에서 제품이 ‘사용감’에 만족하게 구현되었는지에 대해 확인하는 작업🥕 Test (시험)
☘️[Test 단위]☘️
단위 - 통합 - 시스템 - 인수 테스트를 순차적으로 실행
- Unit Test(단위 시험): 가장 작은 단위의 test로 함수, 모듈 등 제일 작은 단위의 기능을 test
- Integration Test(통합 시험): 함수간, 클래스간, 모듈 간 등 어떤 기능이 합쳐져서 잘 동작하는지 test
- System Test(시스템 시험): 실제 적용하려는 하드웨어나 어떤 시스템에 개발한 소프트웨어를 탑재한 뒤 test
- Acceptance Test(인수 시험): 출시 및 배포전 최종 test
☘️[Test 종류]☘️
정적 Test : 소프트웨어를 구동하지 않고 test 하는 방법
- 동료 검토
- 코드 리뷰
- 기술 검토
동적 Test : 소프트웨어를 구동하며 test 하는 방법
- Black Box Test (블랙박스테스트) : 소프트웨어의 작동 원리를 모르는 상태에서 진행하는 test 결과물이 요구사항과 일치하는지 알아보기 위한 test
- White Box Test(화이트박스테스트) : 소프트웨어의 작동 원리를 보며 진행하는 test 소프트웨어가 의도한대로 동작하는지 알아보기 위한 test
💡추가내용💡
📌 자료구조
🔸 스택
선입후출 방식의 자료구조, 선입후출이란 먼저 들어온 데이터가 나중에 처리되는 것을 의미
히스토리 기능을 구현할 때 유용하고 DFS(깊이우선탐색), 후위연산, 백트래킹, 유효성 검사 등 다양한 곳에 사용됨
🔸 큐
선입선출 방식의 자료구조
작업스케줄링 기능을 구현하거나 캐시, BFS(넓이우선탐색), 티켓 시스템 등 다양한 곳에서 사용
🔸 비선형 구조
자료들 간에 관계가 1:N로 나열되어 있는 것을 의미
그래프
노드와 간선으로 이루어진 자료 구조를 의미트리
그래프의 한 종류이며 나무의 가지나 뿌리가 뻗어나는 모양과 비슷
트리인데 자식이 2개만 있다? 이진 트리
🥕완전이진트리: 이진트리에서 거의 모든 노드가 채워져 있으며, 가능한 한 제일 왼쪽부터 채워져 있는 이진트리 구조
🥕트리의 특징으로는 일반 그래프와는 다르게 사이클이 존재하지 않으며 부모노드와 자식노드를 통해 구조를 표현
'특강' 카테고리의 다른 글
웹 심화 이해 (0) | 2024.08.14 |
---|---|
웹 기본 이해 (0) | 2024.08.12 |
기술면접_CS, SQL 내용정리 (0) | 2024.08.08 |
CS 특강(컴퓨터 구조와 운영체계) (0) | 2024.07.25 |
Git 기초_git 초기 설정 (0) | 2024.07.12 |