테스트는 예상된 결과와 실제 결과가 어떤 차이를 보이는지 검사하고 평가하는 작업이다.하지만 테스트는 결함이 있음을 보여줄 뿐, 결함이 없음을 증명할 수는 없기 때문에 주의해야 한다. 작은 의미로는 소스코드에 남아있는 오류를 발견하는 것으로 볼 수 있지만크게 보면 개발자와 고객에게 사용하기에 충분한 소프트웨어임을 보여주는 것으로, 개발된 소프트웨어의 신뢰성을 높여주기 위한 작업이라고 볼 수 있다. 테스트 절차 우선, 테스트를 계획하기 위해서 목표를 정의하고, 테스트 대상 및 범위를 결정하며, 테스트 계획서를 작성하고 검토한다. 이제 작성한 계획서를 바탕으로 현재 문제에 적절한 테스트 설계 기법을 선정하고, 도출된 테스트 케이스에 입력 값으로 사용 할 원시 데이터를 작성한다. 이 과정에서 테스트 케..
먼저, UML에서 패키지가 어떻게 표현될 수 있는지 몇 가지 예시로 알아보자. 간단한 UML 패키지 자신의 내용을 보여주는 UML 패키지 UML 패키지의 중첩구조 (포함관계) 패키지의 내부 코드가 다른 패키지에 속한 코드에 의존하는 경우 컴포넌트와 패키지 사이의 의존관계 이렇게 표현한 패키지를 바탕으로 소프트웨어 시스템을 잘 구조화하고 관리하기 위해서 패키지를 어떻게 조직하고 의존성을 관리할 것인지에 대한 몇 가지 원칙들이 있다. 재사용/릴리즈 등가 원칙 (Release/reuse Equivalency Principle, REP) 이름 그대로 재사용 단위는 릴리스 단위와 같다는 원칙이다. 여기에서 단일 컴포넌트는 응집성 높은 클래스와 모듈들로 구성되어야 한다.단순히 뒤죽박죽 임..
좋은 소프트웨어를 설계하기 위해서 우리는 나쁜 설계가 갖는 특징들을 하나씩 줄여나가야 한다. 우리가 줄여나가야 할 나쁜 설계들의 특징 중 하나는 소프트웨어를 바꾸기 힘들다는 것이다. 이런 경우 시스템의 한 부분을 변경하면 전혀 상관없는 부분의 작동이 멈춘다거나, 다른 연관된 부분이 너무 많아서 함부로 건드리기 어렵다.전형적인 의존 관계를 잘못 관리해서 일어나는 현상이다. 이런 상황을 해결하기 위해서의존관계를 끊거나 의존의 방향을 바꿀 수 있는 인터페이스를 활용하거나,다형성을 사용해서 함수를 포함한 모듈에 의존하지 않고 그 함수를 호출할 수 있다.그래서 우리는 설계를 할 때 다형성, 인터페이스를 갖는 객체지향 언어(UML)를 사용하는 것이다. 객체지향 언어를 사용해서 의존관계를 원하는 모양대로 만..
소프트웨어 아키텍쳐란아키텍쳐란,구성요소를 중심으로 그 사이의 관계, 속성, 제공되는 인터페이스, 조립 방법을 말한다. 그렇다면 소프트웨어 아키텍쳐란,개발할 소프트웨어에 대한 전체적인 구조와 구성요소, 인터페이스를 통해서 어떻게 상호작용 하는지를 다룬다. 그래서 아키텍쳐 모델을 개발하는 이유는소프트웨어 시스템이 누구에게나 잘 이해되도록 하기 위함이고(의사소통 도구로 활용),시스템의 확장이나 일부를 독립적으로 작업하여 재사용을 용이하게 하기 위함이다. 이러한 아키텍쳐는 여러가지 관점에 따라 적절한 다이어그램을 선택하여 표현된다. 예를들어 컴포넌트 사이의 동적인 상호작용은 액티비티 다이어그램으로 표현하고,서브시스템 사이에 공유하는 데이터들은 클래스 다이어그램으로 표현한다. 품질 속성소프트웨어를 설..
다이어그램을 그리는 순서다이어그램은 설계 방법 중 하나일 뿐이다.(그냥 도구) 사용자의 요구사항을 유스케이스(사용사례)로 정리하고 유스케이스 다이어그램을 작성한다. 이렇게 다이어그램을 그리는 과정에서 클래스 다이어그램의 후보들이 나온다. 이 중에서 엑터를 선정하고 클래스 속성, 클래스 사이의 관계를 찾아 객체 모형을 완성하고 시퀀스 다이어그램을 그린다. 이것을 통해 소프트웨어의 흐름을 파악한다. 흐름을 파악했으면 클래스 다이어그램을 업그레이드 시킨다. 중간중간에 상태나 활동, 유스케이스 다이어그램같이 애매한 부분을 추가한다. 유스케이스 다이어그램 그리기 예시 다음은 교재에 있는 유스케이스 다이어그램 퀴즈다.위 요구사항에 맞게 유스케이스 다이어그램을 작성하기 위해서 우선 분석을 해보자.일단 유스케이스 ..
우선 설계를 시작하기 전비용 절감을 통해 이익을 낼 수 있도록 설계해야 한다는 점과, 요구한 것과 일치하는지 확인해야 한다는 생각을 염두에 두어야 한다. 이제 설계를 시작하기 위해 필요한 원리들을 알아보자.설계의 원리는 다음과 같이 이루어져 있다. 분할 정복알고리즘에서 들어봤듯이, 큰 문제를 작은 문제로 나눠서 소 단위의 작업을 하나씩 처리하여 전체 일을 끝내는 방법이다. 분할하는 형태는 어떤 것을 설계하여 분할하는지에 따라 달라진다.분산 시스템은 클라이언트와 서버로 분할시스템은 여러 서브시스템으로 분할서브시스템은 하나 이상의 패키지로 분할패키지는 여러 클래스로 분할클래스는 여러 메서드로 분할 예를 들어 대학교의 종합 정보 시스템을 설계해야 한다면 대략학사 관리, 회계 관리, 인사 관리 등으로 ..