SMALL

모듈화

소프트웨어를 하나의 기능들로 분할하는 것

모듈

모듈화에서 분할된 하나의 기능을 의미

 

모듈화 장점

  • 프로그램 효율적인 관리 및 성능향상
  • 소프트웨어 이해 용이성 향상 및 복잡성 감소
  • 오류 파급 효과 최소화
  • 기능 분리 가능 및 인터페이스 단순
  • 모듈 재사용 및 유지보수 용이
LIST
SMALL

일반화

  • 유사한 클래스들 사이의 공유되는 속성과 동작을 묶어 주며, 다른 한편 그들 사이의 다른 점을 보존할 수 있게 해주는 효과적인 추상화 기법이다.
  • ex) 다중 상속을 생각하면 됨

집단화

  • 클래스들 사이의 부분-전체 또는 부분 관계로 설명되는 연관성을 나타낸다.
  • 집단화는 여러 부속 객체들이 조립되어 하나의 객체가 구성되는 것을 의미
  • 컴퓨터 - 본체, 모니터, 키보드, 마우스 .. 이런씩으로 나누는 것
LIST
SMALL

기능 관점

  • 기능 모델은 시스템이 어떠한 기능을 수행하는가의 관점에서 시스템을 기술
  • 주어진 입력에 대하여 어떤 결과가 나오는가를 보여주는 관점이며 연산과 제약 조건을 묘사
  • 계산이 일어나는 순서는 물론 데이터가 생성되거나 도착하는 순서 등에 대해서는 기술하지 않음
  • 버블도표, 자료흐름도

기능 관점

동적 관점

  • 시간의 변화에 따른 시스템의 동작과 제어에 초점을 맞추어 시스템의 상태와 상태를 변하게 하는 원인들을 묘사하는 것
  • 상태 변화도, 사건추적도

동적 관점

정보 관점

  • 객체 관점이라고도 부르며, 시스템에 필요한 정보를 보여줌으로써 시스템의 정적인 정보 구조를 포착하는 데 사용된다.
  • ER 모델
LIST

'전공 > 소프트웨어공학' 카테고리의 다른 글

모듈, 모듈화  (0) 2021.07.13
일반화와 집단화  (0) 2021.05.16
컴포넌트 기반 개발방법론  (0) 2021.05.16
익스트림 프로그래밍(XP : eXtreme Programming)  (0) 2021.05.16
유지보수 유형  (0) 2021.05.16
SMALL

정의

느슨한 결합도와 큰 입자의 특징을 갖는 컴포넌트를 기반으로 소프트웨어 시스템을 개발함으로써 고객의 요구 변화에 신속하고 유연하게 대처하고자 하는 것을 목표로 하는 방법론

특징

  • 각 프로세스마다 특정 산출물을 가지며, 이 산출물을 통해 중복 투자감소 및 유지보수성 향상을 달성
  • 특정 프레임워크상에서 실행되는 부품화된 컴포넌트를 바탕으로 이를 조립하여 더 큰 컴포넌트를 만들거나 애플리케이션을 개발하는 새로운 기법
  • 개발 생산성, 소프트웨어 재사용성, 시스템 유지보수성을 향상시킬 수 있는 대안으로 주목 받음
  • 컴포넌트를 선택하여 조립함으로써 원하는 소프트웨어를 신속하게 개발
  • 컴포넌트는 세부적으로 구현된 내부의 구현 사항들을 외부로부터 감추고 외부적인 인터페이스만 제공
  • 컴포넌트는 동적으로 바인드할 수 있는 실행시간에 인터페이스를 통해 접근이 가능

장점

  • 복잡한 소프트웨어를 컴포넌트 단위로 분할해서 복잡한 소프트웨어 시스템을 보다 쉽게 관리
  • 높은 품질의 소프트웨어를 가질 수 있음
  • 컴포넌트는 구현 언어에 구애받지 않고 상호 간 호환성 있는 인터페이스를 통한 연동이 가능
LIST

'전공 > 소프트웨어공학' 카테고리의 다른 글

일반화와 집단화  (0) 2021.05.16
소프트웨어 시스템의 3가지 관점  (0) 2021.05.16
익스트림 프로그래밍(XP : eXtreme Programming)  (0) 2021.05.16
유지보수 유형  (0) 2021.05.16
HIPO  (0) 2021.05.16
SMALL

정의 및 특징

  • 애자일 소프트웨어 개발방법론 중 가장 많이 알려진 방법
  • 목표는 '고객에게 최고의 가치를 가장 빨리'
  • 방대한 문서화를 피하고 요구사항에 관해 서로 소통하기 위해 사용자 스토리를 만들어 고객과 직접 대면하여 회의
  • 사용자 스토리는 유스케이스의 차이점은 다루는 범위가 다르다. (사용자 스토리는 작업을 작게 나누어 짧은 단위 시간내에 완료될 수 있는 작업의 범위를 다룸)
  • 점진적 개발, 작고 빈번한 릴리즈, 단순한 설계, 리팩토링, 고객의 전적인 참여
  • 의사소통, 단순함, 피드백, 용기, 존중의 5가지 가치에 근거한 경량급 방법론
  • XP는 팀 중심의 소프트웨어 개발방법이며, 다른 사람과 함께 개발하는 짝 프로그래밍을 권장

