본문 바로가기
반응형

전체 글261

Model-Driven Engineering (모델 기반 엔지니어링, MDE, MDA) 의 개념과 활용 Model-Driven Engineering (모델 기반 엔지니어링, MDE)정의 (Definition)Model-Driven Engineering (MDE): 소프트웨어 개발 과정에서 모델을 개발의 주요 산출물로 간주하는 접근법.프로그램 코드는 모델을 기반으로 하드웨어/소프트웨어 플랫폼에서 자동으로 생성됨.특징 (Characteristics)프로그래밍 언어 및 플랫폼 세부사항에서 벗어남소프트웨어 엔지니어는 프로그래밍 언어나 실행 플랫폼의 세부사항에 신경 쓰지 않아도 됨.모델에 집중하여 더 높은 수준의 추상화를 지원.초기 개발 단계현재 MDE는 발전 초기 단계에 있으며, 광범위한 채택을 위해 개선이 필요.장점 (Advantages)추상화 수준 증가:시스템을 더 높은 수준의 추상적으로 다룰 수 있음.적응 .. 2024. 12. 1.
[C언어] 프로세스 간 통신 (IPC) 프로세스 간 통신 (IPC)1. 파이프 (Pipe)스트림 지향: 데이터를 순차적으로 단방향으로 전송하는 방식입니다.시스템 호출: pipe(), read(), write()를 사용하여 데이터 전송을 처리합니다.동작 방식: 파이프의 쓰기 끝에 데이터를 작성하면, 커널이 해당 데이터를 버퍼에 저장하고 읽기 끝에서 읽힐 때까지 유지합니다.FIFO 동작: First In First Out 방식으로 데이터를 처리합니다.2. 메시지 큐 (Message Queue)메시지 지향: 프로세스가 메시지를 쓰고 다른 프로세스가 읽는 형태입니다.특징: 메시지 큐는 메시지 식별자로 관리되며, 커널 내에서 메시지의 연결 리스트로 구현됩니다.메시지 순서: 메시지는 FIFO 방식으로 읽히지만, 비순차적으로도 메시지를 검색할 수 있습니다.. 2024. 10. 18.
Assembly(어쌤블리어)의 기초 Machine Code:머신 코드는 프로세서가 실행하는 바이트 수준의 프로그램입니다. 이는 0과 1로 구성된 이진 형식으로, CPU가 직접 이해하고 수행할 수 있는 명령어들로 구성되어 있습니다. 각 명령어는 특정 작업을 수행하도록 설계되어 있으며, 메모리에서 특정 위치에 저장됩니다.Assembly Code:어셈블리 코드는 머신 코드를 텍스트 형식으로 표현한 것입니다. 이는 인간이 읽고 쓰기 쉬운 형태로, 각 머신 코드 명령어에 대해 기억하기 쉬운 기호(레지스터, 메모리 주소, 명령어 이름 등)를 사용합니다. 어셈블리 코드는 어셈블러라는 프로그램에 의해 머신 코드로 변환됩니다.  “Integer” data of 1, 2, 4, or 8 bytes:정수 데이터는 1, 2, 4 또는 8 바이트 크기로 표현되며.. 2024. 10. 18.
[C언어] Signal 프로그래밍에서의 Race Condition과 해결법 시그널 프로그래밍에서의 Race Condition과 해결법시그널은 비동기적으로 동작하기 때문에, 잘못 설계된 시그널 핸들러는 Race Condition을 유발할 수 있다. Race Condition은 여러 흐름(프로세스나 스레드)이 공유 자원에 동시 접근하면서 예상치 못한 동작을 초래하는 문제를 말한다. 본 글에서는 시그널 핸들러로 인해 발생할 수 있는 Race Condition의 원리, 해결 방법, 그리고 관련 코드를 중심으로 자세히 설명한다.Race Condition의 발생 관련 개념Race Condition은 다수의 흐름(프로세스나 스레드)이 공유 자원에 동시에 접근하거나 수정하려고 할 때 발생할 수 있는 문제를 말한다. 이를 방지하려면 공유 자원에 대한 Critical Section(임계영역)을 .. 2024. 10. 17.
[C언어] Signal 프로그래밍 개념과 예제 시그널 프로그래밍의 이해시그널은 운영체제가 프로세스 간 통신을 위해 제공하는 비동기적 메시지 전달 메커니즘이다. 시그널은 프로세스에 특정 이벤트가 발생했음을 알리거나 작업을 중단하도록 요청하기 위해 사용된다. 이 글에서는 시그널의 동작 원리, System V와 POSIX 표준에 기반한 시그널 프로그래밍, 그리고 운영체제와 시그널의 관계를 자세히 설명한다.시그널의 기본 개념시그널의 정의시그널은 정수로 표현되는 작은 메시지로, 특정 이벤트를 알리기 위해 사용된다. 프로세스는 시그널을 받으면 이를 처리하거나 무시한다.시그널의 주요 상태Pending: 시그널이 도착했지만 아직 처리되지 않은 상태.Blocked: 프로세스가 시그널을 처리하지 않고 차단한 상태.Not Queued: 동일한 시그널이 여러 번 발생해도.. 2024. 10. 17.
[c언어] 멀티 프로세스 프로그래밍 멀티프로세스의 이해멀티프로세스는 운영 체제에서 하나의 프로그램이 여러 개의 프로세스를 생성하여 병렬 작업을 수행하는 기법입니다.CPU는 여러 프로세스 또는 스레드가 마치 '동시에' 실행되는 것 처럼 행동합니다.메모리 분리: 각 프로세스는 독립적인 메모리 공간을 할당받습니다. CPU는 메모리 상에 각각의 프로세스를 실행하는데 필요한 코드와 데이터를 로드합니다. 프로세스 간 메모리 영역은 운영체제에 의해 보호되며, 서로 접근할 수 없습니다.싱글 코어 CPU의 경우 (중요!) 1. CPU멀티 프로세스 실행: 실제로 싱글 코어 CPU는 하나의 프로세스만 실행할 수 있습니다. 따라서 CPU는 시간 분할(Time Slice) 방식으로 각 프로세스에 CPU 시간을 할당하고 빠르게 전환합니다. 이는 멀티태스킹처럼 보이.. 2024. 10. 17.
시스템 모델링(System Modeling)과 관점에 따른 모델 종류 시스템 모델링 (System Modeling)시스템 모델링은 시스템의 추상적인 모델을 개발하는 과정으로, 각 모델은 시스템의 다양한 관점이나 시각을 제시합니다. 이는 분석가들이 시스템의 기능을 이해하고, 고객과 효과적으로 소통하는 데 도움을 주며, 주로 통합 모델링 언어(UML, Unified Modeling Language)의 표기법을 기반으로 합니다.시스템 관점 (System Perspectives)시스템 모델링은 여러 가지 관점(View)을 통해 시스템을 다각도로 분석하고 설계합니다. 주요 관점은 다음과 같습니다:외부 관점 (External Perspective) - 블랙박스(밖에서 본다)정의: 시스템의 맥락이나 환경을 모델링합니다.목적: 시스템 외부에 있는 요소들과 시스템 간의 상호작용을 이해하고.. 2024. 10. 16.
객체 지향 설계 원칙 (SOLID & GRASP)과 소프트웨어 아키텍쳐 설계 가이드라인 목차1. 소프트웨어 아키텍쳐 설계 가이드라인 & 원칙2. 객체 지향(OO) 설계 원칙SOLID OO 설계 원칙GRASP OO 설계 원칙소프트웨어 아키텍쳐 설계 가이드라인소프트웨어 아키텍쳐를 설계(Design)할때 놓치기 쉬운 부분은 Analysis 먼저하고 아키텍쳐 Design 해야된다는 것입니다. 아키텍쳐 분석 -> 추상적 아키텍처 설계 -> 아키텍쳐 설계위와 같이 분석과 추상 아키텍쳐 설계를 우선 거치고 설계해야됩니다.1. 아키텍쳐 분석어떻게 할지 생각하기 전에 무엇을 할지 생각해보는게 중요합니다.아키텍쳐와 상세적인 설계전에 기능적 요구사항(FR)과 비기능적 요구사항(NFR)이 정의되고 확인(verify), 인증(Validated)되어야합니다.(요구사항의 verification은 SRS 명세서와 일치.. 2024. 10. 11.
요구사항 공학(Requirements Engineering) 프로세스 요구사항 공학 프로세스 (Requirements Engineering Processes)  소프트웨어 개발에서 요구사항 공학(Requirements Engineering, RE)은 시스템이 제공해야 할 서비스와 그 운영 및 개발에 대한 제약 조건을 정의하고 관리하는 중요한 과정입니다. RE 프로세스는 애플리케이션 도메인, 적용되는 소프트웨어 개발 프로세스, 요구사항을 개발하는 사람이나 조직에 따라 다양하게 변형될 수 있습니다. 그러나 모든 RE 프로세스에는 공통적으로 네 가지 주요 활동이 포함됩니다:요구사항 도출 및 분석 (Requirements Elicitation and Analysis)요구사항 명세 (Requirements Specification)요구사항 검증 (Requirements Valida.. 2024. 10. 11.
요구사항 공학(Requirements Engineering) 특성과 유형 요구사항 공학 (Requirements Engineering)요구사항 공학은 고객이 시스템에서 필요로 하는 서비스와 시스템이 작동하거나 개발되는 과정에서의 제약을 정의하는 과정입니다. 이 과정에서 생성된 시스템 요구사항은 시스템 서비스와 제약 사항에 대한 설명입니다.요구사항(Requirements):서비스나 시스템 제약에 대한 추상적인 고수준 설명부터 수학적으로 정밀한 기능 명세까지 다양할 수 있습니다.서비스의 설명은 기능적 요구사항(Functional Requirements, FR)으로 나타나고, 시스템 제약은 비기능적 요구사항(Non-Functional Requirements, NFR)으로 표현됩니다. ex) 카메라 셔터 소리, 보안문제 등등요구사항의 유형사용자 요구사항(User Requirement.. 2024. 10. 8.