소프트웨어 현대화

Software modernization

소프트웨어 현대화 또는 플랫폼 현대화라고도 알려진 레거시 현대화는 현대 컴퓨터 프로그래밍 언어, 아키텍처(예: 마이크로 서비스), 소프트웨어 라이브러리, 프로토콜 또는 하드웨어 플랫폼으로 레거시 시스템을 전환, 재작성 또는 포팅하는 것을 말한다.레거시 변환은 새로운 플랫폼으로의 마이그레이션을 통해 레거시 투자의 가치를 유지하고 확장하여 새로운 기술의 이점을 활용하는 것을 목표로 한다.[1]

전략들

소프트웨어 현대화 의사결정을 내리는 것은 어떤 조직적 맥락 안에서 이루어지는 과정이다.비즈니스 조직에서 "실제" 의사결정은 종종 "경계적 합리성"에 기초하여 이루어져야 한다.[2]그 외에도, 복수의 (그리고 상충될 수 있는) 의사결정 기준이 존재한다; (결정의 기초로서) 유용한 정보의 확실성, 완전성 및 가용성은 종종 제한된다.

레거시 시스템 현대화는 종종 다년간의 대규모 프로젝트다.이러한 레거시 시스템은 대부분의 기업의 운영에서 중요한 경우가 많기 때문에 현대화된 시스템을 한꺼번에 구축하면 수용할 수 없는 수준의 운영 리스크가 발생한다.결과적으로, 레거시 시스템은 일반적으로 점진적으로 현대화된다.처음에 이 시스템은 완전히 레거시 코드로 구성된다.각 증분이 완료되면 레거시 코드의 백분율이 감소한다.결국 이 시스템은 완전히 현대화된다.마이그레이션 전략은 현대화 작업 중에 시스템이 완전한 기능을 유지하도록 보장해야 한다.

현대화 전략

소프트웨어 현대화를 위한 다양한 동인과 전략이 있다.

  • 아키텍처 기반 현대화(ADM)는 코드 분석 및 이해, 소프트웨어 변환과 같은 공통적인 현대화 활동이 가능하도록 기존 시스템의 뷰를 표준화하기 위한 시책이다.
  • 비즈니스 포커스 접근 방식:현대화 전략은 현대화에 의해 추가된 비즈니스 가치와 연결된다.그것은 응용 프로그램의 비즈니스에 대한 중요성과 그것의 기술적 품질의 교차점을 정의하는 것을 의미한다.[1]Gartner가 추진하는 이 접근방식은 소프트웨어 상태, 리스크, 복잡성 및 비용을 측정하여 애플리케이션의 강점과 약점을 통찰하는 애플리케이션 포트폴리오의 현대화 결정의 전제조건으로 애플리케이션 포트폴리오 분석(APA)을 들 수 있다.[3]
  • 모델 구동 엔지니어링(MDE)은 역엔지니어링을 위한 접근방식으로, 이후엔 포워드엔지니어링 소프트웨어 코드를 위한 접근방식으로 조사되고 있다.[4][5][6]
  • 기술, 비즈니스 및 조직적 관점에서 레거시 시스템을 반복적으로 평가하는 르네상스[7] 방법.
  • WMU(Warrants, Maintenance, Upgrade)는 열망하는 고객 만족도와 그에 대한 영향을 바탕으로 적절한 유지보수 전략을 선택하는 모델이다.[8][9]

현대화 리스크 관리

소프트웨어 현대화는 여러 이해관계자가 참여하는 위험하고 어렵고 길고 지적인 과정이다.소프트웨어 현대화 작업은 객체 관리 그룹의 모델 주도 아키텍처ISO/IEC 14764:2006 또는 서비스 지향 마이그레이션 및 재사용 기법(SMART)과 같은 프로세스와 관련된 다양한 툴에 의해 지원된다.[10]소프트웨어 현대화는 전문 지식인들에 의해 수행되는 다양한 수동적이고 자동화된 작업을 의미한다.도구는 프로젝트 참여자의 작업을 지원하고 작업의 협업과 순서를 정리하는 데 도움이 된다.

