페이지

레이블이 Software인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Software인 게시물을 표시합니다. 모든 게시물 표시

2011년 3월 19일 토요일

Software Reuse Maturity Level

Reuse Maturity Level에 대한 연구가 꽤 있지만, 내가 본 것들은 대개 SEI의 CMM/CMMI Model을 따라 정의하고 있다. 개인적으로 선호하는 Model은 UML의 3 Amigo 중의 한 사람인 Ivar Jacobson이 쓴 Software reuse: architecture, process and organization for business success 이라는 책에 나오는 Software Reuse의 발전 단계를 표시한 것이다. 다른 Model보다는 이 모델이 마음에 드는 것은 각 발전 단계가 기업에서 실제로 Software Reuse를 전략적으로 수행할 때 필연적으로 발생할 수 있는 단계들로 정리하여 도식화했기 때문이다. 특히나, 공동 저자인 M. Grisis의 경우에는 Hewlett-Packard에서 Software Reuse에 관련하여 수년동안 Research와 Practice를 함께해 온 인물이기 때문이기도 할 것이다.

아래 그림에서와 같이 Software Reuse의 가장 초보적인 단계는 Software 개발 단계의 Artifacts를 중구난방으로 Copy-And-Paste하는 단계인 Informal Code Reuse. Artifact Clone에 따른 Maintenance Issue들이 있지만 나름 Software Reuse의 한 방식.. 개인적으로 Software Reuse의 가장 어려운 단계가 바로 2번째 단계인 Blackbox Code Reuse가 아닌가 한다. 단어가 의미하듯이 Blackbox Code Reuse는 개발된 Code를 적절히 Packaging하고 Packaging된 내용물을 잘 Specification하여 사용자들이 그 Specification만을 보고 재사용 여부와 방식를 결정하게 되는 것이다. 언뜻보면 별로 어려울 것 같지 않지만, 다른 단계에 비해가장 많은 노력, 시간, 그리고 비용이 들어가는 단계가 아닐까 생각한다.

먼저 기술적인 측면에서, 첫째, 어떤 부분을 Packaging 할 것인가? 즉, Package의 Scope을 정하는 것이다. Packaging의 단위를 Module 또는 Component라고 불러도 좋다. 어떤 단어를 쓰더라도 근본적으로 바뀌지 않는 것은 Packaging된 내용물이 제공하는 기능의 범위가 무엇인가 일것이다. 어떤 사람은 10개의 기능을, 또 다른 사람의 5개의 기능을 Packaging하자고 할 수 있을 것이다. Package Scope를 결정하는 원칙이나 룰이 정해진 것이 없으니 누구의 의견이 맞고 틀리다고 단정지을 수 없는 것이 항상 논쟁을 불러일으키게 된다. 내가 생각하기에는 제일 처음으로 Package의 Scope를 정의할 때엔 공리주의자들의 기본적인 이론으로 알려진 최대 다수의 최대 행복의 원칙에 입각해서 Scope을 정의하는 것이 좋을 것 같다. 일단 Scope이 정해지고 Reuse되면서 문제점이나 개선점이 들어나면 점진적으로 Scope를 재조정하는 것도 필요한 Activity일 것이다.

두번째로, 어떤 내용을 Specification에 넣을 것인가? Software Specification에 대한 연구가 효율적인 Reuse Library 개발/유지를 통해 나름 이루어지긴 하였지만, 전자부품과 같은 Hardware처럼 표준 Specification이라고 불리만한 것이 없다. 그래서, 나름 많은 것을 Reusable Package에 대한 Meta 정보들을 정의하고 그에 따라 Reusable Package를 관리하지만, 항상 Reuse를 위해 Meta 정보를 검색하는 입장에서는 원하는 정보가 제공되지 않는 경우가 종종 발생할 것이다. 예를 들어, Reusable Package의 Code Size, Complexity 등과 같은 Static Metrics는 비교적 쉽게 제공될 수 있으나, Run-time Performance과 같은 정보들은 쉽게 제공할 수 없는 것이다. 왜냐하면, Execution Environment에 따라 Performance가 달라지고 모든 사용 가능한 Execution Environment에 대해 확인하는 것이 현실적으로 불가능하기 때문이다.

