[지식창고] 40

[소프트웨어공학] Chapter 3. 소프트웨어 프로세스

거의 다 적었었는데 내용이 날라갔습니다.. 이번 포스팅 길다 생각했는데 이게 날라갈 줄이야 ~ 더 잘 적으라는 뜻으로 알고 다시 공부해서 적어봅니다 .. 。゚(゚´ω`゚)゚。 우리는 이전까지 소프트웨어 개발 과정에 있어서 5가지 접근 단계를 알아보았고 그 중 특히나 '프로세스 단계'에 대해서 자세히 알아보았다! 프로세스 중에서도 프레임워크 활동 ' 대화 - 계획 - 모델링 - 구현 - 설치 '과정에 대해서 알아보았는데 ... 과연 모든 프로세스가 이 과정을 순서대로 따라만할까? 이 물음에 대한 해답을 찾아보자 ! 그러기 위해서는 프로세스 모델이 등장한다. 프로세스가 돌아가는 다양한 방식에 대한 모델이 존재한다는 것이다. 프로세스 모델 프로세스 모델은 각 요소들을 서로 연결하여 일련의 소프트웨어 개발 프..

[소프트웨어공학] Chapter 6. 요구사항 개념

요구공학 요구공학이란 문제의 요구사항들을 이해하는 것 소프트웨어 엔지니어가 직면한 더 어려운 문제 RE: Requirement engineering → 커뮤니케이션 활동으로부터 모델링 활동까지 → 디자인과 구현을 이어주는 다리 요구공학의 Task ✅ customer가 무엇을 원하는지 ✅ needs를 분석 ✅ feasibility(실행할 수 있음)을 평가 ✅ 합리적인 접근법을 중재 ✅ 문제를 정확하게 명시화 ( → 모델링 ! ) ✅ specification 유효성 검증 ✅ 요구사항이 제대로 반영되어서 구현되었는지 관리 요구공학 단계 Inception(착수) - Elicitation(추출) - Elaboration(상세) - Negotiation(협상) - Specification(명세) - Validati..

[소프트웨어공학] Chapter2-2. 소프트웨어 공학 개요(2)

chapter 2에서는 소프트웨어공학에 관해 다룬다. 즉, 우리가 3,4 .. 장에서 차차 배워갈 내용을 쭉 다룬다. 소프트웨어의 정의와 역할과 진화 그리고 이 소프트웨어의 문제점, 응용분야를 다루어봤고 이번 포스팅에서는 소프트웨어공학을 단계별로 접근하는 방식에 관해 배운다. 우선 소프트웨어 공학의 정의부터 다시 상기시켜보자 ! 소프트웨어 공학, Software enginerring 소프트웨어 공학이란 신뢰성있고 실제 기계에서 효율적으로 작동하는 소프트웨어를 경제적으로 구현하고 사용하기 위해 건전한 공학 원칙을 수립하고 적용하는 것을 의미한다. 이 때 공학 원칙이란 앞서 말한 오류가 없고 효율적이라는 뜻을 내포하고 있다. 1) 소프트웨어 개발, 운영 및 유지보수에 체계적이고 집중된, 측정 가능한 방법론을..

[운영체제/OS] 2. OS의 역사

운영체제가 어떻게 개발되었고 어떤 문제점을 거쳐 현재의 모습으로 자리 잡았는가에 대한 장이었다. Phase 0 - 하드웨어는 매우 비싼 experiment; 운영체제가 존재하지 않는 단계 1. One user at console : 한명의 콘솔 사용자 - 한 번에 하나의 기능 ( 연산, I/O, 사용자 생각/응답 ) - 카드 덱을 통해 프로그램 로드: I/O 장치 드라이버 라이브러리 - 사용자는 콘솔에서 디버그 수행 Phase 1- 하드웨어는 비싸고 인간은 싸다 2. 간단한 배치 처리 : 프로그램을 로드하고 실행한 후 결과를 출력하고 삭제한 다음 반복한다. - 사용자는 (카드나 테이프로 된) 프로그램을 운영자에게 제공하고 작업을 예약한다. - Resident 모니터가 자동으로 사용자 작업을 로드, 실행,..

[컴퓨터 네트워크] 3.3 connectionless transport : UDP

현재 우리는 Trasnport layer에 대해 알아보고 있다. 3장에서 주구장창 말하겠지만 Transpor tlayer은 ent-to-end 에서 데이터 전송의 신뢰성을 제공한다는 것이다. 소켓을 통하여 신뢰성을 보장하는 계층이다. UDP, TCP 프로토콜을 주로 사용하여 UDP, TCP에 대한 설명을 자세히 해보려한다. 이번 포스팅에서는 연결비지향성 UDP에 대해 배워볼 것이다. 여러번 반복해서 나온 내용이니 빨리 짚고 넘어가보겠다. UDP : User Datagram Protocol [RFC 768] no frills, bare bones Internet transport protocol : 아무런 장식없고 필수적인 것만을 갖춘 프로토콜 best effort 서비스 : ** 네트워크에서 데이터를 전..

[컴퓨터 네트워크] 3.2 multiplexing and demultiplexing

우리는 현재 3장, Transport layer에 대해 배우고 있다. Transport layer의 주 기능은 end-to-end 통신을 제공한다는 것이다. 이 계층은 송신 호스트와 수신 호스트 간의 데이터 전송에 필요한 신뢰성, 효율성 및 보완성을 제공한다. Transport 라는 이름때문에 Network layer와 헷갈리기 쉬운데 데이터를 보낼 곳에 대한 주소를 이용하여 전송에 도움을 주는 것은 Network layer에서 담당하고 Transport layer에서는 데이터 전송에 있어서 사용자의 요청(Message)를 담아 원하는 Socket으로 전송해주고 신뢰성을 부여한다고 생각해보면 좋을 것 같다. 3.1부터 3.4까지는 빠르고 짧게 진도가 나갈 것이다.. 하지만 만약에 이 글을 보고 있는 미래..

[컴퓨터 네트워크] 3.1 Transport-Layer services

1장에선 인터넷을 배우며 5계층에 대해 알아보았고 2장부터는 이 5계층에 대해 한 챕터씩 자세하게 배운다. 2장에서는 application layer에 대해 배웠고 3장에서는 Transport layer에 대해 배운다 ~~ 서로 다른 호스트들은 locgical한 communication을 주고 받는다. 물론 이 communication 과정은 그냥 일어나는 것이 아니다! Transport layer를 통해 소통을 할 수 있다. 이 계층에서는 송신자와 수신자 사이에 연결을 설정하고 데이터 전송을 관리하는 프로토콜을 구현하기 때문이다. 조금 더 쉽게 다가가보자면 사용자의 요청(Message)를 담아 원하는 소켓으로 전송해주는 계층이다. 2장 마지막에서 배웠던 socket programming에 대해서 생각해..

[ 컴퓨터 네트워크 ] 3장에 들어가기 앞서

1장에서는 인터넷, 네트워크에 대해서 알아보았다. 2장에서는 애플리케이션 계층에 대해 알아보았다. 열심히 적었지만 내 머리에는 남아있는 지식이 얼마 없다. 또한 이전 포스팅들은 필자의 온전한 이해를 기반으로 작성하였다기보다 필자가 들은 정보를 나열한 식이었기에 다소 부족한 면이 있다고 생각하였다. 그래서 3장에 들어가기에 앞서 네트워크 학습과 관련한 포스팅을 하나 더 작성해보려고 한다. 우리가 지금까지 배워왔던 과정을 조금 더 세분화하여 살펴보고 흐름을 이해해보자 ! 1장부터 어떤 내용을 배웠는지 복기해보자 우선 인터넷에 대한 정의를 했다. 기술적인 부분과 서비스적인 부분으로 크게 정의한 뒤 인터넷에서 필수적으로 사용되는 프로토콜에 대한 설명을 해주었다. 이어서 인터넷/네트워크의 구성요소인 네트워크 ed..

[소프트웨어공학] Chapter 5 - (1) . 프로젝트 관리

프로젝트 계획 (Project Planning) 프로젝트 계획의 주요 목표 : 복잡한 기술 프로젝트를 제어, 추적 및 모니터링하기 위한 실용적인 전략을 수립하는 것 프로젝트가 시작되기 전 소프트웨어 팀은 다음과 같은 것들을 평가해야함 수행할 작업의 양 필요한 자원 시작부터 끝까지 소요될 시간 Task Set Establish project scope - 프로젝트 범위 정하기 Determine feasibility - 타당성 검토 Analyze risks - 리스크(위험성) 분석 Risk 분석은 항상 고려되어야한다! Define required resources - 필요한 자원 정하기 필요한 인력 자원을 결정하라 재사용가능한 소프트웨어를 정의하라 환경 자원을 정의하라 Estimate cost and eff..

[운영체제/OS] 1. OS란 ?

OS를 위한 컴퓨터구조 기초에 대해서는 5편까지 작성하도록 하고 OS에 대해 본격적인 설명을 해보도록 하겠다 ! What is Operating System? , OS란 ? 운영체제는 컴퓨터 시스템의 핵심 요소 중 하나로 여러 애플리케이션과 사용자들의 요구를 조율하여 공정하고 효율적인 방식으로 시스템 자원을 관리한다. 운영체제는 사용자와 하드웨어 간의 인터페이스 역할을 한다. → 운영체제는 소프트웨어 개발자가 하드웨어를 직접 다루는 것보다 간편한 가상 머신을 구현한다. 운영체제 하드웨어에서 구현되는 표준 서비스(인터페이스)를 제공한다. → 프로세스, CPU스케쥴링, 메모리 관리, 파일 시스템, 네트워킹 등이 포함 운영체제는 여러 애플리케이션과 사용자(멀티 프로세스)를 공정하고 효율적인 방식으로 조율한다...