위험(기술 및 비즈니스 목표 모두)을 명확하게 고려한 일반적인 소프트웨어 현대화 관리 접근법은 다음과 같이 구성된다.

  • 기존 포트폴리오 분석: 기술 품질 및 비즈니스 가치 측정올바른 전략을 정의하기 위한 비즈니스 목표와 함께 기술적 품질에 직면함: 교체, 실패, 낮은 우선순위, 좋은 후보.
  • 이해 관계자 파악: 소프트웨어 현대화에 관련된 모든 사람: 개발자, 테스터, 고객, 최종 사용자, 설계자 등 …
  • 요구사항 이해: 요구사항은 사용자, 시스템, 제약조건 및 비기능성의 4가지 범주로 나뉜다.
  • 비즈니스 사례 작성: 비즈니스 사례는 의사결정자가 필요할 때 다른 접근 방식을 고려할 때 의사결정 프로세스를 지원한다.
  • 현대화할 시스템을 이해하십시오. 소프트웨어 설명서가 최신인 경우가 드물고 내부 또는 외부, 일반적으로 오랫동안 보이지 않는 수많은 팀에 의해 프로젝트가 만들어지기 때문에 이 단계는 매우 중요한 단계입니다.응용 프로그램의 내용과 그것의 아키텍처 설계의 추출은 시스템에 대한 추론을 돕는다.
  • 목표 기술의 이해 및 평가: 이를 통해 요구사항 및 기존 시스템과 기술 및 기능을 비교 및 대조할 수 있다.
  • 현대화 전략 정의:[12] 전략은 변환 과정을 정의한다.이 전략은 현대화 과정 동안 발생하는 변화(기술 변화, 추가 지식, 요구사항 진화)를 수용해야 한다.
  • 전략을 이해당사자의 요구와 조정하라: 묵시적 이해관계자들은 무엇이 중요한지 그리고 무엇이 진행하기에 가장 좋은지에 대해 다양한 의견을 가질 수 있다.이해당사자들 간에 합의를 보는 것이 중요하다.
  • 자원 추정: 이전 단계가 정의되면 비용을 평가할 수 있다.이용 가능한 자원과 제약조건을 고려하여 현대화 전략이 가능한지 경영진이 판단할 수 있도록 한다.

현대화 비용

  • Softcalc(Sneed, 1995a)는 COCOMO와 FPA를 기반으로 개발된 들어오는 유지보수 요청의 비용을 추정하기 위한 모델 및 툴이다.
  • EME(Early Maintenance Enducation Assess Assessment)[13][14]는 실제 유지보수를 시작하기 전에 신속하게 유지보수를 하기 위한 새로운 접근방식이다.
  • 르네상스는 리엔지니어링을 이용해 먼저 안정적인 기반을 회복하고, 이후 증분적 변화의 흐름에 의해 지속적으로 시스템을 개선함으로써 시스템 진화를 지원하는 방법이다.접근 방식이 서로 다른 프로젝트 관리[15] 프로세스와 성공적으로 통합됨

레거시 현대화의 과제

레거시 시스템의 주요 문제로는 문서화 부족, 레거시 시스템에 대한 중소기업/지식 부족, 레거시 시스템이 구현된 기술력 부족 등이 있다.전형적인 유산체계는 20년 이상 존재해왔다.마이그레이션에는 다음과 같은 당면 과제가 산적해 있다.

  • 대규모 애플리케이션 포트폴리오 전반에 걸친 가시성 부족 – 대규모 IT 조직은 수천 개는 아니더라도 수백 개의 소프트웨어 시스템을 보유하고 있다.기술과 기능적 지식은 본질적으로 분산되고 희석되며 불투명하다.고위 경영진과 엔터프라이즈 설계자에게 있어 가시성의 중심적인 지점은 없다. – 기업 전체에 걸쳐 소프트웨어 시스템에 대한 필요한 양적, 질적 데이터를 보유하지 않고 소프트웨어 시스템에 대한 현대화 결정을 내리는 것은 어렵다.
  • 조직 변경 관리 – 새로운 애플리케이션과 플랫폼을 효과적으로 사용하고 이해할 수 있도록 사용자를 재교육하고 장비를 갖춰야 한다.
  • 레거시 시스템과 새로운 시스템의 공존 – 레거시 시스템의 설치 공간이 큰 조직은 한 번에 마이그레이션할 수 없다.단계적 현대화 접근법을 채택할 필요가 있다.그러나 이는 잘 이해되고 구현된 중복 기능, 데이터 중복, 레거시 및 임시 단계에서 필요한 새로운 시스템을 연결하는 폐기 시스템 등과 같은 자체적인 과제를 안고 있다.[16]
  • 구조적 품질의 관리 불량(소프트웨어 품질 참조)으로, 기존 시스템보다 보안성, 신뢰성 성능 및 유지관리성 문제가 더 많이 발생하는 현대화된 애플리케이션.
  • 상당한 현대화 비용 및 기간 - 복잡한 미션 크리티컬 레거시 시스템의 현대화에는 대규모 투자가 필요할 수 있으며, 완전히 현대화된 시스템을 운영하는 기간은 프로세스의 예상치 못한 불확실성은 말할 것도 없고 몇 년 동안 지속될 수 있다.
  • 이해당사자 약속 - 주요 조직 이해당사자는 현대화를 위한 투자가 이루어지고 있다는 확신을 가져야 하며, 이는 투자되는 현대화 비용에 비해 즉각적인 ROI가 보이지 않을 수 있기 때문이다.
  • 소프트웨어 구성 – 개발자가 2010년 이후 구축된 모든 환경에서 100% 원본 코드를 생성하는 것은 극히 드문 일이다.[17]이들은 효율성, 속도 및 재사용성을 확보하기 위해 제3자 및 오픈 소스 프레임워크와 소프트웨어 구성요소를 사용하는 경우가 많다.여기에는 1.) 제3자 코드 내의 취약성 및 2.) 오픈 소스 라이센스 위험이라는 두 가지 위험이 도입된다.

