본문 바로가기
반응형

전체 글224

[정보처리기사필기] 2과목 소프트웨어 개발 기출문제 해설 요약정리 소프트웨어 테스트의 기본원칙 - 결함 집중 파레토 법칙이 좌우한다 애플리케이션의 결함의 대부분은 소수의 특정한 모듈에 집중되어 존재한다 결함은 발생한 모듈에서 계속 추가로 발생할 가능성이 높다 - 살충제 패러독스 동일한 테스트 케이스로 반복 실행하면 더이상 새로운 결함을 발견할 수 없으므로 주지적으로 테스트케이스를 점검하고 개선해야 한다 - 오류 부재의 궤변 사용자의 요구사항을 만족하지 못한다면 오류를 발견하고 제거하더라도 품질이 높다고 할 수 없다 단위 테스트(Unit Test) -> 테스트 코드가 독립적이어야함(상호작용 X) 구현 단계에서 각 개별 모듈의 개발을 완료한 후 개발자가 명세서의 내용대로 정확히 구현되었는지 테스트 모듈 내부의 구조를 구체적으로 볼 수 있는 구조적 테스트를 주로 시행 테스트.. 2023. 5. 6.
[정보처리기사필기] 1과목 소프트웨어 설계 기출문제 해설 요약정리 시스템의 구성요소 Input : 처리 방법, 처리할 데이터, 조건을 시스템에 투입하는 것 Process : 입력된 데이터를 처리 방법과 조건에 따라 처리하는 것 Output : 처리된 결과를 시스템에 산출하는 것 Control : 자료를 입력하여 출력될 때까지의 처리 과정이 올바르게 진행되는지 감독하는 것 Feeback : 출력된 결과가 예정된 목표를 만족시키지 못할 경우 목표 달성을 위해 반복 처리하는 것 -> Maintenance : 유지보수 요구사항 정의 및 분석,설계의 결과물을 표현하기 위한 모델링 과정에서 사용되는 다이어그램 - Data Flow Diagram - UML Diagram - E-R Diagram UML(Unified Modeling Language) 객체 지향 시스템을 개발할 때 .. 2023. 5. 6.
[JAVA/자료구조] Queue Interface Queue 선입선출(FIFO) '대기열'을 뜻함 시간 순으로 어떤 작업 또는 데이터를 처리할 필요가 있는 것들은 큐의 성질을 갖고 있다. 대표적으로 알고리즘에서는 BFS(너비 우선 탐색)에 사용된다. 자바에서 제공하고 있는 큐는 인터페이스에 불과하고, 큐를 구현하는 클래스는 크게 세 가지가 있다. PriorityQueue(우선순위 큐), ArrayDeque(배열 양방향 큐), LinkedList(연결리스트) Queue Interface에 선언된 대표적인 메소드 java에서는 Vector클래스를 상속받다보니 아래의 클래스보다 훨씬 많은 메소드를 지원한다. 메소드 리턴 타입 설명 offer(E e) boolean 큐의 마지막에 요소를 추가한다. poll() E 큐의 첫번째 요소를 제거하고 제거된 요소를 반환.. 2021. 8. 19.
[JAVA/자료구조] Stack 구현 https://prinha.tistory.com/entry/JAVA%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-Stack-Interface [JAVA/자료구조] Stack Interface Stack 후입선출(LIFO) 한 번쯤, StackOverflowError를 마주할 수 있는데 재귀가 깊어지면서 발생한 오류이다. 메소드를 호출할 때마다 메소드 내에 정의된 변수들의 값이 Stack내에 쌓이게 되는데, 재귀가 prinha.tistory.com Stack Interface Source 더보기 package Interface_form; /** * * 자바 stack Interface입니다. * StackInterface는 Stack에 의해 구현됩니다. * * @author st_lab.. 2021. 8. 9.
[JAVA/자료구조] Stack Interface Stack 후입선출(LIFO) 한 번쯤, StackOverflowError를 마주할 수 있는데 재귀가 깊어지면서 발생한 오류이다. 메소드를 호출할 때마다 메소드 내에 정의된 변수들의 값이 Stack내에 쌓이게 되는데, 재귀가 깊어지면 Stack 메모리에 이 값들이 쌓이면서 총량이 할당된 메모리 양보다 커질 때 내뱉게 된다. Stack의 활용 1) 페이지 뒤로가기, 실행 취소 가장 최근에 방문했던 페이지가 가장 상단에 위치함, 실행 취소 또한 마찬가지다. 2) 수식 괄호 검사 여는 괄호가 있으면 닫는 괄호 또한 반드시 있어야 한다. 어느 하나라도 부족하거나 많을 경우 수식을 완성할 수 없다. Stack Interface에 선언된 대표적인 메소드 java에서는 Vector클래스를 상속받다보니 아래의 클래스보.. 2021. 8. 9.
[JAVA 자료구조] Doubly LinkedList (이중 연결리스트) Doubly LinkedList 단일 연결리스트와 달리 '이전 노드'를 가리키는 변수가 추가된 양방향 리스트 - 단일 연결리스트에 비해 검색(색인) 능력이 좋아진다. - 이전 노드를 가리키는 변수를 갖고 있기 때문에 tail부터 탐색할 수 있다. (좀 더 효율적) 더보기 package Interface_form; /** * * 자바 List Interface입니다. * List는 ArrayList, SinglyLinkedList, DoublyLinked에 의해 각각 구현됩니다. * * @author st_lab * @param the type of elements in this list * * @version 1.0 * */ public interface List { /** * 리스트에 요소를 추가합니다.. 2021. 8. 9.
[JAVA 자료구조] Singly LinkedList (단일 연결리스트) Singly LinkedList 배열이 아닌 '노드'를 이용하여 여러 노드를 하나의 체인처럼 단방향으로 연결한 리스트 (위 그림에서 각각의 레퍼런스 변수는 다음 노드객체를 가리키고 있음) 이미지 출처 : https://st-lab.tistory.com/167 더보기 package Interface_form; /** * * 자바 List Interface입니다. * List는 ArrayList, SinglyLinkedList, DoublyLinked에 의해 각각 구현됩니다. * * @author st_lab * @param the type of elements in this list * * @version 1.0 * */ public interface List { /** * 리스트에 요소를 추가합니다. *.. 2021. 8. 5.
[JAVA 자료구조] ArrayList ArrayList Object[] 객체 배열을 사용하는 자료구조로 사이즈를 정하지 않고 동적으로 활용할 수 있다. 리스트 계열 자료구조는 데이터 사이에 빈 공간을 허락하지 않는다. 더보기 package Interface_form; /** * * 자바 List Interface입니다. * List는 ArrayList, SinglyLinkedList, DoublyLinked에 의해 각각 구현됩니다. * * @author st_lab * @param the type of elements in this list * * @version 1.0 * */ public interface List { /** * 리스트에 요소를 추가합니다. * * @param value 리스트에 추가할 요소 * @return 리스트에서 .. 2021. 8. 4.
[JAVA 자료구조] List Interface (리스트 인터페이스) 배열 vs List 인터페이스 공통점 1. 동일한 특성의 데이터타입을 묶는다. 2. 반목문내에 변수를 이용하여 하나의 묶음 데이터들을 모두 접근할 수 있다. 차이점 - 배열 1. 처음 선언한 배열의 크기는 변경할 수 없다. 정적 할당(static allocation) 2. 메모리에 연속적으로 나열되어 할당된다. 3. 인덱스에 위치한 하나의 데이터를 삭제하더라도 해당 인덱스는 빈공간으로 남는다. 차이점 - 리스트 1. 리스트의 길이가 가변적이다. 동적 할당(dynamic allocation) 2. 데이터들이 연속적으로 나열된다. (메모리에 연속적으로 나열되지않고 데이터들은 주소로 연결되어있음. ex.C의 포인터) 3. 데이터 사이에 빈 공간을 허용하지 않는다. 장점 1. 데이터의 크기가 정해져있을 경우 메.. 2021. 8. 4.
[Algorithm] 정렬 알고리즘 요약 정리 선택정렬 - 정렬되지않은 데이터 중 순차적으로 가장 작은 수를 선택하고 교환해나가는 정렬 - 장점 : 정렬을 위한 비교 횟수는 많으나 교환 횟수는 상당히 적다는 것이 장점 (풀스캔) - 단점 : 데이터의 개수가 조금만 많아지더라도 아주 많은 연산을 해야하기때문에 오래걸림 - 시간복잡도 : O(N^2) - 연산법 : N*(N+1) / 2 public class sortAl { /** * 알고리즘 * * * 1. i = 0 * * * 2. i부터 N-1까지 가장 크거나 작은값을 찾는다. * * * 3. i와 가장 크거나 작은값을 교환한다. 동일한 값일 경우 교환하지 않는다. * * * 4. ++i * 5. 2부터 다시 반복한다. */ int value[] = {5, 3, 8, 2, 10, 9, 4, 1}; .. 2021. 8. 1.
[Algorithm] 시간 복잡도 & Big-O표기법 시간복잡도(Time Complexity) 특정 알고리즘이 문제를 해결하는데 걸리는 시간 정확한 값을 산출하는 것이 아니라 근사치를 계산한다. 점근적 표기법 - 시간복잡도를 나타내는데 사용됨 1) 최상의 경우 : 오메가 표기법(Big-Ω Notation) 최적의 입력을 한 상태에서 작업을 완료하는데 가장 빠른 시간 2) 평균의 경우 : 세타 표기법 (Big-θ Notation) 여러가지 다른 경우의 수를 입력하여, 총실행시간을 계산하고 시행횟수로 나눈다. 3) 최악의 경우 : 빅오 표기법 (Big-O Notation) 최악의 입력을 한 상태에서 작업을 완료하는데 가장 느린 시간 -> 평균인 세타 표기법을 사용하면 좋겠지만 평가하기가 까다로워 최악의 경우인 빅오를 많이 사용한다. Big-O 표기법 - 점근적.. 2021. 7. 30.
[Algorithm] 공간 복잡도 공간복잡도(Space Complexity) 프로그램이 얼마나 많은 공간(메모리)를 차지하느냐를 분석하는 방법 공간복잡도 빅-오 계산법 1) 일반적으로 공간이 하나씩 생성되는 것을 1이라고 표현함 아래의 공간복잡도는 O(1) int a = 5; 2) 반복문에서의 지역변수 사용시 n값에 상관없이 공간복잡도는 O(1) 반복문이 N번만큼 반복하여도 for문 안에서의 지역변수이므로 다른 것에 영향 X int f(int n) { int i = 0; int result = 1; for(i = 1; i 1) return n * factorial(n -1); else return 1; } 프로그램에 필요한 공간은 고정, 가변 공간으로 나눌 수 있다. 시간적인 측면을 무시하고 공간복잡도만을 생각한다면 고정 공간보다는 가변.. 2021. 7. 30.
반응형