Knowledge Based Software Assistant

Knowledge Based Software Assistant

KBSA(Knowledge Based Software Assistant)미국 공군의 자금 지원을 받는 연구 프로그램이었다.이 프로그램의 목표는 인공지능에서 나오는 개념을 컴퓨터 소프트웨어 설계와 구현의 문제에 적용하는 것이었다.소프트웨어는 매우 높은 수준의 언어로 모델에 의해 설명될 것이며(본질적으로 첫 번째 순서 로직과 동일), 변환 규칙은 규격을 효율적인 코드로 변환할 것이다.공군은 이 방법을 사용하여 무기 시스템과 다른 지휘통제 시스템을 제어하는 소프트웨어를 만들 수 있기를 희망했다.소프트웨어가 USAF 무기 시스템에 점점 더 중요해짐에 따라 소프트웨어 개발 과정의 품질과 생산성 향상은 미국의 다른 주요 산업의 정보 기술뿐만 아니라 군사에도 상당한 이익을 줄 수 있다는 것이 실현되었다.

역사

1980년대 초 미 공군은 그들이 항공기 결함의 진단과 같은 전문가 문제를 해결하는 데 인공지능 기술을 적용함으로써 상당한 혜택을 받았다는 것을 깨달았다.공군은 인공지능공식적 방법 공동체의 연구자들에게 그러한 기술이 소프트웨어 개발의 보다 일반적인 문제에 어떻게 사용될 수 있는지에 대한 보고서를 개발하도록 의뢰했다.

이 보고서는 소프트웨어 개발에 대한 새로운 접근방식에 대한 비전을 설명했다.KBSA(Knowledge Based Software Assistant) 비전은 도표로 규격을 정의하고 현재의 프로세스처럼 수동으로 코드화하는 것이 아니라, 규격을 매우 높은 수준의 언어로 정의한 다음 변환 규칙을 사용하여 점차 이질적인 플랫폼의 효율적인 코드로 규격을 세분화하는 것이었다.

시스템의 설계와 개선의 각 단계는 통합 저장소의 일부로 기록될 것이다.소프트웨어 개발의 유물 외에도 프로세스, 다양한 정의와 변환도 분석하여 필요에 따라 나중에 재생할 수 있는 방식으로 기록될 것이다.각 단계가 실행된 시스템의 다양한 비기능적 요건을 고려한 변혁이 될 것이라는 생각이었다.예를 들어 Ada와 같은 특정 프로그래밍 언어를 사용하거나 실시간 미션 크리티컬 내결함성을 위해 코드를 강화해야 하는 요구사항이 있다.[1]

공군은 뉴욕 그리피스 공군기지에 있는 로마 항공개발센터 연구소를 통해 이 비전에 대한 추가 연구비를 지원하기로 결정했다.초기 연구의 대부분은 북부 캘리포니아의 케스트렐 연구소(스탠퍼드대 포함)와 남부 캘리포니아의 정보과학연구소(ISI)에서 수행되었다(USCUCLA 포함).Kestrel Institute는 주로 논리 모델을 효율적 코드로 정확하게 변환하는 것에 초점을 맞췄다.ISI는 주로 논리적인 형식에 매핑할 수 있지만 시스템 분석가들에게 직관적이고 친숙한 형식으로 된 사양을 정의하는 프로세스의 앞쪽 끝에 초점을 맞췄다.또한 레이시온은 비공식 요구사항 수집을 조사하는 프로젝트를 수행했고 허니웰과 하버드대는 기본 프레임워크, 통합 및 활동 조정 작업을 수행했다.

주로 KBSA 프로그램에 의해 자금이 지원되지는 않았지만, MIT 프로그래머의 견습생 프로젝트 역시 KBSA와 같은 목표를 가지고 있었고 같은 기술을 사용했다.[2]