마지막으로 중요한 것은 현대화에 있어 모든 종류의 옵션을 원스톱으로 맞출 수는 없다는 것이다.현대화에 사용할 수 있는 수많은 상업적 옵션과 맞춤화된 옵션으로, 고객, 판매자 및 실행자는 다양한 현대화 기법의 복잡성, 적용 가능한 최상의 구현, 특정 맥락에서의 적합성 및 올바른 모델을 선택하기 전에 따라야 할 모범 사례를 이해하는 것이 중요하다.에르네이션 접근법

현대화 옵션

지난 몇 년 동안, 레거시 현대화를 위한 몇 가지 다른 선택들이 생겨났고, 그들은 각각 다양한 성공과 채택을 맞이했다.지금도 아래에서 설명한 바와 같이 다양한 가능성이 있으며, 모든 레거시 변환 이니셔티브에 대해 "옵션"이 없다.

  • 애플리케이션 평가: 소프트웨어 인텔리전스를 사용하여 소프트웨어 상태, 품질, 구성, 복잡성 및 클라우드 준비를 파악하여 다양한 현대화 옵션에 대한 애플리케이션의 세분화 및 우선순위 지정 시작
  • Application Discovery: 애플리케이션 구성요소는 소프트웨어 구성요소의 복잡성을 이해하고 상호의존성을 해결하기 위한 요구사항을 암시하는 강력한 상호연관성이 있다.
  • 마이그레이션:언어(3GL 또는 4GL), 데이터베이스(RDBMS로 레거시, 그리고 다른 OS로 RDBMS로 하나의 RDBMS로 하나의 RDBMS로 하나의 RDBMS로 이동), 플랫폼(한 OS에서 다른 OS로 이동), 고효율화를 위해 자동 변환기 또는 프로그램 변환 시스템을 사용하는 경우가 많다.이것은 레거시 시스템을 빠르고 비용 효율적으로 변환하는 방법이다.
  • 클라우드 마이그레이션:애플리케이션을 다른 모델(Rehost, Refactor, Revision, Revision, Rebuild, Replace)으로 나누고 우선 순위를 지정하는 Gartner의 5Rs 방법론과 같은 방법을 사용하여 기존 애플리케이션을 클라우드 플랫폼으로 마이그레이션하는 경우가 많다.
  • 리엔지니어링: 레거시 애플리케이션을 새로운 기술 또는 플랫폼에서 동일하거나 향상된 기능으로 재구성하는 기술 - 대개 SOA(Service Oriented Architecture)를 채택함이는 기존 애플리케이션을 혁신하는 가장 효율적이고 민첩한 방법이다.[4]이를 위해서는 잘 알려져 있지 않거나 문서화되지 않은 레거시 시스템을 사용하는 애플리케이션 레벨 소프트웨어 인텔리전스가 필요하다.
  • 재호스팅: 다른 플랫폼에서 큰 변경 없이 레거시 애플리케이션 실행비즈니스 로직은 애플리케이션과 데이터가 열린 환경으로 마이그레이션됨에 따라 보존된다.이 옵션은 미들웨어, 하드웨어, 운영 체제 및 데이터베이스의 교체만 필요하다.[18]이는 종종 기존 하드웨어와 고가의 하드웨어를 제거하기 위한 중간 단계로 사용된다.가장 일반적인 예로는 UNIX 또는 Wintel 플랫폼에서 재호스팅되는 메인프레임 애플리케이션을 들 수 있다.
  • 패키지 구현:기존 애플리케이션의 전체 또는 일부를 ERP, CRM, SCM, Billing 소프트웨어 등과 같은 기성 소프트웨어(COTS)[19]로 대체

