가독성이 좋아 이해하기 쉽고 변경하기 쉽고 재사용하기 쉬운 효율적인 코드를 말한다소프트웨어 개발은 단 1번의 개발에서 끄타는 것이 아니라 이후 수 많은 변경이 필요하기 때문에 기능 개발만큼 유지보수도 중요하다. 따라서 코드를 다시 읽었을 때 이해하기 쉽고 나중에 변경하
디자인 패턴 중 하나, 프로그램이나 어떤 특정한 것을 개발할 때 발생했던 문제점을 정리해서 상황에 따라 적용해서 쓸 수 있는 것을 특정 규약을 통해 쉽게 쓸 수 있는 형태로 만든 것, 간단히 말해 소프트웨어 개발 방법을 공식화한 것이다.View, 눈에 보이는 것, 사
폭포수 방법론요구사항 분석 → 설계 → 구현 → 테스트 → 유지보수소프트웨어 개발 단계가 위에서부터 아래로 폭포에서 물이 떨어지듯 순차적으로 진행한 단계씩 진행하고 다음 단계로 가기 전에 완벽하게 요구사항을 반영하여 개발하기 때문에 이전 단게로 돌아가지 않는다.장점:
현실 세계의 사물 및 개념들을 객체로 보고 그 객체들을 조립하여 프로그래밍 하는 기법장점: 사람의 관점에서 프로그램을 이해하고 파악하기 쉬우며 재사용성, 확장성, 융통성이 높다단점: 설계에 많은 시간이 투자되고 설계 실패 시 다시 처음부터 시작해야 한다추상화객체의 공통
시스템 개발자와 운영을 담당하는 정보기술 전문가 사이의 소통, 협업, 통합 및 자동화를 강조하는 소프트웨어 개발 방법론조직이 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포하는 것을 목적으로 한다속도→ 작업 속도가 빨라지면서 시장 변화에 더 잘 적응하고 효율적으로
하드웨어 생산자와 소프트웨어 개발자의 관계를 나타낼 때 사용하는데 프로그래밍을 도와주는 라이브러리를 만드는 외부 생산자를 뜻한다주로 편한 개발을 위해 플러그인이나 라이브러리, 프레임워크를 사용하는데 이처럼 제 3자로 중간다리 역할로 도움 주는 것을 말한다First Pa
컴퓨터가 무엇을 할 수 있는지에 대해 연구하는 분야로 3가지로 구분할 수 있다TCS(이론 컴퓨터 과학)과 CE(컴퓨터 엔지니어링), applications(응용 프로그램)이 있다TCS는 이론적인 컴퓨터 과학의 주요 분야를 말하는데 계산 이론, 람다 미적분학 등 컴퓨터
정보의 전달 과정에서 오류가 생겼는지를 검사하기 위해 추가된 비트전송하고자 하는 데이터의 끝에 1비트를 더하여 전송하는 방법짝수 패리티라고 0으로 값을 고정하거나 홀수 패리티라고 해서 그 값을 1로 고정하는 건 아니다패리티 비트를 정하고 데이터를 보내면(단위시간당 하나
캐시 메모리: Cache Memory 속도가 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리 → bottleneck: 담을 수 있는 데이터의 양이 적은데 한꺼번에 많은 양의 데이터가 유입되면서 컴퓨터가 느려지는 현상 CPU가 주
진보된 RISC 기기의 약자 → Reduced Instruction Set Computing: CPU 명령어의 개수를 줄여 하드웨어 구조를 좀 더 간단하게 만드는 방식 단순한 명령 집합을 가진 프로세서가 복잡한 명령 집합을 가진 프로세서보다 훨씬 더 효율적이지 않나
연산 장치(=산술논리연산장치)산술 연산과 논리 연산을 수행한다.연산에 필요한 데이터를 레지스터에서 가져오고 연산 결과를 다시 레지스터로 보낸다.제어 장치명령어를 순서대로 실행할 수 있도록 제어하는 장치주기억장치에서 프로그램 명령어를 꺼내 해독, 그 결과를 따라 명령어
→ 컴퓨터를 구성하는 기계적 장치중앙처리 장치: CPU→ 주기억장치에서 프로그램 명령어와 데이터를 읽어 처리하고 명령어의 수행 순서를 제어한다.산술논리연산장치: ALU, 비교와 연산 담당제어장치: 명령어의 해석과 실행을 담당레지스터: 속도가 빠른 데이터 기억장소기억 장
✔️ 어느 하나가 우위에 있는 것이 아닌 필요에 따라 합쳐서 사용하기도 하고 원하는 목표에 따라 적절한 것을 골라서 사용해야 한다.일이 진행되는 순서대로 프로그래밍하는 방법장점: 코드의 가독성, 컴퓨터 처리 구조와 유사하여 실행 속도가 빠르다단점: 유지보수 및 분석이
변수의 특별한 한 종류, 함수 등과 같은 서브루틴의 input으로 제공되는 여러 데이터 중 하나를 가리키기 위해서 사용한다.간단히 말해서 함수의 정의 부분에 나열되어 있는 변수들을 의미한다.따라서 값이 아니라 변수(variable)로 봐야 한다.서브루틴의 input으로
인자로 받은 값을 복사하여 처리하는 방식call by value에 의해 넘어온 값을 증가시켜도 원래의 값이 보존된다.값을 복사하여 넘기기 때문에 메모리 사용량이 늘어나고 함수 안에서 인자의 값이 변경되어도 외부의 변수의 값은 변경되지 않는다.인자로 받은 값의 주소를 참
HTTP 통신에서 어떤 자원에 대한 CRUD 요청을 Resource와 Method로 표현하여 특정한 형태로 전달하는 방식Resource(자원, URI), Method(요청 방식\_GET, POST), Representation of Resource(자원의 형태\_JSO
✔️ 클래스의 타입으로 선언되었을 때 객체, 그 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 부른다.객체를 만들어 내기 위한 설계도 혹은 틀, 연관되어 있는 변수와 메서드의 집합을 말한다.소프트웨어 세계에 구현할 대상이자 클래스에 선언된 모양 그대로 생성된 실
원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대를 의미한다.사용자가 흐름에 대한 제어를 하며 필요한 상항에 가져다 쓸 수 있다.ex: Java(Spring), Python(Django, Flask) 등소프트웨어를 개발
상위 클래스의 메서드를 하위 클래스가 재정의하는 것을 말한다.메서드의 이름은 물론 파라메터의 수와 타입도 동일해야 한다.주로 상위 클래스의 동작을 상속받은 하위 클래스에서 변경하기 위해 사용한다.메소드 이름, 매개변수와 타입, 리턴 타입이 모두 동일해야 한다.메서드의
단 하나의 인스턴스를 생성하여 사용하는 디자인 패턴을 말하고 위의 코드는 객체를 미리 생성해두고 가져오는 방법이다. 최초 한 번의 new 연산자를 통해 고정된 메모리 영역을 사용하기 때문에 나중에 해당 객체에 접근할 때 메모리 낭비를 방지할 수 있다.이미 생성된 인스턴
익명함수(Anonymous functions)를 지칭하는 용어익명함수함수의 이름이 없는 함수를 말하고 일급객체라는 특징을 가지고 있다.다른 객체들에 적용 가능한 연산을 모두 지원하는 개체를 가르키고 함수를 값으로 사용할 수 있으며 파라미터로 전달 및 변수에 대입과 같은
테스트 주도 개발은 설계 이후 코드 개발 및 테스트 케이스를 작성하는 방식이 아닌 테스트 케이스를 작성한 후 실제 코드를 개발하여 리팩토링 하는 절차를 따른다. 이런 이유로 TDD를 Test First Development라고도 한다.RED: 테스트 실패구체적인 하나의
여러 개의 프로세서를 통해 하나의 프로그램을 처리하는 것을 말한다. 처리 부하를 분담함으로써 처리 속도를 향상 시킨다.분할: 어떻게 테스트를, 얼만큼, 어느 정도로 나눠서 처리할 것인가?스케줄링: 각 분리된 태스크들을 각 프로세서에 어떻게 배정할 것인가?동기화: 각 프
Docker는 컨테이너 기반의 가상화 기술이다. 기존에는 하드웨어를 가상화하였기 때문에 Host OS 위에 Guest OS를 설치해야 했는데 이런 방식은 무겁고 느려 한계가 많이 있었다. 그래서 이를 극복하고자 프로세스를 격리시킨 컨테이너를 통해 가상화 하는 Docke
클래스 앞에 abstract 키워드를 사용하여 정의하며 하나 이상의 추상 메서드를 가지는 클래스를 말한다.추상 메서드를 선언하여 상속을 통해 하위 클래스에서 반드시 구현하도록 하는 클래스이다. 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨두는 것을 말한다. 단