공부/객체지향2011. 6. 26. 21:18


분석을 통해서 시스템이 실세계에서 잘 동작하도록.
시스템에서 문제를 찾고 해결방안을 찾는다.
유스케이스는 고객, 관리자, 동료개발자들에게 시스템을 설명하는데 쓰인다. 그래서 쉬운방식으로 작성되어야 하고
이런 유스케이스들과 분석을 통해서 실세계에서 어떻게 동작하는지 그들에게 보여준다.
분석을 통해서 문제를 발견하면 유스케이스에서 필요한 부분을 수정한다.

다시한번 위임 설명.
위임을 통해 프로그램을 느슨하게 결합시킬 수 있다. 객체들이 독립적으로 동작함을 의미. 객체의 변화가 다른 객체들에게 영향을 미치지 않도록 해준다.
 
분석을 통해 유스케이스를 잘 만든 다음 본문 분석을 통해 무엇을 클래스로 할 것인지에 대해 대략적인 방향을 잡는다. 본문 분석할 때 명사들은 대개 클래스이고 동사는 객체의 메소드이다. 대개 시스템 외부에 있는 명사들은 클래스가 되지 않는다.

클래스다이어그램
연관 - 한 클래스가 다른 클래스와 참조, 확장, 상속 등에 의해 연관되어 있음을 의미. 연관에 이용되는 속성은 목적클래스쪽 화살표위에 표시하며 클래스다이어그램에서 클래서 속성 넣는 곳에는 표시 안한다.
다중도 - 속성이 목적클래스 객체를 몇개까지 가질 수 있는지. '*' 라고 표시하면 무제한

클래스다이어그램는 시스템의 개요을 다른 프로그래머들에게 보여주기 위한 것이다. 타입정보를 정확히 알려주지 않고 메소드를 어떻게 작성해야하는지도 알려주지 않는다. 시스템의 전체 그림을 한눈에 보여준다. 

'공부 > 객체지향' 카테고리의 다른 글

6장 큰문제 해결하기  (0) 2011.06.29
5장 좋은디자인 = 유연한 소프트웨어  (0) 2011.06.28
3 요구사항 변경  (0) 2011.06.25
2장 요구사항 수집 (유스케이스)  (0) 2011.06.24
1장  (0) 2011.06.23


Posted by skyjumps
공부/논리설계2011. 6. 26. 01:28


카르노맵 - Boolean function을 최소화 하기 위해 사용하는 방식
카르노맵 만드는 법
http://blog.naver.com/PostView.nhn?blogId=nsesibong&logNo=60028521258&viewDate=&currentPage=1&listtype=0

카르노맵 특징
2의 지수승으로 묶는다.
묶는 방법에 따라 식이 여러개 나온다.
서로 인접하도록 만든다. ( 00, 01, 10, 11 이런식으로 비트가 하나만 바뀌도록)
항이 4개일때는 칸이 16X16인 맵이 2개 나온다. 두개를 따로 묶는 것으로 끝나지 않고 두 개가 겹쳤을 때 인접한지도 고려한다.

카르노맵을 Sum of product 방식으로 나타내었는데
product of sum의 방식으로 나타내려면 맵에서 0인 것을 묶으면 F'이 구해지고 이것을 complement를 해준다.

Don't care conditions
0이 되던지 1이 되던지 상관없는 minterms. 예를 들면 4bit binary code에서 0에서 9까지 표현하려고 하면 16개 중에서 6개는 필요가 없다. 얘네들을 이용해서 boolean function을 더 최소화할 수 있다. 1이라고 생각해도 되고 0이라고 생각해도 된다. 어차피 얘네들 output은 안쓰이니까 말이다. 최소화할 때 박스 더 크게 만들 수 있도록 도와준다.

AND, OR 회로는 NAND, NOR 회로로 바꿀 수 있다.
실제로 NAND와 NOR로 전기 컴포넌트를 더 만들기 쉽고, IC digital logic families의 basic gate이다.

