비기너반 강의 복습 2 | 구현 vs 개발, 소프트웨어 개발 프로세스, 소프트웨어 공학 설계, TDD, 변수, 객체 지향이란, 객체와 클래스
일상 속에서 하는 면접 준비
기술/문법을 공부할 때
: 절대적인 정답은 없다. 내 입장으로 장단점 생각해보기, 내 선택에 이유를 덧붙이기
장단점을 생각해보는 것이 어렵다면, 극단적으로 생각해보기
[ 구현 vs 개발 ]
개발: 프로그램 생성
개발에는 구현이 포함되어 있다.
[ 소프트웨어 개발 프로세스 (feat. 소프트웨어 개발 설계) ]
기획 > 요구사항 분석 > 설계 > 구현 > 테스트 > 배포 > post implementation > 유지보수
> 위의 프로세스가 구체적으로 대답하는 7단계
> 기획, 유지보수를 생략해서 5단계로 보기도 한다.
설계는 늘 바꿀 수 있다는 것을 염두해두기
post implementation : 배포 직후, 추가 시간 구현 시간
[ 소프트웨어 공학 설계 ]
1) 구현(implementation) vs 개발(development)
Cf. post implementation : 배포 직후, 추가 시간 구현 시간
2) 롤백
: 1.1 버전 ->1.2 버전, 현 버전에서 문제가 있을 때 직전 버전인 1.1로 돌아가는 것
Cf. 배포 시나리오 + 롤백 시나리오(전략)
3) 폭포수 vs 애자일 => 두 가지 모델의 장점을 합친 모델 : 사시미 모델
[ 폭포수 모델 ]
- 소프트웨어 개발 프로세스 단계를 거스를 수 없다.
- 유연성이 떨어진다.
[ 애자일 모델 ]
- 순환적
많은 회사에서는 폭포수 개발론을 사용하는 경우가 많다.
[ TDD (Test Driven Development) 테스트 기반 개발 ]
: 기획부터 배포할 때까지 테스트 기반으로 해보는 것
[ 소프트웨어 개발 프로세스 (feat. 소프트웨어 개발 설계) ]
- 기획 > 요구사항 분석 > 설계 > 구현 > 테스트 > 배포 > post implementation > 유지보수
[ TDD ]
- TDD는 개발 프로세스의 모든 단계에서 Test를 하는 것이다.
- 구현코드보다 Test코드를 먼저 짜는 것
- 설계할 때도 Test를 염두
- TDD는 구현할 때 빛을 냄
- 설계 > test > 구현
설계할 때 구체적인 구현체보다는 추상화가 많이 필요하다.
설계할 때는 테스트 기반인지 아닌지 상관X, 시간차이가 거의 없다.
왜냐하면 객체지향 설계할 때는 늘 추상화를 고려하기 때문이다.
TDD : 테스트코드부터 준비 > 구현
TDD x : 구현 > 테스트 코드
[ 변수 란? ]
1) ‘변하는 수’라서 데이터가 바뀐다.
2) 데이터가 바뀔 수 있기 때문에 ‘변수’라고 부르게 되었다.
❗️변수는 데이터가 바뀔 가능성이 있지만, 무조건 값이 바뀌어야 하는 건 아니다.
코드 뒤에 메모리가 있고, 메모리에 변수(상자)가 있다.
[ 절차 지향 vs 객체 지향 ]
객체 지향이 나타난 이유 : 우리가 살고 있는 세상은 전부 다 객체로 되어있다.
[ 객체 특징 ]
- 실제로 존재한다.
- 속성을 가지고 있다.
- 기능 및 행위를 할 수 있다.
순서대로 돌아가야 하야 하는 것은 절차지향으로 돌아간다. (자동차)
절차지향, 객체지향은 ‘지향’에 방점이 찍혀있다.
먼저 고려하는 것이 ‘절차’, ’객체’인 것이다. 절차지향은 객체를 무시하지 않는다.
객체를 만들기 위해 속성, 특징을 만든다.
>> 그 이후에 클래스를 만든다.
[ 클래스와 객체 ]
자동차 설계도 팜플렛( 조립 방법 + 부품 + 사용 설명서(기능) ) = 클래스
자동차 = 객체
설계도 팜플렛 그 자체만 보았을 때, 종이는 존재하지만 자동차는 존재하지 않는다.
= 클래스만 있을 때는 객체가 존재하지 않는다.
[ 클래스 구성 요소 3가지 ]
- 변수 (부품, 구성품; 속성)
- 생성자 (조립 방법)
- 메서드 (완성품 되면 비상등 누르면 불이 켜짐)
[ 강의 끝에 강사님께서 학생들에게 하신 질문 : 생성자는 메소드인가? 아닌가? ]
메소드이다. 생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드' 이기 때문이다.
생성자는 리턴값이 없다는 특징이 있다.
왜 리턴값이 없을까?
리턴값은 값을 반환할 때 필요하다. 리턴값이 없는 이유는 반환할 필요가 없을 수도 있기 때문이 아닐까?
그 답은 다음주 강의 시간에 알아보도록 하겠다!