패스트캠퍼스 데브캠프 : 남궁성의 백엔드 개발 3기

비기너반 강의 복습 2 | 구현 vs 개발, 소프트웨어 개발 프로세스, 소프트웨어 공학 설계, TDD, 변수, 객체 지향이란, 객체와 클래스

Tech_JINI 2025. 1. 18. 15:38

일상 속에서 하는 면접 준비 

기술/문법을 공부할 때

: 절대적인 정답은 없다. 내 입장으로 장단점 생각해보기, 내 선택에 이유를 덧붙이기

장단점을 생각해보는 것이 어렵다면, 극단적으로 생각해보기

 

 

[ 구현 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가지 ]

-       변수 (부품, 구성품; 속성)

-       생성자 (조립 방법)

-       메서드 (완성품 되면 비상등 누르면 불이 켜짐)

 

 

 

[ 강의 끝에 강사님께서 학생들에게 하신 질문 : 생성자는 메소드인가? 아닌가? ]

메소드이다. 생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드' 이기 때문이다.

생성자는 리턴값이 없다는 특징이 있다.

 

왜 리턴값이 없을까?

리턴값은 값을 반환할 때 필요하다. 리턴값이 없는 이유는 반환할 필요가 없을 수도 있기 때문이 아닐까? 

 

그 답은 다음주 강의 시간에 알아보도록 하겠다!