NAND-AND 회로는 AND-NOR 회로로 서로 바꿀 수 있고
NOR-OR 회로는 OR-NAND 회로로 서로 바꿀 수 있다.

Exclusive-or function
Odd function이다. 즉, 1인 항이 홀수개이면 함수값이 1이다.
카르노맵을 그려보면 1의 갯수가 홀수개인 minterms만 1이 됨을 볼 수 있다.
이런 성질은 에러체크에 쓰인다. 전송중에 데이터가 손상되었다던지 해서 에러가 발생했을 경우 전송 전 패리티비트(1의 갯수가 홀수냐 짝수냐에 따라 값이 달라지는비트, 홀수패리티비트일때는 1의 갯수가 홀수일 때 1이다.)가 전송 후 패리티비트와 같은지 비교를 통해 에러의 발생여부를 알 수 있다. 
 

'공부 > 논리설계' 카테고리의 다른 글

4장 Combinational Logic  (0) 2011.06.28
2장 Boolean Algebra and Logic gate  (0) 2011.06.24
1장 Binary Systems  (0) 2011.06.22


Posted by skyjumps
공부/운영체제2011. 6. 25. 18:50


인터럽트
대부분의 운영체제는 인터럽트 방식이다.
하드웨어, 소프트웨어 모두 인터럽트를 발생시킬 수 있다.
인터럽트 진행과정
현재 일을 멈추고 리턴 주소와 프로세서 상태를 시스템 스택에 저장한다.
인터럽트 벡터(모든 서비스의 처리 루틴의 주소들을 포함하는 것)를 참조하여 특정 인터럽트를 처리한다.
인터럽트가 작업중일때는 다른 인터럽트는 끼어들지 못하도록 한다.
작업이 완료되면 이전에 하던 일로 돌아간다.

Synchronous I/O
I/O 작업이 끝날동안 프로세스는 기다려야 함.

Asynchronous I/O 
I/O 작업이 끝나길 기다릴 필요 없이 프로세스가 처리될 수 있다.

Caching
최근 접근한 데이터를 저장하기 위해 빠른 메모리 사용
용량이 작기 때문에 관리정책이 필요.

Dual-mode, I/O protection, Memory protection, CPU protection
프로세스들이 시스템 자원을 공유하기 때문에 서로의 프로세스를 침범하는 문제가 발생할 수 있다.

Dual mode는 user mode와 kernel mode인데 사용자 프로세스가 커널에 침범하지 못하도록 user mode와 kernel 모드로 나눈 것이다. 즉 user 프로그램은 user mode에서 동작하고 커널 모드에 접근할 수 없다. 시스템콜을 호출한다거나 0으로 나눴을 때(예외가 발생하는 경우) 커널 모드로 동작이 된다.
또한 사용자 프로그램이 I/O에 마음대로 접근하지 못하게 한다. 커널을 통해서 접근하도록 한다. (I/O protection)
또한 각각의 프로그램마다 영역을 정해줘서 다른 영역으로 침범 못하도록 한다. (Memory protection)
또한 한 프로그램이 CPU를 독점하는 것을 막기위해 타이머 인터럽트를 발생시키는 등 스케쥴링을 통해 CPU를 관리한다. (CPU protection)

참고 사이트
http://nenunena.tistory.com/41

운영체제 구조
1. 프로세스 관리
프로세스는 실행중인 프로그램이다. 운영체제는 프로세스 생성과 삭제, 중단과 재개, 프로세스 간 동기화나 통신을 맡는다.
2. 메인메모리 관리
3. 파일 관리
4. I/O 시스템 관리
5. 디스크 같은 이차 스토리지 관리
6. 분산시스템일 경우 네트워킹

'공부 > 운영체제' 카테고리의 다른 글

6장 Synchronization  (0) 2011.07.04
Process scheduling  (0) 2011.07.03
Multithreaded Programming  (0) 2011.06.30
Process Concept  (0) 2011.06.28
1장 Introduction  (0) 2011.06.24


Posted by skyjumps
공부/객체지향2011. 6. 25. 13:17


요구사항은 항상 변한다.

