컴퓨터공학: 18개의 글
소프트웨어 개발 방법론 - 애자일(Agile) 방법론 애자일(Agile) 방법론은 구체적인 개발 프로세스가 아닌 개발 지침, 철학에 가깝다. 변화를 수용하고 협업과 제품의 빠른 인도를 강조하는 반복적 개발 방법 문서화보다 코드, 프로그램, 소프트웨어 자체를 중요시 함 요구사항의 변화는 불가피하며 이에 대응하는 것이 현실적이다. 기존의 개발 프로세스는 설계 기간이 길며 재작업 시 오버헤드가 크다. 환경의 빠른 변화에 대응하는 것이 중요하다. 애자일 선언문(Agile Manifesto) 🔗 공정과 도구보다 개인과 상호작용을 포괄적인 문서보다 작동하는 소프트웨어를 계약 협상보다 고객과의 협력을 계획을 따르기보다 변화에 대응하기를 요구사항이 바뀌기 쉬운 중소형의 비즈니스 시스템이나 전자 상거래 응용에 적합하다...
소프트웨어 개발 프로세스 - 나선형 모델과 V 모델 소프트웨어 개발 프로세스 모델 중 나선형 모델과 V 모델은 각각 반복 진화형 모델과 폭포수 모델의 확장된 형태이다. 1. 나선형 모델(Spiral Model) 나선형 모델의 도식화는 획일적이지 않다. 반복 진화형 모델🔗의 확장 형태 위험 최소화 - 전체 생명주기에 위험 분석과 프로토타이핑을 사용 각 단계 별로 ①목표와 대안의 결정, ②대안의 평가(위험 요소 분석), ③개발과 확인, ④다음 단계 계획의 4가지 단계를 수행함 나선형 모델은 위험 관리를 지원하는 프로세스의 프레임워크라고 할 수 있다. 가장 큰 특징 - 위험 관리에 비용을 투자 실험적이고 복잡한 대형 프로젝트에 적합 장점 대형 프로젝트에서 위험 관리를 통해 성공 가능성을 향상 프로젝트 특성, ..
소프트웨어 개발 프로세스 - 반복적 모델의 종류와 차이점 소프트웨어 개발 프로세스 모델 중 반복적 모델은 증분형(Incremental) 모델과 진화형(Evolutional) 모델 두 가지로 구분할 수 있다. 1. 반복적 모델 - 진화형 모델(Iterative Evolutional Model) 불안정한(미완성된) 요구사항으로부터 명세(설계) ➡️ 개발 ➡️ 검증 과정을 거쳐 초기버전 개발 명세(설계) ➡️ 개발 ➡️ 검증 과정을 반복하여 중간 버전, 최종 버전 개발 프로토타이핑을 통해 요구사항을 보완하며 점차적으로 명확한 요구사항 도출 반복 진화형 모델의 확장 형태로 나선형 모델(spiral model)🔗이 있다. 장점 요구사항이 완성되지 못한 경우에도 초기 버전 개발 가능 단점 개발 비용 예상 어려움 반..
소프트웨어 개발 프로세스 모델 - 폭포수 모델(Waterfall Model) 폭포수 모델은 대략 7단계로 구성된다. 선형 순차 모델(linear, sequential model), 고전적 소프트웨어 생명 주기 각 단계는 병행 수행되지 않고 순차 수행됨 기본적으로는 아래 방향으로 진행되나 실제로는 수정 및 재작업을 위해 이전 단계로의 피드백이 불가피함 폭포수 모델의 확장 형태로 V 모델🔗이 있다. 장점 단순한 선형 모델 - 이해 쉬움 단계별로 정형화된 접근 방법 - 체계적 문서화 가능 프로젝트 진행 상황 명확히 파악 가능 단점 요구사항을 완벽하게 작성해야 함 변경 수용 어려움 시스템의 동작을 후반에 확인 가능 대형 프로젝트에 적용 부적합 지나친 문서화 위험 분석 결여 일정 지연 가능성 큼 1. 폭포수 모델..
[컴퓨터보안] 암호의 개념과 대칭키 암호, 공개키 암호 1. 암호의 정의 및 용어 📝 암호의 정의 두 사람이 안전하지 않은 채널(인터넷 등)을 통하여 정보를 주고받더라도 제 3자는 이 정보의 내용을 알 수 없도록 하는 것 📝 관련 중요 개념 및 용어 * 평문(plaintext): 원본 메시지 * 암호문(ciphertext): 코드화(암호화)된 메시지 * 암호화(encryption): 평문을 암호문으로 변환 * 복호화(decryption): 암호문을 평문으로 변환 * 키(key): 암호화, 복호화 시 사용하는 가장 중요한 열쇠 📝 일반적인 암호의 요건 암호 알고리즘 + 키(key) 제 3자가 암호 알고리즘을 알더라도 키(key)를 모르면 암호를 풀 수 없음 2. 고대 암호화 방법 전치법(Permutatio..
[컴퓨터보안] 정보보호의 목표 - 기밀성, 무결성, 가용성 💡 정보보호의 핵심 목표 - 기밀성(Confidentiality) - 무결성(Integrity) - 가용성(Availability) 💡 정보보호의 기타 목표 - 부인방지(Non-Repudiation) - 인증(Authentication) - 접근제어(Access Control) 1. 정보보호의 핵심 목표 기밀성(Confidentiality), 무결성(Integrity), 가용성(Availability)의 CIA Triad 기밀성(Confidentiality) 허락되지 않은 자가 정보의 내용을 알 수 없도록 하는 것 예) 고객 정보 보호 접근 제어와 암호화 무결성(Integrity) 허락되지 않은 자가 정보를 수정하거나 위변조할 수 없도록 하는 것..
[컴퓨터공학/소프트웨어공학] 소프트웨어 공학 개요 1. 소프트웨어의 정의 포괄적/소프트웨어 공학 관점의 소프트웨어 정의 : 👉 좁은 의미의 소프트웨어(프로그램과 관련 데이터의 묶음)에 더하여 관련 문서들을 포함한 개념 2. 소프트웨어의 분류 기능에 따른 분류 시스템 소프트웨어 응용 소프트웨어 사용자에 따른 분류 일반(Generic) 소프트웨어 : = 패키지 소프트웨어 = 범용 소프트웨어 맞춤형(Custom) 소프트웨어 : = 비스포크 소프트웨어 3. 소프트웨어의 성질 무형의 인공물 - 물질적인 성질 없음 (H/W에 비해) 컴포넌트들의 조립을 통해 만들기 어려움 설계 과정의 품질 보증 활동 중요 (cf. H/W : 구현/제작 과정이 중요) 개발 비용 ≒ 인건비 (H/W에 비해) 변경 용이 - 소프트웨어의 ..
1. 리스트의 개념 리스트의 예 - 리스트는 배열과 달리 원소들 간의 논리적인 순서를 위한 자료구조이다. - 원소들 간의 순서는 논리적으로(추상적으로) 지켜지며 원소가 저장되는 물리적인 위치는 상관하지 않는다. - 배열의 순서 : 물리적 VS 리스트의 순서 : 논리적=추상적=의미적 - 배열을 이용해 리스트를 구현하면 논리적인 순서를 지키기 위해 원소의 이동이 많아진다. - 따라서 리스트는 일반적으로 포인터 변수를 이용한 연결 리스트를 이용한다. - 포인터 변수 : 다음 원소를 가리키는 위치 저장 - 포인터 변수와 동적 메모리 할당을 이용해 메모리 낭비를 막을 수 있다. 2. 배열을 이용한 리스트의 구현 자료의 삽입, 삭제가 빈번히 발생하는 상황에서 리스트를 배열로 구현하는 것은 자료 이동으로 인해 컴퓨팅..
1. 큐(queue)의 개념 큐는 줄을 선 순서대로 처리되는 모습으로 표현할 수 있다. - 큐의 스택의 공통점은 객체와 그 객체가 저장되는 순서를 기억하는 방법에 관한 추상 자료형이라는 것 - 가장 먼저 입력된 자료가 가장 먼저 출력되는 관계를 표현한다. - FIFO(First In First Out, 선입선출) - FCFS(First Come First Servce, 선착순 서브) - 한쪽 끝에서는 원소의 삽입 연산만, 다른 한쪽 끝에서는 삭제 연산만 발생 - 두개의 큐 포인터 변수(일반적으로 front, rear로 명명)를 사용한다. - front는 큐의 삭제가 발생하는 지점을 가리킨다. - rear는 큐의 삽입이 발생하는 지점을 가리킨다. - 삽입 시 rear를 증가시키고 삭제 시 front를 감소..
1. 스택(Stack)의 개념 스택은 이 동전 더미처럼 위로 쌓아올린 모습으로 표현할 수 있다. - 스택은 객체와 그 객체가 저장되는 순서를 기억하는 방법에 관한 추상 자료형이다. - 가장 늦게 입력된 자료가 가장 먼저 출력되는 관계를 표현한다. - LIFO(Last In First Out, 후입선출) - 하나의 스택 포인터 변수(일반적으로 top으로 명명)를 사용한다. - top은 스택의 삽입과 삭제가 일어나는 지점을 가리킨다. - 삽입 시 top을 증가시키고 삭제 시 감소시킨다. 2. 스택의 추상 자료형(ADT) * Object(객체) 0개 이상의 원소를 갖는 유한 순서 리스트 * Functions(연산) stack∈Stack, item∈element, maxStackSize∈positive inte..