세번째로, 기술 지원 측면도 고려되어야 할 것이다. Software 역시 인간이 만드는 것이다보니 아무리 문제를 최소화한다고해도 완벽하게 문제를 제거할 수는 없는 것이다. 더군다나, 요즘과 같이 급변하는 IT 시대에 짧은 시간에 Bug-free인 Software를 구현한다는 것은 거의 불가능한 일이다. Release되는 Software에 내제된 Bug 수와 발생 빈도라도 관리된다면 감지덕지할 일인 것이다. Reusable Package의 재사용을 가로막는 일 중에 하나가 바로 문제가 발생하였을 경우 해결 방안을 찾기에 힘들다는 것이다. 더군다나, Source Code없이 Binary만 제공되는 경우... 따라서, 위에서 언급한 문제와 더불어 Reusable Package에 문제가 발생하였을 경우, 얼마나 빨리 대응하고 문제를 해결할 수 있는가 역시 Blackbox Code Reuse의 중요한 숙제라고 할 수 있을 것이다.


반면, 문화적인 측면에서 Not Invented Here 이라는 Mind를 극복하여야 할 것이다. 요즘은 Open Source내 뭐내해서 많이 희석된 것 같기도 하지만, 아직도 많은 Software Engineer들은 자신들이 개발한 Source에 대해 더 많은 애착을 느끼고, 타인이 개발한 Code에 대해서는 부정적인 시각을 가지고 있다. 앞서 언급한 것처럼 Software가 사람이 개발하는 것이다 보니, 각 개인별로 수준차가 날 수 밖에없고 그 차이가 Software 품질에 영향을 주게된다. Reuse로 인해 문제가 발생하면 일차적으로 본인이 자신의 문제가 아님을 보여야하니 남의 것으로 자신이 피해를 보는 것 같은 피해 의식도 들기도 하고... 따라서, 이러한 문제는 Reusable Package를 공급하는 입장이나 그것을 Reuse하는 입장을 중재하는 조직을 운영면서 점진적으로 이런 문제를 해결해 나가는 것이 좋을 것이다.

일단 Blackbox Code Reuse 단계에서 많은 시행 착오를 거치고 성공적으로 Reuse에 대한 기술적/문화적 Background가 생긴다면 다음 단계로의 발전은 용이하게 진행될 것이다.
특히, 최근 몇 년동안 마지막 두단계인 Architected ReuseDomain-Specific Reuse-Driven OrgamizationSoftware Product Line Engineering이란 분야에 대응되는 것 같고, 많은 기업들이 자신들의 Business Domain에 맞는 Architecture (or Platform)을 개발하고 Business Domain에 따라 Component와 Development Process를 Tailor하여 Reuse를 극대화한 성공 사례들을 보여주고 있다. 이에 대한 것은 다음에 Software Product Line Engineering 편에서 다루어 보기로 함.

마지막으로, 가로축에서 알 수 있듯이 Software Reuse는 그냥 얻어지는 지는 것이 아니다. 시간, 비용, 그리고, 기술적/문화적 경험이 축적되어야지만 성공적인 Software Reuse가 달성되는 것이다.


Excerpted from the following reference.
Jacobson. I., Griss, M., & Jonsson, P. 1997. Software reuse: architecture, process and organization for business success. ACM Press/Addison-Wesley Publishing Co., New York, NY.

2011년 3월 9일 수요일

Windows Update Error 80072EE02

정품 Windows인데 Windows Update를 하려고 하면 그림과 같이 Error Code 80072EE02를 발생시키며 Update를 하지 않으려고 한다. 주인님 말을 안 듣고....




해결 방법은 regedit를 실행하여 다음 위치에 있는 UseWUServer 값을 1에서 0으로 변경한 후, System을 Restart한다.

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU

"UseWUServer"=dword:00000001

Troubleshooting of High Definition Audio Device

Windows O/S에서 발생하는 모든 Sound를 Capture하기 위해서는 High Definition Audio Device가 지원되어야 한다. 그런데, Windows 7에서는 이 High Definition Audio Device가 기본적으로 Disable되어져 있다. 따라서, Audio Chip Maker에서 제공하는 Device Driver를 설치하고 enable하여야만 한다.

