전체 글 50

[Software Design] Structural Modeling

이전까진 functional modeling에 대해 봤다. 이번엔 structural modeling에 대해 배운다. 실제 코드로 옮겨지는 상당 부분이 이 structural modeling때 결정된다. 구현할때 나머지 functional/behavioral modeling도 도움을 준다. Functional models는 system behavior에 초점을 맞췄었다. Structural models는 System Objects와 그들의 relationships에 초점을 맞춘다. 이것이 디자인을 거쳐 코드까지 연결된다. Functional modeling은 외부 관점에서 시스템을 바라보지만, Structural model은 시스템 내부에서 "System Object(세부 사항 포함)"와 "그들 사이 관..

[알고리즘-기초] Graph

Representation 1. Adjacency Matrix (인접 행렬) : 2차원 배열로 각 vertex간의 연결유무를 표현한다. undirected graph라면 symmetric 형태이다. : (단점) 공간이 낭비될 수 있고, "몇개의 edge가 있나?" 같은걸 해결하는데 최소 O(n^2)이 걸린다. 2. Adjacency List (인접 리스트) : 각 vertex를 array의 elements로 나타낸 후, 해당 vertex에 연결된 vertex들을 각 elements의 linked list로 연결한다. : undirected graph라면 두 vertex 모두에 각각 하나씩 만들어서 연결해야한다. : 쌩 1차원 배열로 나타낼 수도 있다. n+2e+1만큼 공간 필요. 0~i까지는 vertex..

알고리즘/기초 2022.09.16

Tree

Representation 자식 node 수에 제한이 없는 일반적인 tree : leftchid-right sbling의 linked node의 형태 (쓸일은 거의 없지싶긴함) Binary Tree : node 생성 후 linking 시켜서 표현하는게 일반적 BST도 여기 들어감. Complete Binary Tree : array로 표현하는게 저장공간측면도 그렇고 계산측면도 그렇고 훨씬 좋음 Heap도 여기 들어감. Binary Tree Operations 1. 순회(traversal) 2. 전체 복사 3. 전체 equality 확인 4. leaf node 연산(satisfiabiltiy problem) Binary Search Tree Operations 1. 검색 2. 삽입 3. 삭제 참고로 BST..

알고리즘/기초 2022.09.16

[Software Design] Business Process and Functional Modeling

OOAD랑 뭐랑 뭐 자꾸 헷갈리는데 다시 정리하고가자면, SDLC는 일단 4단계로 나뉜다. 그 단계의 배치가 어떻게 되냐에 따라 방법론이 나뉘기도 하지만, data/process 어디에 집중할지에 따라 방법론이 나뉘기도한다. 즉 두 부류의 방법론들은 서로 덮어씌우지는(?)거다. OOAD이면서 agile일 수도 있고, parallel일 수도 있는 것이고.. 지금은 그냥 SDLC 각 단계들을 OOAD 특성을 살려 배워 나가는 것 같다. (use case, 반복/점증, functional/structural/behavioral 이라는 특성들을 각 단계에서 적소에 써가며...) (마지막에 다 하고나야 좀 제대로 감이 잡힐 것 같긴하다. 이거도 맞는지모르겠네. 이론만 배우니 뜬구름 잡는 것 같음) 이전까지 req..

Language of the Computer

컴퓨터의 언어로 쓰인 단어를 instructions라고 하고, 그 vocabulary를 instruction set이라 한다. 사람이 읽을 수 있는 instruction과 기계가 읽을 수 있는 instruction, 두가지 형태를 가진다. 기계어 형태, assembly어 형태 이런 instruction set이 바로 hardware와 software 사이 interface이다. Instruction은 Opcode(operation code)와 Operands 두가지 부분으로 나뉜다. Opcode에 따라 Operands에 연산을 수행하는 것이다. Instruction set이 computer마다 다른 것은 맞지만, 그렇게 다르진 않다. 왜냐하면 모든 computer는 비슷한 하드웨어 기술로 만들어지고, 제..

