[정보 처리] 9. 정렬 알고리즘 이론
·
Study/Computer Science
- 이번 포스팅으로는 배열 내의 데이터들을 순서대로 정렬하는 효율적인 방식인 정렬 알고리즘을 정리할 것입니다.소프트웨어 공학 범위에서 배우는 기본 필수적으로 알아야 하는 마지막 알고리즘의 이론입니다.정렬 알고리즘의 실제 구현은 하지 않으며, 나중에 C 언어로 따로 구현글을 정리할까 합니다. - 정렬이란, 다수의 데이터를 일정한 규칙에 따라 순서대로 나열하는 방법입니다.작거나 앞선 데이터를 시작으로 점차 데이터가 커지는 방향으로 정렬하는 오름차순(Ascending Order) 정렬과,크거나 뒷선 데이터를 시작으로 점차 데이터가 작아지는 방향으로 정렬하는 내림차순(Descending Order) 정렬이 있습니다. [정렬의 종류](선택(Selection) 정렬)- 시간 복잡도평균 : O(N^2)최악 : O(N..
[정보 처리] 8. 탐색 알고리즘 이론
·
Study/Computer Science
- 이번 포스팅에서는 탐색 알고리즘에 대한 이론을 정리하겠습니다.탐색 알고리즘의 실제 구현은 하지 않습니다. [탐색의 개념]- 탐색이란, 많은 양의 데이터에서 원하는 데이터를 찾아내는 작업입니다. - 탐색에 이용되는 기억장치의 종류에 따라 아래와 같은 분류가 있습니다.1. 내부 탐색 : 주기억 장치에서 데이터를 빠르게 탐색합니다.2. 외부 탐색 : 보조기억 장치에서 데이터를 탐색합니다. 속도가 느릴 수 밖에 없습니다. (복잡도)- 탐색의 성능을 나타내는 성능지표로 복잡도라는 개념이 있습니다.복잡도는 두가지 종류가 있으며, 아래와 같습니다. 1. 공간 복잡도알고리즘이 연산을 수행하는 동안 사용되는 메모리 공간의 크기를 나타냅니다.일반적인 경우 공간 복잡도가 알고리즘의 품질에 영향을 미치는 비중은 시간 복잡..
[정보 처리] 7. 자료구조 이론
·
Study/Computer Science
- 이번 포스팅은 알고리즘 개념과 자료구조 이론에 대해 정리합니다.자료구조의 실제 구현은 포함되어 있지 않습니다. [자료구조 개론](자료구조 개념)- 자료구조란, 데이터를 프로그램에서 효율적으로 활용할 수 있도록 논리적으로 설계된 데이터 구조 및 관계입니다.자료구조는 여러 종류가 있으며,개발자라면 데이터의 유형과 상황에 따라 적절한 자료구조를 선택하여 활용할 수 있는 능력이 필요합니다. - 자료 구조의 특징1. 같은 데이터를 활용하더라도 자료구조에 따라 성능에 큰 영향을 끼칠 수 있습니다.2. 효과적인 자료 구조란, 데이터 용량, 실행 시간 등을 최소한으로 사용하는 것입니다.3. 데이터 추가, 삭제, 탐색을 보다 효율적으로 수행할 수 있도록 하는 것이 목표입니다. - 자료 구조의 유형1. 단순 구조프로그..
[정보 처리] 6. 공학적 응용 소프트웨어 설계 방식
·
Study/Computer Science
[소프트웨어 설계]- 소프트웨어의 설계란,요구사항의 분석 단계에서 도출된 요구 기능이 소프트웨어에서 실현될 수 있도록 알고리즘을 설계하고,그 알고리즘에 의해 사용, 처리될 자료 구조를 문서화 하는 작업입니다. - 대표적인 소프트웨어 설계 방식은 아래와 같습니다.1. 절차 지향 설계(Process Oriented Design)작업이 수행되는 순서인 작업 절차를 중심으로 소프트웨어를 설계합니다.컴퓨터의 처리 구조와 유사하고, 특히나 절차지향 프로그래밍 언어(C 언어 등)에 유리하며, 그만큼 성능이 좋은 경우가 많습니다.하지만 아래의 객체 지향 설계에 비해서 유지보수가 어렵단 단점이 있습니다. 2. 객체 지향 설계(Object Oriented Design)프로그램을 구성하는 요소를 객체라는 단위로 묶어서 설계..
[정보 처리] 5. 공학적 화면 설계 방식
·
Study/Computer Science
- 이번 포스팅은 소프트웨어 공학의 설계 항목에서 화면 설계, 어플리케이션 설계, 인터페이스 설계 중 하나인 화면 설계에 대해 정리할 것입니다.개발자가 아닌 일반 사용자의 입장에서 가장 중요한 가시적인 부분에 대한 설계 방법을 공학적 관점에서 배워볼 것입니다. [UI 요구사항 확인](UI란?)- UI 란 User Interface 의 약자로, 사용자가 소프트웨어를 조작하기 위해 제공되어 상호간 원활한 소통을 도와주는 연계 시스템입니다. 컴퓨터 사이언스 탄생 초기에는 전문가만이 컴퓨터와 시스템을 다룰 수 있도록 가장 기본적인 명령어 입력 방식의 UI(CLI) 에서 시작하여, 점차 다양하고 복잡한 문제를 해결하기 위해 어려워지는 사용 방식을 사용자 관점에서 단순화 하여 조작에 대한 학습을 진행하지 않은 타 ..
[정보 처리] 4. UML(Unified Modeling Language)
·
Study/Computer Science
- UML 이란, 개발자간 원활한 의사소통을 위해 소프트웨어 공학에서 사용되는 표준화된 범용 모델링 언어입니다.소프트웨어 개발시 무엇을 만들어야 하는지에 대한 요구사항을 분석하는 과정에서 간단하게 만들고 간단하게 수정해 나가며 구체화 할 때 사용하면 좋은 모델링 방식이기에,작성 및 수정이 쉽고 직관적이어서 누구나 이해하기 쉬운 것이 특징입니다. - 아래 정리글로 인하여 UML 을 작성하여 소프트웨어 개발 요구사항을 시각적으로 모델링 하는 방법을 알아보겠습니다.참고로 실제 개발에 UML 을 적용할 때에는 draw.io 라는 무료 다이어그램 제작 툴을 사용하는 것을 추천합니다. [UML 설명]1. 사물다이어그램 안에서 관계가 형성 될 수 있는 대상입니다.아래와 같은 종류의 사물이 있습니다. 구조 사물 : 개..
[정보 처리] 3. 소프트웨어 개발 요구사항 분석기법
·
Study/Computer Science
[현행 시스템 파악]- 현행 시스템 파악이란,현재 운영되는 시스템의 구성을 파악하는 활동으로,시스템 기능, 입출력 뿐 아니라 소프트웨어, 하드웨어, 네트워크 구성 등을 파악하는 활동입니다. - 현행 시스템 파악 절차는 아래와 같습니다.1 단계 (시스템 파악) :구성 현황 파악,기능 현황 파악,인터페이스 현황 파악 2 단계 (소프트웨어 파악) :아키텍쳐 파악,소프트웨어 구성 파악 3 단계 (하드웨어 파악) :하드웨어 파악,네트워크 구성 파악 아래에서 각 세부 절차에 대해 정리하겠습니다. - 시스템 구성 현황 파악현행 시스템을 구성하는 요소를 파악하는 것입니다.주 업무에 해당하는 기간 업무와, 주 업무에 대한 보조 업무에 해당하는 지원 업무로 구분됩니다. - 시스템 기능 현황 파악단위 업무 시스템이 현재 제..
[정보 처리] 2. 소프트웨어 개발 모델 최적화
·
Study/Computer Science
[소프트웨어 개발 모델 테일러링]- 개발 모델 테일러링이란,개발 프로젝트의 특성 및 필요에 따라 기존의 소프트웨어 개발 모델을 최적화 하는 것을 의미합니다. 다양한 유형의 프로젝트를 하나의 정형화된 방법론만으로 대응하기 어려우며,실제 상황에서 개발 모델의 내외부적 요건이 서로 충돌하는 경우가 많기 때문에 개발 모델을 결정했다면 현 상황에 맞는 최적화를 진행해야 합니다. - 테일러링의 필요성 판단 기준은,1. 내부적 요건 : 목표 환경, 요구사항, 프로젝트 규모, 보유 기술 등2. 외부적 요건 : 법적 제약사항, 표준 품질 기준 등 (테일러링 프로세스)1. 프로젝트 일정 및 자원 현황 반영 : 선정된 개발 방법론에 프로젝트 일정, 비용, 목표 퀄리티, 투입 자원, 위험 요소 등을 반영합니다.2. 개발..
[정보 처리] 1. 소프트웨어 개발 방법론
·
Study/Computer Science
[정보 처리 시리즈]- 본 학문 시리즈는 2025년 정보처리기사 필기시험 대비용 개인 정리글입니다.필자는 2025-05-11 현 시점, 본 정리글을 기반으로 필기 시험에 합격하였습니다.저는 정보 공유 및 추후 이론 지식 복습을 위해, 현 시점에도 시리즈의 남은 범위를 정리하고 있습니다. [용어 및 개념 정리]- 먼저, 소프트웨어 공학이 무엇인지 정리하기 전에, 관련된 용어 및 개념들을 정리하겠습니다.(상용 소프트웨어)- 상용 소프트웨어란, 상업적 목적이나 판매를 목적으로 개발되는 소프트웨어입니다.소프트웨어 판매 상품의 범주로는 일반적으로 소스코드는 포함되지 않습니다.전자레인지를 팔 때 전자레인지의 설계도를 같이 동봉하지 않는 것과 같습니다.또한, 무형의 소프트웨어 특성상 다양한 형태의 라이선스를 이용하여..
[정보처리] 애자일 개발 방법론 정리
·
Study/Computer Science
- 이번 포스팅에서는 실무에서 다소 애매하게 적용될 수 있는 애자일 개발 방법론에 대해 자료를 찾아보고 공부한 내용을 정리하겠습니다. (애자일 모델이란?)2001 년 2 월 11일에 발표된 소프트웨어 개발 방법론의 하나입니다. 다만,발표 7년 전인 1994 년의 DSDM(Dynamic Systems Development Method, 동적 시스템 개발 방법) 부터,1995 년의 Scrum 이나,1996 년 XP(Extreme Programming),1997 년 RUP(Rational Unified Process),1998 년 Crystal,1999 년 FDD(Feature-Driven Development), ASD(Adaptive Sogrware Development) 와 같은 기존 개발 방법론을 20..