아디봉의.net
CODE complete정리 본문
소프트웨어구현은 소프트웨어 개발과정의 중심적인 활동이다. 그리고 구현은 모든 프로젝트에서 반드시 수행되는 유일한 활동이다.
구현과정에서 이루어지는 주된 작업은 상세설계, 코드작성, 디버깅, 통합, 개발자 테스트(단위테스트 & 통합테스트)이다.
구현은 코드 작성 또는 프로그래밍 이라고 일컬어지기도 한다.
구현은 질적 수준이 소프트웨어의 품질에 전반적인 영향을 준다.
최종적으로 어떻게 구현할 것인지에 대한 이해 정도가 여러분이 얼마나 훌룡한 프로그래머인지를 결정하는 척도이며, 이는 이 책의 나머지 부분들이 다룰 내용이다.
제2강 소프트웨어 개발의 이해를 돕기 위한 비유
비유의 가치가 과소평가되어서는 안된다. 비유는 모든 사람들이 이해할 수 있는 당연한 행위라는 장점을 갖고 있기 때문에, 비유로 인해 불필요한 의사 소통이나 오해가 줄어들고 학습과 교육의 속도가 빨라진다. 실제로, 비유는 개념을 내재화하고 추상화하는 방법이며, 좀 더 높은 수준에서 생각하고 낮은 수준에서의 실수를 피하도록 해준다.
비유의 가치가 과소평가되어서는 안된다. 비유는 모든 사람들이 이해할 수 있는 당연한 행위라는 장점을 갖고 있기 때문에, 비유로 인해 불필요한 의사 소통이나 오해가 줄어들고 학습과 교육의 속도가 빨라진다. 실제로, 비유는 개념을 내재화하고 추상화하는 방법이며, 좀 더 높은 수준에서 생각하고 낮은 수준에서의 실수를 피하도록 해준다.
알고리즘 - 특정한 작업을 수행하기 위한 잘 정의된 명령들의 집합으로써, 예상가능하고, 결정적이며, 변하지 않는다, 즉 알고리즘은 A지점에서 B지점으로 갈때 우회하지 않고 ( DEF지점에 들렸다 가지 않고), 장비향기를 맡거나 커피를 마시기위해서 멈추지 않고 가는방법을 말해준다.
발견적학습(heuristic)- 답을 찾을 데 도움을 주는 기법이다. 이것은 무엇을 찾는 지가 아니라 어떻게 찾는지를 말해주기 떄문에 이방법의 결과는 변하기 쉽다. 이 방법은 A지점에서 B지점으로 직접 가는 방법을 말해주지 않는다. 심지어는 A지점과 B지점이 어디에 있는지 조차도 말해주지 않을것이다.
- 소프트웨어 글쓰기 : 코드작성하기(소프트웨어 개발에 대한 가장 기초적인 비유는 "코드작성하기"의 표현으로부터 발생했다. 쓰기비유는 프로그램개발을 하는것이 마치 편지 쓰기와 같다는 것을 연상시킨다. 펜과 잉크, 종이를 들고 앉아서 처음부터 끝까지 써내려간다. 편지쓰기에서는 어떠한 형식적인 계획도 요구되지않는다. 작성하면서 말하고 싶은것을 써내려간다.
- 소프트웨어 조개양식 :시스템증대(점증적개발에서 우선실행되는 시스템의 가장 간단한 버전을 만든다. 이 버전에서는 현실적인 입력을 받아들일 필요가 없으며, 데이터를 현실적으로 처리할 필요가 없다. 그저 개발될 실제 시스템을 유지할 수 있을 정도의 골격을 갖고 있기만 하면된다. 이기초적인 시작은 작은 모래 알갱이에서 조개를 진주로 키우는 것과 같다.
- 소프트웨어 건축공사:소프트웨어 구축(이는 소프트웨어 증대으 ㅣ개념에 잘맞고 보다 상세한 지침을 제공한다. 소프트웨어를 구축하는 것은 계획과 준비, 그리고 실행의 여러단계들을 수반하는데, 이것은 무엇이 구축되느냐에 따라서 종류와 정도의 측면에서 다양해진다.
3. 준비는 철저하게 : 선행조건
집을 짓는작업을 본격적으로 시작하기 전에, 건설가는 설계도를 재검토한다. 또한, 모든 허가증을 발급받아쓴지 확인하고 집의 기반을 조사한다. 건설가는 고층 빌딩을 지을 때와 주택을 지을 때, 그리고 개집을 지을 떄 모두 다른 방법으로 준비한다. 프로젝트가 무엇이든지 간에, 이러한 준비과정은 프로젝트의 구체적인 요구 사항에 맞춰지며 구현을 시작하기 전에 자세하게 진행된다.
목수들 사이에 전해지는 속담에 "자로재기를 두번하고 자르기를 한번하라"라는 말이 있다. 이말은 소프트웨어 개발이라는 측면에서 볼때, 전체 프로젝트 비용의 65%정도를 차지하는 구현 작업과 상당히 연관성이 있다.