목록전체 글 (49)
오늘부터 공부한다
객체지향 프로그래밍(Object Oriented Programming)은 문제를 여러 개의 객체 단위로 나눠 작업하는 방식을 말한다. 이 방법은 오늘날 가장 많이 사용하는 대표적인 프로그래밍 방식이고 JAVA, C# 등이 대표적인 객체지향 프로그래밍 언어이다. 객채지향 프로그래밍 특징 및 장점 객체 지향 프로그래밍의 가장 큰 특징은 클래스를 이용해 연관있는 처리부분(함수)과 데이터 부분(변수)를 하나로 묶어 객체(인스턴스)를 생성해 사용한다는 것이다. 그리고 객체지향 프로그래밍에서는 프로젝트를 독립적인 객체 단위로 분리해서 작업할 수 있기 때문에 여러 개발자와 협업해 규모가 큰 프로젝트를 진행할 수 있으며, 유지보수 측면도 뛰어나다. 객체지향 VS 클래스 기반 일반적으로 객체지향 프로그래밍은 객체지향 프..
논리 뷰 (logical view) 시스템의 기능적인 요구사항 시스템이 최종 사용자를 위해 해야만 하는 것을 나타낸다 구현 뷰(implementation view) 개발 환경 안에서 정적인 소프트웨어 모듈의 구성 개발자 관점에서 소프트웨어 구현과 관리적인 측면을 컴포넌트 다이어그램으로 표현 프로세스 뷰 (process view) 런타임 시의 시스템의 동시적인 면 테스크, 쓰레드, 프로세스 그리고 이들 사이의 상호작용 등의 관계를 표현 성능이나 가용성과 시스템의 비기능적인 요구사항을 고려 배치 뷰 (deployment view) 다양한 실행 파일과 다른 런타임 컴포넌트가 해당 플랫폼 또는 컴퓨팅 노드에 어떻게 매핑되는가를 보여주며, 가용성, 신뢰성, 성능, 확장성 등의 시스템의 비기능적인 요구사항 고려 물..
소프트웨어 아키텍쳐가 나오게 된 배경 - 시스템의 대형화, 기술의 복잡화 소프트웨어 아키텍쳐의 필요성 SW의 크기와 복잡도 기간과 비용이 클 수록 용이하다. (작은 프로젝트 일 수록 비효율적이다.) 아키텍쳐 패턴 1. 계층화 패턴 (Layered pattern) n-티어 아키텍쳐 패턴이라고도 불린다. 이는 하위 모듈들의 그룹으로 나눌 수 있는 구조화 된 프로그램에서 사용할 수 있다. 각 하위 모듈들은 특정한 수준의 추상화를 제공한다. 각 계층은 다음 상위 계층에 서비스를 제공한다. Presentation layer == Ul 계층 Application layer == 서비스 계층 Business logic layer == 도메인 계층 데이터 접근 계층(Data access layer) == 영속 계층(P..
Dos Attack 이란? 컴퓨터나 네트워크 자원을 고갈시켜 정상적인 서비스를 제공할 수 없게 만드는 모든 공격방법을 말하는 것이다. Land Attack ip spoofing을 이용하여 (수신지)source IP address/port를 target_host의 (발신지)destination IP address/port와 동일하게 SYN패킷을 보냄으로써 target_host에서 SYN 패킷이 loop를 돌게하는 SYN flood공격이다. 하지만 이는 라우터나 방화벽에서 쉽게 차단할 수 있다. Smurf Attack 희생자의 스푸핑된 원본 IP를 가진 수많은 {인터넷 제어 메시지 프로토콜(ICMP)}패킷들이 IP 브로드캐스트 주소를 사용하여 컴퓨터 네트워크로 브로드캐스트하는 분산 서비스 거부 공격이다. T..
트랜잭션에서 추가로 설명한다. 2단계 Commit 데이터베이스에 업데이트 하는 방법 중 하나 업데이트 준비 단계와 수행 단계로 나뉜다. 1단계 : 응용 프로그램이 업데이트 처리 마지막 단계에서 'commit'명령을 내림 2단계 : 'commit'명령을 받은 마스터 컴퓨터는 업데이트 대상의 모든 서버에 'commit' 준비 지시를 보냄 3단계 : 각 서버가 업데이트 준비가 됬으면 마스터 컴퓨터에게 '준비 완료'를 보냄 4단계 : 모든 서버에게 완료를 받으면 commit동작 수행 // 한 서버라도 이상이 있으면 commit 명령 취소, rollback(복원) UNDO와 REDO UNDO 해당 트랜잭션이 정상 종료 할 수 없을 때, 변경 중이거나 변경된 내용에 대한 신뢰성을 잃어버린 경우에 변경을 모두 취소 ..
트랜잭션 (Transaction)이란? 데이터 베이스의 상태를 변화시키기 위해 수행해야하는 것이다. 간단하게는 SELECT, INSERT, DELETE, UPDATE등을 이용하여 데이터베이스를 접근 하는 것을 의미한다. 이들은 모두 원자성, 일관성, 지속성, 독립성의 특징을 가진다. 원자성(Atomicity) : 원자성은 db에 모두 반영되던가 전혀 반영되지 않아야한다. 만약 트랜잭션 단위로 데이터가 처리되지 않는다면, 설계한 사람은 데이터 처리 시스템을 이해하기 힘들 뿐만 아니라, 오작동 했을시 원인을 찾기가 매우 힘들어질것이다. 일관성(Consistency) : 트랜잭션의 작업 처리 결과가 항상 일관성을 가져야한다. 트랜잭션이 진행되는 동안에 데이터베이스가 변경 되더라도 업데이트된 데이터베이스로 트랜..
프로토타입은 개발이 이루어지기 전이나 새로운 기능을 제작하기 전 테스트를 목적으로 만드는 산출물이다. 고객과 개발자는 프로토타입을 통해 제안된 기능을 검사하고 완제품 적합 여부를 결정한다. 프로토타입은 일부분 개발된 제품이다. 프로토타입은 개발자에게 적절한 설계 전략과 프로젝트의 최적의 방법 결정을 도와준다. 프로토타입 모델 프로토타입 모델은 위에서 설명한 프로토타입으로 요구사항이 완벽하지 않은 고객의 의견을 구현하는 것이다. 프로토타이핑 모델의 특징은 - 사용자 중심의 프로세스 모델 이라는 것. - 기존 폭포수모델의 피드백 수영에 대한 단점을 보완하였다는 것. - 고객의 요구사항을 상세히 파악할 수 있다는 것. - 그리고 프로토타입을 통해 고객과 의사소통을 진행 할 수 있다는 것이다.
알고리즘의 효율성 알고리즘은 시간 복잡도와 공간 복잡도를 통해 결정된다. 하지만 최근에는 저장 공간의 가격이 싸지고 많아 시간 복잡도만 신경 쓰게 된다. 시간 복잡도란? 알고리즘이 수행 될 때 연산 횟수에 따라 성능이 결정되는 것이다. 예) 정렬 알고리즘을 연산 횟수로 비교하는 것 시간 복잡도는 3가지 케이스로 나뉜다. Worst Case => 최소한 이 만큼의 성능을 내야한다. Average Case => 대체적으로 내는 성능이다. Best Case => 한 알고리즘으로 낼 수 있는 좋은 성능(최고의 알고리즘의 기준은 알 수 없다) 알고리즘 분석시 고려사항 정확성 => 정확한 연산을 했는가? 작업량 => 얼마만큼 연산을 하는가? (시간 복잡도) 메모리 => 얼마나 많은 메모리를 사용하는가? (공간 복잡..
설명 하기전에저는 이런 내용 관련 글은 처음 써본 사람입니다. 개인적으로 학습한 내용을 정리할 겸 적은 글이기에 이상하더라도 양해부탁드립니다 ㅠㅠ UNL이란? 프로그램을 만들기 전에 설계를 위해 표기하는 것이다. 다르게는 요구사항을 정의한 설계도라고 볼 수 있다. UML은 주로 객체지향 언어와 밀접한 관련이 있다. 특히 팀원간의 의사소통에서 필수적으로 이용된다. UML을 잘 작성하면 개발이 개발이 쉬워질 수 있다. UML의 종류 UML의 종류는 다양하다. 하지만 이번에는 사람들이 자주 이용하는 클래스 다이어그램과 유스케이스 다이어그램에 대해 알아볼것이다. 클래스 다이어그램 클래스 다이어그램은 시스템의 기능을 클래스들의 관계로 나타내는 것이다. 클래스란 무엇인가? 쉽게 설명하자면 동일한 속성을 가진 객체의..