본문 바로가기

전체 글

(47)
[보안] 코드오류란? 코드오류란? - 소프트웨어 구현 단계에서 개발자들이 코딩 중 실수하기 쉬운 형변환, 자원 반환 등의 오류를 예방하기 위한 보안 점검 항목들 코드오류로 발생할 수 있는 보안 약점 보안 약점 설명 널 포인터 역참조 - 널 포인터가 가르키는 메모리에 어떠한 값을 저장할 때 발생하는 보안 약점 - 많은 라이브러리 함수들이 오류가 발생할 우 널 값을 반환하는데, 이 반환값을 포인터로 참조하는 경우 발생 - 공격자가 널 포인터 역참조로 발생하는 예외 상황을 악용 할 수 있다. - 널이 될수 있는 포인터를 이용하기 전에 널 값을 갖고 있는지 검사함으로써 방지 부적절한 자원 해제 - 자원을 반환하는 코드를 누락하거나 프로그램 오류로 할당된 자원을 반환하지 못했을 때 발생하는 보안 약점 - 힙 메모리, 소켓 등의 유한한..
[DB] 인덱스란? 인덱스란? - 데이터 레코드를 빠르게 접근하기 위해 쌍으로 구성되는 데이터 구조이다. - 데이터가 저장된 물리적 구조와 밀접한 관계 - 인덱스를 통해 파일의 레코드에 대한 액세스를 빠르게 수행 - 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스의 개수 최소화 - 인덱스가 없으면 특정한 값을 찾기 위해 모든 데이터 페이지를 확인하는 TABLE SCAN 발생 EX) 예를 들어 하나의 책을 샀는데 인덱스에 대한 설명이있는 페이지를 찾고싶다. 인덱스란 설명은 555페이지에 있다고 가정하면 시작 페이지부터 끝페이지 까지 찾아야되는 번거로움이 있다. 여기서 해당 책의 목차가 인덱스라고 생각하면 된다. 책 = A테이블 목차 = A테이블의 검색 속도를 향상시키기 위한 인덱스 목차는 해당 내용별로 몇페이지 인지 ..
모듈과 인터페이스란? 모듈이란? - 프로그램을 구성하는 구성 요소의 일부 - 관련된 데이터와 함수들이 묶여서 모듈을 형성 EX) 내가 만화방에서 쓰는 프로그램을 만든다고 가정을 해보자. 간략하게 프로그램을 세분류로 나눈다고 가정해보자 1. 고객관리 2. 도서관리 3. 매출관리 이렇게 크게 기능적으로 나누어진 프로그램을 가르켜 모듈이라고 합니다. 총 3개의 모듈로 고객관리 라는 프로그램이 하나의 모듈이되는거죠. 인터페이스란? - 구현된 것은 아무 것도 없는 밑그림만 있는 기본 설계도 - 인터페이스를 어떤 것에 중점을 두고 설계 하냐에 따라 나누어 질 수 있다. (EX. 사용자 인터페이스, 시스템 인터페이스 등) - 인터페이스 설계라고하면 겉테두리를 어떤식으로 설계를 할것인지 말하는거다. EX) 화면 인터페이스 - 사용자와 시스..
[DB] 분산 데이터베이스란? 분산 데이터베이스란? - 논리적으로 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러 개의 컴퓨터 사이트에 분산 되어 있는 데이터 베이스 분산 데이터베이스 구성요소 - 분산 처리기 - 분산 데이터베이스 - 통신 네트워크 분산 데이터베이스의 목표 목표 설며 위치 투명성 액세스하려는 데이터베이스의 실제 위치를 알 필요없이 단지 데이터베이스의 논리적인 명칭만으로 액세스 중복 투명성 동일데이터가 여러곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용하고, 시스템은 자동으로 여러 자료에 대한 작업 수행 병행 투명성 분산 데이터베이스와 관련된 다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션의 결과는 영향을 받지 않습니다. 장애 투명성 트랜잭션, DBMS, 네트워크, 컴퓨터..
JSON과 XML이란? JSON이란? - 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 DATA 교환 형식 - 최근에는 JSON이 XML을 대체해서 데이터 전송 등에 많이 사용한다. - JSON은 데이터 포맷일 뿐이며 어떠한 통신 방법도, 프로그래밍 문법도 아닌 단순히 데이터를 표시하는 표현 방법일 뿐이다. - JSON 문서 형식은 자바스크립트 객체의 형식을 기반으로 만들어졌다. - 자바스크립트의 문법과 굉장히 유사하지만 텍스트 형식일 뿐이다. - Ajax에서 많이 사용 - XML을 대체하는 주요 데이터 포맷형식 XML이란? - Extensible Markup Language의 약자로, 구조화된 정보를 정의하기 위한 마크업언어 - 데이터 값 양쪽으로 태그가 있다. - 어떠한 데이터를 설명하기 위해 이름을 임의로 지은 태그..
소프트웨어 개발비용 산정기법이란? 소프트웨어 개발비용 산정기법이란? - 소프트웨어 개발시 비용을 어떤식으로 산정할건지 정하는 기법으로 크게 상향식, 하향식 기법이 있습니다. 상향식 기법 - 프로젝트의 세부적인 작업 단위별로 비용을 산정한 후 전체 비용 산정 기법 설명 LOC 기법 소프트웨어 각 기능의 원시 코드 라인수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용산정 개발 단계별 인월수 LOC 기법을 보완하기 위한 기법으로, 각 기능을 구현시키는데 필요한 노력을 생명주기의 각 단계별로 산정 - 상향식 기법중 수학적 산정기법에 대해 알아보겠습니다. - 수학적 산정 기법은 상향식 비용 산정 기법으로 개발비용 산정의 자동화를 목표로 합니다. - 수학적 산정기법에는 COCOMO 모형, Putnam 모형, 기능점수(FP..
디자인 패턴이란? 디자인 패턴이란? - 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 또 발생했을 때 재사용할 할 수있는 훌륭한 해결책 디자인 패턴의 종류 생성 패턴 이름 설명 추상 팩토리 구체적인 클래스에 의존 X 인터페이스를 통해 서로 연관 의존하는 그룹으로 생성 및 추상적으로 표현 빌더 작게 분리된 인스턴스를 건축하듯이 조합하여 객체 생성 팩토리 메소드 객체 생성을 서브 클래스에서 처리하도록 분리하여 캡슐화한 패턴 프로토타입 원본 객체를 복제하는 방법으로 객체를 생성 싱글톤 하나의 객체를 생성하면 생성된 객체를 어디서든 참조할수 있지만 여러 프로세스가 동시에 참조할수 없다 구조 패턴 이름 설명 어댑터 호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할수있도록 변환 브리지 구현부에서 추상..
형상관리란? 형상관리란? - 개발 시간 단축을 위한 관리작업 - 개발 과정을 문서화 하여 절차적으로 진행 - 완전성 검증을 위해 테스트 자료를 만들고 평가 - 기능적 특성에 대한 소프트웨어 통제, 변경 상태를 기록 및 보관 형상관리 대상 - 개발 비용 - 설계 문서 - 소스코드 - 모든 산출물 형상관리 도구의 기능 - 체크아웃 / 체크인 - 커밋 - 수정 형상관리 도구의 종류 형상관리 도구 설명 CVS 가장 오래된 형상관리 도구로 중앙 집중서버 저장소를 두고 버전관리를 실행 및 파일 단위의 변경사항 관리 SVN 중앙 집중형 서버 방식이지만 CVS의 단점을 보완해 가장 널리 사용되고 있는 도구 Git에 비해 branch, tag작업이 어려움 Git 공개 소프트웨어 커뮤니티 중심으로 사용 저변이 많이 확대 분산형 방식으..