위험도 |
분류 |
설명 |
점수 |
심각 |
서버 소스 |
객체지향
인터페이스 설계 실패로 인한 각개전투 묻지마 코드. |
|
1. 도메인 모델을 map으로 사용. |
|
2. 계층, 모듈화 무시. 인터페이스 설계 없음. |
|
3. 비슷한 일을 하는 class가 중복으로 존재. class가 1000라인을
넘어감. |
|
4. 비즈니스로직의 일부 혹은 전체가 SQL or PL/SQL에 탑재 |
|
멀티 스래드 |
멀티
스래드 객체의 자원 공유(static,singleton) 오류 위험 |
|
일관된 예외 처리 |
1.
공통 예외처리를 위한 서버(java) & 클라이언트(javascript or actionscript) 로직이 없음. |
|
2. 예외 발생에도 불구하고 '성공적으로 실행되었습니다'라는 메세지가 발생. |
|
DB 무결성 |
1.
FK가 잡혀있지 않음. 어플리케이션에서 무결성 관리가 되지 않음. 채번(PK)에 오류. |
|
2. 트랜잭션 관리가 되지 않음. |
|
형상관리 |
형상관리의
부재 : 형상관리 위한 CVS or SVN등을 사용하지 않는다. |
|
경고 |
프레임웍
도입 |
자체
프레임워크를 개발해서 도입 (자바One에서 나온 실패한 프로젝트의 대표적인 원인. 유지보수가 힘듬) |
|
MVC프레임워크를 사용하지 않음. (즉 MODEL-1 기반의 project.) |
|
Hibernate등의 ORM을 사용하지 않음. |
|
선언적 트랜잭션 또는 예외처리(레이어링 or AOP)가 없거나 도입했는데도 사용하지
않음. |
|
불필요한 코드 |
소스코드에
불필요한 try-catch문이나 트랜잭션 관련 API가 포함됨, |
|
단위테스트 |
자동화된
테스트 케이스(JUnit등)가 부족하거나 없음. |
|
성능 |
대용량
요청 등에 관해 성능을 무시한 && 병목구간을 발생시키는 코딩. SQL튜닝이 안되어있음. |
|
보안 |
기본적인
보안관리가 안되어 있음 (SQL공격, 인증우회 등등). |
|
클라이언트 소스 |
어설픈
Ajax 사용으로 인한 동기화 / 비동기화 처리 실패 인한 산발적 오류 발생 |
|
비지니스로직의 일부가 클라이언트 스크립트로 코딩되어있음. |
|
DB설계미스 |
DB설계
미스 & 정규화 실패로 인한 잦은 join과 대량의 중복 & null컬럼 발생 |
|
개발롼경 |
Ant나
Maven을 사용하지 않음. |
|
DB중심의 프로그래밍 |
업무
로직이 SQL 또는 SP에 들어가 있음. DB특유의 프로그램(pakage/function)이 자주 사용됨. |
|
권고 |
서버 코드 |
일반적인
표준/오픈소스 패키지를 사용하지 않고 자체 개발/코딩 |
|
ex) Concurrent패키지의 Executor를 사용하지 않고 new
Thread(runnable).start() 등의 명시적인 스래드 생성 코드를 사용. |
|
ex) Apache의 Util을 사용하지 않고 자체 개발한 StringUtil을 사용 |
|
UI중심의 프로그래밍 |
클라이언트
스크립트의 비중이 과도하게 많음. 업무로직이 스크립트에 탑재되어 있음. |
|
개발 표준 |
네이밍
룰이 없거나 혹은 지켜지지 않음. |
|
Logging정책이 없거나 지켜지지 않음. (소스코드에
System.out.print... 등의 코드가 출현.) |
|
DB중심의 프로그래밍 |
PL/SQL등의
SP가 사용된적이 있음. |
|
성능 |
인덱싱
miss 및 SQL튜닝 miss로 인한 속도 저하. 어설픈/잘못된 페이징 처리. |
|
주석 |
난잡한
주석 or 필요한곳에 없는 주석 or 틀린주석(갱신이 안된 주석) |
|
보안 |
잘못된
공인인증서 사용. (클라이언트에만 인증서 로직이 들어감.) |
|
의존관계 정의 실패 |
lib에
많은 jar가 있지만 어디에 사용되는지 확인 불가. |
|
jar가 각기 다른 버전으로 중복해서 존재. |
|
서버 코드 |
일반적인
표준/오픈소스 패키지를 사용하지 않고 자체 개발/코딩 |
|
ex) Concurrent패키지의 Executor를 사용하지 않고 new
Thread(runnable).start() 등의 명시적인 스래드 생성 코드를 사용. |
|
클라이언트 소스 |
IE
위주의 코딩 (비표준, 마이플랫폼 등의 국산 X-internet, table레이아웃 등) |
|
JavaScript와 css가 html상에 섞여있음 |
|
개발환경 |
지속적인
통함툴 또는 이슈 트래커를 사용하지 않음. |
|
FTP등을 사용하여 문서/자료를 공유함( 즉 온라인 위키 문서 공유를 하지 않음.) |
|