Introduction

공통 집합의 hardware technologies가 computers에 사용되지만, 종류는 크게 3가지로 나뉜다. 1. Personal Computers (PCs) 2. Servers : 주로 network를 통해서만 접근된다. 3. Embedded Computers Post-PC Era Personal Mobile Device(PMD)가 급증해 PC를 대체해나가기 시작했다. 요즘의 PMD는 smart phone이나 tablet computer이지만, 이후엔 electronic glasses가 될지 모른다. 기존의 Server를 대체하는 놈도 등장하기 시작했는데, Cloud Computing이란 것이다. Cloud Computing은 Warehouse Scale Computers(WSCs)라는 큰 da..

[Software Design] Requirements Determination

(설계과목이니 planning을 주로 다루는 chapter 2는 건너뛰겠다고 하심) SDLC 중 Analysis 단계에 해당한다. 용어 as-is system == current system to-be system == new system Requirement Determination Requirement : system이 해야하거나 가져야하는 특성을 문장으로 기술한 것으로, 나중엔 어떻게 구현될지 technical description으로 자세하게 바뀌어야한다. Requirement는 use-case를 파악하는 것은 물론, 이후 다양한 분석 과정에서 기반이 되는 자료이다. 아래 설명하는 다양한 방식으로 Requirements를 최대한 많이 자세하게 수집하고, 나머지 analysis 과정은 모두 이 re..

[Software Design] System Development Life Cycle(SDLC)

과거 프로그래머들은 큰 계획없이 바로바로 프로젝트에 착수했다. 그만큼 규모도 작았고, 필요성을 크게 못느끼던 시기였다. 지금은 규모가 매우 크니 구현전 설계는 필수이다. 그리고 설계를 하더라도 (책의 자료에 의하면) 1996년 조사에서 53퍼센트의 IS project가 완성전에 버려졌다. 완성되더라도 계획보다 비용이 커지거나 시간이 길어지거나 구현이 덜 되었을 수 있다. 등등등... 즉, 지금은 제대로 설계를 해도 모자랄판이다. system analyst는 이런 프로그램 설계를 총괄하기도하지만, 그 외적인 요소도 신경쓰는 사람이다. 고객과 제대로 의사소통해 원하는 것을 파악해야하고, 시스템 설계도 당연히 잘 해야하며, 무엇보다 본인이 속한 조직에 가치있는 것을 만들어야한다. 여기서 가치있는 것이란, 사기..

Object-Oriented Systems의 기본 특징

교수님께서 한번 읽어보라고 올려주신 자료인데, 내용이 괜찮아 한번 정리해볼까한다. 내가 이해한대로 예를 들어가며 작성했다.기존에도 Smalltalk나 Simula programming language에 object-oriented라는 개념은 있었으나, 1980년대에 processor power가 증가하고 비용이 감소하기 전까지 그리 실용적인 개념은 아니었다. 현재는 다양한 programming language(C++, Java, Objective-C, Python, ...)에서 object-oriented 개념을 각각 다른 방식으로 구현한다. 여기선 object-oriented system의 기본 특성인 class, object, method, message, encapsulation, informati..

간단한 컴퓨터 구조와 HDL

computing system은 analog와 digital 두가지로 요소로 나뉜다. analog는 연속적인 것들을 의미하고, digital은 불연속적인 것들을 의미한다. 보통 digital signal을 선호한다.(signal과 sign의 차이는, sign에 시간까지 추가된게 signal이다. sign은 시간이 지나도 고정됨.) 왜냐하면 digital은 불연속적인 값을 처리하므로 우선 다루기 쉽고, data에 노이즈가 껴도 잘 처리된다. (analog signal은 노이즈가 조금만 껴도 영향을 받지만 digital은 불연속적인 값으로 표현되므로 경계가 명확하다.) 컴퓨터 processor 또한 digital 정보를 이용한다. processor을 설계할때 과거엔 도면을 직접 그렸지만, 최근엔 그 규모가 ..