Intro..
정보처리기사 자격증은 소프트웨어에 대한 전문 지식을 기르는 것이 목적이었습니다.
(개요를 보고 싶으시면 이곳을 클릭하세요.)
포스팅에 사용되는 용어들은 학문적인 정의가 아닌, 일상에서 가지고 있는 개념을 바탕으로 풀고자 합니다.
용어가 적절하지 않게 느끼시는 전문인 분들에게 양해 부탁드립니다.
기본적으로 기계(이하 하드웨어) 혹은 프로그램(이하 소프트웨어)는 인간의 편의를 위해 만들어졌습니다.
*바퀴(하드웨어)가 있어도, 그것을 굴러가게 하는 어떤 동작(소프트웨어)이 없으면 바퀴의 의미를 잃어버립니다.
하드웨어를 사용하는데 필요한 소프트웨어는 언제나 사용하고자하는 사람의 요구사항이 있습니다.
하드웨어는 스스로 인간의 필요를 찾아 소프트웨어를 만들 수 없습니다.
소프트웨어의 탄생은 누군가 실시간으로 친구와 대화를 주고 받는게 있으면 좋지 않을까? 하는 생각에서 채팅 시스템이 구축됩니다.
[정보처리기사 1과목] 소프트웨어 설계 - 현행시스템 분석
새로운 소프트웨어(SW)를 개발하기 위해 사용자가 어떤 것을 원하는지, 그것을 구현하기 위한 현재 시스템(아이템)을 파악하는 것입니다.
시스템이 무엇인지 이해해봅시다.
의자를 만들기 위해서는 의자의 재료인 나무가 필요합니다. 1차 재료인 나무를 가지고 모양을 만드는 공정 또한 필요합니다.
시스템은 이러한 총체적인 집합체라고 보면됩니다.
즉 사용자가 원하는 카카오톡과 같은 프로그램을 만들기 위해 필요한 것들의 집합체가 시스템이라고 할 수 있습니다.
시스템을 아이템으로 표현한 이유는, 이러한 시스템들이 모여 하나의 거대한 소프트웨어가 탄생하기 때문에 소프트웨어를 만드는 아이템에 비유한 것입니다. 새로운 소프트웨어 설계를 위해서는 어떠한 아이템이 있는지 필요하다면 새로운 아이템(시스템)을 도입하는 시도를 할 수 있을 것입니다.
-완전히 새로운 SW는 거의 없습니다. 기존에 축적된 것들을 활용하고 재가공하는 형태입니다. 저는 프로그램 설계를 레고에 비유해서 표현합니다. 레고의 부품들을 가지고 작품을 만들어 내는 것처럼 소프트웨어 개발도 내가 가진 부품이 무엇이 있는지를 알아야 작품을 만들 수 있습니다.(때로는 전혀 새로운 부품을 만들기도 하지만 극히 드뭅니다.)-
정리하자면, 소프트웨어의 탄생은 누군가의 필요에 의해 시작이 되어지고, 해당 요구사항을 위해 여러 아이템들을 조합해야하기 때문에 현재의 시스템을 분석해서 설계해 나가는 과정이 필요합니다.
등장하는 개념으로 쓰여지는 부분들은 하나의 파트(부품)처럼 개별적으로 이해하시면 됩니다.
🪴 등장하는 개념 플랫폼
플랫폼이라는 사전적 의미는 다양하게 정의될 수 있지만, 하나의 장소 개념으로 봅시다.
이 장소에서 상호작용-사용자와 사용자 혹은 소비자와 판매자의 소통-이 일어납니다.
플랫폼의 유형은 3가지가 있습니다.
싱글 사이드 플랫폼, 투 사이드 플랫폼, 멀티 사이드 플랫폼
실무에서..
실제 프로그램 설계시에 어떤 플랫폼을 쓸까? 고민하는 경우는 없습니다. 프로그램의 요구사항 자체가 플랫폼이 되기 때문입니다.
ex)
A 클라이언트 : 저희 회사에서 헬스클럽 회원들이 PT시간 예약과 다양한 운동 영상을 볼 수 있는 사이트를 만들고 싶습니다.
( 이 요구사항에서 이미 사용자들이 시스템을 통해 PT예약, 동영상 시청 등이 가능한 장소라는 플랫폼 개념이 생기는 것입니다.
사실 요즘의 프로그램은 A 플랫폼이다 라고 특정지어 말하기 어려울 만큼 다양한 시스템이 결합되는 형태입니다. )
기출문제..
기출 문제는 어떤 유형의 문제가 출제되었고 해당 부분에 대한 해설을 쓰겠습니다.
-실제 출제 문제는 다른 포스팅을 참조해주세요.-
기출 문제 20년 1회
플랫폼 성능 특성 측정 항목으로 맞지 않는 것 찾는 문제가 출시되었습니다.
[해설]
💡 플랫폼을 만들 때 해당 성능을 측정하는 기준이 필요합니다.
어떤 동작을 요청했을 때 해당 요청에 얼마나 빠르게 응답하는지(Response Time),
빠른 응답과 함께 처리까지 얼마나 시간이 경과(Turnaround Time)하는지,
해당 동작이 컴퓨터의 자원(CPU, 메모리 등)을 얼만큼 사용(Utilization) 하는지,
일정 시간 동안 얼마나 많은 일 처리가 가용(Availability)한지
이러한 기준으로 플랫폼(애플리케이션)의 성능을 측정합니다.
-기출문제의 선택지는 영문 명을 꼭 보셨으면 좋겠습니다. 많은 준비 없이 처음 치룬 시험에서 선택지가 영문으로 나온 것이 많아 당황했었습니다.-
💡 플랫폼 성능 측정 기준
1. 경과시간(Turnaround Time)
2. 사용률(Utilization)
3. 응답시간(Response Time)
4. 가용성(Availability)
🪴 등장하는 개념 DBMS
프로그램이라는 것은 필연적으로 데이터를 저장하게 되어있는데, 저장된 데이터를 다루는 프로그램 또한 비용과 밀접한 관계이기 때문에 아주 중요합니다. (프로그램이 단순 파일로 저장하는 프로그램은 해당되지 않습니다.)
저장된 데이터를 관리하는 시스템을Database Management System(DBMS)라고 이야기합니다.
대표적인 DBMS의 프로그램은 오라클, MS-SQL, Mysql, mriaDB 등이 있습니다.
실무에서..
회사의 DBMS 프로그램을 다루는 사람이 없는 상황에서 누군가 mysql 프로그램을 사용해봤다하면, 그 사람을 중심으로 mysql 프로그램을 선택해서 사용하는 것이 비용적으로 효율적일 것입니다. 그러나 프로그램에 따라 제작사에 라이센스 비용을 지불해야하는 경우도 있기에 DBMS의 선택은 결코 쉬운 문제는 아니지만, 일반적인 프로그램 제작 회사는 기존에 사용하던 DBMS 프로그램을 계속 사용합니다.(크리티컬한 문제가 발생되지 않는 이상 다른 DBMS로 변경하기엔 비용 손실이 큼)
- 실제 현업에서는 대부분 사용하던 프로그램을 쓰고, 스타트업들은 쉽고 무료로 사용할 수 있는 프로그램을 많이 사용합니다. 망치질을 할 수 있으면 고무 망치든 나무 망치든 활용 가능한 것처럼 DBMS 프로그램들이 차이가 있긴하지만 사용하는 틀은 크게 다르지 않기 때문에 한 프로그램을 잘 다루면 다른 것도 크게 어려운 내용은 아닙니다. -
기출문제..
기출 문제 20년 1회
DBMS 분석시 고려사항으로 거리가 먼 것을 고르는 문제가 나왔습니다.
[해설]
💡 소프트웨어 개발시 저장된 데이터를 관리하는 DBMS 프로그램을 선택할 때에는
장애 발생 가능성과 백업 및 복구 편의성등의 가용한 정도가 어떤지,
대규모 데이터 처리 성능 다양한 옵션 제공 등의 성능이 좋은지,
설치 가능한 운영체제 종류와 해당 운영체제와 프로그램을 연결할 수 있는 상호 호환성이 좋은지,
프로그램 공급 업체가 안정적으로 기술을 지원하고 여러 사람이 정보를 공유하는 기술 지원이 어떠한지,
해당 프로그램의 라이센스 정책 및 유지 비용 등의 구축비용이 저렴한지
이러한 사항들을 고려해서 분석해야합니다.
💡 DBMS 분석 시 고려사항
1. 가용성
2. 성능
3. 상호 호환성
4. 기술 지원
5. 구축 비용