본문 바로가기
728x90
반응형

전체 글194

소프트웨어 테스트(SW Test) 검증(Verification) / 확인(Validation) 검증(Verification) : (과정) the product right? 이 제품이 맞는가? 확인(Validation) : (결과) the right product? 제대로 된 제품인가? 오류 부재의 궤변(Absence of error fallacy) 사용자 또는 비즈니스의 요구사항을 충족시키지 못한다면, 설사 결함을 모두 발견하여 제거하였다고 하더라도 품질이 높다고 볼 수 없다는 원리. 살충제 패러독스(Pesticide Paradox) 동일한 테스트 케이스로 동일한 테스트를 반복적으로 수행하면, 테스트 내성으로 더 이상 새로운 결함을 찾아내지 못한다는 원리. 테스트 베이시스(Test Basis) 요구사항을 내포하고 있는 모든 문서로 테스트.. 2022. 9. 29.
그래픽 유저 인터페이스(GUI) 1984년 Apple의 매킨토시는 일반 컴퓨터 중 그래픽 사용자 인터페이스로 구입할 수 있는 첫 번째 컴퓨터였다. 또한 마우스와 상호 작용할 수 있다. 이는 그 시대의 다른 모든 개인용 컴퓨터에 있는 명령 라인 인터페이스에서 급진적인 발전이었다. 입력할 명령을 기억하거나 추측하는 대신에, 그래픽 사용자 인터페이스는 어떤 가능한 기능이 있는지 보여준다. 사용자는 단지 하고 싶은 무언가를 찾기 위해 화면 주위를 둘러보기만 하면 됐다. 이것이 포인트 앤 클릭(Point&Click) 인터페이스이다. 이렇게 컴퓨터가 직관적이게 되면서 누구든지 모든 것을 혼자서 알아낼 수 있게 되었다. 단언컨대, 현대 GUI의 진정한 조상은 Douglas Engelbart였다. 제2차 세계 대전 중 Engelbart가 필리핀에서 .. 2022. 9. 24.
소프트웨어(SW) 공학 SWEBOK (Software Engineering Body of Knowledge) IEEE에서 Software Engineering 분야의 지식을 10개 영역으로 정리한 체계. 소프트웨어 개발 가이드라인, 개발지침서 포함하여 SW 공학에 대한 총체적 접근 방안을 제공한다. 무결성(Integrity) 데이터 값이 속성에 미리 지정된 제약 조건을 만족하는 정확성 정합성(일관성) 다른 테이블에서 중복된 데이터의 일치성 3R (Reverse, Re-engineering, Reuse) 소프트웨어 생산성 향상, 품질 향상, 유지보수성을 극대화 하는 기법. 역공학(Reverse engineering) 기존 개발된 시스템에서 사양서, 설계서 등의 문서로 추출하는 방법. 재공학(Re-engineering) 기존 시스.. 2022. 9. 18.
화면 및 2D 그래픽 1960년 PDP-1은 초기 그래픽 컴퓨팅의 훌륭한 예이다. 왼쪽에 캐비닛 크기의 컴퓨터가 있고, 전기 기계식 텔레타이프 기계가 중간에, 오른쪽에 둥근 스크린이 있다. 이런 구조는 당시에 텍스트 기반 작업과 그래픽 기반 작업 업무가 뚜렷했기 때문이다. 사실 이 초기 컴퓨터 화면은 선명한 텍스트를 렌더링 하기 매우 어려웠다. 반면, 타이핑된 용지는 훨씬 더 높은 대비 및 해상도를 제공했다. 초기 컴퓨터 화면의 가장 일반적인 용도는 레지스터의 값과 같은 프로그램 운영을 추적하는 것이었다. 텔레타이프 머신이 이것을 종이에 반복해서 인쇄하는 것은 의미가 없다. 그것은 많은 종이를 낭비하고, 속도도 느리다. 반면 스크린은 동적이고 신속하게 업데이트되어 임시 값을 나타내는 데 적합하다. 그럼에도 컴퓨터 화면은 프로.. 2022. 9. 18.
키보드 & 명령 라인 인터페이스(CLI) 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 사용자가 컴퓨터와 소통을 가능하게 하는 다양한 입출력 장치(I/O device;Input-output device)들이 있다. 이러한 장치들은 인간과 컴퓨터 사이의 인터페이스를 제공한다. 그리고 오늘날에는 인간-컴퓨터 상호작용(Human-computer Interaction)에 대한 분야가 존재하고 연구하고 있다. 이러한 인터페이스는 사용자 경험(UX;User eXperience)에 근본적인 요소이다. 가장 초기의 기계 및 전자 기계 컴퓨팅 장치는 기어, 노브 및 스위치와 같은 입출력용 물리적 제어 장치를 사용했다. 이는 휴면 인터페이스의 범위였다. 콜로서스나 애니악의 같은 첫 번째 전자 컴퓨터조차도 거대한 기계적 .. 2022. 9. 12.
압축 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 기본적인 텍스트, 소리, 그림의 파일 형식은 오늘날에도 여전히 사용될 정도로 완벽하지만, 동시에 이러한 형식의 단순함은 매우 비효율적이다. 이상적으로는 파일 크기를 가능한 작게 해서 하드 드라이브를 가득 채우지 않고도 파일을 많이 저장하고 빨리 전송하기를 원한다. 이러한 이상을 가능하게 해주는 것이 바로 데이터를 더 작은 크기로 바짝 붙이는 압축(Compression)이다. 이렇게 하려면, 원래 표현보다 더 적은 수의 비트를 사용하여 데이터를 인코딩해야 한다. 이미지는 전형적으로 픽셀 값 목록으로 저장된다. 그리고 이미지 파일은 행의 끝을 알기 위해 이미지 파일은 차원과 같은 속성을 메타 데이터로 갖고 있으며, 파일.. 2022. 9. 9.
파일 & 파일 시스템 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 서로 연관된 데이터를 기록하기에 적합한 것을 일반적으로 컴퓨터 파일(Files)이라고 부른다. 파일에 임의의 형식화되지 않은 데이터가 포함되는 것은 문제가 없지만, 어쨌든 파일 내부가 조직화되어 있는 것이 가장 유용하고 실용적이다. 이를 파일 형식(File format)이라고 한다. 프로그래머들은 가끔 자신만의 파일 형식을 만들기도 하지만, JPEG 및 MP3와 같은 기존 표준을 사용하는 것이 가장 쉽게 파일을 만들 수 있다. 파일 형식 중 가장 간단한 것은 텍스트를 포함하고 있는 TXT 파일이다. 모든 컴퓨터 파일과 마찬가지로, 이 파일 형식은 이진수로 저장된 숫자 목록의 방대한 파일이다. 이 데이터를 해석하는 열.. 2022. 9. 4.
메모리(Memory) & 저장 장치(Storage) 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 이전에도 메모리에 대해서 이야기했지만 일반적으로 컴퓨터 메모리는 비영구적(Non-permanent)이다. 일반적으로 파일을 수정하다가 실수로 전원이 꺼진다면 메모리에 저장된 모든 데이터가 손실된다는 것이다. 이러한 이유로, 휘발성 메모리라고 불린다. 하지만 하드 디스크 같은 저장 장치에 기록된 모든 데이터는 전원이 나가거나, 지워지거나, 덮여쓰여질 때까지 유지된다. 이것은 비휘발성이다. 이전에는 휘발성 메모리가 빠르고 비휘발성 저장장치는 느렸다. 하지만 컴퓨팅 기술이 향상되면서 구별이 점차 사라지고 용어가 썩이기 시작했다. 요즘 우리는 USB와 같은 기가바이트의 용량을 제공하는 기술을 당연하게 사용한다. 가장 초기의.. 2022. 8. 28.
운영 체제 OS 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 1940년대와 50년대 초반의 컴퓨터는 한 번에 한 개의 프로그램을 실행했다. 프로그래머는 자신의 책상에서 프로그램을 펀치카드에 하나를 쓰듯이 썼다. 그런 다음, 그것을 방 크기의 컴퓨터가 있는 방으로 가져와서 전용 컴퓨터 운영자에게 건넸다. 운영자는 프로그램을 컴퓨터에 공급한다. 컴퓨터는 그것을 실행하고 출력을 내뱉고 정지한다. 이 수동적인 프로세스는 컴퓨터가 중간에 느려졌을 때, 다시 처음으로 돌아가서 프로그램을 실행하는 데에는 종종 몇 시간, 며칠 또는 몇 주가 걸렸다. 그러나 컴퓨터는 계속해서 빨라졌고, 인간이 뛰어다니면서 판독기들에게 프로그램을 삽입하는 것은 실제 프로그램 자체를 실행하는 것보다 오래 걸리게.. 2022. 8. 25.
집적 회로와 무어의 법칙 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 약 50년 이내에 소프트웨어는 복잡성에 있어서 많은 성장이 있었다. 종이테이프에 펀치 된 기계 코드에서 통합개발환경에서 컴파일된 객체 지향 프로그래밍 언어까지 이르렀다. 그러나 이러한 정교한 발전은 하드웨어의 개선 없이는 불가능했을 것이다. 컴퓨터 하드웨어의 힘과 정교함에서 폭발적인 성장을 인식하기 위해서는 전자 컴퓨팅의 탄생부터 살펴보아야 한다. 대략 1940년대부터 1960년대 중반까지 모든 컴퓨터는 개별 부품으로 제작되었으며 이들은 개별 구성 요소(Discrete Components)로 불렸고, 모두 유선으로 구성되었다. 예를 들면, ENIAC은 17000개 이상의 진공관, 70000개의 레지스터, 10000개.. 2022. 8. 20.
소프트웨어 공학 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. Microsoft Ofiice는 대략 4천만 줄의 코드를 가지고 있다. 그것은 혼자서 알아내고 쓰기에는 너무 크다. 이러한 거대한 규모의 프로그램을 만들기 위해서 프로그래머들은 일련의 도구와 실습을 사용한다. 종합하면, 이것들이 소프트웨어 공학(Software Engineering)의 한 분야를 형성한다. 이것은 엔지니어인 Margaret Hamilton이 만든 용어이다. 그녀는 NASA가 아폴로 미션을 수행하던 중 문제가 발생하지 않도록 도운 사람이었다. 그녀는 "이것은 신경치료와도 같아요. 당신은 끝까지 기다렸지만, 그것은 미리 할 수 있었던 일이 아니었습니다. 그것은 예방용 건강관리와 같지만 그것은 예방용 소프.. 2022. 8. 18.
앨런 튜링 Alan Mathison Turing 이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다. 앨런 튜링은 현대의 컴퓨테이션을 강조하는 많은 이론적 개념을 공식화한 사람으로 컴퓨터 과학의 아버지라고 불린다. Alan Mathison Turing은 1912년 런던에서 태어났다. 그는 조기 교육에서 수학과 과학에 대한 놀라운 적성을 보여주었다. 처음 컴퓨터 과학이라고 부르게 된 것은 1935년 케임브리지의 King's College에서 석사 과정을 밟으며 시작되었다. 그때 그는 독일 수학자 David Hilbert가 고안한 Entscheidungsproblem(= Decision problem ; 의사 결정 문제)을 풀기 시작했다. 이것은 형식 논리학적으로 쓰인 문장을 입력으로 받아들여 항상 정확하게 "예" 또는.. 2022. 8. 15.
728x90
반응형