소프트웨어의 정의 소프트웨어(Software)란 협의로는 '프로그램 자체'를 의미하고, 광의로는 '프로그램과 프로그램의 개발, 운용, 보수에 필요한 정보 일체'를 뜻합니다. 소프트웨어의 특징은 다음과 같습니다. 1) 비가시성(Invisibility): 소프트웨어 구조는 출력 결과를 봐도 구 구조를 파악할 수 없고, 프로그래.. 프로그램 아키텍쳐/소프트웨어공학 2011.11.08
기업정보화 성숙 5단계 모형(임춘성&ITR; Leem&Kim) 기업 정보화 성숙 5단계 모형은 기업 정보화의 성숙 단계를 나타낸 것으로 기업 정보화가 진행됨에 따라 이에 상응하여 발전하는 기업의 양상을 경영 및 업무 분야와 IT 분야를 연계하는 관점에서 5단계로 정의하고, 이를 정량적 정보화 수준 평가에 활용하기 위한 순환적 진화 방식을 제.. 프로그램 아키텍쳐/기업 정보화 2011.09.15
테스트의 필요성과 테스트 주도 개발(TDD, Test Driven Development) '토비의 스프링 3' 책을 읽으면서 개발시 부딛혔던 수 많은 문제에 대해 개념적인 정리가 되는 느낌이다. 여기서 테스트 코드에 대한 생각을 엿 볼 수 있는데 가지고 있던 생각과 비교해 고쳐야 할 부분에 대해 생각해보게 되었다. 테스트 코드의 필요성 개인적으로 테스트 코드를 .. 프로그램 아키텍쳐/소프트웨어공학 2011.03.15
BRP와 ISP 업무 재설계 BRP(Business Process Re-engineering: 업무 재설계) BRP은 1990년대 초 미국에서 제창한 개념으로 사업활동을 영위하는 조직의 측면에서 작업을 개선하고 자원의 사용을 보다 효율적으로 만들기 위해, 하나의 목적으로 처음부터 다시 근본적인 변화를 만드는 것을 의미한다. BRP는 업무 프로세스의 근본적인 재고.. 프로그램 아키텍쳐/기업 정보화 2011.02.08
반복문 사용시 성능 향상 방법 반복문 안에 배열 사용을 자제하기 배열에 접근할 때는 경계 검사(Bound Checking, 배열의 범위를 벗어난 접근이 있는가를 확인)를 하므로, 반복문 안에 배열을 사용하는 것보다 임시 변수를 사용할 수 있다면 임시 변수를 사용하는 것이 바람직하다. for ( int I = 0 ; I < repeat ; I++ ) { cou.. 프로그램 아키텍쳐/Refactoring 2010.12.09
조건 분기를 단순하게 변경하기 조건의 분해(Decompose Conditional) if-else문의 조건이 너무 복잡할 경우 메소드로 치환해 알기 쉬운 코드로 변경한다. 변경하기 전의 프로그램 코드) if( money >= 100 && tip >= 100 && score >=100 ) { pay = money ++; tip += bonus; } else { pay = money + tip; } 위와 같은 코드를 메소드로 치환하여 다음과 .. 프로그램 아키텍쳐/Refactoring 2010.12.09
클래스의 추출(Extract Class) 클래스는 각각 담당하는 일이 있고, 그 일을 완수해야 할 책임이 있다. ‘1개의 클래스가 완수할 책임은 1개’라는 것이 가장 이상적인 클래스이지만 개발을 하다 보면 클래스가 점점 부풀어져서 1개의 클래스가 많은 책임을 갖게 되는 경우도 종종 있다. 이럴 때는 책임을 분산시킬 클래스를 추출한다.. 프로그램 아키텍쳐/Refactoring 2010.12.09
메소드 추출(Extract Method)와 메소드 이름 변경(Rename Method) 메소드 추출(Extract Method) 클래스안에 메소드가 너무 길 경우, 메소드 안에 자잘한 처리가 연속되어 있는 경우, 그 처리 내부에서 그룹을 찾아내고 그 그룹을 독립적인 메소드로 추출한다. 그런 다음 추출한 메소드에 적절한 이름을 붙인다. 이것이 메소드 추출이다. 길고 지저분하.. 프로그램 아키텍쳐/Refactoring 2010.12.09
Null 객체의 도입(Introduce Null Object) 어떤 경우에는 Null 값이 들어오고 어떤 경우에는 정상적인 값이 들어올 경우가 있다면 Null 객체를 도입함으로써 Null 체크를 줄일 수 있다. Null 객체의 도입은 프로그램 코드 안에서 Null 체크가 많을 경우 유용한다. ■ Null 객체 만들기 원래 클래스의 서브 클래스를 만든다. (원래 클.. 프로그램 아키텍쳐/Refactoring 2010.12.09
제어 플래그의 삭제(Remove Control Flag) 플래스(flag)란 ‘깃발’을 의미하지만 프로그래밍에서는 ‘상태를 기록하고 처리의 흐름을 제어하기 위한 boolean형 변수’를 의미한다. 제어 플래그가 반드시 나쁜 것은 아니다. 프로그램에 상태를 기록하는 것은 필요하다. 하지만 제어 플래그를 지나치게 많이 사용하면 처리의 .. 프로그램 아키텍쳐/Refactoring 2010.12.09