컴퓨터 지원 소프트웨어 공학
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
컴퓨터 지원 소프트웨어 공학(CASE)은 컴퓨터 시스템을 활용하여 소프트웨어 개발 과정을 자동화하고 효율성을 높이는 기술과 도구를 의미한다. 1960년대 후반 ISDOS 프로젝트를 시작으로 CASE 도구는 발전해 왔으며, 1990년대 초 전성기를 맞이했으나 메인프레임의 쇠퇴와 함께 유연하고 특화된 기능을 제공하는 형태로 변화했다. CASE 도구는 상위 및 하위 CASE로 분류되며, 소스 코드 생성, UML 에디터, 리팩토링 툴 등의 기능을 제공한다. CASE 도구는 개발 생산성 향상, 소프트웨어 재사용성 증대 등의 장점을 가지지만, 부적절한 표준화, 비현실적인 기대, 부적절한 교육, 프로세스 제어 부족 등의 위험 요인도 존재한다. 현대에는 애자일, DevOps 등의 개발 방법론과 클라우드 컴퓨팅, 마이크로서비스 등의 기술을 지원하는 형태로 발전하고 있다.
더 읽어볼만한 페이지
- 컴퓨터 지원 소프트웨어 공학 도구 - IBM 데브옵스 코드 클리어케이스
- 소프트웨어 개발 - 유스 케이스
유스 케이스는 시스템과 액터 간 상호작용을 통해 시스템 목표 달성에 기여하는 동작들을 나타내는 요구 사항 캡처, 모델링, 명세 기법으로, 객체 지향 소프트웨어 공학에서 기능 요구 사항을 캡처하는 데 중요한 역할을 하며 다양한 분야에서 활용된다. - 소프트웨어 개발 - 사용자 경험 디자인
사용자 경험 디자인은 인간 공학에 기반하여 제품 또는 서비스와 사용자 간의 상호작용을 설계하는 분야이며, 사용자 조사, 인터랙션 디자인, 사용성 테스트 등을 통해 효율적이고 만족스러운 경험을 제공하는 것을 목표로 한다. - 데이터 관리 - 데이터 센터
데이터센터는 컴퓨터 시스템 및 관련 장비와 지원 인프라를 수용하는 시설로, 기술 발전에 따라 규모와 중요성이 확대되었으며, 에너지 효율과 보안을 고려하여 설계 및 운영되고, TIA-942 표준에 따른 티어 분류와 친환경 기술 도입이 이루어지고 있다. - 데이터 관리 - 정보 아키텍처
정보 아키텍처는 정보 시스템 및 정보 기술 분야에서 공유 정보 환경의 구조적 설계를 의미하며, 웹사이트, 소프트웨어 등의 구성과 레이블링을 포함하여 검색 용이성과 사용성을 지원하고, 도서관정보학에 기원을 두고 있다.
컴퓨터 지원 소프트웨어 공학 | |
---|---|
컴퓨터 지원 소프트웨어 공학 | |
개요 | |
역사 | |
유형 | |
주요 기능 | |
장점 | |
단점 | |
관련 기술 | |
미래 전망 | |
2. 역사
컴퓨터 지원 소프트웨어 공학(CASE) 도구의 역사는 1968년 미시간 대학교에서 시작된 정보 시스템 설계 및 최적화 시스템(ISDOS) 프로젝트에서 비롯되었다. 이 프로젝트는 시스템 분석 및 개발 과정의 자동화에 대한 관심을 불러일으켰다. 다니엘 타이흐로의 PSL/PSA(Problem Statement Language/Problem Statement Analyzer) 도구는 CASE 도구의 초기 형태 중 하나로 평가된다.[3]
데이터 사전이 데이터베이스로 논리적으로 확장되면서, 보유하는 메타데이터의 범위를 넓혀 응용 프로그램의 속성을 사전에 보관하고 런타임에 사용할 수 있게 되었다. 이 "액티브 사전"은 현대적인 모델 기반 엔지니어링 기능의 전조가 되었지만, 메타데이터를 그래픽으로 표현하지는 않았다. 분석가의 메타데이터를 보관하는 사전의 개념과 이러한 데이터의 그래픽 표현을 연결함으로써 초기 버전의 CASE 도구가 등장했다.[4]
2. 1. 초기 CASE 도구 (1980년대)
미시간 주사우스필드의 Nastec Corporation은 1982년에 자사의 그래픽 및 텍스트 통합 편집기 GraphiText를 지칭하는 용어로 CASE라는 단어를 만들었다. GraphiText는 마이크로 컴퓨터에서 최초로 하이퍼링크를 통해 텍스트 문자열을 상호 참조하는 기능을 구현했는데, 이는 현재 웹 페이지 링크의 초기 형태 중 하나였다. GraphiText의 후속 제품인 DesignAid는 소프트웨어 및 시스템 설계도를 논리적, 의미론적으로 평가하고 데이터 사전을 생성하는 소프트웨어였다.[4]1980년대 초, Nastec Corporation의 GraphiText와 DesignAid, Index Technology의 Excelerator 등이 등장하면서 CASE 도구 시장이 본격적으로 형성되기 시작했다. 초기 CASE 도구는 주로 소프트웨어 설계를 그래픽으로 표현하고 분석하는 기능을 제공했다. DesignAid는 프로그램과 데이터를 모두 다루는 통합 도구였으며, Transform Logic Corporation을 인수하여 얻은 프로그램 생성 도구인 Transform을 통해 코드 생성 기능도 제공했다.[4]
DesignAid는 컨버전트 테크놀로지스(Convergent Technologies)와 이후 버로스 Ngen 네트워크 마이크로컴퓨터에서 실행되었던 반면, Index Technology는 IBM PC/AT 플랫폼에서 엑셀러레이터(Excelerator)를 출시했다. 출시 당시와 초기 몇 년 동안 IBM 플랫폼은 네트워킹 또는 중앙 집중식 데이터베이스를 지원하지 않았지만, IBM의 매력은 강력했고 엑셀러레이터는 두각을 나타냈다.[5]
1984년, Nastec 사는 시스템 개발 방법론과 프로젝트 관리 시스템을 결합한 LifeCycle Manager를 개발했다.[4]
2. 2. CASE 도구의 발전과 통합 (1990년대)
1990년대 초, CASE 도구는 전성기를 맞이했다. 1990년 1월 PC 매거진에 따르면, 100개가 넘는 회사들이 거의 200개에 달하는 서로 다른 CASE 도구를 제공하고 있었다. 당시 IBM은 IBM DB2를 메인프레임 컴퓨터 및 OS/2에서 사용하여 IBM의 소프트웨어 저장소를 중심으로 하는 소프트웨어 벤더들의 동맹인 AD/Cycle을 제안했다.:''응용 프로그램 개발 도구는 IBM, 벤더 및 고객 자체에서 제공될 수 있습니다. IBM은 Bachman Information Systems, Index Technology Corporation 및 KnowledgeWare와 관계를 맺고 있으며, 이러한 벤더의 선택된 제품은 IBM 보완 마케팅 프로그램을 통해 마케팅되어 완전한 수명 주기 범위를 달성하는 데 도움이 되는 제품을 제공할 것입니다.''.[7]
IBM은 다음과 같은 협력 소프트웨어 기업들과 함께 AD/Cycle을 발표했는데, 이는 소프트웨어의 라이프사이클 전체를 커버하는 도구들을 집약한 것이었다.
기업 | 주요 CASE 도구 |
---|---|
KnowledgeWare | IEW, ADW |
텍사스 인스트루먼츠 | IEF |
Nastec 사 | DesignAid, LifeCycle Manager |
메인프레임의 쇠퇴와 함께 AD/Cycle 및 빅 CASE 도구는 사라졌고, 오늘날의 주류 CASE 도구 시장을 열었다. 1990년대 초 CASE 시장의 많은 선두 주자들이 CA에 인수되었으며, 여기에는 IEW, IEF, ADW, Cayenne 및 Learmonth & Burchett Management Systems(LBMS)가 포함되었다.
CASE 도구의 진화를 이끈 또 다른 추세는 객체 지향 방법론 및 도구의 부상이었다. 다양한 도구 벤더의 대부분은 객체 지향 방법론 및 도구에 대한 지원을 추가했다. 또한 객체 지향 방식을 지원하기 위해 처음부터 설계된 새로운 제품이 등장했다. 앤더슨은 Foundation의 대안으로 프로젝트 Eagle을 개발했다. 객체 지향 개발의 몇몇 선구자들은 각자 고유의 방법론과 CASE 도구 세트를 개발했다: 제이콥슨, 럼바우, 그레이디 부치 등. 결국 이러한 다양한 도구 세트와 방법은 객체 관리 그룹 (OMG)이 주도하는 표준을 통해 통합되었다. OMG의 통합 모델링 언어 (UML)는 현재 객체 지향 모델링에 대한 업계 표준으로 널리 받아들여지고 있다.
2. 3. 메인프레임의 쇠퇴와 CASE 시장의 변화
메인프레임의 쇠퇴와 함께, IBM의 AD/Cycle과 같은 대규모 통합 CASE 도구는 사라졌다. 이로 인해 보다 유연하고 특화된 기능을 제공하는 CASE 도구들이 주류를 이루는 현재의 CASE 도구 시장이 열렸다. 1990년대 초 CASE 시장을 주도했던 IEW, IEF, ADW, Cayenne, Learmonth & Burchett Management Systems(LBMS) 등의 많은 제품들은 CA에 인수되었다.[7]2. 4. 한국에서의 CASE 도구 도입
한국에서는 1990년대 초, IBM이 AD/Cycle을 발표하면서 대기업 및 공공기관을 중심으로 CASE 도구가 도입되기 시작했다. AD/Cycle은 소프트웨어의 라이프사이클 전체를 다루는 도구들의 집합이었다. 여기에는 다음과 같은 협력 소프트웨어 기업들이 참여했다.[1]- KnowledgeWare 사: IEW, ADW
- 텍사스 인스트루먼츠 사: IEF
- Nastec 사: DesignAid, LifeCycle Manager
초기 CASE 도구는 주로 대규모 시스템 개발 프로젝트에서 사용되었으며, 개발 생산성 향상과 품질 개선에 기여했다. 메인프레임의 쇠퇴와 함께 AD/Cycle 등으로 대표되는 CASE 도구에서 오늘날 주류 CASE 도구로 시장이 전환되었다. 1990년대 초 CASE 시장을 점유했던 제품의 대부분은 CA가 인수했다(IEW, IEF, ADW, Cayenne, LBMS 등).[1]
3. CASE 도구의 분류
CASE 도구는 지원하는 기능과 개발 단계에 따라 다양하게 분류된다. 크게 기능에 따른 분류와 통합 수준에 따른 분류로 나눌 수 있다.
기능에 따른 분류는 지원하는 개발 단계에 따라 상위(Upper) CASE와 하위(Lower) CASE로 나뉜다.[12] 상위 CASE는 주로 시스템 분석 및 설계 단계를 지원하고, 하위 CASE는 구현, 테스트, 유지보수 단계를 지원한다.[8]
통합 수준에 따른 분류는 도구(Tools), 워크벤치(Workbenches), 환경(Environments)으로 나뉜다.[9] 도구는 특정 개발 작업을 지원하는 독립적인 도구이며, 워크벤치는 특정 개발 활동을 지원하기 위해 통합된 도구 집합이다. 환경은 전체 소프트웨어 개발 프로세스를 지원하는 통합된 도구 및 작업대의 모음이다.[9]
일반적으로 CASE 도구라고 칭하는 것은 분석 및 설계 도구를 의미하며, 설계 정보로부터 소프트웨어 제품의 일부 또는 전부를 자동 생성하는 기능을 갖는 경우가 많다.
3. 1. 기능에 따른 분류
상위 CASE 도구는 주로 시스템 분석 및 설계 단계를 지원하며, 그래픽 모델링, 요구사항 관리, 문서 생성 등의 기능을 제공한다.[8] 요구분석부터 시스템 디자인 초기 단계까지 자동화하는 것을 목표로 한다.[12]하위 CASE 도구는 주로 구현, 테스트, 유지보수 단계를 지원하며, 코드 생성, 디버깅, 테스트 자동화, 형상 관리 등의 기능을 제공한다.[8] 디자인 단계에서 소스 코딩 단계까지 자동화하는 것을 목표로 한다.[12]
일반적으로 CASE 도구는 분석 및 설계 도구를 의미하며, 설계 정보로부터 소프트웨어 제품의 일부 또는 전부를 자동 생성하는 기능을 갖는 경우가 많다.
3. 2. 통합 수준에 따른 분류
CASE영어 도구는 통합 수준에 따라 다음과 같이 분류할 수 있다.- 도구 (Tools): 특정 개발 작업을 지원하는 독립적인 도구이다. 컴파일러, 디버거, 텍스트 편집기 등이 이에 해당한다.[3]
- 워크벤치 (Workbenches): 특정 개발 활동을 지원하기 위해 통합된 도구 집합이다. 마이크로소프트의 비주얼 베이직은 GUI 빌더, 코드 편집기, 디버거를 통합한 워크벤치이다.[9]
- 환경 (Environments): 전체 소프트웨어 개발 프로세스를 지원하는 통합된 도구 및 작업대 모음으로, 다음과 같이 세분화된다.[9]
- 툴킷(Toolkits): 느슨하게 결합된 도구 모음으로, 운영 체제 작업대를 기반으로 한다.
- 4세대(4GL): 특정 언어를 중심으로 설계된 환경으로, 특정 유형의 응용 프로그램에 초점을 맞춘다.
- 언어 중심(Language-centered): 단일 객체 지향 언어를 기반으로 하는 환경으로, 강력한 디버깅 및 그래픽 기능을 제공한다.
- 통합(Integrated): 전체 라이프 사이클을 다루고, 통합 데이터베이스 저장소를 제공한다.
- 프로세스 중심(Process-centered): 소프트웨어 프로세스 자체를 공식화하고 제어하는 환경이다.
작업대와 환경의 구분은 다소 유연하다. 예를 들어 비주얼 베이직은 프로그래밍 작업대이면서 4GL 환경으로 간주될 수 있다. 공유 저장소, 공통 언어, 방법론, 도메인 특수성 등이 작업대와 환경을 구분하는 기준이 된다.[9]
4. CASE 도구의 주요 기능
CASE 도구는 소프트웨어 개발 생명 주기의 특정 작업을 지원하며, 다음과 같은 주요 기능을 제공한다.
- 비즈니스 및 분석 모델링: 그래픽 모델링 도구를 사용하여 E/R 모델링, 객체 모델링 등을 수행한다.
- 개발: 생명 주기의 설계 및 구축 단계를 지원하며, 디버깅 환경을 제공한다. (예: IISE LKO)
- 검증 및 유효성 검사: 정확성, 성능 등을 위해 코드와 명세서를 분석한다.
- 형상 관리: 저장소 객체 및 파일의 체크인 및 체크아웃을 제어한다. (예: SCCS, IISE)
- 측정 및 측정: 복잡성, 모듈성(예: "go to" 없음), 성능 등을 위해 코드를 분석한다.
- 프로젝트 관리: 프로젝트 계획, 작업 할당, 일정 관리를 관리한다.
CASE 도구는 일반적으로 상위 CASE와 하위 CASE로 구분된다.
- 상위 CASE 도구: 비즈니스 및 분석 모델링을 지원하며, ER 다이어그램, 데이터 흐름도, 구조도, 의사 결정 트리, 의사 결정 표 등의 다이어그램 언어를 지원한다.
- 하위 CASE 도구: 물리적 설계, 디버깅, 구축, 테스트, 구성 요소 통합, 유지 관리 및 리버스 엔지니어링과 같은 개발 활동을 지원한다.
상위 및 하위 CASE 도구는 소프트웨어 개발 생명 주기의 모든 단계에 걸쳐 적용된다.[8]
현재 CASE 도구로 여겨지는 소프트웨어의 기능은 다음과 같다.
CASE 도구는 코드뿐만 아니라, SSADM과 같은 설계 수법에 기초한 다양한 출력도 생성한다.
- 데이터베이스 스키마
- 데이터 흐름도
- 개체 관계도
- 프로그램 사양
- 사용자용 문서
5. CASE 도구의 장점
CASE 도구는 다음과 같은 장점을 제공한다.
- 구조적인 것들을 그대로 활용할 수 있다.
- 요구 정보를 추출하고 분석하는 것을 도와준다.
- 원형(Prototype)이나 프로그램의 개발 및 유지가 용이하다.
- 개발자들이 반복적인 업무에서 벗어나 창의적 업무에 몰두하게 해 준다.
- 소프트웨어의 점진적 개발이 가능하다.
- 소프트웨어의 재활용성을 제고시켜 준다.
- 모든 것들이 그림으로 표현되어 있기 때문에 개발자들 간에 정보시스템의 공유가 쉽다.
6. CASE 도구 도입 시 위험 요인
- 부적절한 표준화: 조직은 일반적으로 특정 요구 사항에 맞게 방법론과 도구를 맞춤화하고 채택해야 한다. 이를 위해서는 서로 다른 기술과 방법을 통합하는 데 상당한 노력이 필요할 수 있다. 예를 들어, UML 표준 채택 전에는 야콥슨(Ivar Jacobson), 그레이디 부치(Grady Booch), 제임스 럼바우(James Rumbaugh)의 추종자들 사이에서 객체 지향 모델 설계를 위한 다이어그램 규칙과 방법이 매우 달랐다.[7]
- 비현실적인 기대: 특히 고가의 도구 세트를 판매하는 공급업체를 포함한 CASE 기술 지지자들은 새로운 접근 방식이 모든 문제를 해결하는 만병통치약이 될 것이라는 기대를 과장하는 경우가 많다. 실제로 그러한 기술은 없으며, 조직이 비현실적인 기대를 가지고 CASE에 접근하면 필연적으로 실망하게 된다.[7]
- 부적절한 교육: 모든 새로운 기술과 마찬가지로, CASE 도구 사용 방법을 교육하고 숙달하는 데는 시간이 필요하다. 실무자에게 교육을 위한 충분한 시간이 주어지지 않거나, 새로운 기술을 처음 시도하는 프로젝트 자체가 매우 중요하고 위험성이 높다면 CASE 프로젝트는 실패할 수 있다.[7]
- 부적절한 프로세스 제어: CASE는 혁신적인 방식으로 새로운 유형의 도구를 활용할 수 있는 상당한 기능을 제공한다. 그러나 적절한 프로세스 지침과 제어가 없다면 이러한 새로운 기능은 심각한 문제를 야기할 수 있다.[7]
7. 현대 CASE 도구의 활용
현대에는 다음과 같은 기능을 가진 소프트웨어가 일반적으로 CASE 툴로 여겨진다.[1]
CASE 툴은 코드뿐만 아니라, SSADM과 같은 다양한 시스템 분석 및 설계 수법에 기초한 출력도 생성한다. 예를 들어 다음과 같은 것들이 있다.[1]
- 데이터베이스 스키마
- 데이터 흐름도
- 개체 관계도
- 프로그램 사양
- 사용자용 문서
CASE 툴은 다음과 같이 두 종류로 분류하기도 한다.[1]
- '''상류 CASE 툴''': 소프트웨어의 분석・설계 공정에 관한 툴 (그림 작성 툴, 보고서 작성 툴, 분석 툴 등)
- '''하류 CASE 툴''': 데이터베이스 스키마 생성 툴, 프로그램 생성 툴, 구현 툴, 테스트 툴, 구성 관리 등
참조
[1]
논문
"Selecting and effectively using a computer aided software engineering tool"
Annual Westinghouse computer symposium
1989-11-06
[2]
간행물
System Requirements Engineerinuality software which will perform effectively.
1995
[3]
논문
PSL/PSA a computer-aided technique for structured documentation and analysis of information processing systems
http://dl.acm.org/ci[...]
IEEE Computer Society Press
1976
[4]
서적
Database Systems: Design, Implementation, & Management
https://books.google[...]
Cengage Learning
2014-02-04
[5]
서적
PC Mag
https://books.google[...]
Ziff Davis, Inc.
1990-01-30
[6]
뉴스
Can XP Projects Grow?
https://books.google[...]
Computerworld
2001-07-23
[7]
간행물
"AD/Cycle strategy and architecture"
IBM Systems Journal
1990
[8]
서적
Software Engineering: Tools, Principles and Techniques
Umesh Publications
[9]
논문
A classification of CASE technology
http://www2.computer[...]
1993-12
[10]
웹사이트
Computer Aided Software Engineering
http://ithandbook.ff[...]
FFIEC IT Examination Handbook InfoBase
2012-03-03
[11]
서적
Management Information Systems 12/E: Managing the Digital Firm P.529
Pearson Education Asia
[12]
서적
유비쿼터스 시대의 정보기술과 경영정보시스템 P.236
대경
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com