본문 바로가기

Dev...

Chapter 2 – 델파이4 IDE의 내부(Internals of Delphi 4’s IDE) 델파이 4 IDE의 내부 (Internals of Delphi 4's IDE) 이번 장에서는 델파이의 통합개발 환경에 대하여 알아보도록 한다. IDE(Integrated Development Environment)는 어플리케이션을 설계하고, 실행시키고, 테스트할 수 있도록 해주는 환경을 말하는 것으로, 프로그램을 쉽게 개발할 수 있도록 도와주는 기능을 한다. 과거에는 개발자가 통합개발 환경이 없이 텍스트 에디터로 소스를 편집해서, 컴파일러로 컴파일 하고, 전용 디버거로 디버깅을 했었지만 볼랜드에서 터보 C를 내놓으면서 처음으로 통합된 개발 환경을 지원하게 되었다. 그 후, 통합개발 환경은 MS에 의해서도 지원되면서 개발자에게는 점점 더 편리한 환경으로 변모해가고 있는데 델파이 3까지는 다소 부족한 면이 .. 더보기
Chapter 1 - 이것이 델파이4 ! (This is Delphi 4 !) 이것이 델파이 4 ! (This Is Delphi 4 !) 델파이 4는 현재 사용할 수 있는 가장 유연하면서도 강력한 개발 도구이다. 델파이 4는 비주얼 인터페이스 디자인과 강력한 객체지향 언어로서의 특징을 가지고 있는 오브젝트 파스칼 언어를 통합하고 있다. 개발자는 이를 이용하여 빠르면서도 직관적이고, 견고한 Win32 어플리케이션을 쉽게 개발할 수 있다. 이번 장에서는 델파이 4에서 새롭게 선보이는 여러 가지 기능과 특징 들을 소개한다. 처음으로 델파이를 접하는 사람들에게는 다소 어려운 내용이 될 수도 있으나, 대부분의 내용이 나중에 다시 자세히 언급될 것이므로 그냥 한 번 읽어두는 것도 좋을 것이다. 흔히 차를 새로 홍보할 때 보면, 그 기능은 잘 몰라도 각종 기술 이름을 들먹여가며 '이 차에는 이.. 더보기
델파이4의모든것에 들어있던 팁모음집… 팁모음집 금주가 몇번째 주인지 어떻게 구합니까 function kcIsLeapYear( nYear: Integer ): Boolean; // 윤년을 계산하는 함수 begin Result := (nYear mod 4 = 0) and ((nYear mod 100 0) or (nYear mod 400 = 0)); end; function kcMonthDays( nMonth, nYear: Integer ): Integer; // 한달에 몇일이 있는지를 계산하는 함수 const DaysPerMonth: array[1..12] of Integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); begin Result := DaysPerMonth[nMonth]; if (n.. 더보기
델파이4의 모든 것을 집필한 후기… 정지훈님의 저자후기 필자가 델파이를 처음 만난 것이 1996년 가을이다. 델파이를 처음 본 순간 이것이야 말로 내가 바라던 개발 도구임을 직감할 수 있었고, 그 때부터 델피언이 되어 무작정 델마당 모임에 참석했던 기억이 아직도 생생하다. 책 을 쓰려고 마음먹을 당시에는 델파이에 대해서 볼만한 책도 거의 없었고, 더구나 초급자 수준 이상이 되면 볼 수 있는 책은 더더욱 없었다. 그래서, 이번에 집필하는 책은 중급자 이상이 되어도 얻을 수 있는 것이 많은 책이 되어야 한다고 생각하였고, 델파이를 이용해서 할 수 있는 여러 가지 테크닉과 기법들을 소개하고자 노력하였다. 비록 처음에 의도한 바대로 고급스러운 테크닉을 모두 싣지는 못했지만, 최소한 현재 나와있는 델파이 서적 중에서는 다루지 않은 것들을 중심으로 .. 더보기
[SA강좌] Part 1 - 소프트웨어 아키텍처 개념에 대한 이해 소프트웨어아키텍트와 관련된 지식이 널리 퍼지기를 기원하며... 만들었던 초안 그대로 오픈합니다. 소프트웨어아키텍트를 꿈꾸는 분들에게 도움이 되었으면 합니다. 나름 괜찮게 만들어진 내용이라서리... 주변 사람들에게 널리 읽혔으면 좋겠다라는 개인적인 바램이 조금 있습니다. ~.~ [SA강좌] Part 1-20 SA기초강좌 맺음말… [SA강좌] Part 1-19 아키텍처가 바라보는 View [SA강좌] Part 1-18 간단한 ADD방법 [SA강좌] Part 1-17 간단한 아키텍처링 예제 [SA강좌] Part 1-16 서비스 시스템의 목표 [SA강좌] Part 1-15 소프트웨어 아키텍처의 참고사항 [SA강좌] Part 1-14 소프트웨어 아키텍처 팀 운영 시 문제점에 대한 해결방안 [SA강좌] Part 1.. 더보기
[SA강좌] Part 1-20 SA기초강좌 맺음말… 개념 설명 SOA와 CBD를 혼동하는 분을 위한 간단히 구분법을 설명드린다. 두 가지 모두 Reusable(재가용성)에서 중요한 개념이다. 하지만 중요하게 다른 점은 서비스가 서비스 소비자가 원하는 궁극의 결과를 얻기 위해 서비스 제공자가 처리해주는 한가지 일의 단위(W3C, Dr.Hao he)라고 보는 것이 SOA이고 컴포넌트는 다른 컴포넌트와 상호 작동하기 위해 만들어진 것으로 특정기능(functionality)또는 일련의 기능을 담고 있으며 명확히 정의된 인터페이스를 가지는 소프트웨어 객체(W3C WS-glossary) 라고 보는 것이다. 또한 가장 큰 차이점은 컴포넌트는 이미 구현된 것이기에 프로그래밍 언어에 중립적이지 않다는점이며 CORBA의 대표적인 실패원인 이기도하다. 1회강의 맺음말 소프트.. 더보기
[SA강좌] Part 1-19 아키텍처가 바라보는 View 내가 예전에 만들었던 소프트웨어에 이런 것이 있었다. AutoCad에 애드인하는 소프트웨어 였는데. 건축설계사무소에서 Cad에 설계를 할때에 정의된 클립아트 형태 ( 계단, 지붕, 문 등등 )를 사용해서 아파트나 주유소와 같은 건축물을 설계하면 관련 클립아트들이 컴포넌트 형태로 건축 일위대가라는 속성과 연결되어져서 실제 건축에서 산정되는 단가를 추출해주는 프로그램이었다. 건축가의 처음 '투시도'하나에서… 실제 '건축내역서'까지 파생되는 과정을 보면, 현재의 소프트웨어의 구상과 참으로 유사한듯 하다. 아마도, 완성된 프로그램을 빠르게 도식화해서 '고객'과 협의에 사용하게 하는 프로그램이 만들어진다면, 정말 괜찮을 듯 하다. 말이 조금 빗나갔지만, 아키텍쳐를 바라보는 View에 따라서 다 다르다. 업무관점에.. 더보기
[SA강좌] Part 1-18 간단한 ADD방법 간단하게 ADD 방법을 살펴보면 다음과 같다. ( 상세한 것은 www.sei.cmu.edu/architecture/add_method.html 에 있다. ) 간단한 방법에 대한 설명이다. 시스템을 분할해서 구성하는 방법을 간단하게 도식화 한것이다. 아주 좋은 이야기 하나 소개. [브라이언 푸트의 패턴이야기] 이렇게 분할 하는 방법이 여러가지 view로 시스템을 바라보면서 아키텍쳐를 만들어 나아가는 것이기 때문이다. 따지고 보면, 건축물도 디자인을 먼저하고 세부적인 공정작업에 들어가는 것이기 때문이다. 가장 완성도가 높은 것은 고객에게 '완성'된 프로그램의 형태를 보여주고 그 형태를 만들기 위해 애쓰는 것이 아닐까? 결국 건축아키텍트는 수많은 투시도를 그리게 되고 설계도로 분화되면서 최후에 실제 프로그램을.. 더보기
[SA강좌] Part 1-17 간단한 아키텍처링 예제 간단한 아키텍쳐링 예제 가장 먼저 아키텍트가 할일은 '시스템'이란 무엇인가?를 찾고 식별해야한다. 첫째. 정치활동을 충실히 하라! 정치적인 변수들 ( 고객, 사업관리 조직 등등 – 심지어 고객의 사모님의 취향~ )을 비밀문서에 잘 체크해두어야 한다. 간혹, 화면의 색만 가지고 시비거는 고객도 있다. ( 아예… 레이어를 분리해버리는 것도 방법이다.!) 정치활동을 통하여 아키텍트가 가진 컨셉을 모든 이해관계자들에게 설득하고 조율해야 한다. 당연히 엄청난 구강신공은 필수가 된다. 가장 뛰어난 아키텍트는 그 사람이 결정한 것이 아니라 그 결정 마져도 해당 관계된 사람들 사이의 회의에서 얻어진 결과물로 착각하게 만드는 것이 최선이기 때문이다. 둘째로 시스템의 구축 범위를 명확히 하라. 외부 시스템과 내부 시스템을.. 더보기
[SA강좌] Part 1-16 서비스 시스템의 목표 서비스 시스템의 목표 아키텍트는 소프트웨어 복잡도를 해결하면서 시스템의 품질 속성을 획득해야 한다. 이 서비스 시템은 물론 변경도 용이해야 한다. 유지보수성, 확장성, 재구조화성, 이식성을 가져야 한다는 점이기도 한다. 소프트웨어 복잡도 해결 시스템의 품질 속성 획득 변경용이성 유지보수성, 확장성, 재구조화성, 이식성 상호운영성 효율성 안정성 고장 감내, 강건성 시험요잉성 재사용성 문제를 해결하기 위한 기본 테크닉들 추상화, 캡슐화, 정보은폐, 모듈화, 고려사항의 분리, 결합력과 응집력, 충분-완전-원시성, 정책과 구현의 분리, 인터페이스와 구현의 분리, 한번의 참조, 분할 정복 그러나, 아키텍트들이 주의하여야할 점들이 있다. 가장 훌룡한 아키텍쳐는 목표시스템과 어울려야 한다는 것이다. 그렇다면. 반문할.. 더보기