KBSA 프로그램(1991년 시작)의 후기 단계에서 연구자들은 중·대규모 소프트웨어 개발 문제에 활용되는 프로토타입을 개발했다.또한 이러한 후기 단계에서 강조점은 순수한 KBSA 접근방식에서 기존 및 미래의 컴퓨터 지원 소프트웨어 엔지니어링(CASE) 도구를 보완하고 증강하기 위해 지식 기반 기술을 사용하는 방법에 대한 보다 일반적인 질문으로 이동했다.이러한 후기 단계에서는 KBSA 커뮤니티와 객체 지향 및 소프트웨어 엔지니어링 커뮤니티 사이에 중요한 상호작용이 있었다.를 들어 KBSA 개념과 연구자들은 국방고등연구계획국(DARPA)이 후원하는 메가프로그래밍 및 사용자 중심의 소프트웨어 엔지니어링 프로그램에 중요한 역할을 했다.[3]이 후기 단계에서 프로그램은 그 이름을 KBSE(Knowledge-Based Software Engineering)로 바꾸었다.명칭 변경은 더 이상 완전한 소프트웨어 라이프사이클을 포괄하는 완전히 새로운 모든 포괄적 도구를 만드는 것이 아니라 점차적으로 기존의 툴에 지식 기반 기술을 적용하려는 다른 연구 목표를 반영했다.안데르센 컨설팅(Andersen Consulting, 당시 시스템 통합업체 중 가장 큰 업체 중 하나였으며, 자체 CASE 툴의 공급업체)과 같은 회사들은 이러한 후기 단계에서 프로그램에 큰 역할을 했다.

주요개념

변환 규칙

KBSA가 사용했던 변혁 규칙은 전문가 시스템을 위한 기존의 규칙과는 달랐다.변환 규칙은 세계의 사실보다는 사양 및 구현 언어와 일치했다.규칙의 오른쪽과 왼쪽 양쪽에 패턴, 와일드카드, 재귀 등을 사용한 변환을 지정할 수 있었다.왼손 표현은 검색할 기존 지식 기반에 패턴을 지정한다.오른손 표현은 왼손을 변형시키는 새로운 패턴을 지정할 수 있다.예를 들어, Ada 세트 라이브러리를 사용하여 설정된 이론적 데이터 유형을 코드로 변환하십시오.[4]

변환 규칙의 초기 목적은 높은 수준의 논리 규격을 특정 하드웨어 및 소프트웨어 플랫폼을 위해 잘 설계된 코드로 세분화하는 것이었다.이것은 정리 증명과 자동 프로그래밍에 관한 초기 작업에서 영감을 받았다.그러나 정보과학연구소(ISI)의 연구자들은 진화 변환의 개념을 개발했다.[5]규격을 코드로 변환하기보다는, 진화 변환은 규격 수준에서 다양한 정형적 변화를 자동화하기 위한 것으로, 예를 들어 더 일반적으로 공유할 수 있는 기존 등급에서 다양한 기능을 추출하여 새로운 슈퍼클래스를 개발하는 것을 의미했다.진화 변환은 소프트웨어 패턴 커뮤니티의 출현과 거의 동시에 개발되었고 두 그룹은 개념과 기술을 공유했다.진화 변환은 본질적으로 객체 지향 소프트웨어 패턴 커뮤니티에서 리팩토링이라고 알려진 것이었다.[6]

지식 기반 저장소

KBSA의 핵심 개념은 요구사항, 규격, 변형, 디자인, 코드, 프로세스 모델 등 모든 유물이 지식기반 저장소에 객체로 표현된다는 것이었다.KBSA의 최초 보고서는 '광범위한 언어'라고 불리던 것을 기술하고 있다.요구사항은 소프트웨어 프로세스 자체뿐만 아니라 요구사항, 규격, 코드 등 전체 라이프사이클을 지원할 수 있는 지식 표현 프레임워크에 대한 것이었다.지식 기반에 대한 핵심 표현은 다양한 계층이 추가되어 구체적인 프레젠테이션과 구현을 지원할 수 있지만 동일한 프레임워크를 활용한다는 것을 의미했다.

