Hello

[정처기 필기] 결함, 알고리즘, 클린코드, 외계인코드, 정/동적 분석, EAI

by 볼빵빵오춘기

결함

SW의 에러, 결함, 결점, 버그, 실패와 같은 용어가 사용되며, 이러한 결함으로 인하여 설계와 다르게 동작하거나 다른 결과가 발생하는 것을 의미한다.

 

결함 관련 용어

  • 에러(Error)
    SW 개발 또는 유지보수 수행 중에 발생한 부정확한 결과로, 개발자의 실수로 발생한 오타, 개발 명세서와 잘못된 이해, 서브루틴의 기능 오해 등이 있다.
  • 오류(Fault)
    프로그램 코드상에 존재하는 것으로 비정상적인 프로그램과 정상적인 프로그램 버전 간의 차이로 인하여 발생되며, 잘못된 연산자가 사용된 경우에 프로그램이 서브루틴으로부터의 에러 리턴을 점검하는 코드가 누락된 것을 말한다.

  • 실패(Failure)
    정상적인 프로그램과 비정상적인 프로그램의 실행 결과의 차이를 의미하며, 프로그램 실행 중에 프로그램의 실제 실행 결과를 개발 명세서에 정의된 예상 결과와 비교함으로써 발견한다.

  • 결함(Defect)
    버그, 에러, 오류, 실패, 프로그램 실행에 대한 문제점, 프로그램 개선사항 등의 전체를 포괄하는 용어이다.

알고리즘

  • 주어진 과제를 해결하기 위한 방법과 절차를 의미한다.
  • 알고리즘 자연어, 의사코드(특정 프로그래밍 언어의 문법에 따라 쓰인 것이 아니라, 일반적인 언어로 코드를 흉내 알고리즘을 써놓은 코드), 순서도, 프로그래밍 언어를 이용하여 표현 가능하다.

알고리즘 설계 기법

분할 정복법

  • 제시된 문제를 분할이 불가할 때까지 나누고, 각 과제를 풀면서 다시 병합해 문제의 답을 얻는 Top-Down 방식이다.

동적 계획법

  • 주어진 문제를 해결하기 위해 부분 문제에 대한 답을 계속적으로 활용해 나가는 Bottom-Up 방식이다.
  • 이전 단계의 해답을 활용하기 위해 반드시 기억할 수 있는 저장소가 필요 하기 때문에 속도는 빠르지만, 공간 복잡도가 커지는 단점이 있다.

탐욕법

  • 국소적인 관점에서 최적의 해결 방법을 구하는 기법으로 최적의 해결 방법을 구하지는 못하나 동적 계획법보다 효율적이라고 할 수 있다.

퇴각 검색법

  • 어떤 문제의 최적해를 구하기 위해 모든 가능성을 찾아가는 방법이다.
  • N-Qeen 문제 해결 시에 응용된다.
  • 동적 계획법과 같이 기억할 저장소를 필요로 한다.

※ N-Qeen : N*N 체스판에서 N개의 퀸을 서로 공격할 수 없게 배치하는 경우의 수를 출력하는 문제

 

분기 한정법

  • 정해진 범위를 벗어나는 값들을 가지치기해가며 결과값을 추적해 나가는 방식이다.

근사 해법

  • 복잡도가 매우 높은 문제에 대해 가장 근사치의 값을 구하는 기법이다.

 

클린 코드(Clean Code)

  • 깔끔하게 잘 정리된 코드이다.
  • 중복 코드 제거로 애플리케이션의 설계가 개선된다.
  • 가독성이 높아진다.
  • 버그를 찾기 쉬워지며, 프로그래밍 속도가 빨라진다.

 

클린 코드의 작성원칙

가독성

  • 누구나 코드를 쉽게 읽을 수 있도록 작성한다.
  • 이해하기 쉬운 용어를 사용하고 들여쓰기 등을 활용한다.

단순성

  • 한 번에 한 가지 기능만 처리한다.
  • 클래스/메소드/함수는 최소 단위로 분리한다.

의존성 배제

  • 다른 모듈에 미치는 영향 최소화하여 코드 변경 시 다른 부분에 영향 없도록 작성한다.

중복성 최소화

  • 중복된 코드는 삭제하여 공통된 코드로 사용한다.

추상화

  • 상위 클래스/메소드/함수에서 간략하게 애플리케이션 특성을 나타내고, 상세 내용은 하위 클래스/메소드/함수에서 구현한다.

 

외계인 코드

아주 오래되었거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 프로그램을 의미한다.

 

정적분석

  • SW를 분석하는 방법의 하나로 SW를 실행하지 않고 코드 레벨에서 분석하는 방법이다.
  • 종류 : pmd, cppcheck, checkstyle, FindBugs

 

동적 분석 도구

  • 애플리케이션을 실행하여 코드에 존재하는 메모리 누수 현황을 발견하고, 발생한 스레드의 결함 등을 분석하기 위한 도구이다.
  • 종류 : Avalanche, Valgrind, ValMeter

 

EAI(Enterprise Application Integration)

  • 기업 내부에서 운영되는 각종 플랫폼 및 애플리케이션 간의 정보 전달, 연계, 통합을 간으하게 해주는 솔루션이다.
  • 각 비즈니스 간 통합 및 연계성을 증대시켜 효율성을 높일 수 있다.
  • 각 시스템 간의 확정성을 높여 줄 수 있다.

 

EAI 유형

Point-to-Point

  • 애플리케이션을 중간 미들웨어 없이 Point to Point로 연결하는 기본적인 통합 방식이다.
  • 별도로 솔루션(미들웨어)를 구매하지 않고 구축할 수 있다.
  • 상대적으로 저렴하게 구축 가능 하지만 변경 및 재사용이 어렵다.

 

Hub & Spoke

  • 단일 접점인 허브 시스템을 통해 데이터를 전송하는 중앙 집중형 방식으로 확장 및 유지보수가 수월하다.
  • 중앙 허브에 장애가 발생하면 시스템 전체에 영향을 준다.

 

Message Bus

  • 애플리케이션 사이에 미들웨어를 배치하여 처리하는 방식으로 확장성이 뛰어나다
  • 대용량 데이터 처리에 유리하다.

 

Hybrid

  • Hub & Spoke와 Message Bus의 혼합방식이다.
  • 그룹 내 : Hub & Spoke
  • 그룹 간 : Message Bus
  • 데이터 병목현상을 최소화할 수 있다.
  • 필요한 경우 한 가지 방식으로 EAI구현이 가능하다.

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기