시나리오 : 유스케이스의 시작부터 끝의 경로. 유스케이스에는 몇 개의 다른 시나리오가 있고 주경로, 대체경로로 표시한다. 대체경로는 가끔만 일어나는 단계일수도 있고, 부분적으로 완전히 다른 경로를 제공할 수도 있다.
각 시나리오는 같은 목표를 가지고 있다.
 

'공부 > 객체지향' 카테고리의 다른 글

5장 좋은디자인 = 유연한 소프트웨어  (0) 2011.06.28
4장 분석  (0) 2011.06.26
2장 요구사항 수집 (유스케이스)  (0) 2011.06.24
1장  (0) 2011.06.23
UML, 상속, 다형성, 캡슐화  (0) 2011.06.22


Posted by skyjumps
공부/운영체제2011. 6. 24. 22:14


Spooling
 

입력장치가 CPU보다 처리속도가 엄청 느리기 때문에 속도를 보완하기 위해 나온 방식
입출력장치가 보조기억장치에 미리 처리할 내용을 저장해서 프로세스는 입출력장치를 거치지 않고 보조기억장치로부터 읽어서 처리한다.
Spooling은 여러작업을 처리할 수 있다. 예를 들어 한 작업이 출력되는 동안 다른 작업을 불러들일 수 있다.

비교 > Buffering 
Buffering도 CPU와 입출력장치의 속도차이를 보완하기 위한 방법인데 Spooling과 달리 주기억장치에 저장한다.

Multi-programming and Multi-tasking

주기억장치에 여러 프로그램들이 올라가 있고 운영체제가 실행할 프로그램을 선택한다.

von Neumann Architecture

프로그램 메모리와 데이터 메모리가 구분되어 있지 않음 (Harvard Architecture는 메모리가 구분되어 있음)

I/O device controller

I/O device는 컨트롤러를 가지고 있고 CPU는 이 컨트롤러와 정보를 주고 받는다.

운영체제란?

사용자와 하드웨어 중간에서 매개역활을 하는 프로그램

운영체제가 하는 일
 

1) Hardware abstraction
- 프로그래머가 하드웨어의 구체적인 부분을 몰라도 하드웨어에 접근할 수 있도록 한다.
2) Illusion
- time sharing으로 프로세서가 무한한 것처럼
- virtual memory를 이용하여 메모리가 무한한 것처럼
3) Protection
- time-shared scheduling으로 CPU protection
- physical memory와 virtual memory를 분리함으로써 memory protection
- dual mode(User/System)을 사용함으로써 I/O protection

'공부 > 운영체제' 카테고리의 다른 글

6장 Synchronization  (0) 2011.07.04
Process scheduling  (0) 2011.07.03
Multithreaded Programming  (0) 2011.06.30
Process Concept  (0) 2011.06.28
2장 System Structures  (0) 2011.06.25


Posted by skyjumps
공부/알고리즘2011. 6. 24. 21:13


O-notation
Upper bound. 이보다 커질 수 없다.

Ω-notation
lower bound. 이보다 작아질 수 없다.

Θ-notation
tight bound. upper bound도 될 수 있고 lower bound도 될 수 있다.




ο-notation (small O notation)
tight 하지 않은 upper bound

ω-notation (small Ω notation)
tight 하지 않은 lower bound

함수의 비교
 

Θ,Ω,ο,ω 를 관계로 보면
Transitivity
aRb and bRc -> aRc

Reflexivity
aRa

Symmetry
aRb -> bRa

Transpose symmetry 
aRb -> bR'a

'공부 > 알고리즘' 카테고리의 다른 글

8장 Sorting in Linear Time  (0) 2011.07.03
7장 Quicksort  (0) 2011.07.03
Heapsort  (1) 2011.06.30
4 Recursion  (0) 2011.06.28
2장 insertion sort, merge sort, binary search, selection sort, bubble sort  (1) 2011.06.23


Posted by skyjumps
공부/논리설계2011. 6. 24. 19:01