이러한 초기 지식 기반 프레임워크는 주로 ISI와 Kestrel 빌딩에 의해 LispLisp 머신 환경 위에 개발되었다.케스트렐 환경은 결국 '정밀화'라는 상용 제품으로 변모하게 되었는데, 이 제품은 '추론 시스템즈 주식회사'라는 Kestrel의 스핀오프 회사가 개발하고 지원하게 되었다.

정제 언어와 환경은 또한 소프트웨어 역 엔지니어링 문제에 적용 가능한 것으로 증명되었다. 즉, 비즈니스에 중요하지만 적절한 문서가 없는 레거시 코드를 가져가고 이를 분석하여 보다 유지 관리가 가능한 형태로 변환하기 위한 도구를 사용하는 것이다.Y2K 문제 역엔지니어링에 대한 우려가 커지면서 많은 미국 대기업들의 주요 사업 관심사였고 1990년대 KBSA 연구의 초점 분야였다.[7][8]

KBSA 커뮤니티와 프레임 언어, 객체 지향 커뮤니티 사이에는 의미 있는 상호작용이 있었다.초기 KBSA 지식베이스를 객체지향적 언어보다는 객체지향적 언어로 구현했다.객체는 클래스 및 하위 클래스로 표현되었지만 객체에 대한 메서드를 정의할 수 없었다.안데르센 컨설팅 개념 데모와 같은 KBSA의 이후 버전에서는 메시지 전달을 지원하기 위해 사양 언어를 확장하였다.

인텔리전트 어시스턴트

KBSA는 기존 전문가 시스템과는 다른 접근방식을 취하면서 문제를 해결하고 사용자와 함께 작업하는 방식을 택했다.전통적인 전문가 시스템 접근 방식에서 사용자는 일련의 대화형 질문에 답하고 시스템은 해결책을 제공한다.KBSA 방식은 사용자를 통제하게 했다.전문가 시스템이 전문가 시스템의 필요성을 어느 정도 대체하고 제거하려 했던 경우 KBSA의 지능형 보조 접근법은 그 과정을 기술로 재창조하고자 했다.이것은 사용자 인터페이스 수준에서 많은 혁신으로 이어졌다.

객체지향 커뮤니티와 KBSA의 협업의 한 예는 KBSA 사용자 인터페이스에 사용되는 아키텍처였다.KBSA 시스템은 MVC(모델-뷰-컨트롤러) 사용자 인터페이스를 활용했다.이것은 스몰토크 환경으로부터 통합된 아이디어였다.[9]MVC 아키텍처는 KBSA 사용자 인터페이스에 특히 잘 적합했다.KBSA 환경은 지식 기반에 대한 여러 이질적인 관점을 특징으로 했다.실체와 관계, 객체 상호작용, 클래스 계층 구조, 데이터 흐름 및 기타 가능한 많은 뷰의 관점에서 새로운 모델을 보는 것이 유용할 수 있다.MVC 아키텍처는 이것을 촉진시켰다.MVC 아키텍처에서 기본 모델은 항상 규격 및 구현 언어의 메타 모델 설명인 지식 기반이었습니다.분석가가 특정 도표(예:[10] 클래스 계층에 클래스를 추가)를 통해 기본 모델 수준에서 변경되고 모델의 다양한 뷰가 모두 자동으로 업데이트되는 변경을 수행했을 때.

변환을 사용함으로써 얻을 수 있는 이점 중 하나는 규격과 구현의 많은 측면이 한 번에 수정될 수 있다는 것이다.소규모 프로토타입의 경우 도표를 정리하기 위한 사용자에 대한 의존도와 결합된 기본 배치 알고리즘으로 충분할 정도로 결과 도표는 간단했다.그러나 변환이 수십 개 또는 심지어 수백 개의 노드로 모델을 근본적으로 다시 그릴 수 있고 다양한 보기의 지속적인 업데이트를 링크할 때 그 자체로 과제가 된다.안데르센 컨설팅의 연구원들은 일리노이 대학의 그래프 이론 연구를 통합하여 기술 기반과 관련된 다양한 관점을 자동으로 업데이트하고 링크의 교차점이 최소인 그래프를 생성하며 도메인 및 사용자별 레이아웃 제약도 고려했다.

