5장. 구현 설계 목차 5.1 설계의 어려움 5.2 핵심 설계 개념 5.3 설계 빌딩 블록: 발견적 학습 5.4 설계 실천법 5.5 잘 알려진 방법론에 대한 의견 5.1 설계의 어려움 "소프트웨어 설계"는 컴퓨터 소프트웨어에 대한 명세를 동작 가능한 소프트웨어로 변환하기 위한 계획에 대한 구상이나 창작, 도구를 뜻한다. 설계는 요구사항을 코드 작성과 디버깅에 연결하는 작업이다. 훌륭한 상위 설계는 여러 개의 하위 수준의 설계를 무리 없이 담을 수 있는 구조를 제공한다. 설계는 불명확한 문제다 설계는 확실하게 정답이 정해져 있지 않다. 한 번 설계하고, 문제가 발견되면 다시 설계하는 과정을 반복해야 한다. 그동안 설계 없이 프로그래밍을 해왔지만 이번 챕터를 읽은 이후 설계를 하고 코딩을 시작해야 겠다. 설..
개발 도서/Code Complete
4장. 구현시 결정해야 할 핵심 사항 목차 4.1 프로그래밍 언어 선택 4.2 프로그래밍 규약 4.3 기술 흐름 파악 4.4 구현 실천법 선택 이 장에서는 구현과 관련된 구체적인 사항을 결정하는 방법에 대해 이야기한다. 4.1 프로그래밍 언어 선택 개발자는 프로그래밍 언어에 영향을 받는다. 프로그래밍 언어의 잘못된 예는 포트란에 익숙한 개발자가 C++ 언어를 사용해 개발을 하게 됐을 때, C++의 객체지향 기능은 전혀 사용하지 않고 포트란의 기능들(GOTO 문이나 전역 변수)을 사용해 프로그래밍 하는 것이다. 이는 C++을 가장한 포트란 코드를 작성하는 것과 같다. 나 또한 이와 같은 경험을 한 적이 있다. C 언어를 배우고 C++ 언어를 사용하게 되었을 때 작성한 코드들을 보면 C++언어를 사용해 절차..
3장 준비는 철저하게: 선행조건 3.1 선행 조건의 중요성 품질 좋은 소프트웨어를 개발하기 위한 실천법은 프로젝트의 시작과 중간, 끝 단계에서 품질을 중요시하는 것이다. 프로젝트의 마무리 단계에서 품질을 강조하는 경우에는 시스템 테스트에 중점을 둔다. 프로젝트 중간 단계에서 품질을 강조하는 경우에는 구현 방법에 역점을 둔다. 프로젝트의 시작 단계에서 품질을 강조하는 경우에는 고급 제품을 계획하고 요구사항을 수집하고 설계한다. 구현 전에 선행 조건을 수행하기 위한 필수적인 논의 논리적 설득 비유적 설득 데이터에 근거한 설득 프로젝트의 시작 단계에서 발생한 오류를 나중에 고치려하면 많은 비용이 소모된다. 3.2 작업 중인 소프트웨어 종류 결정 순차적 접근 방법을 선호하는 경우 요구사항이 상당히 안정적일 때 ..
2장 소프트웨어 개발의 이해를 돕기 위한 비유 소프트웨어 개발을 비유하는 여러가지 말들이 있는데 그 중 이 책에서 가장 선호하는 단어는 건설이다. 집짓기와 소프트웨어 구축 작업을 집을 짓는 것에 비유해 앞으로 설명할 예정이다.
1. 소프트웨어 구현으로의 초대 소프트웨어 구현이랑 무엇인가? 구현활동에 속하는 작업 1. 성공적인 구현 활동을 위한 기초 작업 검증 2. 코드에 대한 테스트 방법 결정 3. 클레스 및 루틴 설계와 작성 4. 변수와 이름 상수 생성 및 이름 부여 5. 제어 구조 선택과 명령문 블록 구조화 6. 제어 구조 선택과 명령문 블록 구조화 7. 코드에 대한 단위 테스트, 통합 테스트, 디버깅 8. 저수준 설계와 코드를 다른 팀원과 교차 검토 9. 조심스럽게 코드의 포맷을 맞추고 주석을 달아 코드를 정리 10. 개별적으로 작성한 소프트웨어 컴포넌트의 통합 11. 코드가 더 빨리 실행되고 더 적은 자원을 사용하도록 최적화 소프트웨어 구현이 중요한 이유는 무엇인가? 1. 구현은 소프트웨어 개발에서 큰 비중을 차지한다...
개발자로 1월부터 일하게 되면서 개발차 필독도서를 찾아보던 중 전 분야에 걸쳐 인사이트를 주는 책이라는 평을 보고 구입하게 됐다 35장으로 구성되어 있어서, 한 주에 5장씩 7주면 완독할 수 있을 것이라 예상된다. 처음 책을 본 느낌은 굉장히 두껍고 다 볼 수 있을까? 라는 생각이 가장 많이 들었는데 한번 도전해보고 후기도 남길 예정이다. 서문 다른 공학 분야보다도 소프트웨어 공학은 특히 최고의 실천법과 평균 수준의 실천법 간의 차이가 꽤 크다. 그래서 좋은 기법을 널리 알리는 도구가 중요하다. -프레드 브룩스(Fred Brooks) 이 책의 추천 독자는 숙련된 개발자, 책임 개발자, 독학으로 배운 개발자, 학생이다. 나는 학생이지만 지식적으로 아는 것도 많이 부족하다. 여기선 지식은 갖췄으나 실무적인 ..