비쥬얼이미지
제품&서비스
ubiFrame
ubiHub
ubiHR
ubiAccount
ubiSaasMall

ubiframe

처음으로 > 제품&서비스 > ubiFrame

GeneralService ubiframe

Dream of software-as-Service Paradise

ubiFrame란?

ubiFrame은 오픈소스를 기반으로 어디서나 접근 가능한(ubique) 기업용 업무 솔루션 개발 프레임워크입니다.
Spring자바를 중심으로 하여 다양한 용도의 프레임워크를 하나로 조합하고, 거기에 GeneralService만의 노하우를 추가하였습니다.

ubiFrame의 탄생 배경

  1. 너무 많은 오픈소스 프로젝트 : 현재 오픈소스 프로젝트가 너무 많은 관계로 어떤 오픈소스를 적용해서 개발하는 것이 효과적인지 파악하고 진행하기는 쉽지 않습니다. 또한 오픈소스 제품간 조합시 문제점 및 통합에 따른 효율적인 코딩 패턴을 찾아내는 것도 쉽지 않습니다.
  2. 다양해지는 클라이언트 환경 : 과거에는 PC에서만 작동되는 Web프로그램으로 고객의 욕구를 충족시킬 수 있었지만, 현재는 다양한 유무선 기기에서 작동되는 Web 프로그램을 원합니다. 경우에 따라서는 iPhone이나 Android에서 작동하는 App을 원하는 고객들도 있습니다. 이러한 모든 디바이스에서의 작동에 대해서 연구하고 테스트하고, 그 결과를 제품에 반영하기란 너무도 어렵습니다.
  3. 지속적으로 일관된 개발 패턴 필요 : 적절한 오픈소스 프로젝트를 찾았고, 다양한 클라이언트 Device를 지원하는 방법까지도 알아냈다고 하더라도 지속적인 유지보수와 늘어가는 모듈들을 일관된 코딩 패턴으로 관리한다는 것은 쉽지 않습니다. 또한 추후에 추가되는 프레임워크들과의 통합이라고 하는 문제를 지속적으로 직면하게 됩니다.
  4. 위에 언급한 것 이외에도 더 많은 무수한 복잡한 상황들이 Software개발과 유지보수 과정에서 만나게 됩니다. 이러한 문제들을 중소 소프트웨어 개별 기업들이 각자 해쳐나가기에는 너무나도 험난합니다. 이에 ubiFrame은 그에 대한 해답과 정보를 공유하고자 만들어졌습니다.

간략 구성도 (System Architecture)

WAS (Web Application Server)

ubiDevTool

자바를 이용한 시스템 개발에서 일반적인 경우 Class Diagram을 설계하고, 그에 따라 Database를 구성하고 이를 기반으로 실체를 구현하는 소스 코드를 작성하는 과정을 거치게 됩니다. 일반적인 기업 업무 프로그램들은 CRUD라고 하는 가장 간단한 작업 단위들의 조합과 부가적인 기능들을 가미하면서 하나씩 완성해 나가게 됩니다. 이에 설계부터 기본적인 CRUD 및 기본적인 화면구성까지는 개발자의 창의성이나 능력과 별개로 소모적인 작업인 경우가 많습니다. 이를 해소하기 위해 ubiDevTool은 MDA(Model Driven Archtecture) 방법론과 도메인 아키텍쳐 모델링 패턴을 적용하여 설계로 부터 부분 또는 완성된 기초코드를 제공합니다. 일반적으로 설계작업에서는 설계자들이 익숙한 UML툴을 사용하기 때문에 ubiDevTool은 UML문서를 참조하지 않고 UML툴에서 만들어 내주는 Domain Class 파일을 참조하여 코드를 생성합니다.

Design (설계)
도메인 아키텍쳐 모델링 패턴에 따라 수행되는 작업
Hibernate XML Mapping파일 생성
Hibernate XML Mapping파일 등록
Dao 인터페이스/클래스 파일 생성
Dao Spring Bean 등록
Service 인터페이스/클래스 파일 생성
Service Spring Bean 등록
SpringMVC Controller 생성
ExtJs를 이용한 클라이언용 UI html/javascript파일 생성
Domain Class 파일을 수정하여 Dao 기본 작동 기능을 Method로 추가
도메인 클래스 파일 생성
Account.java/Address.java/Person.java
ubiCodeGen (Plugin/Standard)
IDE (개발툴)
도메인 클래스 파일로부터 도메인 아키텍쳐 모델링 패턴을 적용한 기초 소스 코드 자동 생성
추후 필요한 부분 가공 추가로 코드 완성