[정보처리기사] CASE(Computer-Aided Software Engineering)

Uno·2021년 4월 29일
4

정보처리기사

목록 보기
3/4

CASE (Computer - Aided Software Engineering) 이 무엇인가?


  • 소프트웨어 개발 시, 사용되는 ::분석 자동화 도구:: 입니다.
    == 소프트웨어 개발 과정의 일부나 전체를 자동화하는 도구
    아 자동화 도구인데 소프트웨어 개발과정 전반적인 과정을 도와주는 도구구나

저는 이 정의를 보고 이런 생각이 들더라구요.
분석 자동화도구? 무엇을 분석한다는 거야?

일단 위키피디아의 글을 인용해보겠습니다.

Computer-aided software engineering (CASE) is the domain of software tools used to design and implement applications. CASE tools are similar to and were partly inspired by computer-aided design (CAD) tools used for designing hardware products.
Computer-aided software engineering - Wikipedia

예시로 제공한 이미지는 다음과 같습니다.

설명을 보니까, CAD 기기와 유사한 것이라고 합니다. CAD는 주로 기계공학에서 어떤 기계를 만들고 싶을 떄, 설계를 도와주는 Tool 입니다.

아~ 뭔가 CASE == 소프트웨어 개발을 도와주는 Tool 정도로 이해가 됩니다.

정보처리기사의 범위 내에서 정리한 내용은 다음과 같습니다.

  • 요구분석 -> 설계 -> 구현 -> 검사 및 디버깅 이러한 과정에서 CASE를 활용하여 자동화한다고 합니다.
  • 하나의 Tool을 활용하면 얻는 장점인 “표준화”된 개발 환경을 구축할 수 있겠죠.
  • 하나의 Tool을 활용하면 얻는 장점인 “커뮤케이션”을 얻을 수 있을 겁니다. (서로 다른 언어로 개발하는 것보다 하나의 언어로 개발할 때, 커뮤니케이션이 좀더 쉬운 것 처럼요)

CASE의 장점


  • 개발속도가 빨라진다. -> 아무래도 하나의 툴을 쓰는 이점이랑 비슷할 것 같아요.
  • 오류 수정이 쉬워지고 이로 인해 소프트웨어의 품질 향상이 기대된다. -> 제발요
  • 표준화가 쉽다.

CASE의 기능

  • 그래픽 지원
  • 소프트웨어 생명주기 전반적인 단계의 연결
  • 다양한 소프트웨어 개발 모형을 지원

뭐 좋은 이야기는 다있죠. 조금 풀어보자면 GUI를 지원하고, 소프트웨어 전과정에 걸친 도구이므로 모든 단계가 연결되는 것은 당연한 것일 것이고, 다양한 소프트웨어 개발 모형을 지원해야하는게, 표준화라는 것이 구체적인 사례를 하나의 원리와 같이 일반화 하는 과정이니까요.

그럼 CASE를 언제 그리고 왜 사용할까요?


바로 정보처리기사 문제로 사용됩니다…

일단 언제 사용했는지 알기위해서는 왜 나왔는지 알면 이해에 도움이 될 것 같네요.
소프트웨어의 개발 규모가 점점 커지고 복잡해지면서 생명주기는 짧아 지는 환경이 되었어요. 그러니까 앱으로 따지자면 앱의 구현 난이도는 올라갔는데 짧은 시간내로 만드는 개발자의 ‘헬’로 월드가 되었죠.

이러한 시간을 줄이기 위해서 어떻게 해야할까요? 아마도 매번 반복되는 요소들이나 컴퓨터가 잘 하는 부분을 컴퓨터에게 시키면 되겠죠. 그 시키는 것이 “자동화” 입니다.

이 자동화를 도와주는 도구가 CASE가 되겠습니다.

툴에 대해서 예시를 들자면 다음과 같은 것들이 있습니다.

  • ER-WIN
  • POWER - DESIGNER
  • RATIONAL - ROSE TOGETEHER
  • A0 - WIN
  • COOL: Joe

드디어 언제 사용하는지에 대한 답을 드릴 수 있을 것 같습니다.

답은 상황에 따라 다릅니다..(너무 당연하죠..ㅎㅎ)
그래서 그 상황이 어떤 것인지 조금 사례를 들어들이면 되지 않을까 합니다. 이러한 사례에서 사용됩니다.

  • ::유지보수의 사례 (Reengineering)::
    텍스트 기반의 언어 -> 객체지향 언어로 변환해주는 툴

  • ::설계 코딩의 사례::
    ERP -> Web 을 자동으로 구축해주는 툴

