목록분류 전체보기 (212)
개발자 끄적끄적
- 도출된 불완전하고 추상적인 요구사항들을 적절한 수준으로 분해하고 정제하는 작업 - 고객과의 상호 작용을 통해 혼동 지점을 명확히 하고 어떤 요구사항이 다른 요구사항보다 더 중요한지 파악 - 명세를 만들기 위한 기반 - 요구 사항 모델링을 통해 요구사항이 보다 구체화되고 가시회되어 시스템에 대한 이해도가 크게 향상시키며 개발에 필요한 정보 제공 - 모델링 - 구조적 분석(자료 흐름도, DFD, Data Flow Diagram) - 유스케이스 분석 모델링(UML 모델링 사용) - 사용자 스토리(애자일 프로젝트) - ERD - State Transition Diagram - Dialogue Map 등 - 각 요구사항이 왜 필요한지가 명확하게 설명되어야 한다 - 제거되어도 시스템 비지니스 목표를 달성하는데 ..
- 소프트웨어 개발을 위한 요구사항 개발을 위한 활동 - 도출(Elicitation) - 인터뷰, 워크숍 등과 같이 요구사항을 찾아내기 위한 모든 관련 활동 - 이해관계자 식별 - 이해관계자로부터 요구사항 도출(수집X) - 분석(Analysis) - 요구사항을 더욱 자세하고 정확하게 이해 - 요구사항 상세화 중복 제거 및 일관성 검사 등 품질평가 - 우선순위 - 모델링 - 명세 - 요구사항을 문서화 - 검증(Validation) - 요구사항이 정확하고 올바르고 빠짐없이 작성 되었는지 확인 - 비지니스 분석가(business analyst)가 이해관계자로부터 목표 시스탬에 바라는 요구는 식별하는 단계 - Scope and status : Project Management - Project Sponsor :..
- 사용자가 가치 제공을 받기 위해 사용자가 시스템을 통해 달성하고자 하는 목표나 수행하는 태스크 - 사용자로부터 비지니스 요구사항을 달성하기 위한 요구사항을 도출 - ex 비즈니스 요구사항 - 사용자 요구사항1 - 사용자 요구사항2 - 사용자 요구사항... - 사용자 요구사항m - ex) 카페테리아 주문 시스템 비즈니스 요구사항(목표) - 음식 낭비비용을 6개월 이내40% 감소 - 운용비용을 12개월 이내에 15%감소 - 평균 업무 집중 시간을 6개월 이내 직원당 15분 증가 사용자 요구사항 - 식자주문 - 메뉴생성 - 급여공제 등록 등 기능적 요구사항 - 고객이 급여공제에 등록되어 있는지 확인 - 고객이 선택한 날짜에 이용가능한 메뉴 표시 - 결제 금액 계산 - 사용자 요구사항을 달성할 수 있도록 개..
- 프로그램(Program) - 보조저장장치에 저장된 실행 가능한 파일 - 수동적 존재 - 프로세스(Process) - 메모리에 적재되어 CPU에 의해 실행중인 프로그램 - 실행 중에 필요한 자원을 할당 받음 - CPU를 할당 받기 위해 대기하거나 I/O 처리가 끝나기를 대기하는 경우 포함 - 실행중인 프로그램 - 오늘날 시분할 시스템에서 작업의 단위 - PC와 관계되는 자원들의 집합을 갖는 능동적 실체 - 생성, 실행, 일시 중단, 재개 - 시스템 = 프로세스들의 집합체 - OS에 의해 CPU는 프로세스들간에 다중화(Multiplex)하여 시스템 효율성을 높임 - OS는 실행되는 프로그램을 메모리에 잭재 - 실행에 필요한 메모리 할당 - 코드, 데이터, 스택... - 각 프로세스들은 독립적인 메모리 공..
- eXtreme Programming(XP) - kanban - 크리스털 패밀리 - Feature-driven development - Adative software development - 익스트림 모델링 - 반복주기 : Spring(1~4 Week) -> 프로젝트의 일정은 고정 - Sprint를 통해서 최종적인 산출물(잠재적으로 출시 가능한 제품) : Increment - Sprint Backlog : Spring 동안에 수행해야하는 일 목록(목표) - Product Backlog : 우선순위에 따라서 해당 Spring 동안 해야할 일을 가져온다 - Sprint Planning Meeting : 해당 Sprint 동안에 해야될 일을 선정하는 것 -> 우선순위가 높은 순서대로 - Daily Scrum..
- CPU가 현재 하던 일을 중단하고 미리 정의된 다른 일을 하도록 처리하는 '비동기적' 방법 *비동기적 : 동시에 일어나지 않는다 를 의미한다. 요청과 결과가 동시에 일어나지 않을 것이라는 약속이다. 1. 하드웨어 인터럽트 : 각 장치가 어떤 비동기적 상황 발생을 CPU에게 알리는 신호 - 인터럽트 발생 -> CPU는 ISR 실행 2. 소프트웨어 인터럽트 : CPU 명령어에 의해 하드웨어 인터럽트 수신한 것처럼 처리 - 예시) - 사용자의 입력 장치 조작 - 디스크 처리 종료 - 시스템 클럭으로부터 시간 만료 알림, USB 메모리 부착 혹은 해제 - 명령어 인출 -> 명령어 실행 -> 인터럽트 발생(Y/N) 인터럽트가 발생할 때(Y) -> ISR 시작 준비 인터럽트가 발생되지 않았을 때(N) -> 다음..
- 부팅 시 메모리에 적재되는 '함수/데이터'의 집합 - 컴파일된 바이너리, 보조저장장치의 특정 영역에 저장 - 커널이 스스로 실행되어지는 능동적인 주체는 아니다 *스스로 실행되어지는 능동적인 주체 : 프로세스(Process) - 사용자공간 -> (시스템호출) -> 커널공간(커널 함수들과 자료구조) -> (디바이스 드라이버) -> 타이머, 디스플레이, 디스크, 키보드 - 키보드(가 눌렸을 때) -> 인터럽트 -> 디바이스 드라이버 -> 커널공간(커널에서 제공하는 기능들) - 커널은 스스로 실행되는 프로세스인가? 아니요, 시스템 호출을 통해 호출되는 단순 함수/데이터의 집합 - 커널은 실행 중이다? 아니요, 시스템 호출/인터럽트를 통해 커널 코드/ISR(Interrupt Service Routine)이 실..
- 다중프로그래밍 OS에서는 다수의 app 동시 실행 - app이 직접 컴퓨터 자원에 접근하면 충돌 혹은 훼손 발생 가능 - 다른 app이 적재된 메모리 훼손 - 다른 app이 생성한 파일 훼손 - app이 커널 적재된 영역 훼손 - 응용 프로그램의 자원 접근 불허 : 자원에 대한 접근 커널에게만 부여 - 메모리 '주소 공간'을 분리 - 사용자 주소 공간 : 응용 프로그램 적재 - 커널 주소 공간 : 커널 적재 - CPU '실행 모드'를 분리 - 사용자 모드 : 응용 프로그램 실행 - 커널 기능 필요시 시스템 호출 이용 -> 커널 모드로 전환 - 커널 모드 : 커널 모드 실행 - 논리 주소 공간 : 'CPU'가 접근하는 주소 범위 - 사용자 주소 공간(user space) - 각 응용프로그램이 나누어 적..
- 객체와 객체사이의 의존성(Object Dependencies) ex) public class PetOwner{ private AnimalType animal; public PetOwner( ){ this.animal = new Dog( ); } } -> Tight coupling(Dog와 PerOwner사이) => 기존방식 1. Bean : 객체(creates beans) 2. Performs dependency injection - 설정파일 : XML Config 3. Design pattern이며 framework(=Spring Container)가 주입을 시켜준다 4. Reduces coupling(객체와 객체사이의 결합도를 약하게 해준다) Runtime시에 의존성을 주입시켜준다(=Dyanmic..
- 고객이 원하지 않는 제품을 만드는 것이 스타트업의 가장 큰 위험- - 아이디어를 빠르게 제품화 시킨 후 고객의 피드백을 반영하여 지속적으로 제품 개선 - 아이디어를 완벽한 제품으로 구현한 후 시장에 내놓고 고객의 검증을 받는 것이 아니라, 아이디어를 제품화 시키는 과정에서 고객의 피드백을 받아 시장이 원하는 제품을 만들겠다는 전략 1. 아이디어(가설 설정) 2. 만들기(MVP를 통한 가설 검증) 3. 제품 4. 측정 5. 데이터 6. 학습 *MVP(Most Viable Product, 최소기능제품) - 반드시 기능적으로 실제 동작되어야 할 필요는 없다 - 가설을 실험하고 학습하는 것은 일회성이 아닌 지속적인 과정 - 학습한 내용을 바탕으로 완전 새로운 제품으로 방향전환(pivot)가능 - 사용자의 지..
- Production env로 배포할 때 서비스가 중단되는 시간이 없도록하는 무중단(zero down time)배포가 중요 - 배포 시 문제가 발생할 때 rollback(예전 버전으로 돌아감) 필요 - 배포전략 - Rolling Update - Blue green 배포 - Canary - 기존 인프라에 구 서비스를 제공하는 서버를 하나씩 순차적으로 새로운 버전으로 대체하는 방식 - 단점 - 구버전과 새버전의 서비스가 혼재 - 서버에 새버전으로 배포될 때 서버에 과부하 가능성이 있다 - 2개의 동일한 운영 환경을 준비하여 동시에 교체하는 방법- 여분의 인프라 준비를 해야하지만, Rolling update의 구버전과 신버전이 동시에 서비스 되는 시간이없으며 배포동안 문제가 발생했을 때 Rollback이 쉽..
- Development(개발) + Operations(운용) - 개발 팀과 운용 팀이 긴밀히 협업하고 연계하여 비즈니스 요구에 신속하게 대응하여 소프트웨어 개발 및 배포 - 배포된 소프트웨어가 운영환경에서 안정적으로 동작하도록 하여 비즈니스 가치를 실현 - 개발 : 비지니스 요구에 맞춰 새로운 기능 요구에 신속한 대응 - 운용 : 변화보다는 시스템을 안정성에 관심 - 개발과 운용 모두 공통의 목적의식을 갖고 서로 존중하면서 협업하는 문화를 형성하는 것이 필요 - Infinite loop 1. Plan : 요구사항 정의(무엇을 개발할 지 결정) 2. Code : 구현 및 구현된 코드를 코드 저장소에 커밋(Commit) 3. Build : 코드 저장소에 커밋된 코드가 문제가 없는 지 검사한 후에 기존 코드..
- 점진적이로 반복적인 개발방법(IID, Iterative and Incremental Development) - 이터레이션(Iteration) 개발 : 1주~2주 - 설계 -> 구현 -> 테스트 -> 분석 - 점진석/반복적 개발 1. 점진적 개발 : 이전 시스템에서 새로운 요구사항을 추가하여 개발 2. 반복적 개발 : 이전 시스템을 한 번에 완전하게 개발하는 것이 아니라 반복적으로 개선하고 수정 - 시간이 지날 수록 Value delivered 는 증가, Risk는 감소 - 모든 불확실성을 프로젝트 초기에 제거하는것은 불가능하므로 불확실성을 줄이는 좋은 방법은 제품을 고객에게 보여주고 피드백을 받는 것이다 ex) 1차 이터레이션(기본 로그인 기능) - 로그인 웹 페이지 생성 - 웹 페이지 사용자 id와..
보조기억장치에 저장 - 장치 관리(Device Management) - 네트워크 관리(Network Management) 2. 시스템 관리 - 시스템 보호/보안 - 명령어 해석기 - 기타관리(사용자 계정 정보/ 통계 / 오류 발견 및 대응 / 부팅 등)
1. Connectionless - different paths for different datagrams belonging to the same message - independency between pakcets - 패킷사이의 관련성이 없다 2. Connection-oriented - dependency between packets - 패킷사이의 관련성이 있다 - A connection-oriented protocol uses both flow and error control - The sender sends one packet at a time and waits for an acknowledgement before sending the next one - To detect corrupted pack..
- process-to-process communication; addressing; multiplexing and demultiplexing; error, flow, and congestion control - UDP - TCP : connection-oriented service using a transition diagram - It provides a process-to-process communication between two application layers, one at the local host and the other at the remote host - Legend - Point-to-point WAN - LAN switch - WAN switch - Router - The trans..
1. distatnce-vector routing 2. link state routing 3. path-vector routing 1. RIP - distance-vector routing 2. OSPF - link state routing 3. BGP - path-vector routing - a packet is routed, hop by hop - The source host does not need a forwarding table -> its packet to the 'defualt router' - one of the ways to interpret the best route from the source router to the destination router is to find the le..
1. Transmission Delay = (packet length) / (transmission rate) 2. Propagation Delay = (distance) / (propagation speed) 3. Processing Delay = time required to process a packet in a router or a destination host 4. Queuing(대기열) Delay = time a packet waits in input and output queues in a router - the number of bits(=payload) passing through the point in a second - the number of packets lost during tr..
- Multiple-access protocols 1. Random-access protocols - ALOHA - CSMA/CD - CSMA/CA 2. Controlled-access protocols - Reservation - Polling - Token passing 3. Chanelization protocols - FDMA - TDMA - CDMA - collision : to avoid access conflict - earlist random access method - it can be used on any shared medium - potential collisions in this arrangement - The data from the two stations collide and ..
- API(응용 프로그램 인터페이스 : Application Program Interface) : 소프트 웨어 응용 프로그램 구축을 위한 일련의 루틴 프로토콜 및 도구 집합들을 지칭한다 기본적으로 API는 소프트웨어 구성 요소의 상호 작용 방식을 지정한다 1. Google Vision API : Cloud Vision API Demo 2. MicroSoft Vision API : MS Azure Vision API Demo 3. Amazon Rekognition API : AWS Rekognition API Demo ⇐ (requires to log-in) - 요청(request)와 응답(response) - 형식 : JSON(JavaScript Object Notation) - 지원 인식 기능 - '객..