소프트웨어공학 6

UML

UML(Unified Modeling Langage)은 객체지향 분석/설계를 위한 통합 모델링 언어이다. UML은 시스템의 상호작용, 전체 구조, 컴포넌트 간의 관계등을 시각적으로 표현하기 위한 여러 표기법과 다이어그램 구조를 정의하고 있다. 이를 통해 모델링 결과를 시각적으로 표현할 수 있고, 시스템 분석 설계 및 분석의 결과물로 활용할 수 있다. UML은 구조, 행위 모델링 영역으로 대부분의 다이어그램 구조를 정의하고 있으며 2.5에서는 공통으로 사용될 수 있는 요소들을 추가 영역으로 설명하고 있다. UML은 분석,설계,구현의 전 과정에서 사용될 수 있으며 가시화 언어, 명세화 언어, 구축 언어, 문서화 언어 네 가지 특징을 가진다. 다이어그램의 종류UML 다이어그램은 크게 구조와 행위 다이어그램으로..

SOLID

프로그래머가 시간이 지나도 유지 보수와 확장이 쉬운 소프트웨어를 만드는데 필요한 원칙이다. 이 원칙은 일반적인 상황에서 보다 높은 수준으로 따라야 할 원칙으로 정의한다. 밑의 5가지 원칙의 앞글자를 따서 SOLID원칙이라고 부른다. - SRP(Single Responsiblity Principle, 단일 책임 원칙) - OCP(Open - Close Principle, 개방 - 폐쇄 원칙) - LSP(Liskov Substitution Principle, 리스코프 치환 원칙) - ISP(인터페이스 분리 원칙) - DIP(Dependency Inversion Principle, 의존 역전 원칙) SRP(Single Responsiblity Principle, 단일 책임 원칙) - 클래스나 함수는 하나의 책..

응집도와 결합도

모듈은 높은 응집도와 낮은 결합도를 가진 구조로 설계하는 것이 좋다. 일반적으로 좋은 설계는 모듈의 독립성을 최대한 보장하는 설계인데 모듈의 독립성은 응집도와 결합도로 측정한다. 독립성이 높은 모듈일수록 서로에게 영향을 거의 끼치지 않으며 오류가 발생해도 쉽게 수정 가능하다. 모듈의 독립성은 결합도를 약하게, 응집도를 강하게 모듈의 크기가 작을 때 높아진다. #결합도 결합도는 모듈간의 상호 의존하는 정도 또는 두 모듈 간의 연관관계를 말한다. 결합도가 낮을수록 모듈간의 독립성은 높아진다. 1. 자료 결합 (Data Coupling) - 모듈 간에 파라미터 만으로 데이터를 주고받는 결합 - 가장 결합도가 낮고 좋은 형태이다. 여기서 주고받는 데이터는 기능 수행에 있어 로직을 제어하거나 하지 않는 순수한 자..

GRASP

GRASP(General Responsibility Assignment Software Patterns) - 일반적인 책임 할당 소프트웨어 패턴. 기본 객체 설계 학습을 위한 방법론 - 객체 지향 설계의 관점에서 책임은 클래스의 계약 혹은 의무로, 클래스와 객체가 어떤 메세지에 대해 처리해야 할 의무가 있을 때 해당 객체가 이러한 책임을 가진다라고 이야기 할 수 있다. - Object-Oriented 설계의 핵심은 각 객체에 책임을 부여하는 것 - 책임을 부여하는 원칙들을 말하고 있는 패턴 - OOP에서 책임은 기본적으로 메서드를 통해서 구현된다. 책임의 예 - String 클래스는 문자열을 표현하고 처리하는 책임을 가진다. - File 클래스는 파일에 대한 정보를 알려주고 처리하는 책임을 가진다. - ..

프로세스와 방법론

프로세스(Process) : 소프트웨어 개발을 위한 일련의 절차와 활동 방법론(Methodology) : 프로세스를 수행할 구체적인 방법 따라서 프로세스는 방법론에 의해 수행이 된다. # SW 개발 생명주기 SDLC(Software Development Life Cycle) - 소프트웨어 개발의 전 과정을 의미하고 소프트웨어 개발 생명주기라고 한다. - 일반적으로 단계는 아래와 같이 구성되어 있다. - 이런 개발 생명주기를 어떤 절차로 진행할 것인가가 프로세스, 프로세스를 수행할 접근법, 원칙을 방법론이라 한다. #프로세스 소프트웨어 개발 프로세스를 일반화해 프로젝트에 적용할 수 있도록 만든 것이 모델이며 대표적으로 폭포수 모델, 프로토타입 모델, 나선형 모델, 애자일 모델 등이 있다. 폭포수 모델 - ..

소프트웨어 공학이란? SWEBOK

소프트웨어 공학이란 소프트웨어의 개발의 여러 문제들을 공학적인 방법으로 해결하는 것이다. - 공학은 과학적인 지식을 바탕으로 실용적인 문제를 해결하는 것. - 소프트웨어 공학은 개발 프로세스, 방법론, 아키텍처, 도구, 기법등 모든 것을 포함한다. - 소프트웨어의 품질 향상, 비용 절감, 개발기간 단축이 목표다. SWEBOK(SoftWare Engineering Body of Knowledge) - 소프트웨어 공학의 지식을 정리한 것이다. - V3에선 15개의 지식영역으로 구성되어 있지만 V4에선 18영역으로 구성되어있다.