Today I Learned/정보처리기사 16

자료구조

자료구조(Data Structure)는 사전적 의미로는 자료(Data)의 집합이며, 각 원소들이 논리적으로 정의된 규칙에 의해 나열되고 자료에 대한 처리를 효율적으로 수행할 수 있도록 자료를 구분하여 표현한 것이다. 잘 선택된 자료구조는 실행시간을 단축시켜주거나 메모리 자원을 절약시켜준다. 자료구조의 목적에 따른 특징은 다음과 같다. -효율성 데이터의 전달, 검색, 연산 등 다양한 작업을 데이터에 대하여 구현할 때, 구현된 알고리즘이 시간적, 공간적으로 효율성이 높아야 좋은 알고리즘이라 할 수 있다. 이러한 알고리즘을 사용할 때 필요한 데이터의 구조도 천차만별이다. 예로, 선형의 배열에서 특정 데이터를 순차적으로 찾는것 보다 비선형적인 트리에서 이진탐색을 실행하는것이 더욱 효율적이다. 사용하는 알고리즘에..

요구사항 정의

요구사항은 소프트웨어로 행하는 problem solving을 위해 제공하는 서비스의 설명과 정상적으로 운영되는데 필요한 제약조건을 일컫는다. SW의 동적인 요소와 정적인 요소에 따라 기능 요구사항과 비기능 요구사항으로 구분되며, 기술 관점과 대상의 범위에 따라 시스템 요구사항과 사용자 요구사항으로 나눈다. 기능 요구사항은 기능, 입력, 출력, 저장, 수행 등이 포함되며, 시스템이 어떠한 동작을 하는지, 동작의 원리는 무엇인지를 기술한 요구사항이다. 비기능 요구사항은 성능 품질, 제약사항, 호환성, 보안 등이 포함되며, 시스템의 수치적 정의를 기술한 요구사항이다. 사용자 요구사항은 사용자 관점의 시스템 제공사항, 사용자 인터페이스 등 사용자의 경험을 토대로 기술한 요구사항이다. 시스템 요구사항은 개발자 관..

개발 기술 환경

메타인지의 늪에 빠지는것은 평생 질문을 던져야 하는 프로페셔널 개발자에게 가장 조심해야 할 행동이다. 너무 익숙해서, 너무 많이 사용해서 이미 우리들과 물아일체가 되어버린 개발환경이지만, 지금 우리 사회에서 제일 빨리 변하는 상식이기도 하다. 언제나 기존의 가치에 도전하도록 하자. 운영체제 MS사의 Windows, 애플의 Mac OS, 오픈소스인 Linux 등의 데스크탑/랩탑 운영체제 뿐만 아니라 구글의 Android, 애플의 iOS 등 다양한 운영체제 위에서 개발을 진행한다. 소프트웨어인 운영체제에 따라 하드웨어의 가격도 천차만별이기 때문에, 어떤것을 선택하여 환경을 구성해야 되는지도 선택하기 어렵다. 운영체제는 하드웨어와 소프트웨어의 리소스를 관리하고, 컴퓨터 프로그램을 위한 공통 서비스를 제공하는 ..

프로토타입 모형

진화적 프로세스의 대표적인 방법 폭포수 모델의 큰 단점인 "단계를 거슬러 작업하는 것이 어렵다"는 것을 보완하기 위해 나온 것이 바로 진화적 프로세스 모델이다. 사용자의 요구가 불투명하고 요구사항 변화가 많이 발생하는 경우에 적합하며, 비용이 많이 필요한 대규모 시스템이나 새로운 혁신 기술을 사용할 경우 개발 전 프로토타이핑을 통해 실현 가능성을 타진해 볼 수 있다. 요구사항 정의 및 분석 폭포수모델에서는 완전하게 명세한 후 넘어가지만, 여기서는 1차로 개략적 요구사항을 정의한 후 반복하며 프로토타입 완성도를 높여 최종을 개발한다. 프로토타입 설계 프로토타입 설계 단계에서는 사용자와 대화할 수 있는 수준으로 설계한다. (인터페이스 중심 설계) 프로토타입 개발 사용자에 의한 프로토타입 평가 사용자는 프로토..

폭포수 모형

선형 순차 모델(linear, sequential model), 고전적 소프트웨어 생명 주기 각 단계는 병행 수행되지 않고 순차 수행된다. 기본적으로는 이미지와 같은 순으로 진행되나, 실제로는 수정 및 재작업을 위해 이전 단계로의 피드백이 불가피하다. 단순한 선형 모델이라 이해가 쉽고, 단계별로 정형화된 접근 방법으로 체계적인 문서화가 가능하며 프로젝트 진행 상황을 명확하게 파악할 수 있다. 하지만 요구사항을 완벽하게 작성해야 하고 변경사항의 수용이 어려우며, 개발단계 후반에서야 시스템 동작을 확인할 수 있다. 지나친 문서화로 일정 지연의 리스크가 있는 동시에, 리스크 분석이 결여되어있는 모델이다.

소프트웨어 생명주기

소프트웨어 생명주기 소프트웨어를 개발하여 하나의 프로덕트를 생산할 때, 소프트웨어의 아키텍처 설계, 프로젝트 기획, 인력 분산, 협업 등 아주 많은 과정을 필요로 하며, 이를 체계적으로 관리할 수 있는 시스템이 필요하다. SDLC, SOftware Development Life Cycle이라 불리는 소프트웨어 생명주기 모델은 이를 아주 큰 틀로 정리한 각 모델이다. 소프트웨어 개발 시장이 스포트라이트를 받기 전이면서, 옛날의 산물로 기억되는, 하지만 가장 폭넓게 사용되었던 폭포수 모형 2022.04.08 - [Today I Learned/정보처리기사] - 폭포수 모형 클라이언트의 요구사항과 여러가지 이유로 지켜져야하는 빠듯한 마감기한을 위해 사용된 프로토타입 모형 2022.04.08 - [Today I ..