본문 바로가기
반응형

분류 전체보기651

결합도 - "내공외제스자" 결합도 모듈 간에 상호 의존하는 정도 또는 모듈 사이의 연관 관계 모듈 사이의 상호 연관성의 복잡도 모듈들 사이의 상호 교류가 많고 서로의 의존이 많을수록 모듈들 사이의 결합도는 높아지게 된다. 결합도가 높을수록 한 모듈을 독립적으로 변경하기 어렵고, 이렇게 한 모듈의 변경이 다른 모듈에 미치는 영향도가 클 것으로 파문효과(Ripple Effect)를 일으키게 된다. 따라서 소프트웨어 설계 시 최대한 결합도를 낮추는 것이 필요하다. 결합도의 종류 결합도가 강한 것부터 약한 쪽으로 "내공 외제 스자" 구분 설명 자료 결합도 모듈 간의 인터페이스가 자료 요소로만 구성될 때의 결합도 스탬프 결합도 모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때의 결합도 제어 결합도 어떤 모듈이 다른 모듈 .. 2022. 12. 31.
응집도 - "우논시절통순기" 예전에 작성했던 내용에 일부 내용 업데이트 했습니다. 응집도 모듈 내부가 얼마나 강한 연관성으로 뭉쳐져 있는가를 나타내는 모듈 성숙도의 측정치 즉, 모듈 내의 각 구성 요소들이 공통의 목적을 달성하기 위하여 서로 얼마나 관련이 있는지 연관 정도를 나타내는 것 응집도는 모듈이 하나의 임무를 수행하는 정도를 나타내는 것으로 모듈의 독립성을 측정하는 또 다른 척도 정보 은닉 개념을 확장한 것으로, 명령어나 호출문 등 모듈의 내부 요소들의 서로 관련되어 있는 정도 즉 모듈이 독립적인 기능으로 정의되어 있는 정도 ※ 소프트웨어를 설계할 때 모듈들은 높은 응집도를 갖고, 모듈들 사이의 결합도가 낮게 하는 것이 바람직하다. 응집도 종류 응집도가 약한것에서 강한쪽으로 "우논시절 통순기" 응,약,우 ㅇㅇㅇ 다 ㅇ으로 시.. 2022. 12. 30.
소프트웨어 설계 원리 - "추정단모" 근래 개인적으로 강의를 듣는 게 있어서 블로그를 잘 못하고 있습니다. 양해 부탁 드리며... 예전에 공부할 때, 추정단모 추상화, 정보은닉, 단계적 분해, 모듈화로 암기를 했었는데, 탑싯 에센스를 보다보니 추상화, 정보은닉, 단계적 정제, 모듈화, 구조화 5개를 설명하고 있네요. 함께 개념을 정리해서 알고 있으면 좋을 듯합니다. 추상화 큰 흐름을 잃지 않으면서 점차적으로 문제영역에 접근하기 위해 상세한 수준의 구현을 고민하기보다 상위 수준에서 제품의 구현을 먼저 생각하는 것 컴포넌트의 구현 방법을 과감히 생략하고 외부 인터페이스에 초점을 맞추는 것 추상화 유형: 자료 추상화, 제어 추상화, 과정 추상화 정보은닉 각 모듈의 내부 내용을 감추고 인터페이스를 통해서만 메시지를 전달할 수 있도록 하는 개념으로 .. 2022. 12. 29.
[탑기공] 정렬, 검색, 그래프 탐색 알고리즘 멘토링 ⓛ 정렬 알고리즘은 종류별 동작방식 중심으로 학습을 권고합니다. - 선택 정렬, 삽입 정렬, 버블 정렬, 퀵 정렬 등 ② 검색 알고리즘은 분류 및 제어 검색에서 피보나치 탐색과 이진트리 탐색 중심으로 학습을 권고합니다. ③ 그래프 탐색 알고리즘은 DFS, BFS의 동작 방식 및 Psuedo Code를 작성하는 수준까지 학습하길 권고합니다. 정렬 알고리즘 개념 원소들을 번호순이나 사전 순서와 같이 일정한 순서대로 열거하는 알고리즘 정렬의 분류 정렬 장소에 따라 내부정렬(Internal Sort)과 외부정렬(External Sort)로 분류 내부정렬 소량의 데이터에 대해 주기억 장치에 올려서 정렬하는 방식으로 정렬 속도는 빠르나 주기억 장치의 용량에 의해 정렬할 수 있는 데이터의 양이 제한됨 외부정렬.. 2022. 12. 23.
[탑기공] 알고리즘(Algorithm) 멘토링 기출 문제를 분석하다 보니 생각 외로 알고리즘 관련 문제들이 많네요. 출제된 기출 문제 토픽에 대해서 최소한 개념 정도는 꼭 한 번쯤은 정리하고 넘어가시길 권고합니다. 알고리즘 관련 주요 키워드 백트래킹(Backtracking), 분할정복, 탐욕법, 동적계획법 선택 정렬, 삽입 정렬, 퀵 정렬, 버블 정렬 시간 복잡도, 공간 복잡도 최소 신장 트리, 크루스컬 알고리즘, 프림 알고리즘 최단 경로 알고리즘(다익스트라, 벨만-포드, 플로이드 와샬, A* 알고리즘) 그리디(Greedy) 알고리즘 재귀 호출, B 트리 / B+ 트리 알고리즘의 개념 주어진 문제를 해결하기 위한 일련의 처리 절차를 단계적으로 기술한 것으로 문제 해결 방법을 추상화하여 단계적 절차를 논리적으로 기술해 놓은 명세서 알고리즘의 목.. 2022. 12. 21.
[탑기공] 자료구조(Data Structure) 멘토링 자료구조에 대한 개념과 분류에 따른 종류를 아는게 중요합니다. 힙(Heap) 자료구조를 포함하여, 모두 충분히 학습하시길 권고 드립니다. - 자료 구조별 특징, 문제점, 알고리즘 연계성, 동작 방식, Psuedo Code 등 자료구조의 개념 다양한 자료를 효율적으로 표현하고 활용할 수 있도록 자료의 특성과 사용 용도를 고려하여 조직적, 체계적으로 정의하고 자료를 컴퓨터의 기억장치 내에 저장하는 방법 자료구조의 분류 자료구조는 크게 선형 구조와 비선형 구조로 나눌 수 있습니다. [두음] 배리스큐 트그 배열, 리스트, 스택, 큐, 트리, 그래프 정말 중요합니다. 필수 암기!!! 선형 구조 물리적 설계자료들이 직선 형태로 나열되어 자료들 간의 순서를 고려한 구조로 전후/인접/선후 자료들간의 1:1 관계.. 2022. 12. 20.
그래프(Graph) 자료구조 멘토링 그래프의 개념과 구성 요소에 대한 개별적인 이해도 중요하지만, 최단 경로 및 최소 신장 트리 알고리즘과 연계하여 그래프와 트리를 학습하시길 권고드립니다. 최단 경로 알고리즘 다익스트라(Dijkstra), 벨만-포드(Bellman-Ford), 플로이드 와샬(Floyd Warshall), A* 알고리즘 최소 신장 트리 알고리즘 크루스컬(Kruskal), 프림(Prim) 알고리즘 그래프(Graph)의 개념 객체를 나타내는 정점(vertex)과 객체를 연결하는 간선(edge)의 집합으로, 연결되어 있는 원소 사이의 다:다 관계를 표현하는 자료구조 [두음] 그정간다 그래프, 정점, 간선, 다:다 관계 표현 그래프의 종류 무방향 그래프, 방향 그래프, 완전 그래프, 가중 그래프, 유향 비순환 그래프(DAG,.. 2022. 12. 19.
트리(Tree) 자료구조 트리의 개념 트리(Tree)는 원소들 간에 계층 관계를 가지는 계층형, 비선형 자료 구조 일반적으로 원소들 간에 1:다 관계를 가진다. 트리 구성 요소 구분 설명 루트노드(root node) 트리의 시작 노드 간선(edge) 노드를 연결하는 선 형제노드(sibling node) 같은 부모 노드를 가진 자식 노드들 서브트리(subtree) 부모노드와 연결된 간선을 끊었을 때 생성되는 트리 트리 개념도 기출 문제 예전에 한창 코딩 공부할 때 트리 및 그래프 관련 웬만한 알고리즘은 다 코딩할 수 있었는데, 인간은 망각의 동물이라서, 3년 가까이 하지 않다 보니 거의 잊어버렸네요. 쉽지 않겠지만, 나중에 기회가 된다면 기초 Pseudo Code 까지는 업데이트 해 보겠습니다. 자료구조 및 알고리즘 관련 고득점을.. 2022. 12. 18.
큐(Queue) - "큐피포" 선형 자료 구조에서 종종 비교되는 것이 스택(Stack)과 큐(Queue)입니다. 스택은 지난번 포스팅했던 것처럼 LIFO의 특징을 갖고 있는데, 큐는 FIFO의 특징을 갖고 있습니다. 또한, 스택은 삽입/삭제가 한곳에서 이루어지는 것에 반해 (Top) 큐는 삽입/삭제하는 곳이 분리되어 있습니다.(Rear, Front) 스택은 깊이 우선 탐색(DFS) 구현에 활용될 수 있고, 큐는 너비 우선 탐색(BFS) 구현에 활용 될 수 있습니다. 큐(Queue) 선형 자료 구조의 하나로, 스택과 달리 삽입되는 곳과 삭제되는 곳이 다른 자료 구조 큐는 뒤에서(Rear) 삽입되고 앞(Front)에서 삭제할 수 있는 구조 FIFO(First Input, First Output) 특징 보유 큐의 개념도 출처 : 탑싯 에센.. 2022. 12. 16.
스택(Stack) - "스리포 3!4!" 한번 보면 절대 잃어버리지 않을 두음을 만들면 희열을 느낍니다. 룰라의 3!4!를 아시나요? 스택(Stack)의 핵심 특징은 LIFO(리포, Last In, First Out)입니다. 스택(Stack) LIFO Last In, First Out 스택(Stack) 선형 자료구조의 하나로 데이터가 입력된 순서로 기억공간에 저장되어 출력 시 가장 나중에 쌓인 데이터가 가장 먼저 출력을 하게 되는 자료 구조 스택의 개념도 스택의 연산 종류 연산 종류 설명 top() 스택의 맨 위에 있는 데이터 값을 반환한다 push() 스택에 데이터를 삽입한다. pop() 스택에서 데이터를 삭제하여 반환한다. isempty() 스택에 원소가 없으면 true 값을 반환하고 있으면 false 값을 반환한다. isfull() 스택에.. 2022. 12. 15.
[탑기공] 역공학 역공학 소프트웨어 공학의 한 분야로 이미 만들어진 시스템을 역으로 추적하여 처음의 문서나 설계기법 등의 자료를 얻어 내는 일 시스템을 이해하여 수정하는 소프트웨어 유지보수 단계에 수행하는 일련의 활동 즉, 소프트웨어 생명주기의 마지막 단계에서 얻어지는 프로그램 또는 문서 등을 이용하여 생명주기 초기 단계의 산출물에 해당하는 정보 또는 문서를 만들어 내는 일로서 설계부터 순차적으로 수행하는 순공학에 상대되는 개념 출처: 탑싯 에센스 소프트웨어 3R 개념도 역공학의 Input / Output Input Output 원시코드, 목적코드, 작업절차, 라이브러리 등 입출력 형태의 자료, 문서 구조도, 자료 흐름도, 제어 흐름 그래프, 개체 관계도 역공학의 종류 종류 설명 논리 역공학 원시코드로부터 정보를 추출하여.. 2022. 12. 14.
[탑기공] 소프트웨어 재사용 소프트웨어 3R - 역공학, 재공학, 재사용 소프트웨어 재사용 정의 사용 소프트웨어 개발 관련 지식(기능, 모듈, 구성 등)을 표준화하여 개발 생산성을 높이기 위하여 반복적으로 사용하기에 적합하도록 구성하는 방법 기존 개발 기능, 성능 및 품질을 인정받았던 소프트웨어의 전체 또는 일부분을 다시 사용하여 신규 개발되는 소프트웨어의 품질과 생산성 및 신뢰성을 높이고 개발 일정 및 비용을 감소시켜주는 대응 방안 기존 개발 모듈이나 프로그램, 산출물 등을 동일한 응용 분야, 서로 다른 응용업무, 혹은 서로 다른 기업 간에 다시 사용하거나 일부 수정 후 재사용할 수 있는 개념 소프트웨어 3R 개념도 소프트웨어 재사용의 목적 신뢰성, 확장성, 생산성, 사용성, 유지보수성, 적응성 재사용(Reuse) 활용 기법 Co.. 2022. 12. 13.
소프트웨어 3R 기출 문제 내용만 봐도 역공학, 재공학, 재사용은 SW 공학의 필수 토픽이라는 것을 알 수 있으실 겁니다. 관심을 갖고 공부하시길 권고드립니다. 각 기술 토픽 별 상세 내용에 대한 포스팅보다는 관련 정보가 있는 링크와 기출 문제 위주로 이번에는 포스팅했습니다. 소프트웨어 3R 완성된 소프트웨어 프로그램을 기반으로 역공학(Reverse Engineering), 재공학(Re-Engineering), 재사용(Re-Use)을 통해 소프트웨어의 생산성을 극대화하는 기법 기출 문제 (관리 119-4-2) 정보시스템 운영 및 유지보수 관점에서 소프트웨어 공학의 리팩터링(Refactoring) 기법을 활용한 3R(Reverse-Engineering, Re-Engineering, Re-use)에 대하여 설명하시오. (관.. 2022. 12. 12.
[탑기공] 04. 애자일 개발 방법론 04 애자일 개발 방법론 애자일 개발 방법론 개념 절차나 문서보다 사람과 업무 자체를 중요시하여 유연하고 신속한 개발을 추구하는 방법론 애자일 소프트웨어 개발 선언 [두음] 개작고변 우리는 소프트웨어를 개발하고, 또 다른 사람의 개발을 도와주면서 소프트웨어 개발의 더 나은 방법들을 찾아가고 있다. 이 작업을 통해 우리는 다음을 가치 있게 여기게 되었다: 공정과 도구보다 개인과 상호작용을 포괄적인 문서보다 작동하는 소프트웨어를 계약 협상보다 고객과의 협력을 계획을 따르기보다 변화에 대응하기를 가치있게 여긴다. 이 말은, 왼쪽에 있는 것들도 가치가 있지만, 우리는 오른쪽에 있는 것들에 더 높은 가치를 둔다는 것이다. 주요 애자일 방법론 스크럼(Scrum), 익스트림 프로그래밍(eXtreme Programmi.. 2022. 12. 12.
XP(eXtreme Programming) 기법 XP(eXtreme Programming) 수시로 발생하는 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상하는 방법 짧은 주기의 반복을 통해 요구 변화에 신속하게 대응하여 위험을 줄이고 고객 관점의 고품질 SW를 빠르게 전달하는 Agile 방법론 애자일 방법론 중 하나로, 비즈니스 상의 요구가 시시각각 변동이 심한 소규모 프로젝트에 적합한 개발 방법론 - 중소규모 개발 조직에 적합한 경량화된 개발 방식 - 반복적 개발 방법론의 일종 - XP를 적용함에 있어서 그 가치(Value)와 그 가치를 달성하기 위한 실천법(Practice)으로 구성되며, 이 두 가지의 균형을 유지하기 위한 원칙(Principle)이 필요하다. XP 개발 절차 출처 : 탑싯 .. 2022. 12. 10.
728x90
반응형