이 외의 사례로는 “분석-개발”, “분석-테스트, “코딩-유지보수” 그리고 “설계-코딩 동시수행” 등등이 있습니다.

정보처리기사 문제유형


이제 현실로 돌아와서 당장 문제를 맞춰야하잖아요.

위 개념들을 완벽히 숙지하고 또 다음으로 넘어가면 아마 2년해도 못 딸 수도 있을 것 같아요.
정보처리기사는 A = B 를 묻는 시험이라고 생각해요. 즉, “인지”의 수준만 익히면 문제를 맞출 수 있는 수준으로 질문을 하더라고요. 아마 기술사부터는 응용이 시작되겠죠?

어째든 본론으로돌아와서 문제에서 주로 이렇게 물어봅니다.

  1. CASE의 주요 기능 (최다 출제)
  2. CASE 도구에 대한 설명
  3. CASE에 대한 설명을 주고 이것은 무엇일까요? ( 2번의 역질문)
  4. 상위 CASE 도구의 주요 기능
  5. CASE 도구의 정보 저장소 설명

왠만한건 다 설명한 것 같은데 안한 것 2 개가 보이네요 “상위 CASE”와 “정보저장소” 입니다.

상위CASE 와 정보저장소

"상위CASE" 란,
계획과 분석 설계 단계를 지원하는 것입니다. 제공 기능으로는 다이아그램 그리기, 명세서 작성 등의 기능을 제공하는데 이를 통해 기업이나 조직을 기술하기 용이합니다.

즉, 상위 CASE는 전반적인 관리를 하는 CASE 툴이라고 보면 되겠죠. 그러면 기능도 당연히, 무언가 디테일하고 구체적인 것이라기보다 데이터모델이나 전반적인 흐름을 관리하는 느낌이 정답이 될 것 같아요.

  • 상위 CASE의 기능
    - 모델 사이 모순검사 기능
    - 모델의 오류 검증 기능
    - 자료흐름도 작성 기능
    모델 앞에 (데이터)를 붙이면 좀더 이해하기 쉽습니다. 데이터들을 검증하는 것입니다. 그리고 그 데이터가 어떻게 흘러가는지 작성하는 기능이고요.
"정보저장소" 란,
CASE 환경의 여러도구들이 상호연관되어 동작할 수 있도록 도와주는 구심체 역할을 하는 저장소입니다. CASE 내부에 발생하는 데이터들을 저장하도록 도와주어 여러 기능을 하다록 도와줍니다. 만약 저장소 없이 각각 CASE 기능이 저장하여 동작한다면(단위형태로동작한다면) 각 기능간 데이터 연결이 안되면 그때그때 다시 데이터를 입력해주어야하는 불편함과 그 동작에서 발생할 휴먼에러가 발생할 수도 있습니다. 무엇보다 불편하죠.

제가 이해한 걸 바탕으로 작성한 개념설명입니다. 다시 설명드리면, 기능을 좀더 잘 동작하도록 데이터를 저장하는 저장소이다.

그래서 이제 문제에 나오는 기능이 어떤 답이 나올지 예상이 되시나요?
무언가 데이터를 저장하고 연결하고 공유해주고, 저장소로 인해 편해진 무언가가 나오지 않을까요?

  • 정보저장소는 각 도구들과 생명주기활동, 사용자들, 응용소프트웨어들 사이의 통신과 소프트웨어 시스템의 정보 공유를 향상시킨다.
  • 초기에는 사용자 혹은 사람이 직접 정보를 저장했으니 이젠 ::응용프로그램에서 정보저장을 담당한다.::
  • 정보저장소를 사용하여 시스템의 유지보수가 용이해진다.

결론


CASE의 기능이 가장 빈출이고 정보저장소가 가장 적게 나왓습니다.

급하시면 두 가지정도만 눈도장찍고 가시면 될 것 같네요. 나머지 글들은 공부한 개념이 현실에서 어떤식으로 연결될지 제가 궁금해서 작성하다가 이렇게 공유하게 되었습니다.
읽어주셔서 감사합니다!

참고자료

정보처리기사 CASE(Computer-Aided Software Engineering) | jtrimind blog
Computer-aided software engineering - Wikipedia
분석자동화 도구
https://www.happycampus.com/report-doc/4217057/
CASE 환경에서의 정보저장소 (Information Repository)의 구성
강병도,우치수

profile
iOS & Flutter

0개의 댓글