※짝 프로그래밍

- 공동책임

- 비정형적인 검사 또는 코드 검토

- 리팩토링 지원

- 비용 절감 및 시간 절약

LIST

'전공 > 소프트웨어공학' 카테고리의 다른 글

소프트웨어 시스템의 3가지 관점  (0) 2021.05.16
컴포넌트 기반 개발방법론  (0) 2021.05.16
유지보수 유형  (0) 2021.05.16
HIPO  (0) 2021.05.16
객체지향언어의 장단점  (0) 2020.09.16
SMALL

유지보수 4가지유형

  1. 수정 유지보수(corrective maintenance) : 잘못된 것을 수정하는 유지보수
  2. 적응 유지보수(adaptive maintenance) : 시스템을 새로운 환경에 적응시키는 유지보수
  3. 완전 유지보수(perfective maintenance) : 새로운 기능을 추가하거나 개선하는 유지보수
  4. 예방 유지보수(preventive maintenance) : 미래의 시스템 관리를 하는 유지보수
LIST

'전공 > 소프트웨어공학' 카테고리의 다른 글

컴포넌트 기반 개발방법론  (0) 2021.05.16
익스트림 프로그래밍(XP : eXtreme Programming)  (0) 2021.05.16
HIPO  (0) 2021.05.16
객체지향언어의 장단점  (0) 2020.09.16
응집도와 결합도  (0) 2020.07.15
SMALL

정의

시스템의 분석 및 설계나 문서화할 때 사용되는 기법으로 시스템 실행 과정인 입력, 처리, 출력의 기능을 나타냄

특징

  • 문서화와 설계의 효율성을 강화할 수 있음
  • 표준화된 문서 작성 기법을 사용
  • 프로그램의 기능을 계층구조로 도식화
  • 하향식 기법
  • 절차보다는 기능 중심 설계
  • 기능과 자료의 의존 관계를 동시에 표현 가능
  • IPO(인풋-프로세스-아웃풋, 입력-처리-출력)의 기능을 명확히 하여 설계 가능
  • 도식목차, 총괄 다이어그램, 상세 다이어그램으로 구성

 

  • 도식목차 : HIPO에서 지정된 기능을 계층적으로 나타낸 도표
  • 총괄 다이어그램 : 시스템 또는 프로그램의 기능을 입력, 출력 관계로 도표화한 것
  • 상세 다이어그램 : 총괄 도표에 나타난 기능을 구성하는 기본요소들을 상세히 기술한 도표 

 

LIST

'전공 > 소프트웨어공학' 카테고리의 다른 글

컴포넌트 기반 개발방법론  (0) 2021.05.16
익스트림 프로그래밍(XP : eXtreme Programming)  (0) 2021.05.16
유지보수 유형  (0) 2021.05.16
객체지향언어의 장단점  (0) 2020.09.16
응집도와 결합도  (0) 2020.07.15
SMALL

장점

  • 생산성 향상
  • 자연적인 모델링
  • 재사용
  • 유지보수의 용이성

단점

  • 실행 시 속도가 느림


LIST

'전공 > 소프트웨어공학' 카테고리의 다른 글

컴포넌트 기반 개발방법론  (0) 2021.05.16
익스트림 프로그래밍(XP : eXtreme Programming)  (0) 2021.05.16
유지보수 유형  (0) 2021.05.16
HIPO  (0) 2021.05.16
응집도와 결합도  (0) 2020.07.15
SMALL

응집도

응집도는 하나의 모듈안에 얼마나 많은 기능이 집중되어 있는지를 의미한다. 하나의 모듈에서 많은 기능을 책임지고 있다면, 응집도가 낮다고 한다.

낮은 응집도의 문제점

  • 여러 기능을 하나의 모듈에서 책임
  • 유지보수가 어려움
  • 재사용하기 어려움
  • 다른 모듈의 변화에 예민
  • 이해하기 어려움

결합도

결합도는 하나의 모듈이 다른 모듈에 얼마나 의존을 하고 있는가를 의미한다. 결합도가 높으면 다른 모듈의 변경에 따라 자신도 변경을 해야 한다.

높은 결합도의 문제점

  • 다른 프로그램에서 모듈 재사용 어려움
  • 연관된 모듈이 변경되면 자신도 변경됨
  • 수정할 모듈을 이해할려면 연관된 모듈도 이해해야됨

결론, 높은 응집도와 낮은 결합도를 만족하면 유지보수 하기 용이하며, 이상적인 모듈화라고 할 수 있다.

ps. 응집도랑 결합도 종류가 있는데, 추후 필요하다면 정리 하겠음



LIST

'전공 > 소프트웨어공학' 카테고리의 다른 글

컴포넌트 기반 개발방법론  (0) 2021.05.16
익스트림 프로그래밍(XP : eXtreme Programming)  (0) 2021.05.16
유지보수 유형  (0) 2021.05.16
HIPO  (0) 2021.05.16
객체지향언어의 장단점  (0) 2020.09.16

+ Recent posts