본문 바로가기

Computer Science/Software Engineering10

[소공] 11장 유지보수 11-1 유지보수의 소개 1. 유지보수 정의 : 개발 후 이뤄지는 소프트웨어 변경 작업. 수정 후 배포하는 작업. 2. 변경의 이유(5) 버그 제거 운영 환경의 변화 정부 정책의 변화 비즈니스 절차의 변화 미래 문제 배제를 위한 변경 3. 유지보수 유형(4) 수정형 유지보수 - 발견한 결함을 고치기 위해 수정 적응형 유지보수 - 변경된 환경에서도 사용 가능하게 소프트웨어 이식 및 변경 완전형 유지보수 - 성능이나 유지보수성을 개선하기위해 실시 예방형 유지보수 - 오류 발생을 방지 4. Lahman의 법칙(8) 시스템 타입 E타입: 계속 진화하는 타입(완전히 정의 X) S타입: 완전히 정의할 수 있는 타입(체스게임) 지속적인 변경의 원칙 - 지속적으로 좋은 방향으로 진화되어야 함. 엔트로피, 복잡도 증가의.. 2023. 12. 14.
[소공] 9장 코딩 9-1 코딩 작업 1. 코딩 작업 과정(5) 코딩 표준을 만들기 프레임워크 패키지와 응용 패키지 결정 클래스 구현 끝나는 대로 인스펙션 클래스 단위로 테스트 응용 시스템으로 통합 2. 자주 발생하는 오류(11) ① 메모리 누수 : 메모리가 프리되지 않고 프로그램에 계속 할당되는 현상 ② 중복된 프리 선언 : 이미 프리로 선언된 자원을 한번 더 프리로 선언 ③ NULL의 사용 : NULL을 포인트하고 있는 곳의 콘텐츠를 접근. 이는 시스템 다운 시킴. ④ 별칭의 남용 : 서로 다른 주소 값을 예상한 두 변수의 값이 별칭 선언으로 같은 값이 되었을 때 오류 발생. ex. strcat(src, destn) ⑤ 배열 인덱스 오류 : 배열 인덱스가 한도를 벗어나거나 음수값을 갖는 경우 ⑥ 수식 예외 오류 : 0으.. 2023. 12. 14.
[소공] 7장 아키텍쳐와 패턴 7-1 아키텍처 기초 1. 소프트웨어 아키텍처 정의 : 소프트웨어 시스템에서 높은 수준의 구성요소와 그들의 관계, 상호작용 등을 의미. 2. 아키텍처 설계 정의 : 소프트웨어 시스템에 대한 전반적인 구조 설계하는 과정. (서브시스템 분할 및 덩어리화 작업, 서브시스템 상호 작동 결정, 서브시스템 인터페이스 결정) 3. 아키텍처 표현 관점(5) 논리적으로 분할된 서브시스템 서브시스템 사이의 인터페이스 컴포넌트 사이의 동적인 상호작용 서브시스템 사이에 공유되는 데이터 런타임에 존재하는 컴포넌트 위치 4. 아키텍처 중요성(4) 소프트웨어 시스템을 개발자가 잘 이해하기 위해 시스템의 일부는 독립적으로 작업하기 위해 시스템의 확장을 위해 재사용과 재사용 가능성을 위해 5. 아키텍처의 역할 : 소프트웨어 개발의 중.. 2023. 12. 14.
[소공] 6장 설계 원리 0. 설계 : 요구 분석은 "무엇을" 만들 것인기를 정하는 것. 설계는 "어떻게" 만들 것인가를 정하는것. (1) 기본 구조 설계: 각 모듈의 역할과 인터페이스 정의. (2) 상세 설계: 모듈 내 알고리즘, 데이터 명세화. 6-1 설계 기본 개념 1. 설계 방법 : (과거) 분할 정복, 추상화, 합성 등의 원리 적용. : (최근) 아키텍쳐 기반. 2. 서브 시스템, 모듈 - 아키텍처: 시스템을 구성하는 컴포넌트(서브시스템, 모듈) + 컴포넌트 상호작용의 집합 - 서브시스템: 시스템의 복잡도를 줄이기 위해 분할한 것. 3. 아키텍처 관점(4 + 1) 논리적 관점: UML 클래스도, 상태도, 교류도 프로세스 관점: UML 액티비티도 개발 관점: UML 컴포넌트도 물리적 관점: UML 배치도 유즈케이스 관점:.. 2023. 10. 28.
[소공] 5장 요구 모델링 1. 요구 모델링과 요구 분석의 차이 요구 모델링: 고객과 개발자가 무엇이 개발되고 있는지에 동의하는 것을 주된 목적으로하는 요구 명세 생성. 요구 분석: 시스템에 대한 형식적인 설명 제공. 2. 도메인 지식과 모델링 : 모델링은 도메인 지식(업무 프로세스, 기능, 역할, 규칙)을 체계화하는 과정. 다이어그램으로 정형화함. 5-1 모델링 기초 1. 모델링 하는 이유(7) 복잡함을 잘 관리하기 위해 소프트웨어 구조를 시각화하기 위해 타인과 소통하기 위해 문제 도메인 및 요구사항을 이해하기 위해 개발 중인 시스템을 이해하기 위해 구현 전 솔루션을 실험해보기 위해 기존 시스템을 문서화하기 위해 2. 관점과 추상화 수준 3. 모델 사이의 관계**** 5-2 UML 1. UML : (Unified Modeling.. 2023. 10. 27.
[소공] 객체지향 방법론과 UML 1. 객체지향 핵심 개념 1. 객체지향 관점 - 전통적인 관점: 프로그램 = 자료구조 + 알고리즘. 데이터와 프로시저가 독립적이라고 여김.(사실 x) - 객체지향 관점: 프로그램 = 객체 + 객체, 객체 = 자료구조 + 알고리즘, 2. 캡슐화(Encapsulation) : data와 operation을 캡슐화한다. - encapsulation이 중요한 이유: 특정 data와 operation은 의미적으로 연관되어, 이들을 묶어 생각해야함. 3. 정보은닉(Information Hiding) : 객체 지향 언어적 요소를 활용하여 객체에 대한 구체적인 정보를 노출시키지 않도록 하는 기법. - 장점(2): 객체에 대한 추상적인 관점을 제공. 다른 객체에 영향을 안 주고 알고리즘 을 수정할 수 있음. 4. 객체란.. 2023. 10. 13.
[소공] 4장 요구 분석 0. 요구 분석 작업 단계(3) - 요구 추출: 고객의 요구를 찾아냄.(인터뷰, 설문) - 요구 분석 및 정의: 찾은 요구를 이해관계자와 합의할 수 있는 형태로 정의. - 요구 확인: 요구가 고객을 만족시키는지 확인하고 수정(프로토타입핑) 4-1 요구 1. 요구란? : 시스템에 대한 고객의 요청을 확정한 것. → 진정한 요구를 찾는 일: 프로젝트 성공의 필수 조건! 2. 제약 사항이란? : 시스템의 해결책 제한함. (특정한 프로그래밍 언어와 특정한 제품 사용 금지) → 요구와 차이점: 제약은 여러 가지 설계 구현 안을 줄임. 3. 요구의 분류(2) - 기능 요구: 고객이 요구하는 시스템이 처리할 기능(업무 절차나 기계 동작을 실현한 것.) → 특징: 동사로 표현/ 쉽게 파악/ 제품 기능/ 사용 사례로 정.. 2023. 10. 9.
[소공] 3장 프로젝트 관리와 계획 0. 프로젝트 관리의 목적 : 작업 수행에 필요한 자원 등을 효과적으로 사용해 프로젝트 목표를 달성하는 것. 1. 프로젝트 관리 목표(7) - 최종 결과가 고객의 요구를 만족. - 결과물의 속성(품질, 비용 등)이 요구 수준에 부합. - 일정 준수 - 팀, 팀원 역량 발휘 - 실행을 모니터링하고, 조정 - 리스크를 예측하고, 대비 - 자원의 효과적 사용 2. SW 프로젝트 관리의 어려움(3) - 개발 대상이 눈에 안보임. - SW 분야의 기술 발전은 매우 빠름. - SW 분야는 조직마다 프로세스가 다름. 3. 프로젝트 관리 활동의 요소(4) - 계획/ 조직/ 모니터링/ 조정 4. 프로젝트 관리 프로세스 : 프로젝트 시작→ 프로젝트 계획→ 실행과 모니터링→ 종료 3-1 프로젝트 시작 1. 프로젝트의 첫 작.. 2023. 10. 7.
[소공] 2장 프로세스와 방법론 0. 프로세스와 방법론 비교 프로세스 방법론 특징 : 단계적인 작업의 틀을 정의한 것. 무엇을 하는가에 중점 각 단계가 다른 방법론으로도 실현 가능 결과물의 표현에 대해 언급 없음 패러다임에 독립적 : 프로세스의 구체적인 구현 어떻게 하는가에 중점 각 단계의절차, 가이드라인, 기술을 제시 결과물을 어떻게 표현하는지 표시 패러다임에 종속적 사례 폭포수 프로세스 나선형프로세스 프로토타이핑 프로세스 Unified 프로세스 애자일 프로세스 진화적 모형 구조적 분석, 설계방법론 객체 지향 방법론 컴포넌트 기방 개발 방법론 익스트림 프로그래밍 2-1 소프트웨어 생명주기 1. 소프트웨어 생명주기(5) : (1) 요구 분석 (2) 설계 (3) 구현 (4) 테스팅 (5) 유지보수 2-2 프로세스 1. 프로세스 개념(2).. 2023. 9. 12.
[소공] 1장 소프트웨어공학 소개 1-1 소프트웨어 1. 소프트웨어란? : 프로그램과 그 외의 문서로 이루어진 것. 여기서 말하는 문서는 프로그램의 개발 및 운용 등에 필요한 정보 문서. 2. 소프트웨어의 특징(6) : 복잡성, 순응성, 변경성, 비가시성, 복제용이성, 비마모성 (마모되다: 마찰 부분이 닳아서 없어지다) 3. 소프트웨어의 유형(3) 소프트웨어 분류 특징 소프트웨어 카피 수량 요구되는 하드웨어 개발 인력 주문형 소프트웨어 특정 대상의 요구를 만족시키기 위해 제작한 소프트웨어 적음 낮음 많음 패키지 소프트웨어 패키지화 해 상업적으로 판매하는 소프트웨어. 워드프로세서 중간 높음 중간 임베디드 소프트웨어 다른 시스템에 내장된 소프트웨어 많음 중간 적음 4. 시스템이란? : 필요한 기능을 실현하기 위해 관련 요소를 어떤 법칙에 따.. 2023. 9. 7.