Duality
Boolean Algebra의 중요한 속성.
하나를 보여주면 다른 하나도 보여줄 수 있다.
예를 들면 헌팅턴의 공준, 공리에서  x+y = y+x 임을 보이면 x*y = y*x도 성립한다.
즉 binary operators( +, * )나 identity elements(+일 때는 0, *일 때 1)을 바꿈으로써 하나가 성립하면 다른 하나도 성립한다.

Boolean function
Ex) F1 = x + y'z
Truth tables로 값을 찾을 수 있다.
Logic gate로 구현할 수 있다.

Complement of Function.
F'은 F의 값이 0인 경우가 1이다.
드모르간 (DeMorgan) 법칙을 이용해 구할 수 있다.
또는 dual을 구하고 각 문자에 complement를 하면 된다.

Minterms and Maxterms

그림에서 보면 minterms 와 maxterms는 complement 관계에 있다.

Truth table로 부터 함수의 min terms를 구할 수 있다.
그리고 함수 F의 함수값이 0이 되는 부분을 이용하여 F'의 min terms도 구할 수 있고
이 함수를 다시 complement하면 본래의 F로 돌아가지만 max terms으로 표현된다.
따라서 min term을 알면 max terms도 안다. (complement 관계!)

Boolean expressions
52쪽 참고

Digital logic gate
54쪽 참고
 

'공부 > 논리설계' 카테고리의 다른 글

4장 Combinational Logic  (0) 2011.06.28
3장 Gate-Level Minimization  (0) 2011.06.26
1장 Binary Systems  (0) 2011.06.22


Posted by skyjumps
공부/객체지향2011. 6. 24. 18:30


소프트웨어는 고객이 원하는 기능을 하도록 해야 한다.
 

그러기 위해서 요구사항을 수집한다.
요구사항 : 시스템이 올바르게 동작하기 위해 수행하는 특정한 하나의 일.
요구사항을 잘 얻기 위해서는 시스템이 무엇을 해야 하는지 이해해야 한다.
예상밖의 상황도 생각해서 이를 어떻게 처리할지 생각해야 한다.
 
유스케이스
 

고객의 특정한 목표를 달성하기 위해 시스템이 무엇을 하는지 기술한다.
하나의 유스케이스에는 하나의 목표에만 집중한다.
따라서 목표 하나에 유스케이스 하나씩 있다.
유스케이스는 시스템이 '무엇'인지에 대한 것이다. 따라서 '어떻게' 구현할지는 생각하지 않음.
시스템의 외부에 고객이나 외부의 어떤 것이 존재한다.

유스케이스는 3가지가 필요하다.
1. 이 유스케이스가 고객의 목표달성에 도움이 되어야 한다.
2. 시작과 종료 지점이 있다. 
3. Actor가 있다. 주로 사람이나 시스템 외부의 어떤 것. 주로 시작 지점을 담당한다.

유스케이스는 프로그램의 주경로 이외에도 대체 경로에 대해서도 잘 동작하도록 해야 한다.

'공부 > 객체지향' 카테고리의 다른 글

5장 좋은디자인 = 유연한 소프트웨어  (0) 2011.06.28
4장 분석  (0) 2011.06.26
3 요구사항 변경  (0) 2011.06.25
1장  (0) 2011.06.23
UML, 상속, 다형성, 캡슐화  (0) 2011.06.22


Posted by skyjumps
공부/선형대수2011. 6. 24. 11:05


Elimination이 성공할 경우
pivot이 0이 아니다.
pivot : (i,i) 위치의 값

Elimination이 실패할 경우
pivot 위치에 0이 나올 경우

Back-substitution
Elimination이 끝난 후, 끝부분 부터 답을 찾아나가는 것.
예) 1w = 2 부터 위로 올라가면서 w, v, u를 구한다.
2u + v + w = 5
    -8v - 2w = -12
            1w = 2

Elimination Matrix
Eij (i 번째 row, j번째 column)의 값(- l)은 i번째 row * l  에서 j번째 row를 빼라는 의미

Matrix multiplication 