Chip Maker에서 Device Driver를 다운로드 받아 설치하였는데 정상적으로 동작하지 않거나, 설치하고 며칠이 지나는 먹통이 되는 경우가 종종 발생한다. 내 Laptop과 같이 멍청한 경우에는...이럴 경우 몇 번이나 Device Driver를 재설치해도 정상적으로 동작하지 않는 경우가 허다하고 아까운 시간만 소비하게 된다.

High Definition Audio Device가 왜 이런 문제를 문제를 일으키는 이유는 뭔지는 모르겠지만 하드웨어적인 측면보다는 소프트웨어적인 측면이 클 것이라는 가정하에 이것 저것 살펴보다가, 다음과 같은 방법으로 문제를 해결하였다.

High Definition Audio Device가 정상적으로 동작하지 않을 경우에는

1. Start --> Control Panel --> System으로 이동
2. Device Manager를 실행
3. System Device --> High Definition Audio Controller를 선택하여 Disable한다.
주의. Microsoft에서 제공하는 High Definition Audio Controller인지를 확인한다.
그림 참조
4. System Restart하겠느냐는 메시지가 나타나면, Restart한다.
5. System이 restart되면, 1,2, 그리고 3번을 다시 수행한다. 단 3번에서는 Enable을 선택하도록 한다.

2011년 2월 22일 화요일

Got "ERROR 1723" when uninstalling Java

괜시리 Java 6 Rel 21을 Rel 24로 Upgrade하려다 다음 에러를 만나 이틀동안 고생했다.

ERROR 1723. THERE IS A PROBLEM WITH THIS WINDOWS
INSTALLER PACKAGE. A DLL REQUIRED FOR THIS INSTALL TO
COMPLETE COULD NOT BE RUN. CONTACT YOUR SUPPORT
PERSONNEL OR PACKAGE VENDOR.


Java 6 Rel 21을 다시 다운로드받아 재설치하고 삭제를 해도 문제가 해결되지 않았다.
최후의 방법으로 Windows Installer Cleanup을 다운로드받아 Program Install 정보를 삭제하고, Program Folder를 뒤져서 매뉴얼로 Java 설치 파일들을 삭제하였다.

문제가 뭐였을라나?

2011년 2월 17일 목요일

Visual Studio 2008 FaceId

Visual Basic으로 Office Tool Add-In을 개발하는 중.

1단계로 Command Button에 생성하고 지우기.

Command Button 생성 코드는 http://msdn.microsoft.com/library/bb981205.aspx를 따라하면되고, 생성된 Button을 Disable또는 Delete하는 코드는 좀 고민해야겠다.

그런데, 위 URL의 코드를 자세히보면 FaceId 항목이 Integer로 지정되어 있다. 뭔가 싶어 찾아보니, 고맙게도 Microsoft에서 Office에서 사용하는 Icon들을 Resource로 배포하면서 번호를 부여한 것이다.예를 들어 다음 그림과 같이.



현재 4,000까지 Icon이 등록된 것 같다. 보다 자세한 Icon 정보는
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=12b99325-93e8-4ed4-8385-74d0f7661318&displaylang=en

http://www.kebabshopblues.co.uk/2007/01/04/visual-studio-2005-tools-for-office-commandbarbutton-faceid-property/를 참조하시를...

2011년 2월 15일 화요일

Precision and Recall (정확도와 재현율)

Precision과 Recall이란 단어가 몇 번 나왔지만 별 관심없이 지나치다가 이번엔 도대체 뭔가하고 검색 해 봤더니 정확도와 재현율이란다. 별 것 아니라는 생각과 더불어 이번에 명확히 하고 가고자 Reference와 함께 정리한다.
Precision과 Recall은 두 개 이상의 Database Schema를 비교할 때 Schema Match의 품질을 측정하기 위해 많이 사용된다. 다음 그림은 Schema Match 가능한 결과를 집합으로 표시한 것이다.

