2010. 5. 9. 22:57

CASE(Computer-Aided Software Engineering)
 
CASE의 정의
l        SDLC의 전체 과정을 연계시키고, 자동화하고, 통합시키는 소프트웨어 공학을 컴퓨터를 사용하여 실현
l        수많은 소프트웨어 요소들과 사람들이 관련된 크고 복잡한 프로젝트에서, 소프트웨어의 개발을 구조화하고 제어하는데 있어 컴퓨터의 지원을 받는 방법
 
CASE의 필요성
l        소프트웨어 개발 전 단계에 걸친 표준을 자동화된 내부 통제기능으로 관리 필요성 대두
l        사용자의 참여도 증가를 관리하기 위한 요구사항에 대한 신속한 변경 관리의 실행
l        표준화된 소프트웨어 모듈을 재사용하는 방안과 자동코드 생성으로 생산성 증대
l        문서관리 용이성과 시스템 수정과 유지보수를 간결하게 향상 시키기 위한 방안
 
CASE 개념의 변천사
컴퓨터 회사들이 하드웨어 제작 과정으로부터 아이디어를 빌려오기 시작한 1970년대에 생기기 시작하였으며, 그것을 소프트웨어 개발에 적용하였다.
연대
CASE
정보기술
80년대 초
-         Computer-Aided Documentation
-         Computer-Aided Diagramming
-         Analysis And Design Tools
-         4GL 등장
-         프로토타이핑 개념
80년대 중반
-         Automatic Design Analysis And Checking
-         Automatic system Information Repository
-         통합 프로젝트관리 환경
-         정보공학
-         정보저장소
80년대 말
-         Automatic Code Generation From Design Spec
-         Linking Design Automation And Program Automation
-         객체지향
-         코드생성기
-         Integrated Case
90년대 이후
-         Intelligent Methodology Driver
-         Habitable User Interface
-         Reusable As A Development Methodology
-         인터넷 환경
-         Intelligent Case
 
CASE의 적용범위
-         소프트웨어 개발 프로세스의 전체 과정을 지원하는 도구
-         도구들 간의 정보 전송이 자연스러움
-         소프트웨어 형상 관리나 품질 보증과 같은 지원 활동 소요비용 절감
-         프로젝트 계획이나 제어를 효율적으로 수행할 수 있음
-         프로젝트 팀원들 간의 팀웍을 잘 이루어갈 수 있음
C
A
S
E
프로젝트
계획수립
상위
CASE
-         높은 생산성 향상
-         분석, 설계 자료의 효율적인 관리 및 재사용
-         적합한 도구의 선택과 교육이 중요
-         일관성 검증(산출물의 구성과 구성요소에 대한 확인)
요구분석
기본설계
자료설계
코딩
하위
CASE
-         소프트웨어 생명주기의 나중 단계를 지원
-         프로그래밍 지원도구(컴파일러, 링커, 로더 , 디버거)
-         비주얼 프로그래밍 도구
테스트
 
CASE 도입 시 고려사항
1.        CASE 도입의 목적 명확화
n         CASE를 도입하여 해결해야 하는 업무영역에 대한 명확한 정의를 선행해서 도입목적을 명확히 해야 함
n         도입의 목적이 불분명한 경우에는 도입 전과 도입 이후의 효과에 대한 측정방법 부재
2.        시스템 개발에 적용할 방법론을 고려
n         프로젝트를 추진 시에는 적용해야 하는 개발방법론에 따라 CASE를 선정
n         사용하고자 하는 방법론을 지원하는 CASE를 선정해야 프로젝트 진행이 원활
3.        조직 및 구성원에 대한 고려
n         CASE 적용에 필요한 인적 수준에 대한 고려가 필요함
n         CASE 사용에 필요한 교육시간, 프로젝트 종료 후 인원에 대한 재배치 등의 사항 고려
 
CASE의 문제점 개선
1.        소프트웨어 개발의 모든 단계가 보다 자연스럽고 완성도 있게 통합될 수 있도록 진행
2.        여러 IT 기술이 통합되는 지능형(Intelligent) CASE로 발전됨
3.        사용하기 편하고 가벼운 개념의 CASE가 주류
4.        값싼 CASE 도구 위주로 발전
 
CASE의 기술적 방향
1.        정보 저장소의 통합
n         정보 저장소의기능 통합 : 데이터 통합, 정보 공유, 데이터 툴 통합, 데이터 간 통합, 방법론 강제 시행, 문서의 표준화 측면에서 통합 추진
n         정보 저장소 구현 위한 표준의 준수
2.        정보시스템 페러다임과 융화
n         소프트웨어 재사용을 해결하기 위한 방법론인 객체지향 방법론과 CBD 방법론을 지원
n         소프트웨어 품질과 생산성을 향상하기 위해서 개발방법론과 관리방법론이 통합된 CASE
n         좀더 지능화된 Tool로 진화하여 개발절차를 좀더 자동화하여 개발자 중심에서 사용자 중심의 기능으로 개선
Posted by TIMEC
2010. 3. 16. 15:39

// Prompt.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
//

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>
#include <locale.h>
#include <windows.h>

#define STR_LEN 256
#define CMD_TOKEN_NUM 10

TCHAR ERROR_CMD[] = _T("'%s'은(는) 실행할 수 있는 프로그램이 아닙니다. \n");

int CmdProcessing(void);
TCHAR * StrLower(TCHAR *);

int _tmain(int argc, TCHAR* argv[]){
 _tsetlocale(LC_ALL, _T("Korean"));

 DWORD isExit;
 while(1){
  isExit = CmdProcessing();
  if(isExit == TRUE){
   _fputts(_T("명령어 처리를 종료합니다. \n"), stdout);
   break;
  }
 }
 
 return 0;
}

TCHAR cmdString[STR_LEN];
TCHAR cmdTokenList[CMD_TOKEN_NUM][STR_LEN];
TCHAR seps[] = _T(" ,\t\n");

int CmdProcessing(void){
 _fputts(_T("Best command prompt>>"), stdout);
 _getts(cmdString);
 TCHAR * token = _tcstok(cmdString, seps);
 int tokenNum =0;
 while(token != NULL){
  _tcscpy(cmdTokenList[tokenNum++], StrLower(token));
  token = _tcstok(NULL, seps);
 }

 if( !_tcscmp(cmdTokenList[0],_T("exit"))){
  return TRUE;
 }
 else if(!_tcscmp(cmdTokenList[0],_T("추가 명령어 1"))){
 }
 else if(!_tcscmp(cmdTokenList[0],_T("추가 명령어 2"))){
 }

 else{
  _tprintf(ERROR_CMD,cmdTokenList[0]);
 }
 return 0;
}

TCHAR * StrLower(TCHAR *pStr){
 TCHAR *ret = pStr;
 
 while(*pStr){
  if(_istupper(*pStr))
   *pStr = _totlower(*pStr);
  pStr++;
 }

 return ret;
}

Posted by TIMEC
2009. 11. 15. 20:07
Posted by TIMEC