Ax = b에서 x는 column이 하나임을 의미
AB에서 B는 column이 여러개 가지고 있음을 의미
Multiplication by columns
AB = A[b1 b2 b3] = [Ab1 Ab2 Ab3]. b1,b2,b3는 B의 columns.

A의 열의 갯수와 B의 행의 갯수가 같아야 곱하기가 가능

matrix multiplication을 보는 세가지 방법

1) AB의 i,j번째 값은 A의 i번째 row와 B의 j번째 column의 inner product.

2) 모든 AB의 column은 A의 columns의 combination.

3) AB의 각 row는 B의 rows의 combination.

Bonus
4) AB = Sum of (cols of A) x (rows of B)
B의 row을 A의 col의 각 요소로 곱한 값이 결과다.
 
associative: (AB)C = A(BC)
distributive : A(B + C) = AB + AC and (B+C)D = BD + CD
not commutative : usually FE ≠ EF
 

'공부 > 선형대수' 카테고리의 다른 글

Inverse Matrices  (0) 2011.06.26
1장 Matrices and Gaussian Elimination (1)  (0) 2011.06.22


Posted by skyjumps
공부/알고리즘2011. 6. 23. 19:09


Insertion sort
 

Insertion sort란 정렬된 리스트에 정렬을 유지하도록 키를 삽입하는 정렬.
Performance
Running time
Instruction의 수를 센다.
Instruction에는 더하기 빼기 같은 산술계산과 Load, store, copy 같은 데이터 이동이나 if나 함수호출 등과 같은 Control이 있다.
running time은 input의 갯수에 따라 달라진다.
for나 while loop은 loop body 보다 한번 더 실행된다. 조건 연산때문에
이미 많은 부분이 정렬되어 있을 때 사용하면 성능이 좋다.

Best case : 이미 정렬되어 있을때, 두번째 루프 안돌아도 되므로 수행시간은 an+b, 즉 linear function이다.
Worst case : 반대로 정렬되어 있을 때. quadratic function. O(n^2)

Space consumption : O(n)

Sorted in place : 내부에서 정렬이 된다.


Merge sort
 

두개의 정렬된 리스트를 하나의 정렬된 리스트로 만드는 것
이동의 수 : n1+n2
비교연산의 수 : <= n1+n2
따라서 O(n1+n2)

Divide : n개의 keys를 n/2인 두개의 리스트로 나눈다.
Conquer : 두개의 리스트를 재귀적으로 정렬한다.
combine : 두개의 리스트를 합친다. 

Running time
Divide : O(1), 중간 값만 계산하면 되니까.
Conquer : 2T(n/2), 리스트 2개가 재귀적으로 정렬하는 시간
combine : O(n)

Recursion tree


각 단계의 합 : cn
트리의 높이 : 2^k = n 으로부터 k = lgn, 따라서 높이 h = lgn+1
n이 1이 될때까지 2를 나눈 횟수+1이 높이. n(1/2)^k = 1,  k=lgn.

Binary search
 

T(n) = T(n/2) + 1
Running time이 1부터 ln n까지

Selection sort
 

리스트에서 가장 작은 숫자를 찾는 과정이 반복되는 정렬
자료 이동 횟수는 고정 3(n-1). 3은 최소값이 i번째 값과 바뀔 때(i는 첫번째 루프단계, 0부터 n-2까지). 총 n-1번 돈다.
같은 값이 있는 경우 상대적인 위치 변경 가능성이 있다. 

Bubble sort
 

바로 다음 값과 연쇄적으로 비교하면서 큰값이 마지막에 위치하도록 하는 정렬.
비교횟수 : Worst, Average, Best 가 일정.
이동횟수 : 자료가 역순으로 되어 있을때 Worst, 정렬되어 있을때 Best
 

'공부 > 알고리즘' 카테고리의 다른 글

8장 Sorting in Linear Time  (0) 2011.07.03
7장 Quicksort  (0) 2011.07.03
Heapsort  (1) 2011.06.30
4 Recursion  (0) 2011.06.28
3장 Growth of Funtions  (0) 2011.06.24


Posted by skyjumps