본문 바로가기
CS/FrontEnd

엔지니어링 & 기능 명세

by Diligejy 2022. 6. 17.

엔지니어링

1. 엔지니어링이란?

엔지니어링? == 의심.

 

과학은 발견하고 엔지니어링은 해결한다.

 

2. 패턴

1. 알려진 문제의 일반적이고 재사용할 수 있는 해결법

2. 프로그래머는 고유한 문제를 풀어야 한다.

3. 고유한 문제는 좀 더 작은 하위 기술 문제를 가진다.

4. 이 작은 기술 문제들 중 많은 일부는 과거 어디에선가 여러 번 반복되고 해결된 적이 있다.

 

"Pattern always have two parts: the how and the when" - Martin Fowler

 

3. 은탄환은 없다

현장은 무균실이 아니라 야전이다.

프로그래밍은 협업이다

시스템은 연결된다.

도구 상자에 다양한 도구를 채우자.

엔지니어링은 거래(trade-off)다. (더 심각한 문제 <-> 덜 심각한 문제)

 

4. 근육기억

반복되는 문제 해결에 비용이 많이 쓰인다면 연습하고, 연습하고, 연습해서 생각의 비용이 줄어들도록 뇌에 새겨라

코드 기능 명세

1. 도메인

a. 소프트웨어는 문제를 푸는 도구

b. 도메인은 소프트웨어가 풀어야 할 문제가 정의되는 공간

c. 비즈니스 시스템의 도메인은 비즈니스

d. 문제를 충분히 이해하지 못하면 문제를 푸는 도구를 잘 만들 수 없다.

 

2. 비즈니스 전문가

a. 문제를 가장 잘 이해 - 시스템이 투영해야 할 핵심 지식의 원천

b. 문제 설명력 부족 - 지식의 저주

c. 풀이도 가장 잘 이해한다고 착각 - 문제를 말해야 할 때 풀이를 말하려는 경향을 가짐

 

3. 분석가

a. 비즈니스 전문가로부터 시스템 요구사항을 발굴

b. 발굴된 요구사항의 오류 탐색

c. 발견된 문제점을 구현 작업 전에 협업을 통해 해결

 

4. 프로그래머

a. 정제된 기능 명세를 아키텍처와 코드로 번역 - 제품 제작 과정 중 비용이 가장 큰 작업

b. 끊임없는 설계 결정

c. 지식 흐름 과정의 마지막 인간

 

5. 프로그래머와 기능 명세

a. 컴퓨터는 스스로 설계를 결정하지 않기 때문에 프로그래머가 도메인 지식을 컴퓨터에 전달할 때엔 모든 요소들이 명확히 결정될 수밖에 없음.

b. 충분히 명확한 도메인 지식을 확보하지 못한 프로그래머는 지식 흐름 상류에 지식 보강을 요청해야 함

c. 하지만 어떤 프로그래머는 스스로 결정을 내림

    - 도메인 지식 투영에 오차 발생

    - 무책임하고 위험한 도박

 

 

댓글