전체 글 13

[풀스택서비스네트워크] - 3주차 : Socket

Network Socket컴퓨터 네트워크 내 데이터 송수신을 위한 내부 엔드포인트.네트워킹 소프트웨어에 의해 관리되며, 시스템 리소스 형태를 가진다.IP 주소 + 포트 번호 = Socket Address로 프로그램을 식별.Socket ProgrammingTCP/IP 네트워크 통신의 기본 기술.소켓은 양방향 통신 엔드포인트를 제공한다.일반적으로 LAN이나 인터넷 상의 다른 컴퓨터 간 통신에 사용되지만, 같은 컴퓨터 내 프로세스 간 통신(IPC)에도 사용Berkeley Socket API인터넷 소켓과 유닉스 도메인 소켓을 위한 API.Berkeley Socket API 주요 함수socket(): 새로운 소켓 생성, 시스템 리소스 할당.bind(): 서버 측에서 소켓에 IP 주소, 포트 번호를 바인딩.list..

카테고리 없음 2025.04.20

[소프트웨어공학] - 6주차 : 설계 (1)

요구분석 vs 설계: 요구분석은 사용자의 요구 사항을 토대로 요구분석 명세서를 작성하는 것으로, 상대적으로 개념적/추상적이다. 이는 사용자의 요구를 'What' 관점에서 바라본다. 설계는 상대적으로 구체적이며, 분석 단계에서 고려하지 않은 상세 내용을 반영하여 구현할 수 있는 수준으로 준비한다. 요구분석 단계에서 파악한 비기능적 요구 사항, 제약 사항을 고려하고, 운영체제 등의 플랫폼을 결정하는 등 구체적인 설계서를 작성한다. 이는 'How' 관점에서 바라본다. : 설계자는 다양한 제약 조건을 만족시킬 수 있는 최적의 설계안을 만들고, 설계를 평가할 기준도 정량적으로 명시해야 한다. 좋은 설계를 위해선, 설계서는 요구분석명세서의 내용을 모두 포함해야 하며, 유지보수가 용이하도록 추적이 가능해야 하고, 변..

[소프트웨어공학] - 5주차 : 요구분석 (2)

요구사항 분석 - 유스케이스 다이어그램: 유스케이스 다이어그램은 시스템 개발자와 고객 간의 요구를 이해하기 위한 도구로, 전체 기능을 파악하고 대략적인 계획을 수립하는 데 도움을 준다. 사용자의 예외적인 요구사항도 파악할 수 있어, 이를 개발자에게 명확히 전달할 수 있다. : 유스케이스 다이어그램은 시스템이 사용자에게 제공하는 서비스 단위를 중심으로 구성된다. 사용자가 시스템과 어떻게 상호작용하는지를 다이얼로그 형태로 모델링하며, 이를 통해 시스템의 기능을 직관적으로 표현할 수 있다. 설계 과정에서 유용하게 활용되며, 개발자와 고객(또는 이해관계자) 간의 요구사항에 대한 공통된 이해를 형성하는 계약서 역할을 한다. : 유스케이스 다이어그램은 비기능적 요구사항을 도출하는 데는 적합하지 않다. 또한 시스템의..

[소프트웨어공학] - 4주차 : 요구 분석 (1)

요구 분석: 시스템이 무엇을 해야 하는지, 어떤 특성을 가져야 하는지를 기술한 것이다. 요구 분석의 목적은 소프트웨어가 무엇을 위하여 필요한지 정확히 이해하고, 이해한 것을 다른 개발자에게 정확히 전달하고, 시스템이 명세에 맞도록 제품 개발을 컨트롤하는 것이다. 이를 통해 의사소통 시간을 절약하고, 다음 단계의 기초를 세울 수 있다. : 소프트웨어 개발에서의 요구 분석은, 의뢰자(사용자)가 현행 시스템의 (1)입출력 화면, (2)문제점, (3)산출물, (4) 새로운 요구사항 등을 분석가에게 전달함으로써 대화가 시작된다. 목표는 사용자가 원하는 것을 파악하고, 개발할 소프트웨어의 목표를 확립하고, 분석 결과를 ‘요구 분석 명세서’로 만들어 내는 것이다. : SDLC에서의 요구 분석은, 사용자가 잠재적 또는..

[소프트웨어공학] - 4주차 : 프로젝트 관리와 계획 (2)

계획 - 일정 계획: 소프트웨어를 개발하기 위해 어떤 작업이 필요한지 찾은 후, 진행할 순서를 결정하거나, 주어진 개발 기간에 소작업의 개발 기간 및 그들 간의 순서, 필요한 자원 등과 같은 일정을 계획하는 것  계획 - 일정 계획 - 작업 분할 구조도(WBS) : 프로젝트 목표를 달성하기 위해 필요한 활동과 업무를 세분화하는 작업으로, 프로젝트 구성 요소들을 계층 구조로 분류한다. 프로젝트의 전체 범위를 정의하고, 작업들을 세분화한다. 이때 최하위 작업들을 작업 패키지라고 한다. WBS를 작성하고 난 뒤, 세부 작업 별 소요 시간, 소요 자원 등을 예측하고, 선행되어야 하는 작업과 같은 작업 사이의 의존 관계를 파악한다. 이를 기반으로 CPM을 사용해 여유 시간을 계산한다. : 장점은 사용자와 개발자 ..