레거시 코드는 메인프레임과 같은 오래된 기술과 하드웨어에 기반을 둔 어떤 애플리케이션으로서, 조직에 핵심 서비스를 지속적으로 제공한다.레거시 애플리케이션은 종종 크고 수정하기 어려우며, 폐기 또는 교체하는 것은 조직의 비즈니스 프로세스를 재설계하는 것을 의미한다.그러나, 자바와 같은 현대 언어로 쓰여진 점점 더 많은 어플리케이션들이 유산이 되고 있다.COBOL과 같은 '레거시' 언어는 유산으로 간주될 수 있는 언어의 상위권에 있는 반면, 새로운 언어로 작성된 소프트웨어는 획일적이고 수정하기 어려우며, 따라서 현대화 프로젝트의 후보가 될 수 있다.

이러한 방식으로 새로운 플랫폼에 애플리케이션을 재실행하면 운영비를 절감할 수 있으며, 새로운 기술의 추가 기능은 웹 서비스나 통합 개발 환경과 같은 기능에 대한 접근을 제공할 수 있다.[5]일단 변환이 완료되고 기능적 동등성에 도달하면, 애플리케이션은 변환된 애플리케이션에 새로운 기능을 추가함으로써 현재와 미래의 비즈니스 요구에 보다 가깝게 조정될 수 있다.소프트웨어 현대화 기업에 의한 프로그램 변환과 같은 신기술의 최근 개발로 인해 레거시 변환 프로세스가 레거시 투자를 보존하기 위한 비용 효율적이고 정확한 방법으로서 완전히 새로운 소프트웨어로의 마이그레이션에 따른 비용과 비즈니스 영향을 피할 수 있는 방법이 되었다.

레거시 변환의 목표는 새로운 플랫폼에서 레거시 자산의 가치를 유지하는 것이다.실제로 이러한 변환은 여러 형태를 취할 수 있다.예를 들면, 그것은 소스 코드의 번역이나, 기업이 필요로 하는 고객 접속을 제공하기 위한 기존 코드의 일부 수준과 웹-호스트 기능의 재사용을 수반할 수 있다.다시 쓰기가 필요하다면 기존 업무 규칙을 추출해 다시 쓰기에 필요한 요건 명세서의 일부를 구성할 수 있다.

소프트웨어 마이그레이션

소프트웨어 마이그레이션은 한 운영 환경의 사용에서 다른 운영 환경으로 이동하는 과정으로, 대부분의 경우 더 나은 운영 환경으로 생각된다.예를 들어, Windows NT Server에서 Windows 2000 Server로 이동하는 것은 일반적으로 마이그레이션으로 간주될 수 있는데, 이는 새로운 기능이 이용되고, 이전 설정을 변경할 필요가 없으며, 현재 애플리케이션이 새로운 환경에서 계속 작동하도록 보장하기 위한 조치를 취하는 것을 포함하기 때문이다.마이그레이션은 또한 윈도우즈 NT에서 UNIX 기반 운영 체제(또는 그 반대)로 이동하는 것을 의미할 수 있다.마이그레이션에는 새 하드웨어, 새 소프트웨어 또는 둘 다로 이동하는 작업이 포함될 수 있다.마이그레이션은 단일 시스템 마이그레이션과 같은 소규모 또는 많은 시스템, 새로운 애플리케이션 또는 재설계된 네트워크를 포함하는 대규모로 이루어질 수 있다.[20]

