The WyCash Portfolio Management System

WardCunningham이 OOLSLA 92에서 발표한 내용. 원문

미국의 연금 기금, 기업 및 은행들은 "현금" 시장에 수십억 달러를 투자하고 있습니다. 현금 증권은 일반적으로 잔여 만기가 1년 미만인 증권을 의미하지만, 최대 5년까지 만기인 증권도 포함될 수 있습니다. 매우 다양한 성격을 가진 현금 증권은 실제로 발행자와 구매자 간에 협상에 의해 결정되며, 새로운 증권 유형이 자주 시장에 도입됩니다. WyCASH+는 현금 포트폴리오 관리자를 지원하기 위해 기본 회계, 기록 유지 및 보고서 작성뿐만 아니라 분석 계산 기능을 제공하는 포트폴리오 관리 시스템입니다.

WyCASH+의 개발을 위해 Wyatt Software는 시장의 다양성에 신속하고 효과적으로 대응하기 위해 객체 기술을 활용하기로 결정했습니다. 객체는 두 가지 방법으로 도움이 됩니다. 첫 번째로, 많은 증권 유형이 우리의 언어(Smalltalk)에서 직접 지원하는 상속 계층에 잘 맞춰지기 때문에 상당한 코딩 노력을 절약할 수 있습니다. 두 번째로, 변화하는 시장 수요는 종종 대규모 수정을 요구하지만, 완전한 객체 지향 구현에 내재된 모듈성 덕분에 우리는 이를 수용할 수 있었습니다. 우리의 고객들은 우리의 반응성을 현재 필요에 대한 제품의 적합성만큼, 아니 그 이상으로 중요하게 여깁니다.

우리는 작동하는 프로토타입에서 점진적으로 성장하는 방식으로 제품을 개발했습니다. 우리의 소규모 엔지니어링 팀의 각 구성원은 대략 4MB의 소스 코드의 모든 측면에 대한 일반적인 지식을 유지하고 있습니다. 여기에는 공급업체가 제공한 일부 라이브러리와 제3자 계약자가 당사의 사양에 맞춰 작성한 다른 라이브러리가 포함됩니다. 프로그램의 성숙한 부분은 여러 번 수정되거나 재작성되어, 이해와 지속적인 점진적 개발의 핵심인 응집(consolidate)을 제공합니다.

우리는 이 과정이 가장 적절한 제품을 가능한 한 짧은 시간에 만들 수 있다고 믿습니다. 그러나 함정이 있습니다. 모든 사람이 갑작스러운 방향 변화에 편안함을 느끼는 것은 아니며, 특히 프로그래머들은 더욱 그러합니다. 여기서 최선의 해독제는 제품과 그 구현에 대한 더 완전한 친숙함입니다. 변화는 실행 가능하다고 인식될 때 수용됩니다.

다른 더 심각한 위험 요소는 통합 실패입니다. 비완전한(immature) 코드가 잘 작동하고 고객에게 완전히 수용 가능할 수 있지만, 과도한 양은 프로그램을 마스터하기 어렵게 만들어 프로그래머의 극단적인 전문화를 유도하고 결국 비유연한(inflexible) 제품을 초래할 수 있습니다. 처음 작성한 코드를 출시하는 것은 마치 채무를 지는 것과 같습니다. 작은 부채는 신속히 갚는다면 개발 속도를 높일 수 있습니다. 객체는 이 거래 비용을 감당할 수 있게 만듭니다. 그러나 부채가 상환되지 않을 때 위험이 발생합니다. 완벽하지 않은 코드에 소비한 모든 시간은 그 부채에 대한 이자로 계산됩니다. 비통합적인 구현의 부채 부담 때문에 전체 엔지니어링 조직이 정체될 수 있습니다. 이는 객체 지향적이든 아니든 마찬가지입니다.

Wyatt Software가 객체 기술을 계속 사용할 것이라는 점에는 의심의 여지가 없습니다. 선도적인 객체 지향 언어에 대한 깊은 지식이 있는 우리는, 그들의 이점을 어떻게 잘 활용할지를 결정하는 것만 남았습니다. 전통적인 폭포수 개발 주기는 프로그래밍이 시작되기 전에 프로그램을 세부적으로 설계하여 프로그래밍 재앙을 피하려고 노력해왔습니다. 우리는 커뮤니티가 이러한 기술을 객체에 적용하려고 시도하는 것을 흥미롭게 지켜보고 있습니다. 그러나 우리 부채 비유를 사용하자면, 이는 선불 및 전액 지급(전액 선불, up-front and in-full)의 개념을 유지하는 것과 같다고 인식(recognize)합니다. 객체가 제공하는 모듈성과 응집(consolidate)의 실천은 경쟁이 치열한 금융 소프트웨어 시장에서 대안으로서 점진적 성장을 실현 가능하고 바람직하게 (하지만 항상 편안하게는 아님) 만듭니다.

WyCash (last edited 2024-08-23 09:27:01 by 정수)