[소프트웨어공학] - 3주차 : 프로젝트 계획과 관리

계획: 문제 정의, 타당성 분석, 개발 비용 산정, 개발 비용 산정 기법, 일정 구성, 위험 분석 등을 토대로 계획서 작성 : 누가 무엇을 어느 기간동안 어떻게 개발해야 하는지 예측하는 작업으로, 구현해야 할 기능과 요구하는 성능 및 인터페이스 성능에 따라 개발범위를 정하고, 구현할 프로젝트 특징과 자원 및 생산성에 따라 비용을 예측한다. : 계획을 하지 않으면 불확실성이 높아지고, 일정 차질, 비용 초과, 저품질, 높은 유지보수 비용 등 프로젝트 실패로 이어짐.  계획 - 문제 정의: 무엇을 개발할 것인지 명확히 정의하고, 개발 범위를 결정한다. 문제를 정의할 때 필요한 것은 개발하고자 하는 영역의 배경 지식과 기존에 존재하는 유사 시스템을 사용해보고 분석하는 것이다.  계획 - 타당성 분석: 개발할 ..

[소프트웨어공학] - 3주차 : 소프트웨어 공학과 개발 프로세스 (3)

에자일 프로세스 모델 : 정의는 (1) 진화적 프로세스 모델의 장점을 살리면서 요구사항의 변화를 주기적으로 수용하여 반복적으로 개발하는 모델이다. (2) 고객의 요구에 민첩하게 대응하고, 그때그때 주어지는 문제를 풀어나가는 방법론이다. 목표는 (1) 프로세스 중심이 아닌, 개개인과의 상호 소통을 중시 (2) 문서 중심이 아닌, 실행 가능한 소프트웨어를 중시 (3) 계약과 협상 중심이 아닌, 고객과의 협력을 중시 (4) 계획 중심이 아닌, 변화에 대한 민첩한 대응을 중시 (5) 환경과 고객의 변화에 능동적으로 대처하는 것을 강조한다. : 에자일 원칙으로는 (1) 고객을 위해 가치 있는 소프트웨어를 빨리, 지속적으로 제공 (2) 후반에 새로 추가되는 요구사항도 기꺼이 받아들이는 것 (3) 고객의 경쟁력을 위..

[소프트웨어공학] - 2주차 : 소프트웨어 공학과 개발 프로세스 (2)

소프트웨어 개발 생명주기 6단계 : 계획은 비용, 기간, 위험 분석, 문제 정의(시스템의 목표 및 제약 조건) 등 프로젝트 수행에 필요한 것을 계획한다. 요구 분석은 개발할 소프트웨어의 기능 및 제약 조건, 목표 등을 사용자와 함께 정의한다. 설계는 요구 분석 단계에서 표현한 다이어그램을 가지고 이를 구현할 수 있도록 구체화한다. 즉, 소프트웨어의 구조 및 알고리즘을 설계한다. 구현은 프로그래밍 언어로 실제 프로그램을 작성한다. 프로그래밍 언어 선택, 프로그래밍 기법과 스타일 등을 정한다. 테스트는 개발한 프로그램이 요구사항을 만족하는지, 실행 결과가 예상 결과와 맞는지, 오류는 없는지 등 완성도를 높인다. 유지 보수는 프로그램이 인수되고, 배포 후 일어나는 모든 활동으로, 시스템 결함 수정, 성능 개선..

[풀스택서비스네트워크] - 2주차 : OSI Architecture L4 (2)

Transmission Control Protocol (TCP)1. 개념연결 지향형(Connection-Oriented) Transport Protocol통신을 시작하기 전에 가상의 연결(Virtual Connection) 을 생성흐름 제어(Flow Control), 오류 검출 및 복구(Error Detection & Recovery) 기능 제공2. TCP의 데이터 전송 특징스트림 지향(Stream-Oriented)연속된 바이트 스트림 으로 데이터를 처리버퍼 (Buffer)송신자(Sending)와 수신자(Receiving) 간 처리 속도 차이를 고려해 버퍼(Buffer) 사용원형 큐(Circular Queue) 형태로 관리보낸 데이터는 수신자의 응답(ACK) 을 받을 때까지 Sending Buffer에 ..

[풀스택서비스네트워킹] - 2주차 : OSI Architecture L4 (1)

Process-to-Process DeliveryTransport Layer(4계층)의 역할은,Network Layer 위에서 동작하는 프로그램(Process) 간 데이터 전달을 담당.에러 처리, 순서 정렬, 흐름 제어 기능예시:A 컴퓨터의 카카오톡 앱이 B 컴퓨터로 메시지를 보낼 때,B 컴퓨터 내에서 어떤 프로그램이 이 메시지를 받을지 결정.하위 계층과 비교:2계층 (Data Link Layer): Node to Node (물리적으로 연결된 노드 간 프레임 전달)3계층 (Network Layer): Host to Host (서로 다른 호스트 간 데이터그램 전달)4계층 (Transport Layer): Process to Process (프로세스 간 데이터 전달)Client-Server ParadigmC..