본문 바로가기

자격증 준비/정보처리기사필기 - 1과목(소프트웨어 설계)

[정보처리기사 필기] 1과목 - 코딩(Coding)

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
반응형