본문 바로가기

전체 글

(45)
탑싯_1_소프트웨어 개발_10_소프트웨어 테스팅과 리팩토링 1. 테스팅의 개념 및 프로세스 개념 결함의 존재성을 밝히는 활동 완벽한 테스팅은 불가능 개발 초기에 시작 테스팅은 정황 오류-부재의 궤변 프로세스 테스트 설계 구성요소 설계 기법 2. 테스팅 유형 및 기법 유형 레벨에 따라 여러 유형이 존재하며 각 유형에서 테스트를 수행하는 주체, 환경등을 고려해야 한다. 기법 1. 화이트박스 테스팅 코드 기반 테스팅 단위 테스팅에서 주로 사용, 테스트가 가능한 소프트웨어 내의 결함을 찾는다 2.블랙박스 테스팅 명세기반 테스트 기능, 비기능 요구사항을 모두 검증해, 성능, 가용성 보안성 등의 비기능적인 테스트를 수행한다 3. 리팩토링 개요 외부에서는 그대로이지만 내부 구조를 개선한다 내부끼리의 관계를 단순화해 소프트웨어의 유지 보수성을 향상시켜 품질을 높이는 활동 절차..
탑싯_1_소프트웨어 개발_9_프로그래밍 언어와 개발환경 1. 프로그래밍 언어 저급언어 기계 중심적인 언어로 실행 속도가 빠르다 기계에 따라 다르게 개발해야 한다. 기계어 / 어셈블리어 고급언어 자연어에 가깝게 만들어져 저급언어에 비해 프로그래밍하기 쉽고 가독성과 생산성이 높다 기계와 관계없이 독립적으로 프로그램 개발 가능 C, C++, 파이썬 인터프리터 원시 프로그램을 직접 저급 언어로 바꾸면서 동시에 실행한다. 장점: 실행을 위해 완전한 기계어 번역을 기다리지 않고(컴파일) 필요시 마다 실행 단점: 재실행 시 매번 원시 프로그램을 디코딩해야 함. 컴파일러 저급 언어인 기계어로 번역하여 객체 모듈을 만들고 링크, 로드시킨다 장점: 컴파일 한 후 바로 재실행이 가능(바이너리 파일을 재실행), 한번 컴파일 한 후에는 바로 재실행 가능 단점: 기계어로 변환하는데 ..
탑싯_1_소프트웨어 개발_8_UI/UX 1. 개요사용자와 시스템이 정보를 주고 받는 상호 작용이 잘 이루어지도록 하는 장치나 소프트웨어 고려해야하는 사항 가. 일관성 필요 개발 이전에 사용자 인터페이스에 대한 표준안을 만들어 일관성을 유지 나. 사용자 중심 설계 사용자를 중심으로 설계되어야 한다. 입력 출력이 사용자 입장에서 쉽게 느껴져야 한다. 다. 피드백 사용자가 잘못 눌렀을 때 잘 못 눌렀다고 인지시켜야 한다 라. 파괴적 행동에 대한 확인 사용자가 심각한 오류를 유발시킬 수 없게 설계. undo 2. UI / UX차이점: ux는 안보이는 것을 연구하는것. 경험에 대한 통계를 중점으로 한 개선 연구. ui는 보이게 만드는 구체와 작업이다. ux에서 진행한 개선 연구를 실제화!! 설계도구 가. make 팀운영 및 관리 와이어프레임 프로토타입..
탑싯_1_소프트웨어 개발_6_소프트웨어 아키텍처 설계 1. 소프트웨어 아키텍처 설계복잡도를 높이는 다양한 요소글을 체계적으로 다루기 의한 개발 대상 소프트웨어의 청사진 절차 요구사항 분석 -> 아키텍처 분석 및 설계 -> 아키텍처 검증 및 승인 절차 요구사항 분석 - 품질요소를 식별하고 이의 우선순위를 결정 아키텍처 분석 - 아키텍처 스타일과 후보 아키텍처를 도출 아키텍처 검증 - 그 중에 하나를 골라 최종 승인 장점 : 기능을 분할하거나 사용자 인터페이스를 분할 할수 있어 쉬운 해결 방법을 찾을 수 있다 2. 소프트웨어 아키텍처 스타일가. 저장소 구조 모든 공유 데이터를 한 곳에 보관해 공유 가능하게! 나. mvc 구조 수정이 단순화되며 재사용이 용이하다 다. 클라이언트 서버 모델 서비스를 요구하는 클라이언트와 서비스를 제공하는 서버다. 분산 시스템으로 ..
탑싯_1_소프트웨어 개발_7_객체 지향 설계 1. 객체 지향 분석과 모델링 개념 객체 지향은 문제영역을 실세계 안에 존재하는 객체의 집합으로 보고 객체들 사이의 상호작용을 나타낸 것 모델링: 대상 시스템의 성능, 동작과정을 표현하는 방식 - 모델링의 3가지 관점 1) 기능 관점: 소프트웨어가 어떠한 기능을 수행하는지의 관점 (입력->출력) 2) 동적 관점: 소프트웨어 동작과 제어에 초점을 맞춘 관점(상태와 상태변화 요인) 3) 정보 관점: 시스템에 사용되는 정보 객체를 찾아 객체들 간의 관계를 규명 유즈케이스 고객과 시스템 개발자 사이에 의사소통을 원활히 해주고, 고객의 요구사항을 알기 위한 기법 각 유즈케이스에 대하여 시나리오를 작성한다. 정보 모델링 유스케이스를 바탕으로 행위자와 시스템이 주고받는 정보를 찾을 수 있다. UML의 클래스 다이어그..
탑싯_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. 단순성: 설명하거나 사용하기에 편해야 한다. 알고리즘 성능 분석 공간 복잡도, 시간 복잡도가 적어야 더 효과적인 알고리즘이다. 정렬 알고리즘 분류 내부 정렬: 주기억장치에서 정렬한다. 정렬 속도가 빠르나 양이 적다 외부 정렬: 보조 기억 장치..