영역 A + B: 수작업으로 발견한 Match. 자동화된 방법을 평가하기 위한 Gold Standard로 이용된다.

영역 C + B: 자동화된 방법으로 발견한 Match



영역 A: False Negative, 순수히 수작업으로만 발견가능한 Match
영역 B: True Positive, 수작업과 자동화된 방법으로 발견 가능한 Match이면서 Correctly Match된 것.
영역 C: False Positive, 자동화된 방법으로 발견된 잘못된 Match
영역 D: True Negative,

위 집합에서 Precision, Recall, F-Measure (Harmonic mean of Precision and Recall),과 Overall(False Negative(영역 A)를 추가하고 False Positive(영역 C)를 제거하기 위한 Post-Match Effort))가 다음과 같이 정의된다.












참고 문헌
Do,H. H., Melnik, S. & Rahm, E. 2002. Comparison of Schema Matching Evaluations. In Revised Papers from the NODe 2002 Web and Database-Related Workshops on Web, Web-Services, and Database Systems, Akmal B. Chaudhri, Mario Jeckle, Erhard Rahm, and Rainer Unland (Eds.). Springer-Verlag, London, UK, 221-237.

http://www.springerlink.com/content/4wbxb1jbw8w4ek9v/

2010년 10월 18일 월요일

LG 전자의 반격, SW통합센터 성공할까?

오늘 인터넷에0 LG 전자가 소프트웨어 통합센터를 구축한다는 것이 주요 IT 기사로 올라왔다. 경기도 평택에 수천명의 소프트웨어 연구개발 인력을 모아서 사업본부별로 소프트웨어 개발 지원하는 것을 통합 운영한다는 것이다. 이에 걸맞게 대대적으로 소프트웨어 조직을 새롭게 신설하거나 정비하여 소프트웨어 경쟁력을 극대화하겠다고 한다. LG 전자는 확정되지 않았다고 하지만, 아니 땐 굴뚝에 연기나지 않는 법. 그리고, 뭐 그다지 새로운 내용도 없는 상투적인 기사다.

고위층이 바뀌면서 상당 부분 예측된 부분이지만 이런 접근 방식은 논란을 일으킬 소지가 다분히 있을 것 같다.

첫째, 근무 위치. 아직 정해지지 않았다고 하지만, 평택이라는 지리적 위치가 아마 기존 인력의 이탈을 불러 올 것이고 새로운 인력을 수급하는데 문제가 있을 것이다. 직장인들의 우선적으로 고려하는 것이 아마 근무처가 아닐까? 대체로 강남에서 1시간 내외의 거리에 있는 곳에 사무실이 있기를 바랄 것이다. 대체로 삼성 계열사가 수원 또는 기흥이 마지노선이 아닐까? 그런데, 더 먼 평택이라니? LG라는 Brand로 커버하기에는 물리적으로 다소 먼 거리가 아닐까 한다.

둘째, 서울 접근성. 근무 위치와 비슷한 의미이지만 협업 차원에서의 문제점이다. 소프트웨어는 한 회사에서 모든 것을 개발할 수 있는 것이 아니다. 개발에 필요한 툴도 사야되고, 자체 내에서 없는 기술을 수급하기 위해서는 외부에 용역을 줘야하고... 또, 새로운 기술을 파악하기 위해 서울에서 열리는 각종 컨퍼런스도 참가 해야하고.. 회사가 강남에 있다는 이 모든 것이 쉬워진다. 지하철타고 1~20분이면 서로 만나 합의점을 찾을 수 있고, 컨퍼런스 갔다가 오후에 들어와 잔무를 처리하고.. 한때 벤쳐들이 테헤란로에 몰려있었던 것이 다 이런 장점을 십분활용하기 위함이 아니었던다.

세째, 어떻게 통합할 것인가? 소프트웨어 개발팀이 사업본부별로 있던 것은 다 이유가 있지 않았을까?
각 사업본부별로 도메인이 다르고, 필요한 소프트웨어 기술이 다르니까 통합할 수 없었던 것이 아니었을까? 물론 요즘은 DTV나 휴대폰의 하드웨어 성능을 따져보면 소위말하는 스펙이 별반차이 나지 않는다. 그리고, 많은 전자 기기들이 더 많은 기능들을 담고 있어 기기간의 소프트웨어의 유사성이 점점 많아지고 있는 것은 사실이다. 하지만, 어떤 부분을 전사적으로 통합해서 개발 관리하고, 어떤 부분을 사업본부별로 특화시킬 것인지에 대해 피 터지는 고민이 실행된다면 별 효과가 없을 것이다.

