본문 바로가기

CS

(71)
7. CRC Cards CRC card는 class responsibility collaboration 의 약자이다. 클래스를 만들고 그 클래스가 어떤 역할을 하고 어떤 콜라보를 하는 지 등에 대한 표현을 하는 일종의 문서이다. Responsibility는 클래스가 만들어진 목적에 부합하는 어떤 책임을 말하는 것이다. Collaboration은 클래스가 어떤 일을 할 때 하나의 일을 하나의 클래스가 할 수도 있지만, 몇 개의 클래스가 서로 협력해서 일을 할 경우를 말한다. Responsibility는 knowing과 doing으로 나뉜다. 클래스가 use case 요구사항에 따라서 해야 하는 operation과 그 일을 하기 위해서 필요한 데이터가 담긴 attribute가 있다. Knowing은 클래스가 알아야하는 것으로, 보..
6. Use Case, Use case Description * 유즈 케이스 Use case는 말 그대로 사용 예제이다. User가 system을 사용할 때 어떻게 사용할 지에 대한 사용 예제를 말한다. Use case는 uml 다이어그램 테크닉에서 처음 시작하는 주체라고 할 수 있다. Use case는 user들에 의해서 수행되는 activity이다. User가 소프트웨어를 이용해서 system에 무엇을 요구하는지, 그 system은 요구를 받고 어떻게 반응하고 어떤 행동을 해주는지를 표현한다. * use case description Use case description은 각 use case에 따라서 무엇을 하는지를 표현하는 것이다. -element element에는 name, ID number, Primary Actor, Brief description, i..
15. reliable data transfer 원리 : RDT(1.0, 2.0, 2.1, 2.2, 3.0) tcp의 안정적 데이터 전송 application layer에서 sender에서 데이터를 보내고 transport layer에서 tcp를 제공하고 receiver에 도착함 보내는 과정의 함수가 있을 텐데 여기는 unreliable함 이 unreliable한 곳을 뚫고 가면 receiver의 transport layer에서 reliable하게 함 * RDT : reliable data transfer protocol 방향성이 한쪽으로 가는 거라서 unidirectional 보통 FSM을 사용하게 됨 FSM은 finite state machines인데 유한상태머신임 머신이 하나의 상태에서 다음 상태로 넘어갈 때 이벤트가 있고, 액션이 있음 어떤 이벤트가 state1에서 발생하고 state2로 넘어갈 때, 그..
14. Connectionless transport : UDP UDP : user datagram protocol - RFC768에 잘 정의되어 있음 그냥 순수한 주소만 보고 전달하는 프로토콜 이름은 멋지지만 무책임함 best effort 중간에 패킷 손실 손상우려 있음 잃어버린 건 어쩔 수 없지만 순서가 뒤바껴서 오면 문제가 됨 순서를 재조합해야하거나 버려야하는데 application layer에서 처리하는 게 큰 부담이 될 수 있음 udp 는 주로 데이터 손실이 조금 있어도 되는 스트리밍 어플에서 많이 사용 DNS관련 데이터 베이스 업데이트 할때도 사용함 - 인터넷에 큰 무리가 안돼서 그렇다고 함 SNMP는 몇개의 패킷이 네트워크에 오갔는지 모니터링 하는 건데 udp 사용함 udp의 속도는 즐기고 싶지만 reliable하게 하고 싶으면 application la..
12. 트랜스포트 레이어 트랜스포트 레이어는 서로 다른 호스트에서 수행 중인 프로세스들 간의 logical 한 통신을 지원함 각 운영체제 상위에서 동작하는 어플리케이션의 프로세스들 사이에서의 통신 physical은 직접적으로 연결을 하고 데이터를 물리적으로 주고 받는 건데 트랜스포트 레이어는 프로세스가 인터넷 어딘가에 존재하는 프로세스와 하는 그냥 논리적인 통신을 함 transport protocol 통신 시 만약 보내는 쪽에서 보내려는 데이터가 100MB이고 이를 256kB씩 끊어서 보내려고 할 때 이 끊어놓은 단위를 segment라고 함. (transport layer에서는 segment, network layer에서는 packet, linked layer에서는 frame이라는 용어 사용) transport layer 내가 ..
5. System Analysis 1. 현행 시스템을 분석한다. 완전히 새로운 소프트웨어를 만드는 것이 아니고 사용자가 돈을 주고 사서 사용하고 만족을 얻어야 하기 때문에, 사용자의 요구사항에 맞게 제작해야 한다. 따라서 현재 사용하고 있는 소프트웨어의 시스템을 모델링해보고 더 나은 소프트웨어 로 어떻게 업그레이드 할지를 생각하는 것이 중요하다. 현행 시스템 분석 후에 목표 시스 템을 구성하고 개발 표준을 정의하면 된다. 현행 시스템의 하드웨어 구성과 네트워크 구성을 파악하고 장단점을 분석한 뒤 개선 방안을 도출해내면 된다. 2. 요구사항을 얻는다. 요구사항에 따라서 소프트웨어를 어떻게 만들 것인지 어떤 기능을 첨 부할 것인지를 결정하기 때문에 요구사항을 파악하는 것이 중요하다. 요구사항을 추출할 때는 요구사항 메트릭스를 사용하기도 한다..
19. 멀티스레딩 모델 - 커널 스레드 : 커널 내부적으로 생성, 삭제되는 스레드, 운영체제에 의해 관리됨 - 유저 스레드 : 유저스페이스 스레드 라이브러리에 의해 생성 유저스레드는 커널스레드에 매핑되어야 함 커널이 커널스레드를 스케줄링하고 유저스레드가 커널스레드에 매핑되어서 수행 커널은 유저스레드를 인식 못함 - 유저스레드는 반드시 커널스레드에 매핑 커널스레드가 block되면 거기에 매핑된 유저스레드 모두 block (= waiting) 멀티코어, 멀티프로세싱 환경에서 서로다른 스레드가 서로다른 프로세스에 랃아되어 수행 -> 각 커널 스레드가 서로다른 cpu를 할당받음 커널 스레드가 block되어 waiting 상태가 되면 그 커널스레드에 매핑된 유저스레드 모두 waiting state가 됨 한 스레드 ua 가 io 수행을 ..
18. 멀티코어 프로그래밍 Multi core : 코어가 여러개라는 것은 여러 스레드가 동시 수행 가능하다는 것이다 두가지 프로그래밍 방식이 있음 - Data parallelism 동일한 일을 수행하고 있지만 수행 대상 데이터가 다름 데이터를 여러 subset으로 나누고 각 코어에 다른 데이터 같은 일을 수행시킴 - Task parallelism 각 코어가 유니크한 연산을 수행. 데이터도 다를 수 있음 - concurrent : 동시성, 병행성 - parallelism : 병렬성 프로그래밍이 더 어려움 각 코어에 어떤 스레드를 할당할지, 코어간의 밸런스, 데이터를 효과적으로 분배, 특정 코어에서 산출한 데이터를 다른 코어에서 사용할 수도 있음, 테스트와 디버깅이 어려움, 소프트웨어 설계 측면에서 새로운 어프로치가 필요함