엄플
Umple| 패러다임 | 객체 지향의 |
|---|---|
| 설계자 | 오타와 대학교 |
| 개발자 | 오타와 대학 전기공학과 컴퓨터공학과 크루즈 그룹(Timothy Lethbridge |
| 처음 등장한 | 2008 |
| 안정된 릴리스 | 1.31.1 / 2021년 8월 18일 ( |
| 타이핑 분야 | 정적인 |
| 플랫폼 | JVM |
| 면허증. | MIT 라이선스 |
| 파일 이름 확장자 | .ump |
| 웹 사이트 | www |
| 영향을 받다 | |
| Java, C++, UML, Ruby, PHP | |
Umple은 클래스 다이어그램과 상태 다이어그램을 사용하여 객체 지향 프로그래밍과 모델링을 위한 언어입니다.Umple이라는 이름은 "UML", "ample", "Simple"[1]의 합성어로, UML 기능으로 프로그래밍 언어를 확장하기 위한 풍부한 기능을 제공하도록 설계되어 있습니다.
역사와 철학
엄플의 디자인은 2008년 오타와 대학에서 시작되었다.Umple은 오픈소스로 개발되어 2011년 초에 Google Code로, 2015년에 GitHub로 개발되었습니다.
Umple은 부분적으로 모델링 커뮤니티에서 관찰된 특정 문제를 해결하기 위해 개발되었습니다.[2] 가장 구체적으로, 이것은 모델링과 프로그래밍을 정렬하도록 설계되었으며, 프로그래머 커뮤니티에서 흔히 볼 수 있는 모델링에 대한 억제를 극복하도록 돕기 위한 것이었다.또한 대규모, 고가 또는 불완전한 도구를 사용해야 하는 필요성으로 인해 발생하는 모델 중심 개발의 어려움을 줄이기 위한 의도도 있었습니다.한 가지 설계 목표는 프로그래밍 언어에 모델링 구성을 추가하여 프로그래머가 자연스럽게 생각하는 방식으로 모델링할 수 있도록 하는 것입니다.
특징과 기능
Umple은 클래스 다이어그램 및 상태 [2]다이어그램에서 발견된 많은 UML 모델링 엔티티를 텍스트 방식으로 표현하기 위해 사용할 수 있습니다.Umple은 다양한 프로그래밍 언어로 이러한 코드를 생성할 수 있습니다.현재 Umple은 Java, C++, PHP를 타겟 프로그래밍 언어로 완전히 지원하며, 기능적이지만 Ruby에 대한 지원은 다소 불완전합니다.
Umple은 또한 싱글톤 패턴, 키, 불변성, 믹스인, 애스펙트 지향 코드 주입 등 UML과 관련이 없는 다양한 기능을 포함하고 있습니다.
Umple이 지원하는 클래스 다이어그램 표기법에는 클래스, 인터페이스, 속성, 연관성, 일반화 및 연산이 포함됩니다.Umple이 속성을 위해 생성하는 코드에는 생성자의 코드, 'get' 메서드 및 'set' 메서드가 포함됩니다.생성되는 코드는 속성에 불변성 등의 속성이 있는지, 기본값이 있는지, 키의 일부인지에 따라 달라집니다.
Umple은 연관성을 조작, 쿼리 및 탐색하기 위한 많은 메서드를 생성합니다.UML 다중성의 모든 조합을 지원하고 참조 무결성을 적용합니다.
Umple은 임의 딥 중첩 상태, 동시 영역, 시작, 종료 및 전환 작업 및 상태에서의 장시간 작업 등 UML 상태 기계 표기법의 대부분을 지원합니다.[3] 스테이트 머신은 이벤트에 의해 값이 제어되는 열거형 속성으로 취급됩니다.상태 머신에 인코딩된 이벤트는 사용자가 작성한 메서드이거나 Umple 컴파일러에 의해 생성된 메서드일 수 있습니다.이벤트는 메서드를 호출함으로써 트리거됩니다.이벤트는 여러 다른 상태 머신에서 (가드에 따라) 전환을 트리거할 수 있습니다.프로그램은 하나 이상의 스테이트 머신에 대해 완전히 작성될 수 있기 때문에 Umple은 오토마타 기반의 프로그래밍을 가능하게 합니다.
메서드 본문은 타깃 프로그래밍 언어 중 하나로 작성됩니다.스테이트 머신의 액션이나 가드등의 다른 필수 코드나, 애스펙트 지향의 방법으로 삽입되는 코드도 마찬가지입니다.이러한 코드는 Umple이 생성하는 코드의 많은 메서드 전에 삽입할 수 있습니다.예를 들어 속성 및 관련성을 설정하거나 취득하기 전 또는 후에 삽입할 수 있습니다.
UML 구조에 대한 Umple 표기법은 지원되는 대상 프로그래밍 언어에 포함될 수 있습니다.이렇게 하면 Umple은 프리프로세서로 볼 수 있습니다.Umple 컴파일러는 UML 구조를 대상 언어의 코드로 확장합니다.타깃 언어의 코드는 Umple 컴파일러에 직접 전달할 수 있습니다.Umple 고유의 표기가 발견되지 않으면 타깃 언어 코드는 Umple 컴파일러에 의해 변경되지 않고 출력됩니다.
Umple은 명령 코드의 대상 언어 중 하나와 결합되어 완전한 프로그래밍 언어로 인식 및 사용될 수 있습니다.따라서 Umple plus Java는 Java의 확장으로 볼 수 있습니다.
또는 명령 코드와 Umple 고유의 개념이 생략된 경우 Umple은 UML의 큰 서브셋을 순수 텍스트 방식으로 표현하는 방법으로 볼 수 있다.지원되는 프로그래밍 언어의 코드는 UML이 액션 언어 코드를 추가하는 것과 같은 방법으로 추가할 수 있습니다.
면허증.
Umple은 MIT 스타일의 라이선스로 라이선스됩니다.
예
다음은 Umple(Java 확장자)로 작성된 Hello 월드 프로그램입니다.[4]
학급 안녕 세계 { 일반의 정적인 무효 주된(스트링 [ ] args) { 시스템..나가..인쇄('헬로 월드'); } } Umple은 다른 프로그래밍 언어를 확장하기 때문에 이 예는 Java와 똑같이 보입니다.
이름이 붙은 파일에 저장된 프로그램HelloWorld.ump명령줄에서 컴파일할 수 있습니다.
$ java - jar umple.jar HelloWorld.ump
실행 방법:
$ Java HelloWorld
다음으로 임베디드 Java 메서드와 어소시에이션 [4]선언을 나타내는 완전한 실행 파일의 예를 나타냅니다.
학급 사람인 { 이름.; // 속성, 기본 문자열 스트링 문자열 () { 돌아가다(getName()); } } 학급 학생입니다 { A 사람인; } 학급 멘토 { A 사람인; } 협회. { 0..1 멘토 -- * 학생입니다; } 학급 사람인 { 일반의 정적인 무효 주된(스트링 [ ] args) { 멘토 m = 신규 멘토('닉 더 멘토); 학생입니다 s = 신규 학생입니다("Tom The Student"); s.set Settor(m); 시스템..나가..인쇄('의 멘토' + s + "는 " 입니다. + s.getMentor()); 시스템..나가..인쇄('학생들' + m + "는 " 입니다. + m.학생을 취득하다()); } } 다음 예시는 상태 머신에 Open, Closing, Closed, Open 및 HalfOpen을 설정하고 어떤 상태에서 다른 상태로 이행하는 다양한 이벤트를 나타냅니다.[5]
클래스 GarageDoor 명탐정 코난{buttonOrObstacle ->, 여는 것이;reachBottom ->, 폐쇄,}을 닫으면{지위{오픈{buttonOrObstacle ->, 5초.}{buttonOrObstacle ->, 여는 것.}을 여는 것{buttonOrObstacle ->, HalfOpen, reachTop ->;}. HalfOpen{buttonOrStackle -> 오픈, } } } }
실제에서의 편리한 사용
Umple 컴파일러의 첫 번째 버전은 Java, Antlr 및 Jet(Java Emitter Templates)로 작성되었지만, 부트스트랩 프로세스에서 Java 코드는 [6]Umplification이라고 불리는 기술에 따라 Umple로 변환되었습니다.Antlr과 Jet도 나중에 원주민 Umple로 개조되었다.따라서 Umple은 이제 완전히 그 자체로 작성되었습니다. 즉, Umple은 자체 호스팅되며 자체 최대의 테스트 케이스 역할을 합니다.
Umple과 UmpleOnline은 교실에서 UML과 모델링을 가르치기 위해 여러 강사에 의해 사용되어 왔습니다.한 연구에서 그것은 UML을 가르치는 과정을 가속화하는 데 도움을 주고 또한 [7]학생들의 성적을 향상시키는 것으로 밝혀졌다.
도구들
Umple은 Jar 파일로 제공되므로 명령줄에서 실행할 수 있으며 Eclipse 플러그인으로도 사용할 수 있습니다.
Umple Online이라는 Umple용 온라인 툴도 있습니다.이 툴은 개발자가 UML 클래스 다이어그램을 그리거나 Umple 코드를 편집하거나 둘 다 사용하여 Umple 시스템을 만들 수 있습니다.UmpleOnline으로 작성된 Umple 모델은 클라우드에 저장됩니다.현재 UmpleOnline은 단일 입력 파일로 구성된 Umple 프로그램만 지원합니다.
코드 외에도 Umple의 툴은 Umple [9]모델에 기반한 사용자 인터페이스를 포함하여 다양한 유형의 출력을 생성할 수 있습니다.
「 」를 참조해 주세요.
레퍼런스
- ^ "Official project website".
- ^ a b Forward, Andrew (2010). "The Convergence of Modeling and Programming: Facilitating the Representation of Attributes and Associations in the Umple Model-Oriented Programming Language". PhD Thesis, University of Ottawa.
- ^ Badreddin, Omar (2012). "A Manifestation of Model-Code Duality: Facilitating the Representation of State Machines in the Umple Model-Oriented Programming Language". PhD Thesis, University of Ottawa.
- ^ a b "Hello World Examples". Umple User Manual. 2013.
- ^ "Basic State Machines". Umple User Manual. 2013.
- ^ Lethbridge, Timothy C.; Forward, Andrew; Badreddin, Omar (2010). "Umplification: Refactoring to Incrementally Add Abstraction to a Program". 2010 17th Working Conference on Reverse Engineering. pp. 220–224. doi:10.1109/wcre.2010.32. ISBN 978-1-4244-8911-4. S2CID 14808702.
- ^ Lethbridge, Timothy C.; Mussbacher, Gunter; Forward, Andrew; Badreddin, Omar (2011). "Teaching UML using umple: Applying model-oriented programming in the classroom". 2011 24th IEEE-CS Conference on Software Engineering Education and Training (CSEE&T). pp. 421–428. doi:10.1109/cseet.2011.5876118. ISBN 978-1-4577-0349-2. S2CID 15975894.
- ^ CRuiSE group, University of Ottawa. "Umple Online".
- ^ Forward, Andrew; Badreddin, Omar; Lethbridge, Timothy C.; Solano, Julian (July 2012). "Model-driven rapid prototyping with Umple". Software: Practice and Experience. 42 (7): 781–797. doi:10.1002/spe.1155. S2CID 36046547.