지능적인 지원을 제공하기 위해 사용된 또 다른 개념은 자동 텍스트 생성이었다.ISI의 초기 연구는 비공식적인 자연어 텍스트 문서에서 공식적인 사양을 추출할 수 있는 타당성을 조사했다.그들은 그 접근법이 실행가능하지 않다고 결정했다.자연언어는 천성적으로 너무 모호해서 시스템을 정의하는데 좋은 형식이 될 수 없다.그러나 자연어 생성은 관리자나 비기술 인력이 읽을 수 있는 텍스트 설명을 생성하는 방법으로 실현 가능한 것으로 보였다.이것은 특히 공군에 호소력이 있었다. 왜냐하면 법에 의해 그들은 모든 계약자들이 다른 관점에서 시스템을 설명하는 다양한 보고서를 만들도록 요구했기 때문이다.ISI와 이후 코젠텍스텍트 및 안데르센 컨설팅의 연구진은 자체 기술을 사용하여 공군 계약에 필요한 문서를 생성함으로써 접근 방식의 실행 가능성을 입증했다.[11]

참조

  1. ^ Green, Cordell; D. Luckham; R. Balzer; T. Cheatham; C. Rich (Aug 1983). "Report on a Knowledge-Based Software Assistant" (PDF). Kestrel Institute. A996431: 78. Retrieved 4 January 2014.
  2. ^ Rich, Charles; Richard C. Waters (November 1988). "The Programmer's Apprentice Project: A Research Overview" (PDF). Computer. 21 (11): 10–25. doi:10.1109/2.86782. hdl:1721.1/6054. Archived from the original (PDF) on 2017-07-06. Retrieved 26 December 2013.
  3. ^ DeBellis, Michael; Christine Haapala (February 1995). "User-Centric Software Engineering". IEEE Expert. 10 (1): 34–41. doi:10.1109/64.391959.
  4. ^ Smith, Doug (1991). "KIDS - A Knowledge-Based Software Development System". In Michael Lowry, Robert McCartney (ed.). Automating Software Design. AAAI/MIT Press. pp. 483–514. CiteSeerX 10.1.1.54.6955. ISBN 978-0262620802.
  5. ^ Johnson, Lewis; M.S. Feather (1991). "Using Evolution Transformations to Construct Specifications". Automating Software Design. AAAI Press: 65–92.
  6. ^ Fowler, Martin (1999). Refactoring: Improving the Design of Existing Code. Addison Wesley. ISBN 0201485672.
  7. ^ Boehm, Barry; Prasanta Bose (1998-08-15). "KBSA Life Cycle Evaluation: Final Technical Report" (PDF). Contract No: F30602-96-C-0274. USC Center for Software Engineering. I. Retrieved 4 January 2014. As the program has proceeded toward its ultimate objectives, it has spawned a number of productivity-enhancing spinoffs such as the Refine-based software reengineering and testing tools
  8. ^ Welty, Chris. "Summary of KBSE-93: The Eighth Annual Knowledge-Based Software Engineering Conference". ase-conferences.org. Retrieved 4 January 2014. REFINE/COBOL Object Modeling Workbench provides a set of reengineering tools, Refine is the language of the KBSA concept demo.
  9. ^ Harris, Dave; A. Czuchry (1988). "The Knowledge-Based Requirements Assistant". IEEE Expert. 3 (4).
  10. ^ Johnson, Lewis; David R. Harris; Kevin M. Benner; Martin S. Feather (October 1992). "Aries: The Requirements/Specification Facet for KBSA". Rome Laboratory Final Technical Report. RL-TR-92-248.
  11. ^ DeBellis, Michael; Kanth Miriyala; Sudin Bhat; William C. Sasso; Owen Rambo (April 1993). "KBSA Concept Demo: Final Technical Report". USAF Rome Laboratory Technical Report. RL-TR-93-38. Retrieved 25 October 2021.