728x90
반응형
코드(Code)
코드는 컴퓨터를 이용하여 자료를 처리하는 과정에서 분류, 조합 및 집계를 용이하게 하고, 특정 자료의 추출을 쉽게 하기 위해서 사용하는 기호
- 코드는 정보를 신속, 정확, 명료하게 전달 가능
- 일반적인 코드의 예로 주민번호, 학번, 전화번호 등
- 코드의 주요 기능
식별 기능 | 데이터 간의 성격에 따라 구분이 가능함 |
분류 기능 | 특정 기준이나 동일한 유형에 해당하는 데이터를 그룹화 할 수 있음 |
배열 기능 | 의미를 부여하여 나열할 수 있음 |
표준화 기능 | 다양한 데이터를 기준에 맞추어 표현할 수 있음 |
간소화 기능 | 복잡한 데이터를 간소화할 수 있음 |
- 코드의 종류
순차 코드 (Sequence Code) |
- 자료의 발생 순서, 크기 순서 등 일정 기준에 따라서 최초의 자료부터 차례로 일련번호 부여 - 일련 번호 or 일련 코드라고 함 - ex. 1,2,3,4,... |
블록 코드 (Block Code) |
- 코드화 대상 항목 중에서 공통성이 있는 것끼리 블록으로 구분하고, 각 블록 내에서 일련번호를 부여하는 방법 - ex. 1001 ~ 1100 : 총무부, 1101 ~ 1200 : 영업부 |
10진 코드 (Decimal Code) |
- 코드화 대상 항목을 0 ~ 9까지 10진 분할 하고, 다시 그 각각에 대하여 10진 분할하는 방법을 필요한 만큼 반복하는 방법 - 도서식 분류식 코드라고도 함 - ex. 1000 : 공학, 1100 : 소프트웨어 공학, 1110 : 소프트웨어 설계 |
그룹 분류 코드 (Group Classification Code) |
- 코드화 대상 항목을 일정 기준에 따라 대분류 - 중분류, 소분류 등으로 구분하고, 각 그룹 안에서 일련번호를 부여하는 방법 - ex. 1-01-001 : 본사 - 총무부-인사계, 2-01-001 : 지사-총무부-인사계 |
연상 코드 (Mnemonic Code) |
- 코드화 대상 항목의 명칭이나 약호와 관계있는 숫자나 문자 - 기호를 이용하여 코드를 부여하는 방법 - ex. TV-40 : 40인치 TV, L-15-220 : 15W 220V의 램프 |
표의 숫자 코드 (Significant Digit Code) |
- 코드화 대상 항목의 성질, 즉 길이, 넓이 부피, 지름, 높이 등의 물리적 수치를 그대로 코드에 적용시키는 방법 - 유효 숫자 코드라고도 함 - ex. 120-720-1500 : 120 x 720 x 1500인 강판 |
합성 코드 (Combined Code) |
- 필요한 기능을 하나의 코드로 수행하기 어려운 경우 2개 이상의 코드를 조합하여 만드는 방법 - ex. 연상 코드 + 순차 코드 = KE-711 : 대한항공 711기, AC-253 : 에어캐나타 253기 |
코딩(Coding)
분리하여 구현할 수 있는 작은 단위를 프로그래밍하는 작업
설계 명세에 나타낸 대로 요구를 만족할 수 있도록 프로그래밍
과정
오류의 종류
- 메모리 누수
- 중복된 프리 선언
- NULL의 사용
- 별칭의 남용
- 배열 인덱스 오류
- 수식 예외 오류
- 하나 차이에 의한 오류
- 사용자 정의 자료형 오류
- 스트링 처리 오류
- 버퍼 오류
- 동기화 오류
리팩토링(Refactoring)
프로그램 실행 결과의 변경 없이 코드의 구조를 재조정
이미 존재하는 코드의 디자인을 안전하게 향상 시키는 기술
가독성(Readability)을 높이고 유지보수를 편하게 하기 위한 것
소프트웨어를 보다 쉽게 이해할 수 있고 적은 비용으로 수정할 수 있도록 겉으로 보이는 동작의 변화 없이 내부구조를 변경하는 것
목적
- 소프트웨어의 디자인 개선
- 소프트웨어를 이해하기 쉽게 만듦
- 버그를 찾는데 도움을 줌
- 프로그램을 빨리 작성할 수 있게 도와줌
과정
- 단일 리팩토링 - 소규모 변경
- 테스트 - 코드가 전부 잘 작동되는지 확인
- 테스트
- 통과 - 다음 리팩토링 단계
- 실패 - 문제를 해결하고 단일 리팩토링 했던 것을 undo 하여 시스템 작동하도록 유지
코드 스멜(Code Smell)
- 프로그램에 대한 작업을 어렵게 만드는 것
- 읽기 어려운 프로그램
- 중복된 로직을 가진 프로그램
- 실행 중인 코드를 변경해야 하는 특별한 동작을 요구하는 프로그램
- 복잡한 조건문이 포함된 프로그램
- 소프트웨어를 보다 쉽게 이해할 수 있고 적은 비용으로 수정할 수 있도록 겉으로 보이는 동작의 변화 없이 내부구조를 변경
- 사례
코드 스멜 | 설명 | 리팩토링 |
중복된 코드 (Duplicated Code) |
기능이나 데이터 코드가 중복됨 | 중복을 제거 |
긴 메소드 (Long Method) |
메소드의 내부가 너무 김 | 메소드를 적정 수준의 크기로 나눔 |
큰 클래스 (Large Class) |
한 클래스에 너무 많은 속성과 메소드가 존재함 | 클래스의 몸집을 줄임 |
긴 파라미터 리스트 (Long Parameter List) |
메소드의 파라미터 개수가 너무 많음 | 파라미터의 개수를 줄임 |
두 가지 이상의 이유로 수정되는 클래스 (Divergent Change) |
한 클래스의 메소드가 2가지 이상의 이유로 수정되면, 그 클래스는 한 가지 종류의 책임만을 수행하는 것이 아님 | 한 가지 이유만으로 수정되도록 변경 |
여러 클래스를 동시에 수정 (Shotgun Surgery) |
특정 클래스를 수정하면 그 때 마다 관련된 여러 클래스들 내에서 자잘한 변경을 해야 함 | 여러 클래스에 흩어진 유사한 기능을 한곳에 모이게 함 |
다른 클래스를 지나치게 애용 (Feature Envy) |
빈번히 다른 클래스로부터 데이터를 얻어 와서 기능을 수행함 | 메소드를 그들이 애용하는 데이터가 있는 클래스로 옮김 |
유사 데이터들의 그룹 중복 (Data Clumps) |
3개 이상의 데이터 항목이 여러 곳에 중복되어 나타남 | 해당 데이터들은 독립된 클래스로 정의함 |
기본 데이터 타입 선호 (Primitive Obsession) |
객체 형태 그룹을 만들지 않고, 기본 데이터 타입만 사용함 | 같은 작업을 수행하는 기본 데이터의 그룹을 별도의 클래스로 만듬 |
Switch, If문장 (Switch Statements) |
switch 문장이 지나치게 많은 case를 포함 | 다형성으로 바꿈 (같은 메소드를 가진 여러 개의 클래스 구현) |
병렬 상속 계층도 (Parallel Inheritance Hierarchies) |
[Shotgun Surgery]의 특별한 형태로서, 비슷한 클래스 계층도가 지나치게 많이 생겨 중복을 유발함 | 호출하는 쪽의 계층도는 그대로 유지하고 호출당하는 쪽을 변경 |
코드 품질 향상 기법
코드 인스펙션(Code Inspection)
- 프로그램을 읽어보고 눈으로 확인하는 방법
정적 분석(Static Analysis)
- 수행되지 않는 데드 코드(Dead Code)가 없는지, 선언이 되지 않고 사용한 변수가 없는지 등을 검사
페어 프로그래밍(Pair Programming)
- 애자일 방법에서 프로그래밍과 테스팅을 담당하는 두 사람이 머신을 공유하며 코딩
728x90
반응형
'자격증 준비 > 정보처리기사필기 - 1과목(소프트웨어 설계)' 카테고리의 다른 글
[정보처리기사 필기] 1과목 - UI (0) | 2023.01.02 |
---|---|
[정보처리기사 필기] 1과목 정리 - 디자인 패턴 (0) | 2022.12.31 |
[정보처리기사 필기] 1과목 정리 - 아키텍처 스타일 (0) | 2022.12.31 |
[정보처리기사 필기] 1과목 정리 - 설계 (0) | 2022.12.30 |
[정보처리기사 필기] 1과목 정리 - UML (0) | 2022.12.27 |