한 종류의 데이터베이스에서 다른 종류의 데이터베이스로 데이터를 마이그레이션할 수 있다.이것은 보통 이전 데이터베이스에서 출력되어 새 데이터베이스로 입력될 수 있는 일반적인 형식의 데이터를 요구한다.새로운 데이터베이스는 다르게 구성될 수 있기 때문에, 파일 마이그레이션을 처리할 수 있는 프로그램을 작성할 필요가 있을 수 있다.

소프트웨어 마이그레이션이 기능적 동등성에 도달하면, 마이그레이션된 애플리케이션은 변환된 애플리케이션에 새로운 기능을 추가함으로써 현재 및 미래의 비즈니스 요구에 보다 가깝게 조정될 수 있다.

설치된 소프트웨어를 기존 PC에서 새 PC로 마이그레이션하는 작업은 소프트웨어 마이그레이션 도구를 사용하여 수행할 수 있다.마이그레이션은 단순히 한 스토리지 디바이스에서 다른 스토리지 디바이스로 데이터를 이동하는 프로세스를 지칭하는 용도로도 사용된다.

물품, 서류, 책

재사용 가능한 소프트웨어 생성

오늘날 기술의 발전으로 인해 일부 회사나 사람들의 집단은 레거시 시스템의 중요성을 알지 못한다.그들의 기능 중 일부는 너무 중요해서 사용하지 않고 방치할 수 없고, 너무 비싸서 다시 재생산할 수 없다.소프트웨어 산업과 연구자들은 최근 생산성을 높이고 출시 기간을 단축하기 위해 컴포넌트 기반의 소프트웨어 개발에 더욱 많은 관심을 기울이고 있다.[21]

위험관리 현대화

일반적으로 레거시 시스템 현대화에 관심 있는 정보 시스템 기술의 세 가지 등급은 다음과 같다.언어 및 데이터베이스 시스템을 포함하여 레거시 시스템을 구성하는 데 사용되는 기술.수십 년 된 기술에 빠진 사람들에게 열반을 나타내는 현대 기술이며 강력하고 효과적이며 쉽게 유지되는 기업 정보 시스템의 (흔히 이행되지 않는) 약속을 지킨다.레거시 시스템 공급업체에 의해 제공되는 기술 – 이러한 기술은 소심하거나 현명한 사람들이 최신 IT 제품군에 먼저 뛰어들 수 있는 업그레이드 경로를 제공한다.레거시 시스템 공급업체는 이러한 기술을 한 가지 간단한 이유로 제공한다. 즉, "메인프레임 자궁"의 편안함을 남길 필요가 없는 시스템 현대화를 위한 업그레이드 경로를 제공하는 것이다.이러한 기술들은 현대적인 시스템으로 가는 더 부드러운 길을 제공할 수 있지만, 종종 이상적인 방법에는 미치지 못하는 수용 가능한 해결책이 된다.[22]

참고 항목

