본문 바로가기

CS18

소프트웨어와 엔지니어 엔지니어 엔지니어란 고객이 원하는 요구사항을 들어주는 것이다. 엔지니어는 공학을 이용해 제품을 만든다. 공학이란 과학적 지식을 이용해 경제적인 가치를 가진 현실에 필요한 것을 만드는 것이다. 엔지니어는 과학자와는 많이 다르다. 엔지니어는 자본이 따라가는 곳에 항상 고객에 맞추어 제품을 생산하는 기술을 가지고 있다. 예를 들어 엔지니어가 컴퓨터를 만들어 내면 컴퓨터의 수리나 변경 설치 등 엔지니어가 하는 행동에 모두 경제성이 따라다닌다. 하지만 과학자는 자연이 원리를 파악하기 위해 과학을 탐구한다. 즉 이 둘의 차이는 비슷하지만 자본을 따라가냐 안 가냐에 따라 크게 나뉜다. 소프트웨어 컴퓨터가 해야 할 일을 지시하는 명령어의 집합이다. 소프트웨어는 크게 두가지로 나뉜다. ‘시스템 소프트웨어와 응용 소프트웨.. 2022. 11. 12.
요구사항 요구사항 요구사항의 정의 요구사항 분석 단계의 비즈니스 모델링을 통해 수집된 사용자의 기능적 요구사항을 정형화하고 비기능 요구사항에 대해 체계적으로 분류한고 명세화한다. 또한 구축할 시스템의 범위와 개발 우선순위를 정해 순차적으로 진행되어야 한다. 기능적 요구사항 고객이 원하는 요구 사항 중에 수행될 기능과 관련되어 있는 입력값과 출력 값 및 둘 사이의 처리과정이나, 목표로 하는 제품을 구현하기 위해 소프트웨어가 가져야 하는 기능적 속성을 의미한다.’ 예를 들어 기능적 요구사항은 기본 동작 같은 것을 세부적으로 나타내야 한다. 세부적으로 나타난 후 각 단계 별로 발생할 수 있는 오류나 예외를 정리해야 한다. 비기능적 요구사항 제품의 품질 기준이나 성능을 의미한다. 예를 들어 자동차를 예로 들면 자동차가 .. 2022. 11. 12.
보수 보수(complement) ‘정수 표현에서 컴퓨터는 N개의 비트를 이용해 2^N개의 정수만을 표현할 수 있 다. 이러한 방식을 이용해 수를 표현하는 것은 어려운데, 정수가 양의 정수와 음의 정수로 나눠지기 떄문이다.’ 여기서 주목할 점은 음의 정수이다. 음의 정수를 표현 하는 방법으로는 3가지가 존재한다. 부호 절대값(Sign Magnitude), 1의 보수(1s Complement), 2의 보수(2s Complement) 이다. 먼저 부호 절대값 방식은 자료형의 맨 처음 부분 1비트를 차지하는 부호비트이다. 부호비트를 사용하고 나머지 비트는 절댓값으로 표현하는 방식이다. 하지만 부호 절대값의 방식은 +0, -0이 동시에 존재하고 덧셈과, 뺄셈을 할 때 마다 사람이 개입해서 부호와 절댓값을 따로 분리해서.. 2022. 11. 5.
Declaration Statement, Computational Statement, Control Statement Declaration Statement Declaration Statement는 Type, Object로 구성 되어있다. 선언문 같은 경우 ‘주어진 타입과 이름을 갖는 변수를 생성하는 문장(컴파일 시점에 변수를 이름, 타입 등에 연결하는)이다.’ Type에는 int, float, char, boolean 등과 같이 정수형, 실수형, 문자형, 논리형으로 구성되며 데이터 타입이다. 변수를 선언 할 때 어떤 데이터 타입을 쓰냐에 따라 변수의 용도가 달라진다. Object란 “물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른것과 식별 가능한 것을 말한다.” 자바에서는 객체 생성을 위해 틀을 만들어야 하는데 그 틀중 하나가 Class이다. 클래스의 구조는 변수 선언 후 그.. 2022. 11. 4.
Bit와 진법 Bit 데이터를 표현하는 가장 작은 기본단위이며 컴퓨터에서 데이터를 저장하는 가장 작은 단위의 저장공간을 말한다. 비트라는 가장 작은 기본단위에는 On, Off 즉 0과 1로 밖에 저장하지 못한다. 또한 컴퓨터는 비트를 이용해 모든 것을 처리하고, 해석에 따라 문자, 사진, 영상 등이 될 수 있다. 1. 컴퓨터의 저장단위 ‘데이터 표현의 가장 작은 기본단위인 비트(Bit)이다. 8Bit는 1바이트(Byte)로 삼는다. 바이트부터 1000이 쌓이면 다음 단위로 바뀌는 기준이 된다. 즉 1000Byte -> 1 KiloByte가 된다. 1000 KiloByte -> 1 Megabyte가 되며 1000MB -> 1 GigaByte, 1000GB -> 1 TeraByte, 1000TB -> 1 PetaByte,.. 2022. 11. 3.
ASCII와 UNICODE, UTF-8 ASCII ‘ASCII란 (American Standard Code for Information Interchange)의 줄임말이고 해석을 하면 미국 정보 교한 표준 부호이다. 1960년대 미국 ANSI에서 표준화한 정보교환용 7비트 부호 체계이다.’ 또한 아스키코드는 하드웨어에서 정보를 교환할 때 사용되었던 것이다. ASCII table을 보게 되면 000 ~ 127까지 총 128개의 부호가 사용이 된다. ASCII 에는 영문만 존재한다. 1Byte 안에는 8개의 Bit가 들어가게 되지만 ASCII에 는 7비트만 사용되고 있다. 7비트만 사용하는 이유에는 2가지가 존재하는데 1비트는 통신 에러 검출을 위해 사용하는 것이다. 통신 에러 검출에 Parity Bit를 써서 전송 도중 신호가 변질된 것을 수신.. 2022. 11. 2.
이진 탐색 / 이분 탐색 - Binary Search 이진 탐색이라고 하며, 이분 탐색이라고도 하는 Binary Search는 배열의 원소가 오름차순이나, 내림 차순으로 정렬되어 있는 경우에 빠르게(log N) 값을 찾아낼 수 있는 알고리즘이다. 우리는 일상생활에서 Binary Search를 한번쯤 경험해본 적이 있을 것이다. 어렸을 때 많이 했던, 업 다운 게임이 대표적으로 Binary Search의 알고리즘을 이용하는 놀이이다. 1부터 10까지의 임의 수를 정하고 크다면 업, 작다면 다운을 외치는 놀이이다. 여기서 우리는 최소한의 횟수로 숫자를 맞추기 위해 1부터 10 사이의 중간값을 계산해 값을 유추할 수 있다. 1 2 3 4 5 6 7 8 9 10 항상 중간값을 선택해 값을 유추한다. -> 5보다 크다면, 8 을 선택 -> 5보다 작다면, 3을 선택.. 2022. 11. 1.
Compiler 1. 컴파일러의 정의 사람이 읽거나 쓰는 것을 자연어라고 한다. 그리고 자연어에 가까운 높은 수준의 언어를 고급언어(High Level Language)라 한다. 고급언어란 ‘ 사람이 이해하기 쉽게 작성된 프로그램 언어이며’ 사람이 읽거나 쓰는 언어 또한 고급언어이다. 즉 고급언어는 사람이 이해하는 용도의 언어일 뿐 기계가 이해할 수 있는 언어는 아니다. 기계가 쓰는 언어는 저급 언어(Low Level Language)이다. 저급 언어란 사람이 이해하는 데에 큰 어려움을 가지고 기계는 쉽게 이해할 수 있다. 프로그램의 종류는 두 가 지가 존재한다. 사람이 읽을 수 있는 프로그램(Source Code)과 기계가 읽을 수 있는 프로그램(Machine Code)이다. 그렇다면 사람이 이해할 수 있는 고급언어를.. 2022. 11. 1.
IDE와 UML IDE - (Intergrated Development Environment) IDE란 Integrated(통합) Development(개발) Environment(환경)이다. ‘IDE는 개발에 필요한 도구 같은 것을 모아 통합해놓은 것이 다. 쉽게 말해 개발을 하면서 사용되는 도구들의 집합으로 나타낼 수 있다.’ 프로그램을 개발하기 위해 필요한 모든 것(코딩, 디버그, 컴파일, 배포)들을 처리하는 환경을 제공하는 소프트웨어이다. Vim과 같이 사용자가 텍스트 변집기를 이용해 코드를 짜고, gcc를 이용해 컴파일을 실행하는 것도 있지만, 빠르고 쉬운 개발을 위해 IDE와 GUI를 합쳐 대화형 인터페이스를 제공하는 것이 통합 개발 환경이다. UML - (Unified Modeling Language) UM.. 2022. 10. 30.