데이터베이스 설계 및 구축과정 1. 요구사항 수집 및 분석 2. DB 설계 개념적 데이터 모델링 : 엔터티, 속성, 관계 등이 도출됨, 일반적으로 ER 모델로 표현 논리적 데이터 모델링 : 논리 스키마 도출, 테이블명, 기본키, 외래키 등이 결정됨 물리적 데이터 모델링 : 트랜잭션 분석, 뷰 설계, 인덱스 설계, 용량 설계, 접근 방법 등이 결정됨 3. DB 구축 4. 운영 및 유지보수 데이터 모델링 현실세계를 추상화, 단순화, 명확화 하기 위해 일정한 표기법에 의해 표현하는 기술 무결성 데이터의 무효갱신으로부터 데이터를 보호하여 정확성, 유효성, 일관성, 안정성을 유지하려는 성질 영역 무결성 : 테이블에 존재하는 필드의 무결성 보장, 속성값은 원자성을 가지며 도메인에서 정의된 값 키 무결성 : 모든 레..
전체 글

데이터 현실세계에서 발견, 조사, 수집, 창작을 통한 기초자료인 수집 자원의 형태 그대로의 것 데이터베이스 공용 데이터 : 한 조직의 여러 응용 프로그램이 공동으로 소유, 유지, 이용하는 데이터 통합 데이터 : 동일한 데이터가 원칙적으로 중복되어 있지 않음 저장 데이터 : 컴퓨터가 접근 가능한 저장 매체에 저장 운영 데이터 : 한 조직의 고유 기능을 수행하기 위해 필요한 데이터 데이터베이스 특징 실시간 접근성 계속적인 변화 동시 공용 내용에 의한 참조 데이터베이스 시스템(DBS) 데이터를 Datebase에 저장하고 관리해서 필요한 정보를 생성하는 컴퓨터 중심의 시스템 데이터베이스, 데이터베이스 언어, 사용자, 데이터베이스 관리시스템으로 구성 ANSI-SPARC 의 3-Level Datebase Archi..
소프트웨어 개발 프레임워크 효율적인 정보시스템 개발을 위한 코드 라이브러리, 인터페이스 규약, 설정정보 등의 집합으로 소프트웨어 구성에 필요한 기본 뼈대 제공 코드 품질 향상 개발 생산성 증대 유지보수성 향상 신규시스템 위험 감소 스프링 프레임워크 자바 플랫폼을 위한 오픈소스 어플리케이션 프레임워크, 자바기반의 엔터프라이즈 어플리케이션 개발 시 포괄적으로 사용할 수 있는 기반 구조를 제공하고 동적인 웹 어플리케이션 개발에 필요한 여러 가지 서비스를 제공함 전자정부 프레임워크 자바기반의 시스템 개발, 운영 시 필요한 기본 기능들을 표준화하여 미리 구현해 둔 공공사업용 표준개발프레임워크
프로그래밍 언어 사용자가 보다 친숙한 언어, 즉 일상적으로 사용하는 언어와 비슷한 언어를 가지고 프로그램을 짤 수 있게 하도록 한 것 저급언어 : 기계 중심적 언어 (기계어, 어셈블리어) 고급언어 : 자연어에 가깝게 만들어져 프로그래밍하기 쉽고 가독성과 생산성이 높음 (포트란, 코볼, C/C++, java,python) 인터프리터 언어 : 한줄씩 실행되는 언어 컴파일러 언어 : 컴파일러에 의해 고급언어를 기계어로 변역하여 객체 모듈을 만들고 이 모듈을 링크, 로드하여 실행 C 실행속도가 빠르고 효율적인 메모리 관리 용이 표기법이 간결, 문단으로 기능 구현 가능 절차지향적 언어 : 실행이 정해진 순서에 따라 진행 배열과 메모리 등을 고려한 프로그램이 필요 실행환경 및 기계 변경 시 인식 어려움 C++ 객체..
사용자 인터페이스(UI) 사용자와 시스템이 정보를 주고 받는 상호 작용이 잘 이루어지도록 하는 장치 혹은 소프트웨어 일관성 필요 사용자 중심 설계 피드백 파괴적인 행동에 대한 확인 사용자 경험(UX) 사용자를 위해 편리한 화면 설계와 환경을 연구하고 서비스를 기획하는 과정 UI / UX 설계 도구 1. MAKE 팀운영 및 관리 - Github, Trello 와이어프레임 - Microsoft Visio, moqups 프로토타이핑 - Adobe Photoshop, ketch3 2. CHECK 시각적 분석 - Beusable, Clicktale 분석과 매트리스 - Google Analytics, Mixpanel AB테스팅 - Google Optimize, Optimizely 행위기록 - Beusable, ho..
객체 지향 주어진 문제영역을 실세계 안에 존재하는 객체의 집합으로 보고 객체들 사이의 상호작용을 나타낸 것 모델링 대상 시스템의 성능 또는 동작과정 분석을 위하여 이를 간단히 도식화하거나 그 시스템의 특징을 수학적으로 표현하는 과정 유스케이스 정보 모델링(정적 모델링) : 시스템에 사용되는 데이터베이스의 구조를 알아내어 데이터를 기술 (클래스 다이어그램) 동적 모델링 : 시스템을 구성하는 객체의 상태나 동작의 변화 혹은 객체들 사이의 상호 작용에 관심을 두고 클래스들의 오퍼레이션을 찾는 과정 (액티비티 다이어그램) 기능 모델링 객체 지향 설계 1. 객체와 클래스 객체는 독립적으로 존재하는 실세계의 사물, 클래스는 유사한 객체들의 모임으로 각 객체는 특정 속성의 모임에 의해 기술됨. 객체를 묶는 작업을 분..
소프트웨어 아키텍처 소프트웨어 개발에 직간접적으로 영향을 미치고 복잡도를 높이는 다양한 요소들을 체계적으로 다루기 위한 개발 대상 소프트웨어의 청사진 소프트웨어 아키텍처 스타일 저장소 구조 : 다량의 데이터를 공유하는데 적합한 방식임 MVC 구조 : GUI설계에 많이 활용, 한 객체의 여러 가지 표현이 서로 상호 작용하도록 지원하는 접근법 클라이언트 - 서버 모델 : 서버와 클라이언트의 집합으로 구성되는 모델 계층 구조 : 시스템을 여러 계층으로 구성, 각 계층은 특정 서비스를 제공하는 것으로 정의 소프트웨어 아키텍처 설계 표현 방법 컨택스트 모델 컴포넌트 다이어그램 패키지 다이어그램
소프트웨어 설계 원리 1. 추상화 상위 수준에서 제품의 구현을 먼저 생각하는 것, 다루기 쉽고 필수적인 것만을 표현함 2. 정보 은닉 각 모듈의 내부 내용은 감추고 인터페이스를 통해서만 메시지 전달, 설계 과정에서 변경이 발생하는 경우 그 영향이 최소한의 모듈들에서만 미치도록 하는 것 3. 단계적 정제 프로그램의 구조에서 점차 모듈에 대한 세부 사항으로 내려가며 구체화됨. 추상화의 수준은 낮아지고 각 기능은 분해되어 해결방안을 제시 4. 모듈화 시스템을 지능적으로 관리할 수 있도록 해주고 복잡도의 문제를 해결해 줌. 크고 복잡한 문제를 해결하기 위해 작은 단위인 모듈로 분할하여 정복 5. 구조화 응집도와 결합도 1. 응집도 모듈 내부가 얼마나 강한 연관성으로 뭉쳐져 있는가를 나타내는 모듈 성숙도의 측정치..
자료구조 1. 정의 자료를 컴퓨터의 기억장치 내에 저장하는 방법으로 다양한 자료를 효율적으로 표현하고 활용할 수 있도록 자료의 특성과 사용 용도를 고려하여 조직적, 체계적으로 정의한 것 2. 분류 선형구조 : 배열, 선형리스트, 연결리스트, 스택, 큐, 데크 등 비선형구조 : 트리, 그래프 등 스택 1. 정의 한 곳에서만 출입 가능한 LIFO구조로 가장 나중에 쌓인 데이터가 가장 먼저 출력하게 되는 자료구조임 2. 연산의 종류 top() : 스택의 맨 위에 있는 데이터 값 반환 push() : 스택에 데이터 추가 pop() : 스택에 데이터 삭제 isempty() : 스택에 원소가 없으면 true isfull() : 스택에 원소가 있으면 true 큐 1. 정의 데이터가 삽입되는 곳과 삭제되는 곳이 다른 ..
소프트웨어 재사용 1. 정의 소프트웨어 개발관련 지식을 표준화하여 개발 생산성을 높이기 위하여 반복적으로 사용하기에 적합하도록 구성하는 방법 2. 목적 신뢰성 확장성 생산성 3. 재사용의 원칙 범용성 : 일반적으로 활용될 수 있는 정도 모듈성 : 정보은닉과 추상화의 원칙으로 최소한의 결합도 및 최대한의 응집력을 가져야함 하드웨어 독립성 : 하드웨어 기종 무관 실행 소프트웨어 독립성 : OS, DBMS 무관 자기문서화 일반성 신뢰성 4. 문제점 공통적으로 사용할 수 있는 모듈 발견 어려움 소프트웨어의 표준화 부족 내부 인터페이스 요구사항의 이해가 곤란 변경으로 인한 부차적 영향으로 이해 곤란 추가 개발비 발생 가능 5. 대책 새로운 설계 및 개발 방법론의 활용 재사용 소프트웨어 라이브러리 구축 자동화 도구..
소프트웨어 개발 생명주기 1. 타당성 검토 2. 개발 계획 3. 요구사항 분석 4. 설계 5. 구현 6. 테스트 7. 운용 8. 유지보수 소프트웨어 생명주기 모델 종류 1. v 모델 요구사항이 모두 식별되고 명확해졌을 때 최종적으로 완성 2. VP 모델 프로젝트의 불확실성 요소나 리스크 줄일 수 있음 3. 점증적 모델 시스템 개발 시간을 줄일 때 용이 핵심이 되는 부분 먼저 개발 후 나머지 기능 구현 4. 진화적 모델 전체 시스템에 대한 개발 단계가 여러 번 반복 이전 개발으로 변경된 사항은 다음 시스템 개발에 반영 애자일 개발 방법론 - XP 실천 방법 단순한 설계 테스트 기반 개발 리팩토링 코딩 표준 짝 프로그래밍 코드 공유 지속적인 통합 계획 게임 작은 릴리즈 메타포 주당 40시간 작업 현장 고객