본문 바로가기

CS 정리

(14)
탑싯_1_소프트웨어 개발_3~5 문제 3. 자료구조 Q. 스택에 대한 설명으로 옳지 않을 것은? 1. 재귀 프로그램의 순서 제어, 후위 표기법에서 사용된다. 2. 각각의 자료를 1대다로 연결한다. 3. 연산의 종류에는 top(), push(), pop()가 있다. 4. 가장 나중에 쌓인 데이터가 가장 먼저 출력하게 되는 자료구조이다 4. 알고리즘 Q. 다음 가중치 그래프를 크루스칼 알고리즘을 사용해 최소 신장 트리를 만드시오. 5. 소프트웨어 설계 원리와 구조적 설계 Q. 응집도의 종류에 관해 틀린 것은? 1. 기능적 응집도 - 모든 기능 요소가 단일 문제와 연관 2. 시간적 응집도 - 특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈 3. 절차적 응집도 - 모듈 안의 구성 요소들이 기능을 순차적으로 수행할 경우 4. 논리적 응집도 -..
탑싯_1_소프트웨어 개발_5_소프트웨어 설계 원리와 구조적 설계 1. 소프트웨어 설계 원리 요구사항을 지속적으로 분할하여 분할하여 문제영역의 복잡성을 줄여야 한다. 적절한 그룹으로 분할과 정복을 한다. - 복잡한 문제도 해결하기 쉽고 개발자들이 독립적으로 개발 할 수 있다. 추상화 관심 분야가 아니거나 필수적이 아닌 세부적인 것을 생략한다. 필수적인 것만 표현한다. 어떤 논리적인 기능이 있는지, 컴포넌트가 어떻게 상호 작용하는지를 우선적으로 생각한다. 유형: 자료 추상화, 제어 추상화, 과정 추상화 정보 은닉 각 모듈의 내용을 감추고 인터페이스를 통해서만 메세지를 전달한다. 가장 중요한 것은 최소한의 모듈들에만 미치도록 하는 것 구성 요소 간의 독립성을 유지시켜준다는 점이 중요하다. 장점: 변화에 쉽게 적응, 유지보수를 용이 단계적 정제 모듈에 다한 세부 사항으로 내..
탑싯_1_소프트웨어 개발_4_알고리즘 알고리즘 조건 1. 명확성: 수행할 작업의 내용과 순서를 나타내는 알고리즘의 단계가 명시되어 있어야 한다. 2. 유한성: 유한 시간 안에 수행 후 반드시 종료되어야 한다. 3. 효과성: 실행이 가능해야 한다. 알고리즘 분석 기준 1. 정확성: 유한 시간 내에 올바른 결과를 산출해야 한다. 2. 작업량: 알고리즘을 수행하는데 필요한 수행 횟수가 적어야 한다 3. 기억 장소 사용량: 메모리 사용량 4. 최적성: 문제를 가장 잘 해결할 수 있는 알고리즘이어야 한다. 5. 단순성: 설명하거나 사용하기에 편해야 한다. 알고리즘 성능 분석 공간 복잡도, 시간 복잡도가 적어야 더 효과적인 알고리즘이다. 정렬 알고리즘 분류 내부 정렬: 주기억장치에서 정렬한다. 정렬 속도가 빠르나 양이 적다 외부 정렬: 보조 기억 장치..
탑싯_1_소프트웨어 개발_3_자료구조 종류 1. 데이터의 관계에 따라 선형 구조: 자료가 일렬로 연결되어 있는 형태다. 1:1 구조 주의) 물리적 메모리가 연결된 것이 아니다 ex) 리스트, 스택, 큐 비선형 구조: 한 자료 뒤에 여러 개의 자료들이 존재하는 구조로 1:다 또는 다:다 구조 ex) 트리, 그래프 2. 데이터 저장 방식에 따라 순차자료구조: 메모리저장이 빈자리가 없이 순서대로 저장한다. 물리적 주소 순서 = 논리적 순서 삽입, 삭제를 하면 순서대로 저장해야 한다. 데이터가 이동되는 양이 많다 연결자료구조: 물리적인 순서가 불규칙적이다. 링크드 리스트 생각하면 편하다. 물리적 주소 != 논리적 순서 삽입, 삭제를 하면 연결 링크 정보만 수정해주면 된다. 스택과 큐 스택 가장 나중에 쌓인 데이터가 가장 먼저 출력하게 되는 자료구조..
탑싯_1_소프트웨어 개발_2_소프트웨어 재사용 1. 소프트웨어 재사용 기존의 소프트웨어/소프트웨어 지식을 활용해 새로운 소프트웨어 구축 목적: 신뢰성, 생산성, 확장성 대상: 일반적인 지식, 설계 정보, 데이터 정보, 프로그램 코드 원칙 - 범용성: 일반적으로 사용할 수 있어야한다. - 모듈성: 최소한의 결합도 및 최대한의 응집력을 가져야 한다.(결국 연관된 것이 적어야 범용성이 높아지기 때문) - 하드웨어, 소프트웨어 독립성 - 일반성, 신뢰성 효과: 생산 단가 절감, 높은 품질의 소프트웨어를 공유할 수 있다 2. 역공학 이미 만들어진 시스템을 역으로 추적해 문서나 설계 기법 등의 자료를 얻는다 쉽게 설명해서 구현된 코드 등을 바탕으로 추상화된 설계를 만드는 것이다. Input: 원시코드, 목적 코드 등의 입출력 자료나 문서로 Output: 구조도..
탑싯_1_소프트웨어 개발_1_소프트웨어 공학 개요 1. 소프트웨어 공학의 4가지 중요요소 1. 방법: 프로젝트 계획 수립, 시스템과 소프트웨어 분석 2. 도구: 생산성 혹은 일관성을 목적으로 사용하는 방법들을 자동화시킨다. 3. 절차: 적용된 방법, 요구되는 결과물, 품질을 보증하고 변경을 조정한다 4. 사람 중요! 2. 소프트웨어 개발 생명주기 - 타당성 검토-> 개발 계획-> 요구사항 분석-> 설계-> 구현-> 테스트-> 운용 -> 유지보수 - 선택한 모델은 프로젝트에 존재하는 리스크/불확실성을 최소화 시킬수 있게 선택해야 한다. ex) 폭포수 모델, 프로토타입 모델, 점진적 모델 - 모델의 종류 V모델 프로젝트 관리자나 개발자에게 어떤 활동이 수행되어야 하는지 명확하게 보여준다. 소프트웨어를 잘 모르는 고객도 이해시킬 수 있다. 요구사항이 바뀌지 ..