자료형?
: 자료의 유형
1. 선형구조: 자료들 간의 관계가 1:1로 나열되어 있는 것
- 배열과 리스트 차이
- 배열: 메모리상에서 오른쪽에 잇는 데이터 가져와 < 가져옴
- 리스트: 메모리상에서 오른쪽에 잇는 데이터 가져와 <못 가져옴
- 메모리 위치가 순차적 - 배열
- 논리적인 구조가 연결되어 있는 것 - 리스트
- 스택: 선입후출(나중에 들어온 게 먼저 나간다)
- 큐: 선입선출..
2. 비선형 구조
: 자료들 간에 관계가 1:N로 나열되어 있는 것을 의미
- 그래프
- 트리
이진트리
- 컴파일러: 고급v프로그래밍 언어로 작성된 소스코드를 기계어로 번역 및 실행하기 위한 프로그램.
가장 큰 특징으로는 소스코드 전체를 분석하고 그 다음 기계어로 번역 후 실행 (씨언어, 자바는 컴파일러로 의해 기계어로 번역되고 실행됨)
- 인터프리터: 컴파일러와 마찬가지로 고급 프로그래밍 언어로 작성된 소스코드를 기계어로 번역 및 실행하기 위한 프로그램.. 컴파일러와 가장 큰 차이점은 한줄씩 소스코드를 번역하고 실행한다는 점(파이썬, 자바스크립트와 같은 언어들이 언터프리터에 의해 번역 및 실행됨)
메모리는 4가지의 영역으로 구분됨
-코드영역
-데이터영역
-힙영역(heap)
-스택영역(stack)
: 객체(instance) 란 현실세계에 있는 어떤 대상을 추상화한 것을 의미.
동물도 가능.
: 내가 표현해나가고자 하는 것(생각과 감정도 가능)을 객체로 표현 가능
!! 클래스 = 내가 만들고자 하는 객체에 대한 설계도
ex) 동물 클래스 안에는?
1. 밥먹기 함수
2. 숨쉬기 함수
-> * 세부적으로 새 클래스/말 클래스 : 새랑 말은 숨쉬기랑 밥먹기를 할수 있기 때문에 동물 클래스 안에 있는 함수들을 중복구현 할 필요 없음
+새 클래스 안에 날기/ 말 클래스 안에는 뛰기 넣기
말 class가 동물 class를 상속 받으면 동물 class 안에 있는 것을 모두 사용할 수있음.
단 부모는 자식 클래스를 사용할 수 없음!!
ex) 동물 class 걷기 함수/닭 클래스 걷기 함수
걷는 건 같지만 네 발 달린 동물이 걷는 모습이랑 닭이 걷는 모습이 다름
수직적으로 진행되기에 각 과정에 대한 이해가 용이
프로세스가 같고 순서가 정해져있기 때문에 팀의 규모에 상관없이 따르기 쉬움
개발 주기가 이미 정해져 있어서 팀이 새로운 프로젝트를 안정적으로 시작할 수 있음
프로젝트 요구사항이 확정돼 있기 때문에, 프로젝트를 실행하기가 수월하며 개발 목표를 자주 변경하지 않아도 됨.
수직적으로 진행되기 때문에 개발 도중에 요구사항이 변경되었을 경우,
추가적인 비용과 시간이 들게 됨
이미 진행된 작업에 대해서는 변경 및 수정이 어렵다
개발 속도가 느리고 유연성이 떨어짐
테스팅 단계에 이르러서 이슈가 발견되곤 함
이해관계자의 피드백을 빠르게 반영할 수 있음
개발 방법이 빠르고도 유연함
여러 소규모 팀들이 개발 과정성의 여러 과제를 각각 할당받아 처리할 수 있음
개발 계획을 세우기 어려울 수 있음
고객의 수많은 변경사항을 검토해야 하는 번거로움이 발생할 수 있음
팀원들이 다양한 시간대의 지역에 흩어져 있음에도 잘 조직되지 않거나 자립성이 없는 경우, 애자일 방법론을 선택하면 문제가 발생할 수 있음
: 소프트웨어를 설계 및 구현할 때 어떠한 공통된 구조를 띄는 형태
ex) 아파트하면 생각하는 형태, 초등학교하면 생각나는 이미지(패턴) 이런 것들이 디자인 패턴임
소프트웨어의 변경사항을 추적하고 통제하기 위한 작업
소프트웨어 완성도 및 신뢰도 검증 및 확인하는 작업
우리의 의도대로 동작하는지/충분한 성능을 나타내는지/보안이슈는 없는지 확인 및 검증하는 작업
검증(verification)
개발자 중심에서 제품이 요구사항에 만족하게 구현되었는지에 대해 검증하는 작업
ex) 10개까지 고를 수 있게 만드세요-> 만들면 검증에서 통과
확인 (validation)
사용자 중심에서 제품이 사용감에 맞게 구현되었는지 대해 확인하는 작업
ex) 나는 햄버거 20개 고르고 싶은데 왜 안 됨?-> 확인에서 통과되지 못함
test 단위
단위-통합-시스템-인수 테스트 순차적으로 실행
test 종류
1. 정적 테스트
:소프트웨어를 구동하지 않고 test 하는 방법
동료 검토/코드리뷰/기술검토
2. 동적 테스트
: 소프트웨어를 구동하며 test를 하는 방법