목록분류 전체보기 (212)
개발자 끄적끄적
- 교착상태 발생이 허용되는 시스템 - 교착상태 예방/회피 알고리즘을 사용하지 않는 시스템 - 구성 방법 - 탐지 알고리즘(Detection algorithm) - 시스템을 검사해 교착상태 발생여부 결정 - 복구 기법(Recovery scheme) - 교착상태 상태로부터 회복 - 교착상태 탐지 알고리즘 - 대기 그래프(Wait-for graph) - 자원 할당 그래프의 변형 - 자원 유형의 노드 제거 후 적절한 간선들을 집합 - Pi -> Pj : Pi is waiting for Pj - 주기적으로 그래프 안에서 사이클 존재를 탐지하는 알고리즘 - 사이클이 존재하면 교착상태 발생 가능 - Available - 각 유형 당 가용 자..
- REST stands for REpresentational State Transfer - An architectural 'style' for developing web services - REST is a web standards based architecture and uses 'HTTP' Protocol for data communication - It revolves around 'resources' which are accessed by a common interface using HTTP standard methods ex) Client -> (URI, GET) http://weather.example.com/seoul -> Server(Resource(Seoul)) Server -> (..
- SOLID 원칙에 따라 좋은 소프트웨어를 만들 수 있다 - 이해하기 쉽다 - 변경 하기 용이(유지보수) - 새로운 기능에 대해 확장이 용이 - 로버트 마틴이 주창한 다섯 가지 설계원칙 - SRP(단일 책임 원칙, Single Responsibility Principle) - OCP(개방 폐쇄 원칙, Open Closed Principle) - LSP(리스코프의 대입 원칙, Liskov Substitution Principle) - ISP(인터페이스 분리 원칙, Interface Segregation Principle) - DIP(의존성 역전 원칙, Dependency Inversion Principle) => Design Pattern에 기반 - 단일 책임 원칙 즉,..
- 무엇을 공개하는 것인가? 소스코드를 공개한다는 의미 - 소스코드를 공개한다는 의미는 누구라도 사용할 수 있다는 의미를 내포 - Copyleft(카피레프트) - 독점적인 의미의 저작권에(카피라이트, copyright)에 반대되는 개념이며, 저작권을 포함한 지식재산권에 기반을 둔 사용 제한이 아니라 정보의 공유를 위한 조치이다 카피레프트를 주장하는 사람들은 보통, 지식과 정보는 소수에게 독점되어서는 안되며, 모든 사람에게 열려 있어야 한다고 주장 - 독점 소프트웨어 - 상용 소프트웨어 - 일반적으로 실행파일만 제공 - 역공학 금지 - 바이너리도 복제, 배포, 수정 불가 - 사용기간 제한 - OSS - 소스코드 제공 - 소스코드 사용, 복제, 수정, 재배포 허용 ..
- 시스템 측면에서 자원의 요구가 뒤엉킨 상태 - 한 스레드 집합 내의 모든 스레드가 그 집합 내의 다른 스레드에 의해서만 발생될 수 있는 사건을 서로 무한히 기다리는 상황 - 다중 프로그래밍 환경에서 - 둘 이상의 스레드가 - 서로 상대방의 작업을 끝나기만을 기다리기에 - 결과적으로 아무것도 하지 못하는 상태 - 병행 처리 기술과 자원 공유에 따른 일종의 부작용 - 교각을 자원에 비유 - 교착상태가 발생하면 한쪽의 차가 후진해야 해결될 수 있음 - 때로는 몇몇의 차가 모두 후진해야 할 수도 - 기아 상태가 가능 - 대부분의 OS에서 교착상태를 완전히 예방해주지는 못함 - 커널 내에서는 거의 발생하지 않음 - 매우 정교하게 작성되기 때문 - 멀티 스레드 app에서 주로..
1) JDBC : Low-Level Database Access 2) JAP : a technical specification that stands for Java Persistence API 3) Hibernate : implementations of JPA 4) Spring Data JPA : a module that makes it eaiser to use JPA - Java 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용하는 인터페이스 모음 - 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스 - 인터페이스 이기 때문에 Hibernate, OpenJPA 등이 JPA를 구현함 - Only a specification - Defines a..
- 홈페이지에 인증(Authentication) 및 권한(Authorization)기능을 빠르게 부여해 인증 및 권한 보호 기능을 손쉽게 추가할 수 있는 Spring의 프레임워크 중 하나 - Spring Security is entirely based on 'servlet filter' - ex) Brower (Container) Filter --> Servlet *Container안에 Filter와 Servlet 존재 - Security Filter Chain이란 Spring Security에서 제공하는 인증, 인가를 위한 필터들의 모음 - Spring Security에서 가장 핵심이 되는 기능을 제공하며, 거의 대부분의 서비스는 'Security Filter Chain'에서 실행된다 - 기본적..
- The qurey string(in GET Method) - ex) GET /helloWeb/docreate?name=Alice&email=alice.hansung.ac.kr Host: myserver.com User-Agent: ... Accept-Encoding: ... - The HTTP entitiy body(in POST Method) - ex) POST /helloWeb/docreate HTTP/1.1 Host: myserver.com User-Agent: ... Accept-Encoding: name=Alice&email=alice@hansung.ac.kr - How to move from the 'request prarmeters' to corresponding 'object' 1) N..
- 클라이언트의 요청을 처리하도록 특약 규약이 맞춰 Java 코드로 작성하는 클래스 파일 - 아파치 톰캣(Apache Tomcat)은 이러한 서블릿들이 웹 애플리케이션으로 실행할 수 있도록 해주는 서블릿 컨테이너(Servlet Container) 중 하나이다 - MVC 패턴은 애플리케이션을 개발할 때 사용하는 디자인 패턴 1. Model : 작업의 처리 결과 데이터 - 클라이언트의 요청을 구체적으로 처리하는 영역을 서비스 계층(Service layer) - 요청사항을 처리하기 위해 Java 코드로 구현한 것을 비즈니스 로직(Business Logic) 2. View : Model을 이용하여 화면에 보이는 리소스(Resource)역할을 한다 - HTML 페이지 출력 ..
- Spring의 DI Container에 의해 관리되는 POJO(Plain Old Java Object)를 Bean이라 부른다 - POFO는 Spring 애플리케이션을 구성하는 핵심 객체 - Spring Ioc Container 또는 DI 컨테이너에 의해 생성 및 관리 - 메소드 레벨에서 선언하며, 반환되는 객체(인스턴스)를 개발자가 수동으로 빈으로 등록 - 메소드에서 사용, 즉 메소드 이름으로 빈 이름이 결정 - 개발자가 컨트롤이 불가능한 외부 라이으버리 사용 시 사용 - ex) @Configuration public class AppConfig{ @Bean public MemberService memberService(){ return new MemverServiceImpl(); } } - 클래스 ..
- 모듈과 모듈사이에 관계를 어떻게 설계할 것인가 -> 결합도는 낮게 - Minimise coupling, make routins as independent ad possible(low RE) - Low coupling => well-partitioned - No routine should have to worry about the internal details or another Normal(low) - Data(데이터) - Stamp(스탬프) - Control(제어) -------------------------------"Modularity Line" Poor(high) - Common(공통) - Content(내용) - To routines are normally coupled if : - A C..
- 설계의 기본 원칙 : 응집도(=개별모듈)는 높게 결합도(=모듈관의 관계)는 낮게 - Fundamental principle of SD - A large system should be partitioned into mangeable routines&models - Goal - Routines are as independent as possible - Each routine carries out a single problem-ralted function - Mesures - Coupling and Cohesion - Cohesion is the measure of the strength of functional relatedness of elements within a routine - Element? ..
- 프로세스 여러 개가 동시에 실행되는 것 - 독립적인 프로세스(Independent process) - 다른 프로세스 실행에 영향을 주거나 받지 않는 프로세스 - 협력적인 프로세스(Cooperating process) - 다른 프로세스 실행에 영향을 주거나 받는 프로세스 - 정보 공유 - 계산 속도 향상 - 모듈식 시스템 구성 - 사용자 편의 - 제한된 자원을 공유하기 위해 자주 상호작용 한다 - 상호작용하는 프로세스는 순서에 맞게 실행되도록 동기화 시켜야한다 - 협력적인 스레드들간에 - 공유 데이터를 동시에(concurrently) 조작하면 데이터 불일치(data inconsistency)가 생길 수 있다 - 데이터 훼손 발생 - 데이터 일치(data consistency)를 위해서는 - 협력적인 스..
- 순차 다이어그램은 서비스를 제공하기 위한 객체 간의 상호 작용(메시지 송수신)을 모델링한다 - 클래스 다이어그램이 시스템의 정적 구조를 나타내는 대표적인 모델인 반면에 순차 다이어그램은 시스템의 동적 흐름을 나타내는 대표적인 모델이다 - 순차 다이어그램은 목표 서비스를 제공하기 위해 필요한 객체를 정의하고, 객체간의 메시지 송수신 관계를 시간 순서에 따라 정의함으로써 서비스를 제공하는 과정을 묘사하는 모델이다 - 순차 다이어그램에서 객체는 가장 윗부분에 표현이 되고, 왼쪽에서 오른쪽으로 객체들을 나열한다 - [객체명 : 클래스명] 형식을 이용하여 표기하며 이중 어느 한쪽을 생략하여 표기할 수 있다. - 객체는 박스로 표현하며 밑줄은 생략가능하다.(UML2.X버전) - 인스턴스이름 : 클래스명 - [시..
- 문제나 해결책의 정적인 구조 표현 - 클래스와 그들간의 관계 표현 - 건물을 설계할 때도 평면도, 입면도, 투시도, 조감도 등 하나의 건축물을 다양한 관점에서 표현한다 *유스케이스 다이어그램 - 시스템을 블랙박스로 본다. 즉, 내부 구조는 표현하지 않는다 - UML의 클래스 표현 - 세 부분으로 나누어진 박스로 표현 - 가장 윗부분 : 클래스 이름 중간 부분 : 마시막 부분 : 연산 - 접근제어자 - public(+) : 어떤 클래스의 객체에서도 접근 가능 - protected(#) : 이 클래스와 상속 관계에 있는 하위클래스의 객체들만 접근 가능 - package(~) : 동일 패키지에 있는 클래스의 객체들만 접근 가능 - private(-) : 이 클래스로부터 생성되어진 객체들만 접근 가능 - 속..
- CPU 유후 시간을 줄이기 위한 다중 프로그래밍 - 작업 스케줄링(job scheduling) - 보조저장장치로부터 메모장에 올릴 작업 선택 - 시작 시 혹은 한 프로세스 종료 때마다 - CPU 스케줄링(CPU scheduling) - 메모리에 적재된 작업 중 CPU를 할당할 프로세스 선택 - 자원에 대한 경쟁이 있을 때 경쟁자들 중 하나를 선택하는 과정 - 작업(job) 스케줄링 - 배치 시스템 - 대기중인 배치 작업 중 메모리에 적재할 작업 선정 - CPU 스케줄링 - 프로세스/스레드 중 하나를 선택해 CPU 할당 - 디스크 스케줄링 - 디스크 입출력 요청 중 하나를 선택하여 장치를 사용하도록 - 입출력 장치 스케줄링 - 프린팅 작업 중 하나를 선택해 프린터 장치 할당 - 프로세스들은 실행(CPU..
- 요구사항 분석 - 고객의 문제의 실체를 이해하고 분석하여 분석 모델을 구축 - 설계 - 설계 모델을 통해 고객의 문제를 해결하는 해결책을 표현 - 구현 - 설계 모델을 기반으로 프로그래밍 언어를 통해 소프트웨어(구현 모델) 구축 *분석 모델 : 고객의 요구사항을 모델링 *설계 모델 : 해결책을 모델링 *구현전에 모델링(요구사항분석, 설계 단계 -> 모델링 언어 필요 -> UML(Unified Modeling Language)) - 서로의 해석을 공유해 합의를 이루거나 해석의 타당성을 검토 - 현재 시스템 또는 앞으로 개발할 시스템의 원하는 모습을 가시화 - 시스템을 구축하는 틀 제공 - 대표적인 시스템 모델링 언어 - 제임스 러버 OMT + 야콥슨 OOSE + 부치 OOAD ..
- 시스템의 일부 측면을 사용자가 경험하게 할 수 있는 도구 - 요구사항에 대한 대화 촉진 - 이해 관계자가 시스템의 요구사항에 대한 공통의 이해 달성 - 요구사항 오류나 누락 식별 - 요구사항 도출/분석/검증 도구로도 사용 - 범위(Scope)에 따른 분류 - 수평적 프로토타입(Horizontal prototype) - 수직적 프로토타입(Vertical prototype) - 충실도(Fidelity)에 따른 분류 - Lo-fi(Low fidelity) 프로토타입 - Hi-fi(High fidelity) 프로토타입 - 수평적 프로토 타입 - 사용자 인터페이스 부분(front-end)만 존재하고 기능 부분(back-end)구현 미비 - 정해진 출력, 오류 처리 미비 - 명확한 요구사항 파악, 요구사항 구체..
- 작업 or 태스크(task) - 컴퓨터에서 처리하고자 하는 일의 단위 - 멀티 태스킹(multi-tasking) - 한 시스템 내에서 여러 태스크를 동시 실행하는 기법 - 사용자 입장에서는 동시에 여러 작업을 처리 가능 - OS 입장에서는 여러 태스크를 관리해야하는 부담 -> 프로세스 단위의 실행의 문제점 - 전통적으로 태스크는 프로세스로 구성 - multi-processing - 한 응용 프로그램이 다수의 비슷한 작업을 수행할 필요가 있을 수 있다 - 예 : 웹 서버 - 단일 프로세스로 동작한다면, 한 번에 하나의 클라이언트만 서비스 가능 - 웹 서버에 요청이 들어오면 그 요청을 수행할 별도의 프로세스 생성산다면, 오버헤드 - 좀 더 가볍게..
- 분석된 요구사항을 명확하고 완전하게 기록하는 것 - 소프트웨어 시스템이 수행하여야 할 모든 기능과 시스템에 관련된 구현상의 제약 조건 및 개발자와 사용자가 합의한 성능에 관한 사항 등을 명세 - 최종 결과물 : 요구사항 명세서(SRS : Software Requirement Specification) *SRS IEE-STD-830 : 소프트웨어 요구사항 명세서 국제 표준 - 무엇을 위해 이 문서를 작성했는지를 설명 - 주의) 제품의 용도를 나열하지 말라 - ex) 이 문서의 목적은 웹 게시 시스템에 대한 자세한 설명을 제공하는 것이다. 이 문서에서 시스템의 목적과 특징, 시스템의 인터페이스, 시스템이 무엇을 할 것인지, 시스템이 작동해야 하는 제약 조건, 그리고 시스템이 외부 자극에 어떻게 반응할것인..