November 12th 2019
Contents
소프트웨어 구현
클래스 다루기
언어에 상관없이 구현 단계에서 개발자가 고민해야 하는 고민의 깊이와 기본기는 예전과 크게 다르지 않다고 합니다. 개발도구와 프레임워크의 도움으로 품질 높은 코드를 빠르게 개발할 수 있지만 논리를 구현하기 위한 코드 작성 자체는 여전히 개발자의 몫이고, 또 많은 코드가 협력에 의해 개발됩니다.
개발에서 구현 관정에는 계획과 설계, 작업 내용 확인 등이 포함되지만 대개 "구현"이라고 하면 어떠한 것을 만드는 실직적 작업을 의미합니다.
컴퓨터 소프트웨어 개발은 복잡과 과정이며, 전문가들의 연구에 따르면 다음과 같은 활동이 포함될 수 있습니다.
절차가 없이 프로젝트를 진행한 경험이 있다면, 위 항목들은 불필요해 보일 수 있습니다. 지나치게 형식을 중요시하는 프로젝트를 해 봤다면 이러한 것들이 형식적 절차라고 인지할 수 있습니다. 절차의 모자람과 지나침 사이에 균형을 맞추는 것은 쉽지 않은 일 같습니다.
구현이라고 하면 "코드 작성", "프로그래밍"이라고도 합니다. 하지만, 구현 활동에는 코드 작성만 있는 게 아니라 창의성과 판단력이 상당히 필요한 작업들이 많습니다.
거시적 관점에서 구현 활동을 위에서 표현했다면, 다음은 구현 활동에 속하는 구체적인 몇 가지를 정리한 것입니다.
구현은 프로젝트 기간의 30 ~ 80%의 시간을 차지합니다. 이 정도의 시간이면 해당 프로젝트의 성공에 큰 영향을 미치기 때문에 소프트웨어 개발에서 구현은 큰 비중을 차지합니다.
소스코드만이 소프트웨어를 정확하게 설명하는 경우가 많습니다. 요구사항 명세서나 설명서는 최신 정보를 반영하지 못 할 수 있지만, 소스코드는 항상 최신 내용입니다. 따라서 소스코드는 항상 최고의 품질을 유지해야 합니다.
프로그래머 개인의 생산성은 구현하는 동안 10배에서 20배 정도 차이가 있다고 합니다.
구현의 결과물인 소소코드만이 소프트웨어를 정확하게 설명하는 경우가 많습니다.
구현은 반드시 해야만 하는 활동입니다.
클래스는 연관성이 높고 잘 정의된 기능을 공유하는 데이터와 루틴의 모음입니다. 능력 있는 개발자가 되려면 현재 작업 중인 코드에 집중할 수 있게 프로그램에서 무시할 수 있는 부분을 최대화할 수 있어야 합니다. 클래스는 이러한 것을 달성하기 위한 일차적인 도구입니다.
추상 데이터형(Abstract Data Type, ADT )은 데이터와 데이터를 처리하는 연산의 집합입니다. 연산은 프로그램의 나머지 부분에 데이터가무엇인지를 설명해주는 역할과 나머지 프로그램에서 그 데이터를 변경할 수 있게 해주는 역할을 합니다.
객체지향 프로그래밍을 이해하기 위해서는 ADT를 반드시 이해해야 합니다. ADT 를 이해하지 않고는 이름만 "클래스"인 클래스를 작성하게 될 것입니다. 그런 클래스는 실제로는 연관성이 높지 않은 데이터와 루틴을 편의를 위해 보관하는 상자와 다를 게 없습니다. ADT 를 이해한다면 처음에 구현하기 쉽고 나중에 변경하기 쉬운 클래스를 만들 수 있습니다.