소프트웨어공학 18

08. 코딩과 리팩토링

8-1 코딩 개요 8-2 자주 발생하는 오류 8-3 코딩 규칙 8-4 리팩토링 8-5 코딩 품질 향상기법 8-1 코딩 개요 프로그래밍 언어 포트란, 베이직, C, C++, C#, 자바 코딩 작업 오류가 적은 품질 좋은 프로그램 설게 명세에 나타난 대로 요구를 만족할 수 있도록 프로그래밍 8-2 자주 발생하는 오류 메모리 누수, 중복된 프리 선언, NULL의 사용, 별칭의 남용, 배열 인덱스 오류, 수식 예외 오류, 버퍼 오류… 8-3 코딩 규칙 코딩 표준 간결하고 읽기 쉬운 것 주석 규칙 원시 코드와 주석을 명확히 구분 원시 코드와 주석이 일치하게 함 8-4 리팩토링 결과의 변경 없이 코드의 구조를 재조정 이미 존재하는 코드의 디자인을 안전하게 향상시키는 기술 가독성을 높이고 유지보수를 편하게 하기 위한..

07. 설계_2

7-1 아키텍처 설계 7-2 클래스 설계원칙 7-3 디자인 패턴 7-1 아키텍처 설계 아키텍처 건물의 뼈대 뿐 아니라 특성을 결정짓는 기본 구조 아키텍처는 모든 기술 분야에 적용할 수 있고 종류 다양 필요성 복잡하고 규모가 큰 소프트웨어를 개발 잘 정의된 구조의 품질 좋은 소프트웨어 개발 대형 프로젝트에서 복합성의 문제 해결하는 방법 개발할 소프트웨어의 전체 구조 생각 소프트웨어의 구조를 이루는 각 구성 요소를 찾음 아키텍처 설계 시 고려 사항 모든 이해관계자 사이의 의사소통 도구로 활용 구현에 대한 제약 사항(개발 비용, 기간)을 저으이 모든 이해관계자의 품질 요구사항 반영 특정 문제 영역에 적합한 소프트웨어의 구성 요소를 표준화하고 패턴화해 재사용하도록 설계 아키텍처의 특징과 기능 아키텍처의 기대 효..

06. 설계_1

6-1 설계 개요 6-2 설계원리 6-3 모듈화 6-4 사용자 인터페이스 설계 6-1 설계 개요 설계 건축물 설계와 소프트웨어 설계 요구 분석 : 무엇을 만들 것인가 설계 ; 어떻게 실현할 것인가 기본 구조 설계 - 모듈의 역할과 인터페이스 정의 상세 설계 - 모듈 내부의 알고리즘과 데이터 명세화 좋은 설계가 되려면 요구분석명세서의 내용 모두 포함 유지보수가 용이해야함 변화에 쉽게 적응 시스템 변경으로 인한 영향 최소화 읽기 쉽고 이해가 잘 되게 설계 프로세스 : 시스템 설계 → 객체 설계 → 휴먼 인터페이스 설계 → 데이터 관리 설계 → 태스크 관리 설계 → 객체지향 분석 6-2 설계원리 분할과 정복 분산 시스템은 클라이언트, 서버로 분할 시스템은 여러 서브시스템으로 분할 서브시스템은 하나 이상의 패키..

05. 요구 모델링

5-1 모델링 기초 5-2 UML 5-3 정적 모델링 5-4 동적 모델링 5-5 제어 모델링 5-6 모델 검증 5-1 모델링 기초 복잡한 시스템을 다루는 방법 모델링 하는 이유 복잡함 관리 형체가 없는 소프트웨어 구조 시각화 다른 사람과 커뮤니케이션 문제 도메인 및 제품 요구 사항을 이해하기 위해서 개발 중인 시스템 이해 관점과 추상화 수준 특정 관점, 추상화 수준에 따라 달라짐 5-2 UML 객체지향 소프트웨어를 모델링 하는 표준 그래픽 언어 시스템의 여러 측면을 그림으로 모델링 시스템의 모델링은 기능적 관점, 구조적 관점, 동적 관점 5-3 정적 모델링 정적 모델 객체들의 공통 구조와 동작들을 추상화 시킨 것 객체지향 기본 개념의 이해가 필요 객체와 속성, 연관, 집합, 상속, 다형성 클래스 다이어그..