네째, 어떻게 성과를 측정할 것인가? 소프트웨어 개발팀이 사업본부에서 떨어져 나올 수 없는 이유 중에 하나가 바로 소프트웨어 개발 성과를 공정하게 평가하고 보상할 방법이 없다는 것이다. 많은 기업이 소프트웨어의 중요성을 역설하지만, 아무도 얼마나 중요한지를 구체적으로 설명하지 못한다. Microsoft나 Google과 같은 회사의 그들이 판매하는 소프트웨어 매출로 소프트웨어 개발의 중요성을 설명할 수 있다. 그러나, 대부분의 하드웨어 개발에서 출발한 회사들은 소프트웨어는 아직도 공짜라고 생각한다. 예를 들어, 기존 리모컨 의 기능은 그대로 두고 버튼 10개를 줄이면 제품당 단가를 100원 절약할 수 있고 리모컨이 들어가는 제품이 연간 100만대 판매된다고 하자. 그러면, 연간 1억원을 절약할 수 있으니 버튼을 줄이자고 한다. 그러면, 어떻게 줄일 것이냐? 소프트웨어로 처리하면되지 라는 말이 서슴없이 나온다. 그러나, 잘 따져보면 소프트웨로로 그 기능을 구현하는 것 역시 1억 가까운 돈이 들어 갈 것이다. 기존 소프트웨어 바꿔야지 바꾼 소프트웨어 테스트해야지.. 버튼 있는 버젼과 없는 버젼 나누어서 관리해야지.. 3명이서 3개월동안 이 일에 매달린다고 하면, 거의 1억쓰는 것과 별반 다름 없는 것이다.
아직도 같은 회사에서 소프트웨어 개발팀이 을의 위치이고, 적절한 평가 방법이 없는 상황에서 통합 소프트웨어 조직은 일은 다른 조직과 같이 죽어라고하고 보상은 제대로 받지 못하게 될 것이고, 이는 조직의 사기 저하와 직결될 것이다.

한국 전자 산업의 양대 산맥인 삼성전자와 LG 전자가 효과적이고 품질에서 인정받는 소프트웨어 개발을 위해 많이 고심하고 선도주자로써 노력을 많이하고 있지만, 좀 더 소프트웨어에 의한, 소프트웨어를 위한 사고로 전향해야 할 것이다.

2010년 8월 31일 화요일

SyncToy 2.1

비싼 RAID로 구성된 Storage가 있다면 모를까 나 같은 Hungry 일반 유저들은 중요한 데이타가 혹시나 날려버릴까 외장형 하드디스크 여러군데 중복하여 데이타를 저장한다. 그래서, 손 가는데로 한번에 여기에 한번에 저기에 파일을 저장하거나 지우게 된다. 그러다 보면 여러군데 복사해둔 것 중에 어느 곳에 있는 것이 최신버젼인지 아리까리 해지고, 폴더 전체를 복사하다보니 시간도 많이 소비된다. 특히나 Network으로 연결된 Remote Storage인 경우에는 특히나 시간을 엄청나게 잡아 먹는다.

그래서, File 이나 Folder Synchronization하는 툴을 하나 만들까 하다 혹시나 Google 검색을 했더니, 나 같은 생각을 가진 누군가가 벌써 만들어 무료로 배포하고 있다. 이름하여 SyncToy. http://www.microsoft.com/downloads/details.aspx?familyid=C26EFA36-98E0-4EE9-A7C5-98D0592D8C52&displaylang=en#filelist에서 Download 받을 수 있다. UI도 간단하여 사용하기도 쉽다.

오늘의 생각
필요는 발명의 어머니, 내가 필요한 것은 벌써 누군가가 만들어 두었을지도 모르니 검색을 잘하자.