에펠 스튜디오
EiffelStudio에펠 스튜디오는 에펠 소프트웨어가 개발하고 배포하는 에펠 프로그래밍 언어의 개발 환경입니다.
Effel Studio에는 컴파일러, 인터프리터, 디버거, 브라우저, 메트릭스 도구, 프로파일러, 다이어그램 및 코드 검사 도구라는 단일 사용자 인터페이스로 통합된 도구의 조합이 포함되어 있습니다.사용자 인터페이스는 많은 특정 UI 패러다임, 특히 효과적인 브라우징을 위한 "픽 앤 드롭"을 기반으로 합니다.
Effel Studio는 Windows, Linux, Mac OS, Solaris, VMS, Rasberry Pi 등 다양한 플랫폼에서 사용할 수 있습니다.소스는 GPL로 사용할 수 있으며 다른 상용 라이센스도 사용할 수 있습니다.
상태, 라이선스 및 커뮤니티 프로세스
Effel Studio는 오픈 소스 개발로, 다음 릴리스의 베타 버전을 정기적으로 이용할 수 있습니다.
에펠 커뮤니티는 개발에 적극적으로 참여하고 있습니다.공식 웹사이트는 프로젝트와 자원이 나열되어 있는 Eiffel.org입니다.소스 코드 베이스는 보통 Subversion 또는 Git을 통해 체크아웃할 수 있습니다.토론 포럼 등도 이용할 수 있습니다.
컴파일 테크놀로지
Effel Studio는 멜팅 아이스(상표로서 Effel Software에 의해 주장됨)로 알려진 특정 컴파일 기술을 사용하여 컴파일을 마지막 컴파일 이후 변경된 요소에 대한 해석과 통합하여 매우 빠른 작업(전체 프로그램의 크기가 아닌 변경 크기에 비례하는 재컴파일 시간)을 수행합니다.이러한 「녹은」프로그램을 제공할 수 있습니다만, 통상, 릴리스 전에 「최종화」의 순서를 실행합니다.최종화는 고도로 최적화된 형태의 컴파일로, 시간이 더 걸리지만 최적화된 실행 파일을 생성합니다.
EiffelStudio의 인터프리터 부분은 바이트 코드 지향 가상 시스템에 의존합니다.컴파일러는 C 또는 를 생성합니다.NET CIL(Common Intermediate Language)
왕복 엔지니어링
Eiffel Studio의 다이어그램 도구는 소프트웨어 구조를 그래픽으로 보여줍니다.둘 다 사용할 수 있습니다.
- 그래픽 설명에서 소프트웨어를 제작하기 위한 설계 도구로서의 전진 엔지니어링.
- 리버스 엔지니어링 - 기존 프로그램 텍스트의 그래픽 표현을 자동으로 생성합니다.
이 툴은 완전한 "왕복 엔지니어링"을 위해 어느 스타일에서나 이루어진 변경의 무결성을 보장합니다.
그래픽 표기법은 BON(비즈니스 객체 표기법, 참고 문헌 참조) 또는 UML입니다.기본값은 BON입니다.
사용자 인터페이스 패러다임
Eiffel Studio에서는 클래스 및 기능의 다양한 뷰를 표시할 수 있습니다.텍스트 뷰(풀 프로그램 텍스트), 계약 뷰(인터페이스만, 계약 포함), 플랫 뷰(상속된 기능을 포함), 클라이언트(특정 클래스 또는 기능을 사용하는 모든 클래스 및 기능), 상속 이력(기능의 업/다운)상속 구조) 및 기타 많은 정보를 제공합니다.
Effel Studio는 "개발 객체", "페블" 및 "구멍"에 기반한 독창적인 사용자 인터페이스 패러다임에 의존합니다.Eiffel의 객체 지향과 마찬가지로 개발자는 클래스, 기능, 중단점(디버깅용), 클러스터(클래스 그룹) 및 기타 개발 개체를 나타내는 추상화를 처리합니다.Eiffel Studio의 개발 객체는 인터페이스에 나타나는 곳과 시각적 표현(객체의 이름, 시각적 기호 등)에 관계없이 선택(선택)할 수 있습니다.
개발 개체를 선택하려면 해당 개체를 마우스 오른쪽 버튼으로 클릭하면 됩니다.그런 다음 커서가 클래스의 경우 "버블"(타원), 중단점의 경우 점, 피쳐의 경우 십자 등 객체의 유형에 대응하는 특수 기호 또는 조약돌로 변경됩니다.커서를 이동하면 원래 개체에서 현재 위치로 선이 표시됩니다.그런 다음 전체 모양(클래스 구멍, 브레이크 포인트 구멍, 피처 구멍 등)이 같은 구멍을 나타내는 아이콘 또는 호환되는 유형의 창 중 하나에 페블을 놓을 수 있습니다.툴에 조약돌을 떨어뜨리면 툴 전체가 "선택"된 개발 객체로 재타깃됩니다.예를 들어, 클래스 도구는 선택한 클래스를 선택한 뷰(텍스트, 계약, 플랫 등)에 표시합니다.이것은 "픽 앤 드롭" 패러다임으로 알려져 있습니다.
여러 뷰와 Pick-and-Drop을 조합하여 복잡한 시스템을 빠르게 탐색할 수 있으며, 상속 하에서 기능 확장(이름 변경, 재정의, unexions)을 수행할 수 있습니다.
유닛 및 통합 테스트
Effel Studio에는 Effel Studio AutoTest[1]라고 불리는 통합 테스트 시설이 포함되어 있습니다.이것에 의해, 개발자는 심플하고 고도의 유닛과 통합 테스트 스위트를 구축할 수 있습니다.Effel Studio AutoTest 기능을 통해 개발자는 기능 수준(유닛 테스트 등)에서 전체 클래스 시스템(통합 등)까지 Effel 클래스 코드를 실행하고 테스트할 수 있습니다.이와 같이 이 코드를 실행하면 실행된 특징 및 속성의 계약도 실행됩니다.따라서 Effel Studio AutoTest는 계약에 의한 설계 조건의 "테스트" 또는 전제조건을 실행하기 위한 수단입니다.따라서 단위 및 통합 테스트는 어설션 또는 시험 신탁을 통해 클래스 텍스트 계약에서 사양으로 이미 코드화된 것을 재시험할 필요가 없다.
Eiffel Studio AutoTest는 사용자에게 3가지 테스트 케이스 작성 방법을 제공합니다.
먼저 수동으로 작성된 테스트의 경우 EiffelStudio AutoTest는 테스트용 프레임워크를 포함하는 테스트 클래스를 만듭니다.사용자는 테스트 코드 자체만 제공하면 됩니다.
둘째, Effel Studio AutoTest는 실행 시 애플리케이션 장애에 따라 새로운 테스트를 작성하는 방법을 제공합니다.이런 종류의 테스트를 추출이라고 합니다.타깃 시스템 실행 중 예기치 않은 장애가 발생했을 경우 Eiff Studio AutoTest는 디버거에서 사용할 수 있는 정보를 바탕으로 장애의 원인인 상태와 콜을 재현하는 새로운 테스트를 작성할 수 있습니다.문제가 해결되면 추출된 테스트를 문제의 회귀에 대한 회피책으로 테스트 세트에 추가할 수 있습니다.
테스트를 작성하는 세 번째 방법은 생성된 테스트라고 불리는 테스트를 생성합니다.이 시나리오에서는 사용자가 Eiffel Studio AutoTest에 테스트를 생성하는 클래스와 테스트 생성을 제어하는 데 사용되는 추가 정보를 제공합니다.다음으로 툴은 랜덤화된 인수값을 사용하여 타깃클래스의 루틴 호출을 시작합니다.Effel Studio AutoTest는 고유한 사후 조건 위반 또는 클래스 불변 위반에 대해 실패한 콜을 재현하는 단일 새 테스트를 생성합니다.
역사
Effel Studio는 1986년에 출시된 Interactive Software Engineering Inc.(Effel Software의 전신)에 의해 Effel의 첫 번째 구현에 뿌리를 두고 있습니다.현재의 테크놀로지의 기원은 1990년에 Eiffel 3 버전의 언어 설계와 관련하여 시작된 "EiffelBench"로 거슬러 올라가는 것으로 보인다(Eiffel: Eiffel: 언어, 참고 문헌 참조).EiffelBench는 2001년경 "EiffelStudio"로 이름이 바뀌었습니다.또한 이 시기는 환경이 Unix의 기원을 넘어 Windows 및 기타 플랫폼을 대상으로 한 시기이기도 합니다.
2001년 이후의 메이저릴리즈와 각각의 신기능은 다음과 같습니다.
- 5.0, 2001년 7월: 'Eiffel Studio'에 적합한 첫 번째 버전, 그래픽 디자인을 위한 이전 'Eiffel Case' 도구를 Eiffel Studio의 다이어그램 도구 형태로 Eiffel Bench에 통합)
- 5.1, 2001년 12월:지원하는 첫 번째 버전NET(프레스 릴리즈(PDF).[2]를 출시하기 전에는 "Eiffel#"이라고 불렸습니다.
- 5.2, 2002년 11월: GUI 설계, 확장 디버깅, C와 C++ 통합의 새로운 메커니즘, 다이어그램 툴의 보다 나은 라운드 트립 기능(프레스 릴리즈).
- 5.3, 2003년 3월: 에펠에서는 증분 컴파일러 테크놀로지를 이용할 수 있습니다.NET. Effel2Java Java 인터페이스, EffelStore(관계형 데이터베이스 인터페이스)를 사용할 수 있게 되었습니다.NET, 첫 Mac OS 버전, 성능 향상(보도 자료).
- 5.4, 2003년 11월: 새로운 변환 메커니즘, 주요 런타임 성능 향상(특히 에이전트), 주요 컴파일 속도 향상, 멀티스레딩 지원 개선, 주요 에펠빌드 확장, ECMA Effel 위원회가 정의한 새로운 메커니즘의 첫 번째 지원, 외부 조건 및 사후 조건 지원l (예를 들어 C) 루틴, 오버로드된 콜에 투과적인 방법.Effel로부터의 NET 루틴(보도 자료).
- 5.5, 2004년 9월: 도킹, 향상된 디버거, 새로운 ECMA 언어 기능(언론 발표).
- 5.6, 2005년 8월: 확장 다이어그램 도구(UML 지원, 강제 유도 그래프, 더 나은 라운드 트립), Microsoft COM 컴포넌트 생성을 위한 새로운 EiffelCOM 마법사, 더 나은 클래스 완료, 더 빠른 속도.NET 코드 생성(프레스 릴리즈).
- 5.7, 2006년 10월: ISO/ECMA Effel 추가(인라인 에이전트, 새로운 "확장" 의미론, 명명된 튜플, Unicode 지원), 리팩터링 기능, 프로젝트 시스템을 구성하는 새로운 방법, 메트릭스(언론 발표).
- 6.0, 2007년 6월: ISO/ECMA Effel 추가(복수 제약의 생성, 8진수 및 이진수 표기), 새로운 탭 에디터, 사용자가 워크스페이스를 정의할 수 있는 새로운 도킹 기능, 선택 및 드롭 외에 컨텍스트 메뉴도 이용할 수 있습니다(프레스 릴리즈).
- 6.1, 2007년 11월: (보도자료).
- 6.2, 2008년 5월: (보도자료).
- 6.3, 2008년 12월: (보도자료).
- 6.4, 2009년 6월: (보도자료).
- 6.5, 2009년 11월: (보도자료).
- 6.6, 2010년 5월: (보도자료).
- 6.7, 2010년 11월: (보도자료).
- 6.8, 2011년 5월SPOUP, Simple Concurrent Object-Oriented Programming을 지원하는 설비의 최초 구현(보도자료)을 포함합니다.
- 7.0, 2011년 11월SPOOK 병렬 개발 설비의 성능 및 기능 향상, 리본 인터페이스 구조에 대한 GUI 라이브러리 및 도구 지원, 보이드 세이프 소프트웨어 개발 지원 개선 및 기타 많은 개선 사항이 포함됩니다.
- 7.1, 2012년 6월SCOUP 프로세서 가비지 컬렉션을 포함합니다.애플리케이션 코드를 요건 문서 등 적절한 외부 리소스와 링크하는 에펠 정보 시스템의 여러 개선점
- 7.2, 2013년 2월
- 7.3, 2013년 7월
- 2013년 12월 13일이 릴리스는 새로운 버전 번호 부여 방식을 사용하는 시작을 나타냅니다. (릴리스 노트)(프레스 릴리스)
- 2014년 5월 14일새로운 에펠 인스펙터 툴(고화질 유지에 도움이 되는 정적 분석 툴)이 포함되어 있습니다.(보도자료).
- 2015년 1월 15일새로운 SPOCK 런타임은 상당한 성능 향상을 가져옵니다.(보도 자료)
- 2015년 8월 15일웹 서버 애플리케이션을 구축하기 위한 Eiffel Web 솔루션 개선.(보도자료).
- 2015년 12월 15일언어 향상(새 에이전트 유형 표기법).(보도자료).
- 2016년 5월 16일메인터넌스 릴리즈(보도자료).
- 2017년 1월 17일지원되는 컴파일 옵션을 문서화하고 적용하기 위한 라이브러리 기능 메커니즘.코드 템플릿 (17.01 릴리즈)
- 2017년 5월 17일사용되지 않는 기능을 보다 효율적으로 검출할 수 있습니다.로컬 변수 픽앤드롭 (17.05 릴리즈)
- 2018년 7월 18일클래스 기능에 대한 완화된 규칙입니다.후속 괄호 표현식리모트 프로젝트 타깃(18.07 릴리즈).
- 2018년 12월 18일모든 컨테이너는 루프의 반복 형식으로 사용할 수 있으며 선형 컨테이너는 다른 컨테이너에서 초기화할 수 있습니다(18.11 릴리스).
- 2019년 5월 19일Unicode 연산자, HiDPI, 데드 '클래스' 제거, 컴파일러 최적화(19.05 릴리스).
- 2020년 5월 20일멀티브런치 표현식, 콘텐츠에 근거한 타입 없는 매니페스트 문자열 평가(20.05 릴리즈).
- 2020년 11월 20일클래스가 완료되면 WrapC.(20.11 릴리즈).
- 2021년 11월 21일Linux, Unix의 GTK3로 이행하여 MAC OS의 존재감을 높이고 새로운 소스 제어 도구(21.11 릴리즈).
코드아나라이저
코드 아나라이저(전 인스펙터 에펠)는 Effel Software에서 출시한 자동화된 에펠 소프트웨어 테스트 및 정적 분석 프로그램으로, 원래는 ETH [1]취리히의 마스터스 논문 프로젝트의 결과로 제작되었습니다.
코드 아나라이저는 규칙 기반의 정적 코드 분석 도구로 EiffelStudio 내의 임베디드 모드와 명령줄 모두에서 작동합니다.Effel 컴파일러에 의해 생성된 추상 구문 트리(AST)를 사용하여 컨트롤 흐름 그래프(CFG)를 생성합니다.이 그래프는 툴의 코드 모듈에 의해 계산됩니다.그 후 CFG와 AST는 정의된 다수의 규칙에 의해 참조됩니다.규칙 위반은 오류, 경고 또는 힌트로 사용자에게 보고됩니다.각 규칙 위반은 위반된 규칙을 정확하게 보고합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Zurfluh, Stefan; Tschannen, Julian; Meyer, Bertrand (April 1, 2014), Rule-Based Code Analysis (PDF), ETH Zurich, retrieved May 25, 2014
참고 문헌
- 에펠 소프트웨어:에펠 스튜디오 매뉴얼온라인 https://www.eiffel.org/documentation
- 베르트랑 마이어: 에펠: Language, Frentice Hall, 1991 (제2차 개정판,
- 베르트랑 마이어:객체 지향 환경: Prentice Hall, Princes and Applications, 1995 (원래 EiffelBench의 기초가 되는 원칙 설명).
- Kim Walden과 Jean-Marc Nerson:이음새 없는 객체 지향 소프트웨어 아키텍처, 프렌티스 홀, 1995(BON 메서드와 표기법에 대한 설명 포함.