KR102174766B1 - 기반 모델 생성, 맞춤화 및 모델 시각화를 위한 통합된 환경 - Google Patents

기반 모델 생성, 맞춤화 및 모델 시각화를 위한 통합된 환경 Download PDF

Info

Publication number
KR102174766B1
KR102174766B1 KR1020167009998A KR20167009998A KR102174766B1 KR 102174766 B1 KR102174766 B1 KR 102174766B1 KR 1020167009998 A KR1020167009998 A KR 1020167009998A KR 20167009998 A KR20167009998 A KR 20167009998A KR 102174766 B1 KR102174766 B1 KR 102174766B1
Authority
KR
South Korea
Prior art keywords
model
customization
view
display
user
Prior art date
Application number
KR1020167009998A
Other languages
English (en)
Other versions
KR20160074490A (ko
Inventor
로버트 바다위
칼리드 아가그
니틴쿠마르 샤
스리야 나라야난
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20160074490A publication Critical patent/KR20160074490A/ko
Application granted granted Critical
Publication of KR102174766B1 publication Critical patent/KR102174766B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

맞춤화되고 있는 모델 요소를 위해 통합된 뷰가 생성된다. 통합된 뷰는 모델 요소에 대한 복수의 상이한 확장뿐만 아니라 기반 시스템 내의 모델 요소의 통합된 시각화를 보여준다. 통합된 뷰는 또한 현재 행해지고 있는 맞춤화를 나타내는 확장 문서의 편집을 가능하게 한다.

Description

기반 모델 생성, 맞춤화 및 모델 시각화를 위한 통합된 환경{INTEGRATED ENVIRONMENT FOR BASE MODEL GENERATION, CUSTOMIZATION AND MODEL VISUALISATION}
컴퓨터 시스템들이 오늘날 널리 쓰이고 있다. 몇몇 컴퓨터 시스템은 비교적 거대하며, 예를 들면, 테이블들 및 다른 아티팩트(artifact)들과 같은 몇천 개의 상이한 사용자 인터페이스 및 데이터 개체들을 포함할 수 있다. 이러한 컴퓨터 시스템들은, 소정의 구현예에서 사용되기 전에 흔히 맞춤화된다(customized)(일부 컴퓨터 시스템은 크게 맞춤화됨).
예로서, 몇몇 거대한 컴퓨터 시스템은 비즈니스(business) 시스템을 포함한다. 그러한 비즈니스 시스템은, 예를 들면, 무엇보다도, 기업 자원 계획(Enterprise Resource Planning: ERP) 시스템, 고객 관계 관리(Customer Relations Management: CRM) 시스템, 업무부문(Line-Of-Business: LOB) 시스템을 포함한다. 이러한 유형의 비즈니스 시스템은 흔히 수천 개의 상이한 폼(form)들을 포함하는데, 그 각각은 많은 상이한 컨트롤(control)들과 다른 사용자 인터페이스 요소(user interface element)들을 가진다. 그러한 시스템은 또한 다량의 비즈니스 로직(business logic)뿐만 아니라 워크플로우(workflow)들, 그리고 사용자들로 하여금 그들이 종사하고 있는 특정한 비즈니스를 행하는 중에 그들의 임무를 이행하기 위해서, 시스템에 액세스해서 일련의 동작 또는 작업을 수행할 수 있게 하는 (테이블들과 같은) 데이터 개체들을 보통 포함한다.
하나의 비즈니스 시스템 내에는 다양한 유형들이 모델링된다(modeled). 이 유형들은 런타임(runtime) 동안에 구동되는(run) 어셈블리(assembly)들로 컴파일(compiled)(또는 어셈블(assembled))된다. 모델링된 유형은 데이터 또는 워크플로우를 나타낼 수 있다. 예를 들면, 비즈니스 시스템은 개체의 컬렉션(collection)으로서 정보를 저장할 수 있는데, 여기서 각 개체는 그 비즈니스와 연관된 아이템(item)을 나타낸다. 고객 개체(customer entity)는, 예컨대 고객을 나타낼 수 있다. 판매 주문 개체(sales order entity)는, 예를 들면 판매 주문을 나타낼 수 있다. 판매 견적 개체(sales quote entity)는 판매 견적을 나타낼 수 있다. 이들은 단지 예시적인 예들이다.
이러한 비즈니스 시스템이 특정 비즈니스에서 사용되는 경우, 그것이 사용되는 특정한 비즈니스의 기능적 요구사항을 만족시키기 위해서 비즈니스 시스템이 상당히 맞춤화되는 것이 보통이다. 예로서, 각각의 비즈니스는, 고객 개체를 나타내는 소정의 폼 상에 상이한 필드(field)들을 갖기를 바랄 수 있다. 추가로, 각각의 조직은 비용 보고 폼(expense report form) 상에 통화 환산(currency conversion)을 계산하기 위한, 각각의 비즈니스 로직을 갖기를 바랄 수 있다. 그러므로, 소정의 비즈니스 시스템은, 그것을 사용하고 있는 소정의 조직의 요구사항을 만족시키도록 상당히 맞춤화될 수 있다고 볼 수 있다.
비즈니스 시스템은 또한 여러 상이한 계층의 맞춤화를 가질 수 있다. 예를 들면, 기본 비즈니스 시스템을 만들고 개발한 소프트웨어 회사는 이 비즈니스 시스템을, 단지 기반 제품(base product)으로서만 판매할 수 있다. 이후에 독립 소프트웨어 벤더(Independent Software Vendor: ISV)가 기반 제품에 대한 일련의 맞춤화를 생성해서, 이 기반 제품이 맞춤화와 함께 다시 판매될 수 있게 한다. 부가 가치 재판매자(Value Added Reseller: VAR)는 또 하나의 계층의 맞춤화를 추가할 수 있고, 그 제품의 궁극적인 최종 사용자는 개발 파트너와 제휴(partnership)하고 있을 수 있는데, 여기서 개발 파트너는 자기 자신의 맞춤화를 추가한다.
현재, 개발자 또는 다른 프로그래머가 기반 제품에 대한 맞춤화를 생성하는 경우, 맞춤화는 기반 제품 내의 기반 애플리케이션 모델을 덮어쓰도록(overwrite) 사용된다. 그러한 덮어쓰기는 이미 행해진 (맞춤화를 반영하기 위한) 변경과 함께 애플리케이션 모델을 컴파일하는 방식으로 수행된다.
이러한 유형의 맞춤화는 문제가 있을 수 있다. 예컨대, 최초의 소프트웨어 제조자가 기반 제품에 대한 업데이트(update)를 공표하려고 할 때, 이 업데이트가 어떤 점들에서는 최종 사용자의 맞춤화와 호환가능하지 않을 수 있다. 따라서, 만약 최종 사용자가 업데이트를 설치하려고 할 때, 이것이 문제를 일으킬 수 있다. 또한, 최초의 소프트웨어 제조자가 단지 기반 제품의 코드 베이스(code base)를 유지하려고 하는 경우에도, 코드 베이스를 유지하는 것은 그 유지가 소정의 고객이 수행한 맞춤화와 상충한다는 문제가 일어날 수도 이싸ㄷ.
또한, 개발자가 어떤 비즈니스 시스템에 대한 맞춤화를 행하는 경우, 이 개발 시스템은 맞춤화되고 있는 요소에 대한 어떤 종류의 뷰(view)를 생성한다. 이것은 보통 추가된 맞춤화(현재 맞춤화되고 있는 기반 요소에 대해 행해진 수정)만의 뷰이다. 이 때문에 개발자의 사용자 경험은 제한되고, 비즈니스 시스템의 맞춤화는 더 어렵고 더 시간이 걸리게 된다.
이상의 논의는 단지 일반적인 배경 정보를 위해 제공되며, 이를 이용해서 청구 대상의 범주를 판정하는 것을 돕고자 하는 것은 아니다.
맞춤화되고 있는 모델 요소(model element)에 대한 통합된 뷰(integrated view)가 생성된다. 통합된 뷰는 기반 시스템 내의 모델 요소의 통합된 시각화는 물론 모델 요소에 대한 복수의 상이한 확장(extension)들을 보여준다. 통합된 뷰는 또한 현재 행해지고 있는 맞춤화를 나타내는 확장 문서(extension document)의 편집하기(editing)를 가능하게 한다.
본 개요는 상세한 설명에서 추가로 후술되는 개념 중 선택된 것을 단순화된 형태로 소개하기 위해 제공된다. 이 개요는 청구 대상의 중요 특징 또는 필수적 특징을 나타내고자 한 것이 아니며, 청구 대상의 범주를 판정하는 데에서 보조로서 사용되도록 의도된 것도 아니다. 청구 대상은, 배경에서 언급된 문제점 중 일부 혹은 전부를 해결하고 있는 구현예로 한정되는 것은 아니다.
도 1은 하나의 예시적인 개발 채널(development channel)의 블록도(block diagram)이다.
도 2는 하나의 예시적인 비즈니스 시스템 아키텍처의 블록도이다.
도 3은 맞춤화 동안에 도 2에 도시된 아키텍처의 동작을 예시하는 흐름도(flow diagram)이다.
도 4는 모델에 대한 확장의 하나의 실시예를 예시하는 블록도이다.
도 5 및 도 6은 예시적인 사용자 인터페이스 디스플레이이다.
도 6aa 및 도 6ab(함께 도 6a이라 함)는 시각화 컴포넌트의 동작의 하나의 예시적인 실시예를 보여주는 흐름도이다.
도 6b 내지 도 6f는 예시적 시각화의 디스플레이를 보여준다.
도 7은 런타임 환경의 하나의 실시예를 더욱 상세히 보여준다.
도 8은, 도 7에 도시된 런타임 환경의 동작의 하나의 실시예를 더욱 상세하게 예시하는 흐름도이다.
도 9는 클라우드 컴퓨팅 아키텍처(cloud computing architecture)에서 사용되는, 도 2에 도시된 아키텍처의 블록도이다.
도 10 내지 도 15는 모바일 디바이스의 실시예를 보여준다.
도 16은 컴퓨팅 환경의 하나의 실시예의 블록도이다.
도 1은 하나의 예시적인 개발 채널(100)의 블록도이다. 개발 채널(100)은 예시적으로 시스템 개발자(102), 독립 소프트웨어 벤더(Independent Software Vendor: ISV)(104), 부가 가치 재판매자(Value Added Reseller: VAR)(106), 파트너(108), 런타임 환경(110) 및 최종 사용자(112)를 포함할 수 있다. 도 1은 시스템 개발자(102)가 예시적으로 기반 비즈니스 시스템(base business system)과 같은 기반 소프트웨어 시스템(base software system)(114)을 설계하고 개발하는 최초의 소프트웨어 제조자일 수 있음을 보여준다. 예를 들면, 기반 시스템(114)은 ERP 시스템, CRM 시스템, LOB 시스템, 기타 등등일 수 있다.
시스템의 유형에 따라서는, 기반 시스템(114)은 최종 사용자(112)에 의한 사용을 위해, 그것이 런타임 환경(110) 내에서 사용되기 전에 상당히 맞춤화되거나 확장되는 경우가 있을 수 있다. 예로서, 기반 시스템(114)이 비즈니스 시스템인 경우에, 독립 소프트웨어 벤더(104)는 종종 기반 시스템(114)을 맞춤화해서 부가 가치 재판매자(106)가 이용가능하게 하는데, 이 부가 가치 재판매자(106)는 스스로 기반 시스템(114)을 (그것이 이미 독립 소프트웨어 벤더(104)에 의해 맞춤화된 후) 맞춤화한다. 또한 최종 사용자(112)는 하나의 조직일 수 있는데, 이 조직은 그 조직의 기능적 요구사항을 만족시키기 위해 기반 시스템(114)을 더 맞춤화하고, 이것이 런타임 환경(110) 내에서 성공적으로 사용될 수 있도록, 파트너(108)와 제휴한다. 배경 부분에서 논의된 바와 같이, 이는 여러가지 문제를 유발할 수 있다.
따라서, 개발 채널(100)에서, 기반 시스템(114)을 맞춤화하는 다양한 개발자들(예를 들어 ISV(104), VAR(106) 또는 파트너(108)) 중 누구든, 기반 시스템(114) 내의 모델을 변경하지 않고서, 각자 맞춤화를 생성한다. 예를 들면, ISV(104)는 기반 시스템(104)과는 별개로 저장되고 유지되는 맞춤화(116)의 세트를 생성할 수 있다. VAR(106)는 그 스스로, 기반 시스템(114)과 별개로 저장될 뿐만 아니라 ISV(104)에 의해 행해진 맞춤화(116)와 별개로 저장되고 유지되는 맞춤화(118)의 세트를 생성할 수 있다. 파트너(108)는, 역시 별개로 저장되는 그 자신의 맞춤화(120)를 또한 만들 수 있다.
이후, 기반 시스템(114) 및 맞춤화(116, 118 및 120)가 최종 사용자(112)를 위해 런타임 환경(110) 내에서 사용되는 경우, 기반 시스템(114) 및 맞춤화(116, 118 및 120)는 개개의 분리된 격리된(isolated) 어셈블리들로 모두 컴파일(혹은 어셈블)된다. 컴파일러(compiler)(또는 어셈블러(assembler))는 맞춤화(116, 118 및 120)를 위해 생성된 어셈블리가 기반 시스템(114) 내의 어떤 어셈블리와 관련되어 있는지를 나타내는 코드(code)를 송출할(emit) 수 있다. 혹은, 맞춤화를 위한 어셈블리는 그것이 기반 시스템(114)의 어느 부분을 맞춤화하는지를 나타내도록 특별히 표시될(marked) 수도 있고, 혹은 이것이 맞춤화 어셈블리임을 나타내도록 특정 위치에 저장될 수도 있다. 어느 경우에서든, 런타임 서버는 맞춤화(116, 118 및 120)를 모두 발견한다(discover). 이 맞춤화 어셈블리들은, 기반 시스템(114) 내의 모델들 또는 어셈블리들 중 어느 것도 결코 변경하지 않고(즉, 바뀌지 않음), 기반 시스템용 어셈블리들과 함께 구동되어서, 런타임 동안에 기반 시스템(114)에 맞춤화를 적용시킨다. 이러한 방식으로, 시스템 개발자(102)는 기반 시스템(114)을 쉽게 업데이트하고 그것을 유지할 수 있다. 업데이트 및 유지는 맞춤화(116, 118 및 120) 중 어느 것과도 상충되지 않고 수행될 수 있다. 또한, 맞춤화(116, 118 및 120)는 개별적으로 유지될 수도 있다.
도 2는 비즈니스 시스템 개발 아키텍처(122)의 하나의 실시예의 블록도이다. 도 2에 도시된 아이템 중 몇몇은 도 1에 도시된 것과 동일하며, 같은 번호가 부여시된다. 아키텍처(122)는 도 1에 도시된 개발 채널(100)의 임의의 부분을 예시적으로 나타낸다. 도 2는 또한, 하나의 실시예에서, 기반 시스템(114)이 모델(134)을 포함함을 보여준다. 모델(134)은 예시적으로 대응하는 메타데이터(136)를 가지며 코드(138) 역시 가질 수 있다.
예로서, 비즈니스 시스템 개발 아키텍처(122)는 하나 이상의 개발자(126)가 기반 비즈니스 시스템(114)에 대한 맞춤화를 행하기 위해 (통합된 개발 환경(integrated development environment)과 같은) 개발 및 맞춤화 시스템(128)을 사용하는 개발 환경(124)을 예시적으로 포함한다. 도 2에 도시된 실시예에서, 개발(또는 맞춤화) 환경(124)은 ISV(104)가 기반 시스템(114)에 대한 맞춤화(116)를 행하는 환경에 예시적으로 대응한다. 다만, 개발 환경(124)은 (도 1에 도시된) 개발 채널(100) 내의 임의의 개발자, 또는 임의의 다른 채널 내의 임의의 다른 개발자가 기반 컴퓨터 시스템에 대한 맞춤화를 행하는 환경일 수 있음에 유의할 것이다.
본 논의를 위하여, 맞춤화는 기반 시스템(114)의 기저(underlying) 메타데이터 또는 기능성에 대한 부가적인 변경 또는 확장을 의미하도록 사용될 것이다. 단지 예로서, 맞춤화는 폼 상의 필드의 길이를 증가시키기 위한 메타데이터에 대한 변경일 수 있다. 다른 예로서, 맞춤화는 폼 상에 입력된 데이터에 대해 수행되는 계산을 변경시키기 위한, 폼에 대응하는 비즈니스 로직을 추가하는 것일 수 있다. 물론, 이것들은 어떤 식으로 메타데이터나 코드에 대해 맞춤화가 행해질 수 있고, 매우 다양한 다른 맞춤화가 역시 행해질 수 있는지의 예들일 뿐이다.
어느 경우에서든, 도 2는 런타임 환경(110)이 예시적으로 프로세서(processor)(129), 비즈니스 시스템 데이터 스토어(business system data store)(130), 사용자 인터페이스 컴포넌트(user interface component)(131), 런타임 서버(runtime server)(132), 모델 생성기(model generator)(133), 확장 패키지 생성기(extension package generator)(135) 및 시각화 컴포넌트(visualization component)(137)를 포함함을 보여준다. 도 3은, 개발자(126)로 하여금 기반 시스템(114)에 대한 맞춤화를 행하기 위해 맞춤화 시스템(128)을 사용할 수 있게 하는 데에 있어서, 도 2에 도시된 비즈니스 시스템 개발 아키텍처(122)의 동작의 하나의 실시예를 예시하는 흐름도이다.
도 3은 개발자(126)가 기반 시스템(114) 내의 기저 모델(134)을 우선 액세스할 수 있음을 보여준다. 이것은 도 3에서 블록(140)에 나타나 있다. 맞춤화 시스템(128) 내의 사용자 인터페이스 컴포넌트(131)는 예시적으로, 맞춤화 시스템(128)을 시각화하고 제어하며 조작하기 위해서, 개발자(126)가 상호작용할 수 있는 사용자 인터페이스 디스플레이를 생성한다. 그러므로, 맞춤화 시스템(128)은, 사용자 인터페이스 디스플레이를 통해, 기반 시스템(114)에 대해 행해질 원하는 맞춤화를 나타내는 입력을 개발자(126)로부터 수신한다. 이것은 도 3에서 블록(142)에 나타나 있다. 예로서, 맞춤화는 메타데이터(136)에 대한 확장일 수 있다. 그것은 또한 (비즈니스 로직을 추가하기 등등과 같은) 코드(138)에 대한 확장일 수 있다. 맞춤화는 다른 아이템(144)에 대한 것일 수도 있다. 개발자가 맞춤화를 행하고 있는 동안, 시각화 컴포넌트(137)는 맞춤화되고 있는 모델 요소의 통합된 시각화(또는 뷰)(139)를 예시적으로 생성하고 있다. 이것은 도 6a 내지 도 6f에 관해 아래에서 더욱 상세히 기술된다. 우선은, 맞춤화가 행해진다고 하는 것으로도 충분하다.
수신된 맞춤화 입력에 기반하여, 맞춤화 시스템(128) 내의 모델 생성기(133)는 기반 시스템(114) 내의 모델을 변경하지 않고서, 확장(즉, 맞춤화)을 모델링(하거나 표현)하는 확장 모델(extension model)을 생성한다. 이것은 도 3에서 블록(146)에 나타나 있다. 확장 모델은 매우 다양한 상이한 방식으로 생성될 수 있다. 예를 들면, 확장 모델은 확장을 확장가능 마크업 언어(eXtensible Markup Language: XML) 또는 XML의 임의의 변형(148)으로 표현할 수 있다. 그것은 또한 다른 방식(150)으로도 표현될 수 있다.
확장 패키지 생성기(135)는 이후 확장 모델로부터 확장 패키지를 생성한다. 이것은 도 3에서 블록(147)에 나타나 있다. 하나의 실시예에서, 확장 패키지는 확장 모델의 컴파일된(또는 어셈블된) 형태이고, 그것은 기반 시스템(114) 내의 기반 모델(134)을 위해 생성된 어셈블리와는 별개의(또는 이와는 격리된) 별도 어셈블리로서 생성된다.
맞춤화 시스템(128)은 이후 런타임 환경(110) 내에서 런타임 서버(132)에 의해 쉽게 발견가능한 형태로 (도 2에서 확장 패키지 또는 맞춤화(116)로서 도시된) 확장 패키지를 저장한다. 이것은 도 3에서 블록(152)에 나타나 있다. 하나의 실시예에서, 확장 패키지 생성기(135) 내의 어셈블러는, 그 확장 패키지가 기반 어셈블리를 확장하는 어셈블리라는 것을 나타내는 코드를 송출한다. 다른 실시예에서, 확장된 모델(134)에 대응하는 메타데이터(136)는 원래의 메타데이터(136) 중 어느 것도 덮어쓰지 않고서, 이 특정한 모델(134)을 위해 확장 패키지가 존재함을 나타내는 추가사항이 내부에 놓여 있다. 다른 실시예에서, 확장 패키지(116)는 그것이 소정의 모델(134)이 액세스되는 경우에 런타임 서버(132)에 의해 고려되어야 할 확장 패키지임을 나타내기 위해 어떤 파일 확장자(file extension)(예를 들어 .expkg 또는 임의의 다른 적합한 파일 확장자)와 함께 저장된다. 이것은 도 3에서 블록(154)에 나타나 있다. 확장 패키지(또는 맞춤화)(116)는 다른 방식으로도 나타내어질 수 있는데, 이것은 블록(156)에 나타나 있다.
어떤 시점에서, 기반 시스템(114)은, 별개의 확장 패키지(또는 맞춤화)(116)와 더불어, 런타임 환경(110)에서 사용된다. 기반 시스템을 확장 패키지와 함께 사용하는 것은 도 3에서 블록(158)에 나타나 있다.
일례가 유익할 수 있다. 도 4는 특정한 기반 모델이 어떻게 확장될 수 있는지를 보여주는 하나의 블록도이다. 도 5 및 도 6은 이것을 또한 나타내는 두 개의 대응하는 사용자 인터페이스 디스플레이이다. 도 4 내지 도 6은 이제 서로 연계되어 기술될 것이다.
도 4는 기반 시스템(114) 내의 하나의 모델은 비용 아이템을 입력하거나 비용 보고를 생성하기 위해서 비즈니스 시스템의 사용자에 의해 세워질 수 있는 비용 폼(expense form)을 모델링하는 데에 사용되는 기반 비용 폼 모델(base expense form model)(160)일 수 있음을 보여준다. 도 4는 기반 비용 폼 모델이 필드(162), 일반 컨트롤(164), 특정 그리드(grid) 컨트롤(166)(또한 도 4에서 그리드(168)에 의해 그래픽으로 나타내어짐)을 포함함을 보여준다. 모델(160) 내의 아이템들(162 내지 168) 각각은 데이터 소스에 결부된다(bound). 도 4에 도시된 예에서, 그것들은 아이템들(162 내지 168)에 데이터를 제공하는 비용 테이블(expense table)(170)에 결부된다.
도 5는 기반 비용 폼(160)으로부터 생성될 수 있는 폼(172)의 사용자 인터페이스 디스플레이의 하나의 실시예를 보여준다. 필드들은 예시적으로 날짜 필드(date field)(174), 액수 필드(amount field)(176), 벤더 필드(vendor field)(178), 비용 카테고리 필드(expense category field)(180) 및 서술 필드(description field)(182)를 포함함을 볼 수 있다. 폼(172)은 프로젝트 드롭 다운 메뉴 컨트롤(project drop down menu control)(184)을 또한 포함한다. 나아가, 도 5는 이번 달에 걸쳐, 비용이 발생했을 때, 이를 입력할 것을 사용자에게 구하는 월간 비용 그리드(monthly expenses grid)(186)를 폼(172)이 포함함을 또한 보여준다. 추가로, 폼(172)은 영수증 이미지 디스플레이(receipt image display)(188), 그리고 사용자로 하여금, 소정의 비용에 대해, 영수증의 이미지를 캡처할(capture) 수 있게 하는 이미지 캡처 컨트롤(image capture control)(189)을 포함한다. 예를 들면, 사용자가 컨트롤(189)을 작동시키는 경우, 사용자는 예시적으로, 사용자로 하여금 영수증의 이미지를 포착하고, 그것을 사용자 인터페이스 디스플레이(172)에 의해 나타내어진 비용 폼과 연관시킬 수 있게 하는 일련의 사용자 인터페이스 카메라 기능성으로 인도된다(navigated).
도 5는 사용자로 하여금 비용 아이템을 취소하고(cancel), 승인을 위해 비용 폼을 제출하며(submit), 비용 폼을 세이브할(save) 수 있게 하는 일반 컨트롤(190)의 세트를 폼(172)이 포함함을 또한 보여준다.
이제 개발자가 기반 비용 폼 모델(160)을 맞춤화하여 그리드 컨트롤(186)에 열을 추가하고, 폼(172)에 복수의 필드를 추가하며, 비즈니스 로직을 추가하기를 바란다고 가정하자. 예를 들면, 개발자는 사용자로 하여금 그가 언제 휴가 중인지를 나타낼 수 있게 하기 위해 그리드(186)에 열을 추가하기를 바란다고 가정하자. 또한 개발자는 사용자가 비용이 치러진 특정한 통화를 나타낼 수 있도록 폼(172)에 통화 필드(currency field)를 추가하기를 바란다고 가정하자. 또한 개발자는 이자(interest)가 적용된 후, 사용자에게 발생될 상환 액수(reimbursement amount)를 보여주는 디스플레이를 추가하기를 바란다고 가정하자.
도 6은, 예컨대, 다른 예시적인 사용자 인터페이스 디스플레이(200)를 보여준다. 사용자 인터페이스 디스플레이(200)는 도 5에 도시된 사용자 인터페이스 디스플레이(172)와 몇몇 사항에서 유사하며, 유사한 항목은 유사하게 번호가 매겨진다. 그러나, 도 6은 새로운 비용 폼을 반영하고, 추가적인 필드, 컨트롤을 포함하며, 개발자가 도 5에 도시된 기반 비용 폼에 추가하기를 바라는 대응하는 비즈니스 로직을 갖는 사용자 인터페이스 디스플레이를 보여준다.
도 6은, 예를 들면, 사용자가 비용 폼 상에 비용 아이템을 입력하는 경우에 지불(payment)을 하는 데에 사용된 특정한 통화를 나타낼 수 있도록 개발자가 통화 필드(202)를 추가하기를 바란다는 것을 보여준다. 추가로, 사용자 인터페이스 디스플레이(200)는 그리드(186)가 이제 휴가 열(vacation column)(204)을 포함함을 보여준다. 예로서, 조직은 사용자가 휴가 중에 치른 임의의 비즈니스 관련 비용에 관해서 알기를 바랄지도 모른다. 도 6은 또한 비용 폼이 이제 상환 필드(reimbursement field)(206)를 포함함을 보여준다. 사용자 인터페이스 디스플레이(200)에 의해 나타내진 폼을 연장하기 위해 비즈니스 로직의 새로운 세트가 또한 사용된다. 예를 들면, 조직은 비즈니스 비용에 대해 그 직원에게 변제하기(repay)를 바라되, 또한 해당 상환과 함께 이자를 포함시키기를 바랄지도 모른다. 따라서, 기저의 비즈니스 로직 한 가지는, 비용 아이템이 생성되고, 액수 및 날짜가 입력되는 경우, 이자부 상환(reimbursement with interest)이 계산되고 필드(206) 내에 디스플레이되도록, "이자부 상환" 필드(206)에 대응한다. 물론, 이것은 예시적일 뿐이며 다른 비즈니스 로직이 추가될 수도 있다.
도 4를 다시 참조하면, 도 4의 블록도는 도 6에 관해 앞서 논의된 추가적인 비용 및 맞춤화를 획득하도록 기반 비용 폼 모델(160)을 확장하기 위해서 개발자에 의해 생성될 수 있는 확장 모델(210)을 보여준다. 이렇게 개발자(126)는 사용자 인터페이스 디스플레이 상에 생성된 폼이 도 6에 도시된 것이도록 기반 비용 폼 모델(160)을 확장하기 위해서 개발 및 맞춤화 시스템(128)과 상호작용한다. 그러므로, 기반 비용 폼 모델(160)은 어떤 필드 및 컨트롤을 추가하기 위해 확장된다. 추가로, 비용 테이블(170)은 그 필드 및 컨트롤에 대한 확장을 위해 데이터를 유지하는 행 및/또는 열을 추가하기 위해 확장된다. 또한, 확장 모델(210)에 결부된 비즈니스 로직은 이자부 상환을 계산하는 데에 사용되는 비즈니스 로직을 포함한다. 개발자(126)는 확장된 필드(212)를 구체적으로 모델링하기 위해 맞춤화 시스템(128) 내의 모델 생성기(133)를 사용한다. 논의되고 있는 예에서, 확장된 필드는 통화 필드(202)를 포함한다. 추가로, 개발자(126)는 확장 모델(210)을, 그것이 확장된 그리드 컨트롤을 모델링하여 휴가 열(204)을 추가하도록 생성한다. 이것은 모델(210) 내의 아이템(214)에 나타나 있다. 개발자(126)는 또한, 확장된 비용 폼 모델 상의 새로운 필드를 위한 새로운 데이터가 비용 테이블 내에 포함되고 새로운 필드에 결부되도록, 비용 테이블(170)에 대해 확장을 추가하기 위해 모델 생성기(133)를 사용한다. 이것은 도 4 내의 블록(216)에서 나타내어진다. 추가로, 확장 모델(210)은 필드(206) 내에 디스플레이되는 이자부 상환을 계산하기 위한 확장된 비즈니스 로직 코드를 포함한다. 그것은 또한 해당 코드가 언제 촉발(fire)될지를 나타내는 트리거(trigger)를 예시적으로 포함한다. 예컨대, 비용 아이템이 생성되는 경우, 개발자(126)는 이자와 함께 상환 액수가 계산되고 디스플레이되기를 바랄 수 있다. 그런 비즈니스 로직 코드의 확장은 도 4 내의 블록(218)에 나타나 있다.
확장 모델(210) 내의 확장들은 상이한 방식들로 표현됨에 유의할 것이다. 예를 들면, 하나의 실시예에서, 그것들은 XML로, (또는 XML의 변형으로), 그리고 비즈니스 로직 코드로 표현된다. 다른 실시예에서, 그것들은 다른 방식들로 표현된다. 확장 모델(210)은 별개의 확장 모델로서 저장되니, 그것은 기반 비용 폼 모델(160)과는 별개이다. 그것은 예시적으로, 런타임 동안에 런타임 서버에 의해 발견되고, 기반 시스템을 덮어쓰거나 바꾸지 않고서 비즈니스 시스템의 런타임 구현에서 사용될 수 있도록, 기반 모델을 위한 어셈블리들과는 별개의 어셈블리인 확장 패키지 내에 어셈블된다.
맞춤화를 행하는 동안과 그 후에, 시각화 컴포넌트(137)는 맞춤화되고 있는 모델 요소의 통합된 뷰(139)를 생성한다. 도 6aa 및 도 6ab(함께 도 6a이라 함)는 그러한 시각화를 생성하는 데에서 시각화 컴포넌트(137)의 동작의 하나의 실시예를 예시하는 흐름도를 보여주고, 도 6b 내지 도 6f는 예시적 사용자 인터페이스 디스플레이를 보여준다. 도 6a 내지 도 6f는 서로 연계되어 이제 기술될 것이다.
개발자(또는 사용자)(126)는 우선 개발자(126)가 개발 환경(124) 내의 개발 및 맞춤화 시스템(128)을 액세스하기를 바란다는 것을 나타내는 입력을 개발 및 맞춤화 시스템(128)에 제공한다. 이것은 도 6a 내의 블록(250)에 나타나 있다. 예로서, 개발자(126)는 맞춤화 시스템(128) 내의 소정의 프로젝트를 액세스하기 위해 또는 새 프로젝트를 시작하기 위해 인증 정보(authentication information)(예를 들어 사용자 이름 및 암호)를 제공할 수 있다. 응답으로, 사용자 인터페이스 컴포넌트(131)는 개발자(126)가 맞춤화하기를 바라는 특정한 모델 요소를 개발자(126)가 선택할 수 있도록 개발자(126)를 위해 사용자 인터페이스 디스플레이를 예시적으로 생성한다. 사용자가 모델 요소를 맞춤화하기를 바란다는 것을 표시하는(즉 나타내는) 사용자 입력을 개발자(126)로부터 수신하는 것은 도 6a 내의 블록(252)에 나타나 있다.
사용자가 블록(252)에서 입력을 제공한 후, 시각화 컴포넌트(137)는 예시적으로 사용자가 맞춤화를 위해 모델 요소를 선택하도록 사용자 인터페이스 디스플레이를 디스플레이한다. 이것은 도 6a 내의 블록(254)에 나타나 있다. 시각화 컴포넌트(137)는 이후, 디스플레이된 사용자 인터페이스 디스플레이를 통해, 맞춤화를 위해 모델 요소를 선택하는 사용자 입력을 수신한다. 이것은 블록(255)에 나타나 있다. 맞춤화를 위해 선택될 수 있는 특정한 모델 요소는 임의의 모델링된 유형일 수 있다. 예를 들면, 그것은 테이블(262), 폼(264), 메뉴(266), 일람표(목록)(268), 또는 다른 모델링된 요소(270)일 수 있다.
도 6b는 개발자가 소정의 모델 요소를 맞춤화하기를 바란다는 것을 나타내는 사용자 입력을 개발자(126)로부터 수신하는 사용자 인터페이스 디스플레이(256)의 일부분의 하나의 실시예를 보여준다. 예로서, 맞춤화되고 있는 모델 내의 다양한 모델 요소가 디스플레이될 수 있고, 사용자는 소정의 모델 요소를 (예를 들어 그 위에서 오른쪽 클릭함(right clicking)으로써, 또는 다른 식으로) 간단히 선택할 수 있으며 사용자 인터페이스 디스플레이(256)가 생성될 것이다. 예를 들면, 만약 사용자가 테이블 위에서 오른쪽 클릭하는 경우, 사용자 인터페이스 디스플레이(256)가 생성된다. 사용자가 디스플레이(256)의 콘텍스트 메뉴(context menu) 내의 "맞춤화하기"(customize) 사용자 입력 메커니즘(258)을 선택한 것으로 볼 수 있다. 이것은 사용자로 하여금, 사용자 입력 메커니즘(260) 중 하나를 작동시킴으로써, 기존의 프로젝트에서든 또는 새 프로젝트에서든 선택된 테이블을 맞춤화할 수 있게 한다.
만약 사용자가 새 프로젝트 내에서 선택된 요소를 맞춤화하기로 택하면, 사용자는 사용자로 하여금 새 프로젝트를 셋업하고 그 새 프로젝트 내의 선택된 모델 요소를 맞춤화할 수 있게 하는 복수의 사용자 인터페이스 디스플레이를 맞춤화 시스템(128)이 생성하는 새 프로젝트 셋업 사용자 경험(new project setup user experience)으로 예시적으로 인도된다. 이것은 도 6a의 흐름도 내의 블록(272 및 274)에 나타나 있다.
만약 사용자가 기존의 프로젝트에서든 또는 새 프로젝트에서든 선택된 모델 요소를 맞춤화하기로 택하는 경우, 시각화 컴포넌트(137)는 선택된 모델 요소의 통합된 뷰(139)를 예시적으로 생성하고 디스플레이한다. 이것은 도 6a 내의 블록(276)에 나타나 있다. 사용자는 기반 시스템(114) 내에 모델링된 기반 모델 요소, 또는 기반 모델에 대한 이전의 맞춤화를 보여주는 확장 모델을 선택할 수 있음에 유의하여야 한다. 시각화 컴포넌트(137)는 기반 요소뿐만 아니라, 그것의 맞춤화 전부도 반영하도록 선택된 모델 요소의 통합된 뷰(139)를 생성한다. 기반 요소를 통합된 뷰 내에 나타내는 것이 블록(278)에 나타나 있다. (현재의 맞춤화를 행하기 위해 편집될 수 있는) 현재의 확장 모델을 나타내는 것이 블록(280)에 나타나 있고, 다른 확장 모델 내의 다른 맞춤화를 나타내는 것은 블록(282)에 나타나 있다.
도 6c는 하나의 예시적인 통합된 시각화(또는 통합된 뷰)를 예시하는 사용자 인터페이스 디스플레이(284)의 하나의 실시예를 보여준다. 도 6c에 도시된 실시예에서, 개발자(126)는 애플리케이션 모음 베이스라인 모델(application suite baseline model) 내에 정의된 베이스라인 "어카운트"(accounts) 테이블의 맞춤화를 보여주는 확장 모델 내의(ISVModel1 모델 내의) "어카운트" 테이블을 예시적으로 선택하였다. 도 6c에 도시된 실시예에서, 통합된 시각화(284)는 예시적으로 계층적 트리 구조(hierarchical tree structure)(286)인데, 그것은 부모 노드 및 자식 노드를 갖는다. 자식 노드는 그것의 부모 노드에 비해 우측으로 들여쓰기가 된 것으로 도시된다. 최상위 레벨 노드(top level node)(288)는 선택된 테이블("어카운트" 테이블), 그것이 정의된 기반 모델("애플리케이션 모음" 모델) 및 현재의 확장 모델(ISVModel1)을 나타낸다. 모델들은, 베이스라인 모델을 위한 계층으로 시작하여, 늘어나는 맞춤화의 오름 계층 차순(ascending layer order)으로 예시적으로 열거된다. 따라서, ISVModel1 모델은 애플리케이션 모음 모델이라기보다는 계층 내에 있다. 대안에서, 최상위 레벨 노드(288)는 기반 모델 및 모든 관련된 확장 객체의 모델 역시 나타낼 수 있다.
하나의 실시예에서, 시각화 컴포넌트(137)는 노드 및 서브노드(subnode)의 소유권(ownership)을 또한 시각적으로 디스플레이하기 위해 통합된 뷰를 생성한다. 이것은 도 6a의 흐름도 내의 블록(290)에 나타나 있다. 즉, 통합된 뷰는 각각의 노드가 속하는 모델을 디스플레이한다. 이것은 블록(292)에 나타나 있다. 그것은 블록(294)에 의해 나타내어진 바와 같이 노드가 맞춤화된 것을 보여줄 수 있다. 그것은 블록(296)에 의해 나타내어진 바와 같이 기반 노드에 대비하여 확장을 나타낼 수 있다. 그것은 블록(298)에 의해 나타내어진 바와 같이 각각의 노드의 읽기/쓰기(read/write) 특성을 시행할 수 있고, 그것은 블록(301)에 의해 나타내어진 바와 같이 다른 방식으로도 소유권을 디스플레이할 수 있다.
예로서, 도 6c 내의 디스플레이(284)는 기반 모델에 속하지 않거나 다른 모델 내에서 맞춤화된 선택된 모델 요소의 모든 노드들은 그것들이 속하는 모델들을 나타내는 시각적 지시자(visual indicator)들을 갖는다는 것을 보여준다. 또한, 편집되고 있는 현재의 확장 모델(ISVModel1)에 속하는 모든 노드들의 시각적 지시자가 있다. 예로서, 이들 시각적 지시자는 볼드체(bold)일 수 있거나, 그것들은 "ISVModel1"라는 지정(designation)이 부기되어 있을 수 있다. 개발자가 컬렉션 노드(collection node)를 전개하는 경우, 우선 현재의 확장 모델(ISVModel1)에 속하는 서브노드들이, 뒤이어 기반 모델에 속하는 서브노드들이, 뒤이어 다른 확장에 속하는 서브노드들이 보여질 수 있다.
일례로서, 사용자 인터페이스 디스플레이(284)는 "어카운트" 테이블이 세 개의 다른 모델 내에서 맞춤화되었음을 보여준다. "필드 3"(Field 3) 노드는 현재의 ISVModel1 내에서 맞춤화되었다(즉, 이에 속함). "필드 4"(Field 4) 노드는 ISVModel2 및 VARModel1 양자 모두 내에서 맞춤화되었다. "필드 5"(Field 5) 모델은 VARModel1 내에서 맞춤화되었다. 노드의 좌측 상의 시각적 지시자 "+"는 그 대응하는 노드가 확장 모델 내에서 모델링된 확장이며, 기반 모델에 속하지 않음을 나타낸다. 예컨대, 필드 3, 필드 4 및 필드 5는 확장이며 필드 1과 필드 2만 "애플리케이션 모음" 내에 정의된 기반 "어카운트" 모델에 속한다. 하나의 실시예에서, 편집가능한 맞춤화만이 현재 열려 있는 맞춤화이다. 더 높은 계층 모델, 또는 더 낮은 계층 모델, 또는 다른 동일 계층 모델에 속하는 맞춤화는 편집가능하지 않을 것이다. 다른 실시예에서, 더 높은 계층 모델에 속하는 맞춤화는 현재 모델 내에서 판독만 된다. 예로서, 계층적 구조(286) 내의 필드 4 및 필드 5 노드는 판독 전용으로 지정될 수 있는데, 그것들은 (도 1에 도시된 개발 채널과 같은) 전체적인 모델 계층구조 내에서 더 높은 계층 모델들에 속하기 때문이다. 이것은 이탤릭체 폰트(italic font)로 또는 임의의 다른 폰트 기반 지시자나 다른 시각적 지시자로 그 노드들을 디스플레이함으로써 보여질 수 있다.
도 6c 내의 시각화는 변경될 수도 있다. 예를 들면, (필드 3 노드처럼) 현재의 문서에 속하는(또는 그 안에서 수정된) 모델은 볼드로 보여지나 모델 이름을 보여주지는 않는다. 다른 문서에 속하는 노드(판독 전용 노드)는 이탤릭체로 보여진다.
하나의 실시예에서, 시각화 컴포넌트(137)는 또한, 맞춤화가 노드의 재순서화(reordering)를 반영하고 있다는 것을 시각적으로 디스플레이하기 위해 통합된 뷰(139)를 생성한다. 이것은 도 6a의 흐름도 내의 블록(303)에 나타나 있다. 도 6d는, 예를 들면, 사용자가 맞춤화를 위해 ISVModel1 내의 "고객 예약"(customer reservations) 테이블을 선택한 통합된 뷰의 하나의 실시예의 디스플레이(305)를 보여준다. 개발자(126)는 이후 "탭 3"(tab 3)이 탭 그룹(tab group) 내의 첫 번째 탭이도록 이동하기 위해 해당 테이블을 맞춤화하였다. 그러므로, 디스플레이(305) 내에 보여진 통합된 뷰는 탭 3 노드(307)가 탭 1(tab 1) 및 탭 2(tab 2) 노드들(309 및 311)에 대해 재순서화(위쪽으로 이동)되었음을 보여준다. 추가로, 탭 3 노드(307)는 탭 3이 위쪽 방향으로 재순서화되었음을 나타내는 시각적 지시자(315)를 갖는다. 도 6d에 도시된 실시예에서, 시각적 지시자(315)는 위쪽으로 지향된 화살표이다. 그러나, 다른 시각적 지시자가 사용될 수도 있다.
또한, 하나의 실시예에서, 시각화 컴포넌트(137)는 부모재설정된(re-parented) 노드를 시각적으로 디스플레이하기 위해 통합된 뷰(139)를 생성한다. 도 6e는, 예를 들면, 사용자가 ("플릿 관리"(fleet management) 모델에 속하는) "고객 예약 폼" 기반 요소를 선택한 통합된 뷰의 하나의 사용자 인터페이스 디스플레이(319)를 보여준다. 개발자(126)는 ISVModel1 확장 모델 내에서 그것을, 버튼 2(button 2) 노드(321)를 탭 1에 의존하는 것으로부터 탭 3에 의존하는 것으로 이동함(즉, 버튼 2 노드(321)는 이전에 탭 1을 그것의 부모로서 가졌으나, 그것은 이제 탭 3를 그것의 부모로서 가짐)으로써 맞춤화하였다. 디스플레이(319) 내에 보여진 통합된 뷰는 버튼 2 노드(321)가 부모재설정되었음을 나타내는 시각적 지시자(323)를 또한 포함한다. 다른 시각적 지시자가 사용될 수도 있다.
전술된 통합된 뷰들은, 일단 통합된 뷰(139)가 선택된 모델 요소를 위해 생성되었다면, 시각화 컴포넌트(137)가 예시적으로 사용자로 하여금(126) (ISVModel1과 같은) 맞춤화되고 있는 문서(즉, 확장 모델)뿐만 아니라, (기반 모델과, 기반 모델에 대한 맞춤화를 모델링하는 모든 다른 확장 모델을 반영하는 문서를 위한 정보와 같은) 밀접하게 관련된 문서들을 위한 정보도 시각화할 수 있게 한다는 것을 보여준다. 이것들은 통합된 뷰를 보여주는 시각화 내에 생성되나, 예시적으로 시각화 컴포넌트(137)는 ISVModel1 확장 모델을 나타내는 현재의 문서를 개발자(126)가 단지 편집할 수 있도록 통합된 뷰(139)를 생성한다. 그러므로 개발자(126)는 현재의 확장 모델 내의 모델 요소를 맞춤화하는 사용자 맞춤화 입력을 제공할 수 있다. 사용자 맞춤화 입력을 수신하는 것은 도 6a의 흐름도 내의 블록(325)에 나타나 있다.
하나의 실시예에서 현재의 확장 모델과의 사용자 상호작용은 그것이 기반 모델을 맞춤화하는 데에서 그러할 것과 동일하다. 이것은 블록(327)에 나타나 있다. 따라서, 개발자는 블록(329)에 의해 나타내어진 바와 같이 메타데이터를 맞춤화할 수 있거나, 개발자는 블록(331)에 의해 나타내어진 바와 같이 소스 코드를 맞춤화할 수 있거나, 개발자는 다른 맞춤화(333)를 수행할 수도 있다.
도 6f는 개발자가 단지 메타데이터가 아니라 코드를 맞춤화하고 있는 하나의 실시예를 보여준다. 도 6f에서, 사용자는 소스 코드 확장을 지원하는 노드를 선택하였다. 도 6f는 소스 코드 확장을 지원하는 확장 모델 요소(가령, 테이블, 폼, 또는 임의의 다른 유형)를 편집하는 경우, 예시적으로 사용자가 요소 유형에 의해 노출된 다양한 프레임워크 이벤트(framework event)들을 다루기 위해 이벤트 핸들러 메쏘드(event handler method)를 추가할 수 있음을 구체적으로 보여준다. 예로서, 만약 사용자가 메쏘드 노드(methods node) 상에서 클릭(하거나 오른쪽 클릭)하고 새로운 이벤트 핸들러를 선택하는 경우, 도 6f에 도시된 디스플레이(335)와 같은 사용자 인터페이스 디스플레이가 생성된다. 일단 사용자가 사용자 입력 메커니즘(337)을 사용하여 새로운 이벤트 핸들러를 선택하면, 이용가능한 이벤트 핸들러들의 메뉴(339)가 디스플레이될 수 있다고 볼 수 있다. 이용가능한 이벤트 핸들러들은 예시적으로 현재 개발자(126)가 편집하고 있는 특정한 유형 상에서 이용가능한 것들이다. 사용자가 원하는 이벤트 핸들러를 선택하는 경우, 현재의 요소 배후의 코드에 이벤트 핸들러 메쏘드가 추가된다. 이벤트 핸들러 메쏘드에는 원하는 이벤트를 청하는(subscribe) 데에 필요한 적절한 속성들이 곁들여질(decorated) 수 있다. 메뉴(339) 내에 보여진 이벤트들은 예시적일 뿐임에 유의할 것이다.
개발자(126)가 맞춤화를 행할 때, 시각화 컴포넌트(137)는 예시적으로, 전술된 바와 같이, 현재의 맞춤화 전부를 보여주기 위해 통합된 뷰(139)를 업데이트한다. 이것은 도 6a의 흐름도 내의 블록(341)에 나타나 있다.
그러므로 시각화 컴포넌트(137)는 개발자(126)로 하여금 선택된 모델 요소와 연관된 메타데이터 또는 코드를 확장할 수 있게 하는 통합된 뷰를 생성하는 통합된 시각화 컴포넌트라고 볼 수 있다. 개발자(126)는 (현재의 맞춤화를 반영하는 현재의 확장 모델과 같은) 현재의 문서를 편집할 수 있으나, 동시에, 개발자(126)는 (기반 모델 요소와, 기반 모델 요소에 대한 모든 맞춤화 및 확장을 나타내는 메타데이터와 같은) 복수의 밀접하게 관련된 문서로부터 마치 그것들이 동일한 소스로부터 나오는 것처럼 통합된 방식으로 정보(가령, 메타데이터)를 열람할 수 있다. 통합된 뷰(139)는 맞춤화의 유형 및 맞춤화가 어떤 문서(가령, 어떤 확장 모델 또는 기반 모델)에 속하는지를 나타내는 시각적 암시(visual cue)를 예시적으로 포함한다.
도 7은 비즈니스 시스템(기반 비즈니스 시스템(114) 및 그것의 맞춤화)을 위한 하나의 런타임 환경(110)의 더욱 상세화된 블록도를 보여준다. 런타임 환경(110)은 런타임 프로세서(또는 서버)(132)는 물론 데이터 스토어(130)를 예시적으로 포함한다고 볼 수 있다. 런타임 환경(110)은 또한 예시적으로 애플리케이션(300), 사용자 인터페이스 컴포넌트(302) 및 확장 데이터 스토어(304)를 포함할 수 있다. 런타임 환경(110)은 사용자 디바이스(308)에 의해 생성된 사용자 인터페이스 디스플레이(306)의 세트를 통해 사용자(112)에 의해 액세스가능한 것으로 도시된다. 사용자(112)는 화살표(310)에 의해 나타내어진 바와 같이 직접적으로든, 또는 네트워크(312) 상에서든 (사용자 디바이스(308)를 통해) 환경(110)을 액세스할 수 있다. 하나의 실시예에서, 네트워크(312)는 광역 네트워크(wide area network), 로컬 영역 네트워크(local area network) 또는 다른 유형의 네트워크이다.
데이터 스토어(130)는 비즈니스 로직 및 워크플로우와 더불어, 비즈니스 데이터를 저장하는 것으로 도시된다. 데이터는 개체(314)와, 메타데이터(316)로서 저장될 수 있다. 데이터 스토어(130)는 또한 비즈니스 로직(318), 워크플로우(320), 폼(322) 및 다양한 다른 정보(324)를 포함한다. 데이터 스토어(130)는, 비즈니스 데이터(가령, 청구서 등등)를 저장하는 데이터 스토어 및 메타데이터(가령, 애플리케이션 메타데이터 계통 폼 유형, 테이블 유형, 비즈니스 로직 등등)를 저장하는 메타데이터 스토어와 같은 여러 상이한 데이터 스토어로 구성될 수 있다.
개체(314)는 예시적으로 비즈니스 시스템 내의 개별 아이템을 나타낸다. 예컨대, 고객 개체는 고객을 나타낸다. 판매 견적 개체는 판매 견적을 나타내고, 비용 개체는 비용을 나타낸다. 이것들은 몇 개의 예일 뿐이며 많은 다른 것들이 사용될 수도 있다. 메타데이터(316)는 예시적으로 데이터 및 그것이 어떻게 비즈니스 시스템의 다른 부분과 관련되고 상호작용하는지를 기술한다. 비즈니스 로직(318)은 예시적으로 비즈니스 시스템 내의 데이터에 대해 논리적 동작을 수행하고, 워크플로우(320)는 예컨대, 사용자(112)가 사용자 인터페이스 디스플레이와 상호작용해서, 그 비즈니스 시스템을 사용하고 있는 조직의 비즈니스를 행하기 위한 동작, 활동, 작업 등등을 수행할 수 있게 한다. 앞서 언급된 바와 같이, 폼(322)은 예시적으로 사용자(112)에 의한 사용자 상호작용을 위해 디스플레이될 수 있는 사용자 입력 메커니즘을 구비한 사용자 인터페이스 디스플레이를 나타낸다. 런타임 프로세서(또는 서버)(132)는 예시적으로 데이터 스토어(130) 내의 데이터를 액세스하는 애플리케이션(300)을 구동한다. 애플리케이션(300)은 비즈니스 시스템을 사용하는 조직의 비즈니스를 행하는 데에 사용될 수 있는 매우 다양한 상이한 유형의 비즈니스 애플리케이션일 수 있다. 예를 들면, 애플리케이션(300)은 일반적인 장부(ledger) 애플리케이션, 재고목록 추적(inventory tracking) 애플리케이션, 다양한 판매 견적 및 판매 주문 애플리케이션, 그리고 조직의 비즈니스를 행하기 위해서 사용자(112)에 의해 수행되는 작업을 자동화하는 것을 돕는 여러 가지 다른 애플리케이션을 포함할 수 있다. 사용자 인터페이스 컴포넌트(302)는 예시적으로 사용자(112)가 비즈니스 시스템과 상호작용할 수 있도록 사용자 입력 메커니즘과 함께 사용자 인터페이스 디스플레이를 생성한다.
도 7은 또한, 런타임 환경 내에서, 확장 패키지(116, 118 등등)를 저장하는 데에 확장 스토어(304)가 사용됨을 보여준다. 도 7에서, 확장 스토어(304)는 비즈니스 데이터 스토어(130)와는 완전히 별개인 데이터 스토어로서 도시됨에 유의할 것이다. 그러나, 확장 패키지(116 및 118)가 단순히 기반 비즈니스 시스템(114)과는 별개로, 데이터 스토어(130) 내에 저장되어, 그 두 데이터 스토어가 단일 데이터 스토어로 조합될 수 있음이 인식될 것이다. 추가로, 두 개의 데이터 스토어(130 및 304)가 도시되고, 그것들은 모두 비즈니스 시스템 런타임 환경(110)에 대해 로컬인 것으로 도시되나, 여러 상이한 데이터 스토어가 사용될 수도 있음이 인식될 것이다. 그것들은 모두 환경(110)에 대해 로컬일 수 있거나, 그것들은 모두 환경(110)으로부터 원격(이고 환경(110)에 의해 액세스가능한 것)일 수 있거나, 몇몇은 로컬이면서 다른 것은 원격일 수 있다.
사용자 디바이스(308)는 매우 다양한 상이한 종류의 사용자 디바이스들 중 임의의 것일 수 있다. 그것은 데스크톱 컴퓨터(desktop computer), 랩톱 컴퓨터(laptop computer), 태블릿(tablet), 모바일 디바이스(mobile device)(예를 들어 스마트폰(smart phone), 휴대폰(cell phone) 등등)일 수 있다. 그것이 사용자 인터페이스 디스플레이(306)를 (단독으로든 또는 사용자 인터페이스 컴포넌트(302)의 명령 하에서든) 생성할 수 있도록 그것은 예시적으로 그 자신의 프로세서 및 사용자 인터페이스 컴포넌트를 포함한다. 그것은 또한 예시적으로 사용자 디바이스 상에 상주하는(reside) 비즈니스 시스템에 대한 동반 애플리케이션(companion application)을 포함할 수 있다. 이들 구성은 단지 예를 위해 언급되며, 그것들 전부가 본 문서에서 고려된다.
어느 경우에서든, 기반 비즈니스 시스템 모델(또는 대응하는 어셈블리)(313)은 예시적으로, 도 1에 도시된 개발 채널 내의 개발자들 또는 다른 이들에 의해 추가된 다양한 확장 모델(또는 대응하는 어셈블리 - 가령, 확장 패키지)(116 내지 118)과는 별개로 저장된다.
도 8은 도 7에 도시된 런타임 환경(110)의 동작의 하나의 실시예를 예시하는 흐름도이다. 도 7 및 도 8은 서로 연계되어 이제 기술될 것이다.
사용자(112)는 우선 비즈니스 시스템에 로그온(log on)하거나, 아니면 사용자(112)로 하여금 비즈니스 시스템을 액세스하거나 비즈니스 시스템을 (만약 그것이 아직 구동 중이지 않으면) 기동할(launch) 수 있게 하는 적합한 사용자 인터페이스 디스플레이(306)를 통해 입력을 제공한다. 예로서, 사용자(112)는 비즈니스 시스템에 서명접속하기(sign on) 위해 (사용자명 및 암호와 같은) 인증 정보를 제공할 수 있다. 사용자(112)로 하여금 비즈니스 시스템을 액세스할 수 있게 하기 위한 사용자 입력을 수신하는 것은 도 8 내의 블록(330)에 의해 나타내어진 바와 같다. 만약 비즈니스 시스템이 아직 구동 중이지 않은 경우, 그것이 기동된다. 이것은 블록(332)에 나타나 있다.
사용자(112)는 이후 비즈니스 시스템을 제어하고 조작하기 위해서 비즈니스 시스템 런타임 환경(110)에 의해 생성되는 다양한 사용자 인터페이스 디스플레이(306)와 상호작용할 수 있다. 어떤 시점에서, 사용자(112)는 대응하는 확장을 갖는 (폼과 같은) 비즈니스 시스템의 일부를 액세스할 수 있다. 사용자가 비즈니스 시스템의 이 일부를 액세스하게 하는 것은 도 8 내의 블록(334)에 나타나 있다.
그 입력에 응답하여, 런타임 프로세서(가령, 서버)(132)는 기반 비즈니스 시스템 내의 비즈니스 시스템의 그 일부를 액세스하며 대응하는 확장 패키지가 있는지를 판정한다. 본 논의를 위하여, 사용자는 확장 패키지가 있는 폼을 액세스하였다고 가정될 것이다. 그러나, 사용자는 대응하는 확장 패키지를 갖는 비즈니스 시스템의 다른 일부를 액세스할 수 있으며 확장 패키지가 있는 폼을 액세스하는 논의는 단지 예를 위해 제공됨이 인식될 것이다. 어느 경우에서든, 서버는 비즈니스 시스템 모델(또는 어셈블리)(313) 내의 소정의 폼(322) 및 그것의 대응하는 메타데이터(316)를 액세스한다. 이것은 도 8 내의 블록(336)에 나타나 있다.
서버(132)는 이후 사용자(112)에 의해 액세스되고 있는 폼에 대응하는 임의의 확장 패키지를 식별하기 위해 메타데이터 스토어(그리고, 예컨대, 확장 스토어(304))를 살펴본다(reflect through). 이것은 도 8 내의 블록(338)에 나타나 있다. 하나의 실시예에서, 서버(132)는 액세스된 폼에 대응하는 메타데이터를 살펴봄으로써 어떤 확장 패키지라도 존재하는지를 판정할 수 있다. 다른 실시예에서, 서버(132)는 액세스되고 있는 폼에 대응하는 확장 패키지를 식별하기 위해, 단지 소정의 메모리 위치를 살펴본다. 서버는 데이터 스토어를 다른 방식으로 살펴보거나, 대응하는 확장 패키지를 다른 방식으로 나타낼 수도 있다.
일단 서버가 액세스되고 있는 폼에 대응하는 확장 패키지(116 내지 118)의 위치 파악을 하였다면, 서버(132)는 기반 폼을 생성하기 위해 그리고 기반 시스템(114)(즉, 기반 모델 또는 기반 어셈블리)에 대한 어떠한 변경도 없이 모든 대응하는 확장 패키지 내에서 나타난 맞춤화를 추가하기 위해 기반 어셈블리 및 별개의 확장 어셈블리를 실행한다. 이것은 도 8 내의 블록(340)에 나타나 있다. 예컨대, 서버(132)는 필드 등등에 대한 추가 및 확장을 포함하도록 기반 폼을 수정할 수 있다. 이것은 도 8 내의 블록(342)에 나타나 있다. 서버(132)는 또한 폼에 대응하는 새로운 비즈니스 로직을 수행할 수 있다. 이것은 블록(344)에 나타나 있다. 서버(132)는 폼에 대한 다른 맞춤화 또는 확장을 수행할 수 있고, 이것은 블록(346)에 나타나 있다.
그러므로, 맞춤화 및 확장은 기반 비즈니스 시스템을 덮어쓰거나 아니면 바꾸는 것 없이, 기반 비즈니스 시스템에 대해 행해질 수 있다고 볼 수 있다. 확장은 그것을 런타임 서버에 의해 발견되기 쉽게 만드는 방식으로 생성되고 저장된다. 런타임 서버는 사용자에 의해 액세스되고 있는 비즈니스 시스템의 일부에 대한 확장을 식별하며, 기반 비즈니스 시스템을 결코 수정하지 않고서, 그 확장을 적용한다. 이것은 기반 비즈니스 시스템에 대해 그리고 맞춤화에 대해 상충을 일으키지 않고서, 업데이트, 버그 수정 및 다른 유지를 행하는 데에 도움이 된다.
이상의 논의는 프로세서들과 서버들을 언급하였다. 이것들은 예시적으로 연관된 메모리 및 시간 회로망(별도로 도시되지 않을 수 있음)이 있는 컴퓨터 프로세서들을 포함할 수 있음에 유의할 것이다. 프로세서들과 서버들은 그것들이 포함된 시스템, 디바이스 또는 컴포넌트의 기능적 부분을 포함한다. 그것들은 다른 컴포넌트, 서비스 또는 아이템에 의해 활성화되어 그것들의 기능성을 가능하게 한다.
다수의 예시적 사용자 인터페이스 디스플레이가 또한 도시되었다. 그러나, 그 사용자 인터페이스 디스플레이들은 매우 다양한 상이한 위치에 생성될 수 있고, 그것들은 매우 다양한 상이한 사용자 입력 메커니즘을 포함할 수 있음이 인식될 것이다. 사용자 입력 메커니즘들은, 예컨대, 텍스트 박스, 체크 박스, 버튼, 아이콘, 타일, 링크, 드롭 다운(drop down) 메뉴 등등을 포함할 수 있다. 추가로, 사용자 입력 메커니즘들은 매우 다양한 상이한 방식으로 작동될 수 있다. 그것들은 (마우스(mouse) 또는 트랙 볼(track ball)과 같은) 포인트 및 클릭 디바이스(point and click device)를 사용하여, 키패드(keypad), 키보드(keyboard), 조이스틱(joystick), 버튼, 액츄에이터를 사용하여, 기타 등등으로 작동될 수 있다. 또한, 그것들은 가상 키패드 또는 키보드, 가상 버튼, 또는 다른 가상 요소를 사용하여 작동될 수 있다. 사용자 인터페이스 디스플레이가 디스플레이된 디바이스가 터치 감응 스크린(touch sensitive screen)인 경우에, 사용자 입력 메커니즘은 또한 터치 제스처를 사용하여 작동될 수 있다. 또한, 사용자 인터페이스 디스플레이를 디스플레이하는 데에 사용된 디바이스가 연관된 음성 인식 또는 망막 추적 컴포넌트를 갖는 경우에, 사용자 입력 메커니즘은 음성 또는 망막 추적을 사용하여 작동될 수 있다.
본 문서에 도시된 도면들은 어떤 기능성 또는 컴포넌트들이 귀속되는 박스들을 포함함이 또한 인식될 것이다. 기능성은 동일한 기능성을 수행하기 위해 더 많은 박스 또는 더 적은 박스가 포함되도록 상이한 방식으로 나뉠 수도 있음에 유의할 것이다.
도 9는, 도 2에 도시된 아키텍처(122)의 블록도로, 구성요소가 클라우드 컴퓨팅 아키텍처(500) 내에 배치된다는 점만 상이하다. 클라우드 컴퓨팅에서는 계산, 소프트웨어, 데이터 액세스 및 저장 서비스들을 제공하는데, 최종 사용자는 이러한 서비스를 제공하는 시스템의 물리적 위치 또는 구성에 대해서 알 필요가 없다. 다양한 실시예에서, 클라우드 컴퓨팅은 적절한 프로토콜을 사용하여 인터넷과 같은 광역 네트워크 상에서 서비스들을 전달한다. 예를 들면, 클라우드 컴퓨팅 제공자들은 광역 네트워크 상에서 애플리케이션들을 전달하고 그것들은 웹 브라우저 또는 임의의 다른 컴퓨팅 컴포넌트를 통해 액세스될 수 있다. 아키텍처(122)의 소프트웨어 또는 컴포넌트는 물론 대응하는 데이터는, 원격 위치에서 서버 상에 저장될 수 있다. 클라우드 컴퓨팅 환경 내의 컴퓨팅 리소스들은 원격 데이터 센터 위치에서 병합될 수 있거나 그것들은 분산될 수 있다. 클라우드 컴퓨팅 인프라스트럭처는 서비스들을 공유된 데이터 센터들을 통해, 설령 그것들이 사용자를 위한 단일 액세스 지점(point of access)으로 보이더라도, 전달할 수 있다. 그러므로, 본 문서에 기술된 컴포넌트들과 기능들은 클라우드 컴퓨팅 아키텍처를 사용하여 원격 위치에서 서비스 제공자로부터 제공될 수 있다. 대안적으로, 그것들은 종래의 서버로부터 제공될 수 있거나, 그것들은 직접적으로, 또는 다른 방식으로 클라이언트 디바이스들 상에 설치될 수 있다.
설명은 공용 클라우드 컴퓨팅 및 사설 클라우드 컴퓨팅 양자 모두를 포함하도록 의도된다. 클라우드 컴퓨팅(공용 및 사설 양자 모두)은 리소스들의 실질적으로 무결절성(seamless)인 풀링(pooling)은 물론, 기저의 하드웨어 인프라스트럭처를 관리하고 구성하는 데에 감소된 필요성을 제공한다.
공용 클라우드는 벤더에 의해 관리되며 동일한 인트라스트럭처를 사용하는 여러 소비자를 통상 지원한다. 또한, 공용 클라우드는, 사설 클라우드와는 대조적으로, 최종 사용자를 하드웨어를 관리하는 것으로부터 해방시킬 수 있다. 사설 클라우드는 조직 자체에 의해 관리될 수 있고 인프라스트럭처는 통상 다른 조직과 공유되지 않는다. 조직은 여전히 하드웨어를 어느 정도(예를 들어 설치 및 보수 등등)로 유지한다.
도 9에 도시된 실시예에서, 몇몇 아이템은 도 2에 도시된 것과 유사하며 그것들은 유사하게 번호가 매겨진다. 도 9는 개발 환경(124) 및 런타임 환경(110) 양자 모두가 옵션으로 클라우드(502)(이는 공용이거나, 사설이거나, 어떤 부분들은 공용이되 다른 부분들은 사설인 조합일 수 있음) 내에 위치될 수 있음을 구체적으로 보여준다. 그것들은 개발 환경(124)으로써 나타내어진 바와 같이, 클라우드(502)의 외부에 배치될 수도 있다. 따라서, 사용자(112)는 클라우드(502)를 통해 그 환경들을 액세스하기 위해 사용자 디바이스(308)를 사용한다. 개발자(126)는 클라우드(502)를 통해 환경들을 액세스하기 위해 개발자 디바이스(505)를 사용할 수 있다.
도 9는 클라우드 아키텍처의 다른 실시예도 나타낸다. 도 9는 환경의 몇몇 요소(110 및 124)는 클라우드(502) 내에 배치되지만, 다른 요소는 그렇지 않은 경우도 상정된다는 것을 나타내고 있다. 예로서, 데이터 스토어(130, 304)는 클라우드(502)의 외부에 배치되고, 클라우드(502)를 통해 액세스될 수 있다. 다른 실시예에서, 모델 생성기(133)가 또한 클라우드(502)의 외부에 있다. 그것들이 어디에 위치되는지와는 무관하게, 그것들은 (광역 네트워크이든 또는 로컬 영역 네트워크이든) 네트워크를 통해, 디바이스(308)에 의해 직접적으로 액세스될 수 있거나, 그것들은 서비스에 의해 원격 사이트에서 호스팅될(hosted) 수 있거나, 그것들은 클라우드를 통해 서비스로서 제공되거나 클라우드 내에 상주하는 연결 서비스에 의해 액세스될 수 있다. 이들 아키텍처 전부가 본 문서에서 고려된다.
아키텍처(122) 또는 그것의 부분은 매우 다양한 상이한 디바이스 상에 배치될 수 있음에 또한 유의할 것이다. 그 디바이스들 중 몇몇은 서버, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터 또는 다른 모바일 디바이스, 예를 들어 팜 톱(palm top) 컴퓨터, 휴대폰, 스마트폰, 멀티미디어 플레이어, 개인용 디지털 보조기기(personal digital assistant) 등등을 포함한다.
도 10은, 본 시스템(또는 그것의 일부분)이 사용될 수 있거나, 사용자 또는 개발자가, 본 문서에 기술된 다양한 환경에 액세스하는데 사용할 수 있으며, 사용자의 또는 클라이언트의 핸드헬드 디바이스(16)로서 사용될 수 있는 핸드헬드 또는 모바일 컴퓨팅 디바이스의 하나의 예시적인 실시예의 개략 블록도이다. 도 11 내지 도 14는 핸드헬드 또는 모바일 디바이스의 예이다.
도 10은 아키텍처(122)의 컴포넌트들을 구동할 수 있거나 아키텍처(122)와 상호작용하거나, 양쪽 모두인 클라이언트 디바이스(16)의 컴포넌트들의 일반적인 블록도를 제공한다. 디바이스(16) 내에는, 핸드헬드 디바이스로 하여금 다른 컴퓨팅 디바이스와 통신할 수 있게 하고 몇몇 실시예 하에서, 예를 들어 스캐닝(scanning)에 의해, 자동으로 정보를 수신하기 위한 채널을 제공하는 통신 링크(13)가 제공된다. 통신 링크(13)의 예는 적외선 포트(infrared port), 직렬/USB 포트, 이더넷(Ethernet) 포트와 같은 케이블 네트워크 포트, 그리고 일반 패킷 무선 서비스(General Packet Radio Service: GPRS), LTE, HSPA, HSPA+ 및 다른 3G와 4G 무선 프로토콜, 1Xrtt 및 단문 메시지 서비스(Short Message Service)(이들은 네트워크로의 셀룰러 액세스(cellular access)를 제공하는 데에 사용되는 무선 서비스들임)는 물론, 802.11 및 802.11b (와이파이(Wi-Fi)) 프로토콜 및 블루투스(Bluetooth) 프로토콜(이들은 네트워크로의 로컬 무선 연결을 제공함)을 포함하는 하나 이상의 통신 프로토콜을 통해 통신을 가능하게 하는 무선 네트워크 포트를 포함한다.
다른 실시예 하에서, 탈착가능한(removable) 시큐어 디지털(Secure Digital: SD) 카드(SD 카드 인터페이스(15)에 연결됨) 상에 애플리케이션 또는 시스템이 수신된다. SD 카드 인터페이스(15) 및 통신 링크(13)는, 클록(clock)(25) 및 위치 시스템(location system)(27)뿐만 아니라, 또한 메모리(21) 및 입력/출력(Input/Output: I/O) 컴포넌트(23)에 연결된 버스(19)를 따라 프로세서(17)(이는 또한 프로세서(129, 132)를 실체화할(embody) 수 있음)와 통신한다.
I/O 컴포넌트(23)는, 하나의 실시예에서, 입력 및 출력 동작을 가능하게 하기 위해 제공된다. 디바이스(16)의 다양한 실시예를 위한 I/O 컴포넌트(23)는 입력 컴포넌트, 예를 들어 버튼, 터치 센서, 다중 터치 센서, 광학 또는 비디오 센서, 음성 센서, 터치 스크린, 근접성(proximity) 센서, 마이크, 경사(tilt) 센서 및 중력 스위치, 그리고 출력 컴포넌트, 예를 들어 디스플레이 디바이스, 스피커 및 또는 프린터 포트를 포함할 수 있다. 다른 I/O 컴포넌트(23)가 사용될 수도 있다.
클록(25)은 예시적으로 시간과 날짜를 출력하는 실시간 클록 컴포넌트(real time clock component)를 포함한다. 그것은 또한, 예시적으로, 프로세서(17)에 타이밍(timing) 기능을 제공할 수 있다.
위치 시스템(27)은 예시적으로 디바이스(16)의 현재 지리적 위치를 출력하는 컴포넌트를 포함한다. 이것은, 예를 들면, 글로벌 포지셔닝 시스템(Global Positioning System: GPS) 수신기, LORAN 시스템, 데드 레커닝(dead reckoning) 시스템, 셀룰러 삼각측량(cellular triangulation) 시스템, 또는 다른 측위(positioning) 시스템을 포함할 수 있다. 그것은 또한, 예컨대, 원하는 지도, 내비게이션(navigation) 경로 및 다른 지리적 기능을 생성하는 맵핑 소프트웨어(mapping software) 또는 내비게이션 소프트웨어(navigation software)를 포함할 수 있다.
메모리(21)는 운영 체제(operating system)(29), 네트워크 설정(31), 애플리케이션(33), 애플리케이션 구성 설정(35), 데이터 스토어(37), 통신 드라이버(39) 및 통신 구성 설정(41)을 저장한다. 메모리(21)는 모든 유형의 유형적인(tangible) 휘발성 및 비휘발성 컴퓨터 판독가능(computer-readable) 메모리 디바이스들을 포함할 수 있다. 그것은 또한 (후술되는) 컴퓨터 저장 매체를 포함할 수 있다. 메모리(21)는 컴퓨터 판독가능 명령어(이는 프로세서(17)에 의해 실행되는 경우, 프로세서로 하여금 컴퓨터 구현된(computer-implemented) 단계 또는 기능을 그 명령어에 따라 수행하게 함)를 저장한다. 유사하게, 디바이스(16)는 다양한 비즈니스 애플리케이션을 구동하거나 아키텍처(122)의 일부 또는 전부를 실체화할 수 있는 클라이언트 비즈니스 시스템(24)을 가질 수 있다. 프로세서(17)는 다른 컴포넌트들에 의해 그것들의 기능성을 가능하게 하기 위해서 활성화될 수도 있다.
네트워크 설정(31)의 예는 프록시(proxy) 정보, 인터넷 연결 정보 및 맵핑과 같은 것을 포함한다. 애플리케이션 구성 설정(35)은 특정 기업 또는 사용자를 위해 애플리케이션을 맞추는 설정을 포함한다. 통신 구성 설정(41)은 다른 컴퓨터와 통신하기 위한 파라미터를 제공하고 GPRS 파라미터, SMS 파라미터, 연결 사용자 이름 및 암호와 같은 아이템을 포함한다.
애플리케이션(33)은 디바이스(16) 상에 이전에 저장된 애플리케이션 또는 사용 중에 설치된 애플리케이션일 수 있는데, 다만 이것들은 운영 체제(29)의 일부이거나, 디바이스(16)의 외부에서 호스팅될 수도 있기는 하다.
도 11은 디바이스(16)가 태블릿 컴퓨터(600)인 하나의 실시예를 보여준다. 도 11에서, 컴퓨터(600)는 사용자 인터페이스 디스플레이 스크린(602)과 함께 도시된다. 스크린(602)은 터치 스크린(그래서 사용자의 손가락으로부터의 터치 제스처는 애플리케이션과 상호작용하는 데에 사용될 수 있음) 또는 펜 또는 스타일러스(stylus)로부터 입력을 수신하는 펜 가능화된(pen-enabled) 인터페이스일 수 있다. 그것은 또한 온스크린(on-screen) 가상 키보드를 사용할 수 있다. 물론, 그것은 또한, 예를 들면 무선 링크 또는 USB 포트와 같은 적합한 부착 메커니즘(attachment mechanism)을 통해 키보드 또는 다른 사용자 입력 디바이스에 부착될 수 있다. 컴퓨터(600)는 또한 예시적으로 음성 입력을 수신할 수도 있다.
도 12 및 도 13은 사용될 수 있는 디바이스(16)의 추가적인 예를 제공하는데, 다만 다른 것이 사용될 수도 있기는 하다. 도 12에서, 피처 폰(feature phone), 스마트폰 또는 모바일 전화(45)가 디바이스(16)로서 제공된다. 전화(phone)(45)는 전화 번호로 전화 걸기(dialing) 위한 키패드(47)의 세트, 애플리케이션 이미지, 아이콘, 웹 페이지, 사진 및 비디오를 포함하는 이미지를 디스플레이하는 것이 가능한 디스플레이(49), 디스플레이 상에 보여진 아이템을 선택하기 위한 컨트롤 버튼(51)을 포함한다. 전화는 셀룰러 전화 신호, 예를 들어 일반 패킷 무선 서비스(General Packet Radio Service: GPRS) 및 1Xrtt, 그리고 단문 메시지 서비스(Short Message Service) 신호를 수신하기 위한 안테나(53)를 포함한다. 몇몇 실시예에서, 전화(45)는 SD 카드(57)를 수용하는 시큐어 디지털(Secure Digital: SD) 카드 슬롯(55)을 또한 포함한다.
도 13의 모바일 디바이스는 개인용 디지털 보조기기(Personal Digital Assistant: PDA)(59) 또는 멀티미디어 플레이어 또는 태블릿 컴퓨팅 디바이스 등등(이하에서 PDA(59)로 지칭됨)이다. PDA(59)는 스타일러스(63)(또는 사용자의 손가락과 같은 다른 포인터)의 포지션(position)을, 스타일러스가 스크린 상에 두어진 경우에 감지하는 유도성 스크린(inductive screen)(61)을 포함한다. 이것은 사용자로 하여금 스크린 상의 아이템을 선택하고, 강조하며, 이동할 뿐만 아니라, 그리며 쓸 수 있게 한다. PDA(59)는 사용자로 하여금 디스플레이(61) 상에 디스플레이된 메뉴 옵션 또는 다른 디스플레이 옵션을 쭉 스크롤할 수 있게 하고 사용자로 하여금 디스플레이(61)를 접촉하지 않고서 애플리케이션을 변경하거나 사용자 입력 기능을 선택할 수 있게 하는 다수의 사용자 입력 키 또는 버튼(예를 들어 버튼(65))을 또한 포함한다. 비록 도시되지 않았으나, PDA(59)는 다른 컴퓨팅 디바이스로의 하드웨어 연결을 가능케 하는 연결 포트뿐만 아니라 다른 컴퓨터와의 무선 통신을 가능케 하는 내부 안테나 및 적외선 송신기/수신기를 포함할 수 있다. 통상 그러한 하드웨어 연결은 직렬 또는 USB 포트를 통해 다른 컴퓨터에 연결되는 받침대(cradle)을 통해 행해진다. 이와 같이, 이들 연결은 비 네트워크(non-network) 연결이다. 하나의 실시예에서, 모바일 디바이스(59)는 SD 카드(69)를 수용하는 SD 카드 슬롯(67)을 또한 포함한다.
도 14는 전화가 스마트폰(71)인 것을 제외하고는 도 12와 유사하다. 스마트폰(71)은 아이콘 또는 타일 또는 다른 사용자 입력 메커니즘(75)을 디스플레이하는 터치 감응 디스플레이(73)을 갖는다. 메커니즘(75)은 애플리케이션을 구동하기, 전화를 하기, 데이터 전송 동작을 수행하기 등등을 위해 사용자에 의해 사용될 수 있다. 일반적으로, 스마트폰(71)은 모바일 운영 체제가 토대로 되며 피처 폰보다 더욱 진전된 컴퓨팅 능력 및 연결성을 제공한다.
디바이스(126)의 다른 형태가 가능함에 유의하시오.
도 15는 아키텍처(122) 또는 그것의 부분이 (예컨대) 사용될 수 있는 컴퓨팅 환경의 하나의 실시예이다. 도 15를 참조하면, 몇몇 실시예를 구현하기 위한 예시적 시스템은 컴퓨터(810)의 형태로 된 일반 목적 컴퓨팅 디바이스(general-purpose computing device)를 포함한다. 컴퓨터(810)의 컴포넌트는 처리 유닛(processing unit)(820)(이는 프로세서(129 또는 132)를 포함할 수 있음), 시스템 메모리(system memory)(830), 그리고 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 처리 유닛(820)에 커플링하는(couple) 시스템 버스(system bus)(821)를 포함할 수 있으나, 이에 한정되지 않는다. 시스템 버스(821)는 다양한 버스 아키텍처 중 임의의 것을 사용하는 메모리 버스(memory bus) 또는 메모리 제어기(memory controller), 주변기기 버스(peripheral bus) 및 로컬 버스(local bus)를 포함하는 몇몇의 유형의 버스 구조 중 임의의 것일 수 있다. 한정이 아니고, 예로서, 그러한 아키텍처는 산업 표준 아키텍처(Industry Standard Architecture: ISA) 버스, 마이크로 채널 아키텍처(Micro Channel Architecture: MCA) 버스, 향상된 ISA(Enhanced ISA: EISA) 버스, 비디오 전자 표준 협회(Video Electronics Standards Association: VESA) 로컬 버스, 그리고 메자닌 버스(Mezzanine bus)로도 알려진 주변 컴포넌트 상호연결(Peripheral Component Interconnect: PCI) 버스를 포함한다. 도 2에 관해 기술된 메모리 및 프로그램은 도 15의 대응하는 부분에서 사용될 수 있다.
컴퓨터(810)는 통상 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(810)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있고 휘발성(volatile) 및 비휘발성(nonvolatile) 매체들, 탈착가능(removable) 및 비탈착가능(non-removable) 매체들 모두를 포함한다. 한정이 아니고, 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 변조된 데이터 신호(modulated data signal) 또는 반송파(carrier wave)와는 상이하고 이를 포함하지 않는다. 그것은 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위해 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 탈착가능 및 비탈착가능 매체들을 모두 포함하는 하드웨어 저장 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리(flash memory) 또는 다른 메모리 기술, CD-ROM, 디지털 다기능 디스크(Digital Versatile Disk: DVD) 또는 다른 광학 디스크 스토리지(optical disk storage), 자기 카세트, 자기 테이프, 자기 디스크 스토리지(magnetic disk storage) 또는 다른 자기 저장 디바이스, 또는 원하는 정보를 저장하는 데에 사용될 수 있고 컴퓨터(810)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하나, 이에 한정되지 않는다. 통신 매체는 통상 전송 메커니즘(transport mechanism) 내에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터를 실체화하고 임의의 정보 전달 매체를 포함한다. 용어 "변조된 데이터 신호"는 그것의 특성 중 하나 이상이 신호 내에 정보를 인코딩하는 그러한 방식으로 설정되거나 변경된 신호를 의미한다. 한정이 아니고, 예로서, 통신 매체는 유선 네트워크 또는 직결(direct-wired) 연결과 같은 유선 매체와, 음향(acoustic), RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 위의 것들 중 임의의 것의 조합이 또한 컴퓨터 판독가능 매체의 범주 내에 포함되어야 한다.
시스템 메모리(830)는 판독 전용 메모리(Read Only Memory: ROM)(831) 및 랜덤 액세스 메모리(Random Access Memory: RAM)(832)와 같은 휘발성 및/또는 비휘발성 메모리의 형태로 된 컴퓨터 저장 매체를 포함한다. 컴퓨터(810) 내의 구성요소들 간에, 예를 들어 시동(start-up) 동안에, 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입력/출력 시스템(basic input/output system)(833)(BIOS)이 통산 ROM(831) 내에 저장된다. RAM(832)은 데이터 및/또는 프로그램 모듈(처리 유닛(820)에게 이는 즉시 액세스가능한 것이고/거나 처리 유닛(820)에 의해 현재 이에 대한 동작이 되고 있음)을 통상 포함한다. 한정이 아니고, 예로서, 도 15는 운영 체제(834), 애플리케이션 프로그램(835), 다른 프로그램 모듈(836) 및 프로그램 데이터(837)를 예시한다.
컴퓨터(810)는 다른 탈착가능/비탈착가능 휘발성/비휘발성 컴퓨터 저장 매체를 또한 포함할 수 있다. 단지 예로서, 도 15는 비탈착가능, 비휘발성 자기 매체로부터 판독하거나 이에 기록하는 하드 디스크 드라이브(841), 탈착가능, 비휘발성 자기 디스크(852)로부터 판독하거나 이에 기록하는 자기 디스크 드라이브(851), 그리고 CD ROM 또는 다른 광학 매체와 같은 탈착가능, 비휘발성 광학 디스크(856)로부터 판독하거나 이에 기록하는 광학 디스크 드라이브(855)를 예시한다. 예시적 운영 환경 내에서 사용될 수 있는 다른 탈착가능/비탈착가능, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래시 메모리 카드, 디지털 다기능 디스크, 디지털 비디오 테이프, 솔리드 스테이트(solid state) RAM, 솔리드 스테이트 ROM 및 유사한 것을 포함하나, 이에 한정되지 않는다. 하드 디스크 드라이브(841)는 인터페이스(840)과 같은 비탈착가능 메모리 인터페이스를 통해 시스템 버스(821)에 통상 연결되고, 자기 디스크 드라이브(851) 및 광학 디스크 드라이브(855)는 인터페이스(850)과 같은 탈착가능 메모리 인터페이스에 의해 시스템 버스(821)에 통상 연결된다.
대안적으로, 또는 추가로, 본 문서에 기술된 기능성은, 적어도 부분적으로, 하나 이상의 하드웨어 로직 컴포넌트(hardware logic component)에 의해 수행될 수 있다. 한정하지 않고 예컨대, 사용될 수 있는 예시적인 유형의 하드웨어 로직 컴포넌트는 필드 프로그램가능 게이트 어레이(Field-programmable Gate Array: FPGA), 프로그램 특정 집적 회로(Program-specific Integrated Circuit: ASIC), 프로그램 특정 표준 제품(Program-specific Standard Product: ASSP), 시스템 온 칩 시스템(System-On-a-Chip system: SOC), 복합 프로그램가능 로직 디바이스(Complex Programmable Logic Device: CPLD) 등등을 포함한다.
앞서 논의되고 도 15에 예시된 드라이브들과 그것들의 연관된 컴퓨터 저장 매체들은 컴퓨터(810)를 위해 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 다른 데이터의 저장을 제공한다. 도 15에서, 예컨대, 하드 디스크 드라이브(841)는 운영 체제(844), 애플리케이션 프로그램(845), 다른 프로그램 모듈(846) 및 프로그램 데이터(847)를 저장하는 것으로 예시된다. 이들 컴포넌트는 운영 체제(834), 애플리케이션 프로그램(835), 다른 프로그램 모듈(836) 및 프로그램 데이터(837)와 동일하거나 아니면 상이할 수 있음에 유의하시오. 운영 체제(844), 애플리케이션 프로그램(845), 다른 프로그램 모듈(846) 및 프로그램 데이터(847)에는, 최소한도로, 그것들이 상이한 사본들임을 보여주기 위해 상이한 번호가 주어진다.
사용자는 키보드(862), 마이크(863) 및 포인팅 디바이스(861), 예를 들어 마우스, 트랙볼 또는 터치패드와 같은 입력 디바이스를 통해 컴퓨터(810) 내에 명령 및 정보를 입력할 수 있다. 다른 입력 디바이스(도시되지 않음)는 조이스틱, 게임 패드(game pad), 위성 접시안테나(satellite dish), 스캐너(scanner) 또는 유사한 것을 포함할 수 있다. 이들 그리고 다른 입력 디바이스들은 흔히 시스템 버스에 커플링된 사용자 입력 인터페이스(860)를 통해 처리 유닛(820)에 연결되나, 다른 인터페이스 및 버스 구조, 예를 들어 병렬 포트, 게임 포트 또는 범용 직렬 버스(Universal Serial Bus: USB)에 의해 연결될 수 있다. 시각적 디스플레이(891) 또는 다른 유형의 디스플레이 디바이스가 또한 비디오 인터페이스(890)와 같은 인터페이스를 통하여 시스템 버스(821)에 연결된다. 모니터에 더하여, 컴퓨터는 출력 주변기기 인터페이스(output peripheral interface)(895)를 통해 연결될 수 있는 스피커(897) 및 프린터(896)와 같은 다른 주변 출력 디바이스를 또한 포함할 수 있다.
컴퓨터(810)는 네트워킹된 환경(networked environment) 내에서 원격 컴퓨터(880)와 같은 하나 이상의 원격 컴퓨터로의 논리적 연결을 사용하여 동작된다. 원격 컴퓨터(880)는 개인용 컴퓨터, 핸드헬드 디바이스, 서버, 라우터(router), 네트워크 PC, 피어 디바이스(peer device) 또는 다른 공통 네트워크 노드(common network node)일 수 있고, 컴퓨터(810)에 대해 전술된 구성요소 중 다수 또는 전부를 통상 포함한다. 도 15에 묘사된 논리적 연결은 로컬 영역 네트워크(Local Area Network: LAN)(871) 및 광역 네트워크(Wide Area Network: WAN)(873)를 포함하나, 다른 네트워크를 또한 포함할 수 있다. 그러한 네트워킹 환경은 사무실, 전사적(enterprise-wide) 컴퓨터 네트워크, 인트라넷 및 인터넷에서 흔한 것이다.
LAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(810)는 네트워크 인터페이스 또는 어댑터(870)를 통해 LAN(871)에 연결된다. WAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(810)는 인터넷과 같은 WAN(873) 상에서 통신을 수립하기 위한 모뎀(872) 또는 다른 수단을 통상 포함한다. 모뎀(872)은, 내부의 것이거나 외부의 것일 수 있는데, 사용자 입력 인터페이스(860) 또는 다른 적절한 메커니즘을 통하여 시스템 버스(821)에 연결될 수 있다. 네트워킹된 환경에서, 컴퓨터(810)에 관해 묘사된 프로그램 모듈 또는 그것의 부분은 원격 메모리 저장 디바이스 내에 저장될 수 있다. 한정이 아니고, 예로서, 도 15는 원격 애플리케이션 프로그램(885)을 원격 컴퓨터(880) 상에 상주하는 것으로 예시한다. 도시된 네트워크 연결은 예시적이며 컴퓨터들 간의 통신 링크를 수립하는 다른 수단이 사용될 수 있음이 인식될 것이다.
본 문서에 기술된 상이한 실시예들은 상이한 방식들로 조합될 수 있음에 또한 유의하여야 한다. 즉, 하나 이상의 실시예의 부분들은 하나 이상의 다른 실시예의 부분들과 조합될 수 있다. 이 모두가 본 문서에서 고려된다.
구조적 특징 및/또는 방법론적 행위에 특정한 말로 대상물(subject matter)이 기술되었으나, 부기된 청구항에 정의된 대상물은 반드시 전술된 특정 특징 또는 행위에 한정되는 것은 아님이 이해되어야 한다. 오히려, 전술된 특정 특징 및 행위는 청구항을 구현하는 예시적 형태로서 개시된다.

Claims (17)

  1. 모델 요소를 이용하여 모델링된 유형(type)을 갖는 컴퓨터 시스템에 대한 맞춤화를 시각화하는 컴퓨터 구현 방법으로서,
    현재의 확장 모델(extension model)로서 시각화될 선택된 모델 요소를 나타내는 사용자 선택 입력의 표시를 개발 및 맞춤화 시스템에서 수신하는 단계- 상기 현재의 확장 모델은 기반 모델(base model)로부터 상기 선택된 모델 요소의 맞춤화를 모델링함 -와,
    상기 선택된 모델 요소에 대응하는 상기 기반 모델을 시각적으로 식별하고, 상기 기반 모델과는 별개로, 상기 현재의 확장 모델 내에서 이루어진 상기 선택된 모델 요소에 대한 맞춤화를 시각적으로 식별하는 상기 선택된 모델 요소의 통합된 뷰를 디스플레이할 것을 디스플레이 장치에게 지시하는 단계를 포함하되,
    상기 현재의 확장 모델은 상기 통합된 뷰로부터 맞춤화가능하고, 상기 기반 모델은 상기 통합된 뷰로부터 열람가능(viewable)하며, 상기 통합된 뷰는 상기 선택된 모델 요소에서의 아이템을 나타내는 부모 노드 및 자식 노드를 갖는 계층적 트리 뷰(hierarchical tree view)를 포함하고, 각각의 노드는 자신이 속하는 모델을 나타내는 시각적 모델 표시를 가지며, 상기 통합된 뷰는 상기 현재의 확장 모델에서 모델링된 것 이외의, 다른 확장 모델에 속하는 상기 선택된 모델 요소에 대한 다른 맞춤화를 상기 기반 모델과는 별개로 또한 상기 현재의 확장 모델에서의 맞춤화와는 별개로 식별함으로써 그리고 상기 계층적 트리 뷰 내의 각각의 노드가 맞춤화되었던 모델을 식별하는 시각적 맞춤화 모델 표시를 디스플레이함으로써, 상기 다른 맞춤화를 식별하는
    컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 통합된 뷰를 디스플레이할 것을 상기 디스플레이 장치에게 지시하는 단계는
    상기 계층적 트리 뷰 내의 주어진 노드가 상기 계층적 트리 뷰 내의 다른 노드에 대해 재순서화(re-ordered)되도록 맞춤화되었음을 식별하는 시각적 재순서화 표시(visual re-ordering indication)를 디스플레이할 것을 상기 디스플레이 장치에게 지시하는 단계를 포함하는
    컴퓨터 구현 방법.
  3. 제1항에 있어서,
    상기 통합된 뷰를 디스플레이할 것을 상기 디스플레이 장치에게 지시하는 단계는
    상기 계층적 트리 뷰 내의 주어진 노드가 상기 계층적 트리 뷰 내에서 다른 부모 노드를 갖게 재순서화되도록 맞춤화되었음을 식별하는 시각적 부모재설정된 표시(visual re-parenting indication)를 디스플레이할 것을 상기 디스플레이 장치에게 지시하는 단계를 포함하는
    컴퓨터 구현 방법.
  4. 제1항에 있어서,
    상기 통합된 뷰를 디스플레이할 것을 상기 디스플레이 장치에게 지시하는 단계는
    상기 선택된 모델 요소를 이의 대응하는 확장 모델에서 맞춤화하기 위한 사용자 상호작용, 및 기반 모델에서 기반 모델 요소를 맞춤화하기 위한 상기 기반 모델과의 사용자 상호작용이, 다른 확장 모델 및 상기 다른 확장 모델 내의 모델 요소에 걸쳐서도 동일하도록 사용자 입력 메커니즘과 함께 상기 통합된 뷰를 디스플레이할 것을 상기 디스플레이 장치에게 지시하는 단계를 포함하는
    컴퓨터 구현 방법.
  5. 제1항에 있어서,
    상기 맞춤화는 모델의 계층구조 내에 반영되고,
    상기 통합된 뷰를 디스플레이할 것을 상기 디스플레이 장치에게 지시하는 단계는
    상기 계층적 트리 뷰 내의 노드들이 상기 현재의 확장 모델 내에 있거나 또는 상기 모델의 계층구조 내에서 상기 현재의 확장 모델보다 높은 계층의 모델에 있는 경우 상기 노드들을 맞춤화가능한 것으로서 디스플레이할 것을 상기 디스플레이 장치에게 지시하는 단계를 포함하는
    컴퓨터 구현 방법.
  6. 제1항에 있어서,
    상기 사용자가 모델 요소를 기존 프로젝트내에서 맞춤화할지 또는 새로운 프로젝트에서 맞춤화할지를 나타내는 사용자 입력의 표시를 수신하는 단계를 더 포함하는
    컴퓨터 구현 방법.
  7. 제1항에 있어서,
    사용자 선택 입력의 표시를 수신하는 단계는 테이블, 폼(form), 메뉴, 열거(enumeration), 메소드, 및 다른 모델 요소 중 하나를 포함하는 모델 요소를 선택하는 상기 사용자 선택 입력의 표시를 수신하는 단계를 포함하는
    컴퓨터 구현 방법.
  8. 개발 시스템으로서,
    사용자 모델 입력의 표시를 수신하고 컴퓨터 시스템에서의 유형(type)을 모델링하는 제1 모델을 생성하는 모델 생성기- 상기 제1 모델은 제1 모델 요소를 포함하고, 상기 모델 생성기는 모델 맞춤화 입력의 표시를 수신하고 상기 제1 모델 요소에 대한 맞춤화를 모델링하는 맞춤화 모델을 생성함 -와,
    시각화될 모델 요소를 상기 제1 모델 요소로부터 선택하는 사용자 요소 선택의 표시를 수신하는 시각화 컴포넌트- 상기 시각화 컴포넌트는, 상기 제1 모델을 식별하고 또한 상기 제1 모델과는 별개로 상기 생성된 맞춤화 모델 내에서 행해진 상기 선택된 모델 요소에 대한 맞춤화를 시각적으로 나타내는 상기 선택된 모델 요소의 통합된 뷰를 디스플레이할 것을 디스플레이 장치에게 지시하고, 상기 생성된 맞춤화 모델은 상기 통합된 뷰로부터 맞춤화가능하고 상기 제1 모델은 상기 통합된 뷰로부터 열람가능하며, 상기 통합된 뷰는 상기 선택된 모델 요소에서의 아이템을 나타내는 부모 노드 및 자식 노드를 갖는 계층적 트리 뷰를 포함하고, 각각의 노드는 자신이 속하는 모델을 나타내는 시각적 모델 표시를 가지며, 상기 통합된 뷰는 상기 생성된 맞춤화 모델 이외의 하나 이상의 다른 맞춤화 모델에서 행해진 상기 선택된 모델 요소에 대한 다른 맞춤화를 상기 제1 모델과는 별개로 그리고 상기 생성된 맞춤화 모델에서의 맞춤화와는 별개로 식별함으로써 상기 다른 맞춤화를 식별하고, 상기 통합된 뷰는 상기 계층적 트리 뷰 내의 각 노드가 맞춤화되었던 모델을 식별하는 시각적 맞춤화 모델 표시를 포함함 -와,
    상기 개발 시스템의 기능부이며 상기 모델 생성기 및 상기 시각화 컴포넌트에 의해 활성화되어 모델 생성을 가능하게 하고 상기 디스플레이 장치로 하여금 상기 선택된 모델의 상기 통합된 뷰를 디스플레하게 하는 컴퓨터 프로세서를 포함하는
    개발 시스템.
  9. 제8항에 있어서,
    상기 시각화 컴포넌트는 상기 선택된 모델 요소의 어느 부분이 상기 다른 맞춤화 모델 중 어느 것에 의해 모델링되는지를 식별하기 위해 상기 통합된 뷰를 디스플레이할 것을 상기 디스플레이 장치에게 지시하는
    개발 시스템.
  10. 제9항에 있어서,
    상기 시각화 컴포넌트는, 상기 맞춤화 모델에 의해 모델링된 상기 선택된 모델 요소의 부분들이 상기 통합된 뷰로부터 상기 모델 생성기에 의해 맞춤화가능하도록, 그리고 상기 다른 맞춤화 모델 내에 맞춤화된 상기 선택된 모델 요소의 부분들이 상기 통합된 뷰 내에서 판독만 되도록, 상기 통합된 뷰를 디스플레이할 것을 상기 디스플레이 장치에게 지시하는
    개발 시스템.
  11. 제10항에 있어서,
    상기 시각화 컴포넌트는, 상기 제1 모델에 의해 모델링된 상기 선택된 모델 요소의 부분들이 상기 통합된 뷰 내에서 판독만 되도록 상기 통합된 뷰를 디스플레이할 것을 상기 디스플레이 장치에게 지시하는
    개발 시스템.
  12. 제8항에 있어서,
    상기 계층적 트리 뷰는 부모 노드 및 자식 노드를 디스플레이하되, 주어진 자식 노드는 주어진 부모 노드에 종속적이며, 상기 계층적 트리 뷰는 어느 노드가 상기 제1 모델에 의해 모델링되는지, 어느 노드가 상기 맞춤화 모델에 의해 모델링되는지 및 어느 노드가 상기 다른 맞춤화 모델에 의해 모델링되는지를 식별하는
    개발 시스템.
  13. 제12항에 있어서,
    상기 시각화 컴포넌트는, 상기 계층적 트리 뷰 내에서 재순서화된 노드에 인접하여 시각적 재순서화 표시를 디스플레이할 것을 상기 디스플레이 장치에게 지시하는
    개발 시스템.
  14. 제8항에 있어서,
    상기 컴퓨터 시스템은 비즈니스 시스템을 포함하는
    개발 시스템.
  15. 컴퓨터 실행가능 명령어를 저장하는 컴퓨터 판독가능 저장 매체로서,
    상기 컴퓨터 실행가능 명령어는 컴퓨터에 의해 실행되는 경우 상기 컴퓨터로 하여금 방법을 수행하게 하고, 상기 방법은
    현재의 확장 모델로서 시각화될 선택된 모델 요소를 나타내는 사용자 선택 입력의 표시를 수신하는 단계와,
    상기 선택된 모델 요소에 대응하는 기반 모델을 식별하고, 상기 기반 모델과는 별개로, 상기 현재의 확장 모델에서의 맞춤화를 식별하는 상기 선택된 모델 요소의 통합된 뷰를 디스플레이할 것을 디스플레이 장치에게 지시하는 단계를 포함하되,
    상기 현재의 확장 모델은 상기 통합된 뷰로부터 맞춤화가능하고 상기 기반 모델은 상기 통합된 뷰로부터 열람가능하며, 상기 통합된 뷰는 상기 선택된 모델 요소에서의 아이템을 나타내는 부모 노드 및 자식 노드를 갖는 계층적 트리 뷰를 포함하고, 각각의 노드는 자신이 속하는 모델을 나타내는 시각적 모델 표시를 가지며, 상기 통합된 뷰는 상기 현재의 확장 모델에서 모델링된 것 이외의, 다른 확장 모델에 속하는 상기 선택된 모델 요소에 대한 모든 다른 맞춤화를 상기 기반 모델과는 별개로 또한 상기 현재의 확장 모델에서의 맞춤화와는 별개로 식별함으로써 그리고 상기 계층적 트리 뷰 내의 각각의 노드가 맞춤화되었던 모델을 식별하는 시각적 맞춤화 모델 표시를 디스플레이함으로써, 상기 모든 다른 맞춤화를 식별하는
    컴퓨터 판독가능 저장 매체.
  16. 제15항에 있어서,
    상기 통합된 뷰를 디스플레이할 것을 상기 디스플레이 장치에게 지시하는 단계는
    상기 현재의 확장 모델에 의해 모델링되는 상기 선택된 모델 요소의 부분들을 맞춤화가능한 것으로 디스플레이하고 상기 기반 모델에 의해 모델링된 상기 선택된 모델의 부분들을 판독 전용인 것으로 디스플레이하도록 상기 디스플레이 장치에게 지시하는 단계를 포함하는
    컴퓨터 판독가능 저장 매체.
  17. 제15항에 있어서,
    상기 통합된 뷰는, 상기 현재의 확장 모델에 의해 모델링되는 상기 선택된 모델 요소의 부분들이 상기 통합된 뷰로부터 맞춤화가능하고 상기 다른 확장 모델에서 맞춤화된 상기 선택된 모델 요소의 부분들은 상기 통합된 뷰에서 판독 전용이도록, 디스플레이되는
    컴퓨터 판독가능 저장 매체.
KR1020167009998A 2013-10-18 2014-10-14 기반 모델 생성, 맞춤화 및 모델 시각화를 위한 통합된 환경 KR102174766B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/058,077 US9280319B2 (en) 2013-10-18 2013-10-18 Integrated visualization for modeled customizations
US14/058,077 2013-10-18
PCT/US2014/060320 WO2015057593A1 (en) 2013-10-18 2014-10-14 Integrated environment for base model generation, customization and model visualisation

Publications (2)

Publication Number Publication Date
KR20160074490A KR20160074490A (ko) 2016-06-28
KR102174766B1 true KR102174766B1 (ko) 2020-11-05

Family

ID=51894196

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167009998A KR102174766B1 (ko) 2013-10-18 2014-10-14 기반 모델 생성, 맞춤화 및 모델 시각화를 위한 통합된 환경

Country Status (5)

Country Link
US (1) US9280319B2 (ko)
EP (1) EP3058459A1 (ko)
KR (1) KR102174766B1 (ko)
CN (1) CN105830019B (ko)
WO (1) WO2015057593A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9736032B2 (en) * 2014-05-30 2017-08-15 Microsoft Technology Licensing, Llc Pattern-based validation, constraint and generation of hierarchical metadata
US9959114B2 (en) 2015-03-16 2018-05-01 Microsoft Technology Licensing, Llc Representation of customizable types in a development environment
US9772822B2 (en) * 2015-03-16 2017-09-26 Microsoft Technology Licensing, Llc Visualization framework for customizable types in a development environment
US10078501B2 (en) 2015-03-16 2018-09-18 Microsoft Technology Licensing, Llc Domain specific language modeling framework in a development environment
US10067755B2 (en) 2015-03-16 2018-09-04 Microsoft Technology Licensing, Llc Model driven customization framework
US10353879B2 (en) * 2015-11-18 2019-07-16 Sap Se Database catalog with metadata extensions
JP6572844B2 (ja) * 2016-07-28 2019-09-11 京セラドキュメントソリューションズ株式会社 用語管理システム、画像形成装置及び用語管理方法
CN107292511A (zh) * 2017-06-20 2017-10-24 成都海地云信息技术有限公司 基于云计算和大数据技术的企业资源管理方法及***
US10606586B2 (en) 2017-08-01 2020-03-31 Accenture Global Solutions Limited Application architecture generation
CN108399081B (zh) * 2018-02-09 2021-01-26 广州洋葱时尚集团有限公司 一种MyBatis逆向工程生成器
CN111124387B (zh) * 2018-11-01 2023-08-15 百度在线网络技术(北京)有限公司 机器学习平台的建模***、方法、计算机设备及存储介质
US11973655B2 (en) 2021-03-05 2024-04-30 VMware LLC SDL cache for O-RAN
US20240205809A1 (en) * 2022-12-19 2024-06-20 VMware LLC Multi-component configurations in a ran system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050132276A1 (en) 2003-12-15 2005-06-16 Microsoft Corporation Schema editor extensions

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5652884A (en) 1994-11-14 1997-07-29 Object Technology Licensing Corp. Method and apparatus for dynamic update of an existing object in an object editor
AU2035600A (en) 1998-11-30 2000-06-19 Siebel Systems, Inc. Development tool, method, and system for client server appications
US6601234B1 (en) 1999-08-31 2003-07-29 Accenture Llp Attribute dictionary in a business logic services environment
GB0011426D0 (en) 2000-05-11 2000-06-28 Charteris Limited A method for transforming documents written in different XML-based languages
US7089256B2 (en) * 2000-07-11 2006-08-08 Knowledge Dynamics, Inc. Universal data editor
US20090254801A1 (en) * 2001-05-14 2009-10-08 The Mathworks, Inc. Model navigation
US7076762B2 (en) 2002-03-22 2006-07-11 Sun Microsystems, Inc. Design and redesign of enterprise applications
US7941542B2 (en) 2002-09-06 2011-05-10 Oracle International Corporation Methods and apparatus for maintaining application execution over an intermittent network connection
US7080089B2 (en) 2003-03-12 2006-07-18 Microsoft Corporation Customization of process logic in a software system
US7577934B2 (en) 2003-03-12 2009-08-18 Microsoft Corporation Framework for modeling and providing runtime behavior for business software applications
US20050102612A1 (en) 2003-11-06 2005-05-12 International Business Machines Corporation Web-enabled XML editor
US7451432B2 (en) 2004-10-01 2008-11-11 Microsoft Corporation Transformation of componentized and extensible workflow to a declarative format
US8392873B2 (en) 2005-01-26 2013-03-05 Tti Inventions C Llc Methods and apparatus for implementing model-based software solution development and integrated change management
US20060241961A1 (en) 2005-04-22 2006-10-26 Igor Tsyganskiy Methods of optimizing legacy application layer control structure using refactoring
US7895572B2 (en) 2005-08-15 2011-02-22 Sap Aktiengesellschaft Systems and methods for enterprise software management
US7515972B2 (en) * 2005-10-28 2009-04-07 Honeywell International Inc. System and method for dynamically creating and editing function block types in a process control environment
US8156469B2 (en) 2005-12-29 2012-04-10 Sap Ag Single composition of pattern modules
US8181150B2 (en) * 2006-05-12 2012-05-15 The Mathworks, Inc. System and method for synchronized workflow management
US8762936B2 (en) 2006-06-09 2014-06-24 Microsoft Corporation Dynamic design-time extensions support in an integrated development environment
US7945596B2 (en) 2006-06-20 2011-05-17 Microsoft Corproation Programming model for customized data objects
CN101004680B (zh) * 2006-11-23 2011-06-22 福建顶点软件股份有限公司 一种以直接对象模型定义为核心的灵活快捷的软件开发方法及支持***
US8132147B2 (en) * 2007-05-29 2012-03-06 Sap Ag Semantic interpretation of software models for generating user interfaces
US20090064090A1 (en) * 2007-09-05 2009-03-05 Microsoft Corporation Merged view of application customizations
US8255875B2 (en) * 2008-09-30 2012-08-28 Rockwell Automation Technologies, Inc. Application builder for industrial automation
US8341593B2 (en) 2008-10-23 2012-12-25 Sap Ag Integrated development framework for composite applications
US8572566B2 (en) 2010-05-11 2013-10-29 Smartshift Gmbh Systems and methods for analyzing changes in application code from a previous instance of the application code
US8776016B2 (en) * 2009-10-29 2014-07-08 Red Hat, Inc. Integration of structured profiling data with source data in the eclipse development environment
US8856737B2 (en) 2009-11-18 2014-10-07 Oracle International Corporation Techniques for displaying customizations for composite applications
US20110209049A1 (en) 2010-02-23 2011-08-25 Microsoft Corporation Data binding for a web-based visual representation of a structured data solution
US9158503B2 (en) * 2013-10-08 2015-10-13 King Fahd University Of Petroleum And Minerals UML model integration and refactoring method
KR101628314B1 (ko) 2014-04-16 2016-06-08 주식회사 제이티엘소프트 애플리케이션의 구조와 메소드 호출 시퀀스를 시각적으로 표현하는 비주얼 스프링 개발 환경 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050132276A1 (en) 2003-12-15 2005-06-16 Microsoft Corporation Schema editor extensions

Also Published As

Publication number Publication date
US9280319B2 (en) 2016-03-08
US20150113500A1 (en) 2015-04-23
CN105830019A (zh) 2016-08-03
EP3058459A1 (en) 2016-08-24
WO2015057593A1 (en) 2015-04-23
KR20160074490A (ko) 2016-06-28
CN105830019B (zh) 2019-04-09

Similar Documents

Publication Publication Date Title
KR102174766B1 (ko) 기반 모델 생성, 맞춤화 및 모델 시각화를 위한 통합된 환경
US9342220B2 (en) Process modeling and interface
US10078501B2 (en) Domain specific language modeling framework in a development environment
US20160274867A1 (en) Visualization framework for customizable types in a development environment
US9690689B2 (en) Test case generation in a development environment
US11093693B2 (en) Hierarchical navigation control
US20150160835A1 (en) Pluggable Layouts for Data Visualization Components
US20160259534A1 (en) Visual process configuration interface for integrated programming interface actions
EP2909764B1 (en) Portal for submitting business metadata for services
US20140279823A1 (en) Lifecycle product analysis
KR20170016362A (ko) 컴파일 동안 표시 메타데이터를 브라우저 렌더링 가능 포맷으로 변환하는 기법
US20150106152A1 (en) Continuously tracing issues through the lifecycle phases of a project
US20150113498A1 (en) Modeling customizations to a computer system without modifying base elements
US20150113499A1 (en) Runtime support for modeled customizations
US20150227865A1 (en) Configuration-based regulatory reporting using system-independent domain models
US20160328219A1 (en) Mobile application development collaboration system
US10540065B2 (en) Metadata driven dialogs
US20150347352A1 (en) Form preview in a development environment
US20150248227A1 (en) Configurable reusable controls
US20160026373A1 (en) Actionable steps within a process flow
US10372844B2 (en) Expressing extensions with customized design time behavior
US20150088971A1 (en) Using a process representation to achieve client and server extensible processes

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right