04. 요구 분석

4.1 요구 요구 요구 분석 4.2 요구 추출 4.3 요구 분석 도메인 분석 시나리오 기반 분석 4.4 유스케이스 유스케이스 다이어그램 액터 시나리오 유스케이스 찾기 포함 관계 확장 관계 액터와 사용사례의 관계 확장 vs 포함 관계 4.5 요구 명세 작성 방법 4.6 요구 검증 요구 검증 4.1 요구 요구 시스템에 대한 고객의 요청을 확정한 것 프로젝트 성공 필수 조건 제약 사항 특정 프로그래밍 언어, 특정 제품 사용 SW 시스템 해결책을 제한 요구 분석 SW의 개발 실질적인 첫 단계 사용자의 요구에 대하여 이해하고 정리하는 작업 세 가지 작업 요구 추출 요구 분석 및 정의 요구 확인 4.2 요구 추출 요구 분류 기능의 종류 4.3 요구 분석 요구 후보를 분석하고 결정하여 요구로 확정 요구 품질 원자적 ..

02. 프로세스와 방법론

프로세스와 방법론의 비교 2.1 소프트웨어 생명주기 2.2 프로세스 프로세스의 정의 2.3 프로세스 모델 폭포수 모델(Waterfall model) V 모델(V model) 프로토타이핑 모델(Prototyping model) 나선형 모델(Spiral model) 진화적 모델(Evolution model) Unified 프로세스 애자일 프로세스 익스트림 프로그래밍(eXP) 스크럼(Scrum) 2.4 지원 프로세스 관리 프로세스 품질 보증 프로세스 형상 관리 프로세스 2.5 방법론 구조적 방법론 정보공학 방법론 객체지향 방법론 세 가지 방법론 비교 프로세스와 방법론의 비교 2.1 소프트웨어 생명주기 SW 개발에 대한 기술적, 관리적 이슈를 다루는 작업 서로 다른 목적, 서로 협력하여 전체 목적 만족 2.2 ..

01. 소프트웨어 공학 개요

소프트웨어 특성 및 유형 시스템 1.1 소프트웨어 시스템 정보 시스템(Information System) 제어 시스템(Control System) 탑재 시스템(Embedded System) 소프트웨어 개발 작업 1.2 소프트웨어의 위기 1.3 소프트웨어의 공학의 정의 및 목표 소프트웨어의 공학의 주제 단계적 프로세스 품질 보증 프로젝트 관리 연관 분야 소프트웨어 품질(Software Quality) 소프트웨어 생산성(Software Productivity) 1.4 소프트웨어 프로젝트 성패에 미치는 요소 의사 소통(Communication Skill) 프로젝트 성격 프로그래머의 역량(Maturity) 관리(Management) 경험(Experience) 소프트웨어 특성 및 유형 소프트웨어 프로그램 + 프로..

00. 소프트웨어 공학 소개

소프트 웨어의 발달 소프트 웨어의 발달의 추이 소프트 웨어 공학이란? 문제해결에 도움을 주는 요소 소프트웨어 개발이 어려운 이유 품질 좋은 소프트웨어 만들기 소프트웨어 공학의 핵심 물리적 공학과 소프트웨어공학 소프트 웨어의 발달 소프트 웨어의 발달의 추이 IT 발전(상품에서 소프트웨어가 차지하는 비중 커짐) 웹 환경의 SW 수요 급증(E-commerce, Mobile network) 복잡한 기능을 요구하는 SW 임베디드 SW 수요 증가 소프트 웨어 공학이란? Human based activity, but art, craft X 과학 아카데믹 - 이상적인 원자적인 크기 완벽함에 대해 고민 SW 생산에 영향을 주는 현상 연구 엔지니어링 실용적인 - 현실세계 반복적인 일 불완전에 대한 고민 품질 좋은 SW를 ..