코드 개발 방법론과 프로세스
이장의 내용
- 프로그래밍 스타일
- 소프트웨어 개발 프로세스
- 이것이 코드에 어떤 영향을 미치나
훌륭한 프로그래머는 프로그래밍을 어떻게 하는지 알고 있다; 즉 자기 일에 영향을 미치는 프로그래밍 방법과 습관에 대해 알고 있따
프로그래밍 스타일
소프트웨어 문제를 상세하게 기술하는 방법과 그 문제에 대한 솔루션을 분할해서 타깃 언어로 모델화하는 방법을 묘사한다
당신이 선택한 프로그래밍 언어는 당신의 설계 스타일 결정에 어느 정도 영향을 미칠 것이다
구조적 프로그래밍: 제어 중심의 모델이고, 톱다운 설계 테크닉을 따른다
객체지향 프로그래밍
- 추상화: 선택적으로 모르게 만드는 기술
- 캡슐화 응집력 있는 실행 단위들을 단단하게 묶어서 꾸러미 안에 넣고, 잘 정의된 API를 통해서만 접근할 수 있도록 만드는 것
- 상속: 객체의 타입을 특수화 시켜서 자식 객체의 타입을 만드는 메커니즘
- 다형성: 실행 콘텍스트에 따라서 여러 가지 데이터 타입을 사용할 수 있게 한다
함수형 프로그래밍: 선언적 프로그래밍 스타일이고, 비교적 수학적인 프로그래밍 모델이다
논리 프로그래밍: 언어 실행기에 공리와 목표가 되는 주장을 공급해야 한다. 또 다른 선언형 스타일
요리법: 어떻게 그리고 무엇을
소프트웨어를 개발하는 일은 우리가 채용한 프로그래밍 스타일과 프로세스에 의해서 영향을 받는다. 필연적으로 코드의 모습과 품질에 영향을 미친다
개발 프로세스
여러 프로세스들이 다음과 같은 몇 개의 축을 따라서 다양하게 있다
- 빡빡한/느슨한
- 순차성
- 설계의 방향
되는 대로
개발 프로세스가 없는 팀은 무정부 상태에 빠질 것이고, 의도에 의해서가 아니라 운에 따라 소프트웨어를 만들 것이다
폭포 모델: 고전적인 소프트웨어 개발 라이플 사이클 모델
SSADM과 PRINCE: 굉장히 많이 사용하는 잘 정의된 공개 표준 SSADM은 다섯 개의 주요 단계로 이루어져 있다
- 실현 가능성 조사
- 요구 분석
- 요구 규격화
- 논리적 시스템 규격화
- 물리적인 설계
V 모델: 폭포 모델로부터 파생, 왼쪽에는 소프트웨어의 구축으로 이끄는 개발 단계, 오른쪽의 흐름은 테스트와 승인을 관리
프로토타이핑: 개발이 진행되는 동안 구현을 조사/평가하고, 알려지지 않았거나 모호한 요구사항을 정제하는 일을 도와준다, 상당히 고급 언어를 사용해서 빠른 속도로 개발된다.
반복적이고 점증적인 개발:가장 큰 진보이다, 작은 개발 라이프 사이클을 여러 번 연속해서 수행하고 각 사이클에서는 점차로 더 많은 기능을 추가하는 일을 시스템이 완성될 때 까지 한다
소용돌이 모델: 반복적이고 점증적인 접근 방법의 좋은 예, 선적일이 조금씩 가까워져도 시스템의 대부분이 완성되었다는 사실에 자신감을 가질 수 있다
기민한 방법론: 여러 개발 프로세스를 통틀어서 묘사하는 포괄적인 용어
이미 충분해
더 훌륭한 프로세스에서는 뒤늦게 생각이 나서 테스트를 하는 것이 아니라, 개발 프로세스 전체에 걸쳐서 지속적으로-그리고 모니터링을 하면서 테스트 한다
프로세스 고르기
새로운 프로세스는 현재의 개발 모델에 문제가 있을 때만 그것을 고치기 위해 도입한다
특정한 프로세스를 고르는 데 있어서 가장 잘못된 동기는 유행이다 - 줒대없이 이러면 안될 거 같음
간추림
좋은 프로그래머는…
- 자기가 한 일에 적용할 프로그래밍 스타일과 개발 프로세스를 잘 알고 있다
- 개발 프로세스를 활용해서 다른 소프트웨어 회사에 다니는 사람들과의 상호 작용을 구체화 한다; 프로세스가 구속이 될 때는 옆으로 비켜 선다
- 여러 가지 개발 요리법의 장단점을 올바르게 알고 있고, 어떤 상황이 주어져도 적절한 요리법을 고를 수 있다
나쁜 프로그래머는…
- 개발 프로세스 문제를 무시하고, 자기 나름의 방법을 사용하려고 한다
- 프로세스가 다른 개발자들과의 상호 작용을 어떻게 영향을 미치는지 모른다
- 이런 종류의 일에 대해서 생각을 안 하려고 한다- 관리자가 걱정할 일이지..
'프로그래밍 > Code Craft' 카테고리의 다른 글
[6부 정상으로부터의 조망] Chapter24 다음엔 어디서? (0) | 2017.12.07 |
---|---|
[6부 정상으로부터의 조망] Chapter23 외적인 한계 (0) | 2017.12.05 |
[5부 프로세스의 일부] Chapter21 얼마나 걸릴까? (0) | 2017.12.01 |
[5부 프로세스의 일부] Chapter20 사냥감 확인하기 (0) | 2017.11.30 |
[5부 프로세스의 일부] Chapter19 규격화하기 (0) | 2017.11.28 |
댓글