참조

  1. ^ a b Gardner, D: 2006년 10월 24일, ZDNet, "애플리케이션 현대화로 기존 코드 자산의 라이프사이클이 확장됨"
  2. ^ 사이먼의 한정된 합리성.경제이론의 기원과 이용
  3. ^ Stefan Van Der Zijden; Thomas Klinect. "Building a Multiplatform Application Modernization Business Case". {{cite journal}}:Cite 저널은 필요로 한다. journal=(도움말)
  4. ^ a b Menychtas, Andreas; Santzaridou, Christina; Kousiouris, George; Varvarigou, Theodora; Orue-Echevarria, Leire; Alonso, Juncal; Gorronogoitia, Jesus; Bruneliere, Hugo; Strauss, Oliver; Senkova, Tatiana; Pellens, Bram; Stuer, Peter (2013), "ARTIST Methodology and Framework: A Novel Approach for the Migration of Legacy Software on the Cloud" (PDF), 2013 15th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing, 15th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing (SYNASC), IEEE, pp. 424–431, doi:10.1109/SYNASC.2013.62, ISBN 978-1-4799-3036-4, S2CID 8150975
  5. ^ a b Menychtas, Andreas; Konstanteli, Kleopatra; Alonso, Juncal; Orue-Echevarria, Leire; Gorronogoitia, Jesus; Kousiouris, George; Santzaridou, Christina; Bruneliere, Hugo; Pellens, Bram; Stuer, Peter; Strauss, Oliver; Senkova, Tatiana; Varvarigou, Theodora (2014), "Software modernization and cloudification using the ARTIST migration methodology and framework", Scalable Computing: Practice and Experience, 15 (2), doi:10.12694/scpe.v15i2.980
  6. ^ DESTER
  7. ^ Ian Warren; Jane Ransom (2002). "Renaissance: A Method to Support Software System Evolution". 26th Annual International Computer Software and Applications Conference. pp. 415–420. CiteSeerX 10.1.1.137.7362. doi:10.1109/CMPSAC.2002.1045037. ISBN 978-0-7695-1727-8. S2CID 16563177.
  8. ^ Izzet Sahin; Fatemeh ‘Mariam’ Zahedi (2001). "Policy analysis for warranty, maintenance, and upgrade of software systems". Journal of Software Maintenance: Research and Practice. 13 (6): 469–493. doi:10.1002/smr.242.
  9. ^ Jussi Koskinen; Jarmo Ahonen; Heikki Lintinen; Henna Sivula; Tero Tilus. "Estimation of the Business Value of Software Modernizations". {{cite journal}}:Cite 저널은 필요로 한다. journal=(도움말)
  10. ^ Lewis, G.; Morris, E.; Smith, D.; O'Brien, L. (2005). "Service-Oriented Migration and Reuse Technique (SMART)". 13th IEEE International Workshop on Software Technology and Engineering Practice (STEP'05). pp. 222–229. doi:10.1109/step.2005.24. hdl:10344/2208. ISBN 0-7695-2639-X. S2CID 18912663.
  11. ^ Lewis, Grace A.; Plakosh, Daniel; Seacord, Robert C. (2003). Modernizing Legacy Systems: Software Technologies, Engineering Processes, and Business Practices. Addison-Wesley Professional. pp. 27–37. ISBN 0321118847.
  12. ^ Mobilize.Net. "A Fast Track to Software Modernization Mobilize.Net". www.mobilize.net. Retrieved 2021-03-19.
  13. ^ Andrea De Lucia; Eugenio Pompella & Silvio Stefanucci (July 2002). "Effort Estimation for Corrective Software Maintenance" (PDF). Proceedings of the 14th international conference on Software engineering and knowledge engineering - SEKE '02. SEKE '02 Ischia, Italy. p. 409. doi:10.1145/568760.568831. ISBN 978-1581135565. S2CID 10627249.{{cite book}}: CS1 maint : 위치(링크)
  14. ^ De Lucia, A.; Fasolino, A.R.; Pompelle, E. (2001). "A decisional framework for legacy system management". Proceedings IEEE International Conference on Software Maintenance. ICSM 2001. pp. 642–651. doi:10.1109/ICSM.2001.972781. ISBN 0-7695-1189-9. S2CID 32184332.
  15. ^ Koskinen, Jussi; Lintinen, Heikki; Sivula, Henna; Tilus, Tero. "Evaluation of Software Modernization Estimation Methods Using NIMSAD Meta Framework". Publications of the Information Technology Research Institute. CiteSeerX 10.1.1.106.2633.
  16. ^ Santhosh G. Ramakrishna; V. V. (May 2007). "Logistics Legacy Modernization" (PDF). Infosys Technologies Limited.
  17. ^ C. Ghezzi (2018). "Supporting Dependable Evolution". In Gruhn, Volker; Striemer, Rüdiger (eds.). The Essence of Software Engineering. pp. 32–33. doi:10.1007/978-3-319-73897-0. ISBN 978-3-319-73897-0. S2CID 49187426.
  18. ^ "Mainframe Modernization in a Nutshell". Modernization Hub. Retrieved 2017-08-23.
  19. ^ 시리즈, A. S. (ISO 9001:2008)레거시 현대화 – 신속한 변화를 위한 엔터프라이즈로의 전환레거시 현대화에 관한 백서
  20. ^ SearchCIO.com
  21. ^ S.K. Mishra; D.S. Kushwaha; A.K. Misra (July–August 2009). "Creating Reusable Software Component from Object-Oriented Legacy System through Reverse Engineering". The Journal of Object Technology. 8 (5): 133–152. doi:10.5381/jot.2009.8.5.a3.
  22. ^ 몰트케, H. v. (2003년 1월 22일 수요일 오후 9시 55분). 위험관리 현대화.자와할랄 네루, 뉴델리 의회 연설: 시코드.북.