목록전체 글 (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)가능 - 사용자의 지..