소프트웨어 공학 - OOLC - Object Structuring (객체 구조화)
Object Structuring 객체 구조화는 아래의 순서를 따른다. 1. Object Structuring 분류 모든 객체는 반드시 아래의 스테레오타입 중 하나를 명시하며 하나의 객체가 두 가지 역할을 겸하지 않도록 단일 책임을 유지한다 유형 스테레오 타입 역할 ...
Object Structuring 객체 구조화는 아래의 순서를 따른다. 1. Object Structuring 분류 모든 객체는 반드시 아래의 스테레오타입 중 하나를 명시하며 하나의 객체가 두 가지 역할을 겸하지 않도록 단일 책임을 유지한다 유형 스테레오 타입 역할 ...
Static modeling 정적 모델링은 아래의 절차를 따른다. 1. Problem Domain Static Modeling 물리적인 클래스를 식별하는 과정이다. 말 그대로 물리적 클래스 목록을 작성하며 도메인 용어를 확정하는 단계이다. 여기서 식별된 물리적 클래스는 Entity Class Static Modeling에서 소프트웨어 엔티티 클래스...
요구사항 모델링 1. 요구사항 OOLC 뿐 아니라 SDLC의 첫 시작도 요구사항이 뭔지 찾는 것이다. 그리고 실제 개발할때도 이 요구사항에 대해서 확실하게 하고 가는 것은 매우 중요하다. 그렇다면 요구사항이란 뭘까? 몇몇 곳에서 정의한 요구사항에 대한 정의를 가져왔다. Webster’s Ninth New Collegiate Dic...
소프트웨어 공학 학부 시절 소프트웨어 공학을 배울때 이런 쓸데없는걸 왜 배우는가에 대한 의문을 가졌던 때가 있었다. 회로 부터 운영 체제, 프로그래밍 언어, 컴파일러 등등 배울게 얼마나 많은데 이런 쓸데없는 절차에 대해서 배우고 있냐 싶었던 것이다. 일단 수업 자체도 재미가 없었거니와 아마 당시 수업을 맡으신 교수님도 소프트웨어 공학 쪽 전공이 아니...
병렬 분산 컴퓨팅 - MPI 원래는 분산 메모리 프로그래밍 관련 내용인데 이쪽에서 가장 유명한 라이브러리가 MPI라서 MPI 관련으로 포스팅을 하겠다. 1. 개요 이전에 포스팅 했던 OpenMP는 Shared memory programming 이었다. 하지만 이번에 포스팅할 내용은 Distributed memory programming 이다. 여...
GPU Warm up 1. 개요 GPU 커널을 짜서 빌드 후 돌렸을 때 초기 한번에 한 해 성능이 훅 떨어지는 문제가 있다. 완전 첫번째 실행시에만 발생하거나 혹은 완전 다른 커널을 실행시에 이런 문제가 발생하는데 이를 방지하기 위해서 Warm up이라고 하여 미리 GPU를 미리 예열하는 방식을 사용한다. 표현을 예열이라고는 했지만, 실제로 GPU...
병렬 분산 컴퓨팅 - OPENMP 1. 개요 Shared memory parallel 응용프로그램을 만드는 표준 API이다. (일반적으로 Data parallel model을 사용) 기본적으로 C와 C++, 포트란에서 명령어 세트를 지원하며, GCC에는 기본적으로 포함되어있다. OPENMP는 컴파일러 지시어(compiler directives),...
페이지 캐시와 파일 입출력 리눅스에서 파일을 읽거나 쓸 때 어떤 식으로 불러오고 쓰는지에 대한 포스팅이다. 1. 페이지 캐시(Page cache) 리눅스는 페이지 캐시라는 디스크 캐시가 구현되어있는데, 이 캐시는 디스크 접근이 필요한 데이터를 메모리에 캐싱시켜 DISK 접근을 줄이는 것이다. SSD를 사용하여 Disk 접근이 많이 빨라진 현 시대에도...
병렬 분산 컴퓨팅 - Pthread programming 1. Pthread programming 1) Posix(POSIX는 Portable Operating System Interface for Unix) Threads 그냥 흔히들 Pthread라고 불리는 thread이다. C언어 프로그램과 링크하여 사용할 수 있는 라이브러리형태로 제공되며, 멀티...
병렬 분산 컴퓨팅 - Parallel software & Performance 1. Parrallel software 1) Programming model 병렬 프로그래밍의 경우 실제로 구동되는 환경과 모델 사이의 추상화 부분에서 좀 상이할 수 있다. 이게 무슨 말이냐면 프로그래밍적으로는 분산 메모리를 가장하고 만들어질 수 있지만, 실제 구...