득이공간

[소프트웨어공학] 5장. 구현 본문

CS/소프트웨어공학

[소프트웨어공학] 5장. 구현

쟁득 2024. 2. 24. 15:11
해당 게시물은 김정욱 교수님의 '소프트웨어공학' 강의를 수강하며
학습한 내용을 개인적으로 정리한 글입니다.

📌 목차 - 5장. 구현

5-1. 구현
5-2. 코딩 오류
5-3. 표준 코딩 규칙
5-4. 표준 코딩 규칙 종류


📌 5-1. 구현

* 구현
- 설계의 결과(설계서)를 사용자가 이용할 수 있는 모습(원시 코드)으로 변환하는 과정
- 결과물: 컴퓨터 프로그램
- 구현 후 테스트 시 오류가 발생하면?
- 일반적으로 분석과 설계의 잘못에 의해 문제가 생긴다.
- 설계과정이 완벽하다면 구현은 상대적으로 단순하고 기계적인 과정이다.
- 코딩을 하는 개발자들은 정해진 규칙에 따라 코딩(표준 코딩 규칙)해야 한다.

* 로드맵
- 코딩 표준
- 메서드 구현: 메서드 내부의 내용을 구현
- 클래스 인스펙션: 구현 결과를 눈으로 확인
- 단위테스트: 클래스 안에 있는 메서드를 시험
- 릴리즈: 단위 모듈의 통합가능성을 확인(테스트 때) 후 릴리즈


📌 5-2. 코딩 오류

* 코딩 오류
(1) 메모리 누수
- 동적할당 된 메모리가 해제되지 않는 경우
- 메모리가 고갈된다.
(2) 중복된 프리(Free) 선언
- 이미 해제된 자원을 다시 Free 선언하는 경우
- 프로그램이 중단된다.
(3) NULL의 사용
- NULL을 가리키는 포인터로 메모리에 접근하는 경우
- 초기화 되지 않은 메모리에 접근하는 경우
(4) 배열 인덱스 오류
- 배열의 인덱스가 한도를 벗어난 경우
- 배열 인덱스가 음수 값을 갖는 경우
(5) 수식 예외 오류
- 0으로 나누는 경우
(6) 하나 차이에 의한 오류
- 0으로 시작해야 할 것에 1로 시작한 경우
- <=N으로 써야 할 곳에 <N을 사용한 경우
(7) 스트링 처리 오류
- 스트링 처리함수(strcpy, sprint 등)을 사용한 경우
- 매개변수가 NULL인 경우
- 스트링이 NULL로 끝나지 않는 경우
(8) 동기화 오류
- 공통 자원을 접근하려는 다수의 스레드가 있는 병렬 프로그램
- 데드락: 다수의 스레드가 서로 자원을 점유하고 릴리즈하지 않는 상태
- 레이스 컨디션: 두 개의 스레드가 같은 자원을 접근하려고 해서 수행 결과가 스레드들의 실행 순서에 따라 다르게 되는 경우


📌 5-3. 표준 코딩 규칙

* 표준 코딩 규칙
- 대표적인 기준은 간결하고 읽기 쉬운 것
- 간결하다: 복잡하지 않고 명확해서 이해하기 쉽다.
- 읽기쉽다: 프로그램을 대충 훑어보거나 이해하기 쉽다.
- 설계에서 모듈화의 목표(낮은 결합도, 높은 응집도)를 달성하면 모듈은 간단해진다.
- 코딩 스타일
- 코딩 규칙에 대한 지침이나 기준이 존재한다. => 효율적인 코딩이 가능해진다.
- 장점
- 가독성이 높아진다.
- 간결하고 명확한 코딩이 가능하다.
- 개발 시간을 단축시킨다.


📌 5-4. 표준 코딩 규칙 종류

* 명칭에 관한 규칙
(1) 명칭은 31자 이내 (오타 발생을 낮추고, 가독성을 높인다.)
(2) 명칭의 규칙을 따른다.
- 매크로: "_" 및 대문자 사용
- 상수: "_" 및 대문자 사용
- 변수: 소문자로 시작
- 함수: 첫 단어는 소문자(동사)로 시작, 연속되는 단어의 첫 글자는 대문자
(3) 포인터 변수명은 앞에 p를 붙인다.


* 소스 형식에 관한 규칙
(1) 소스 파일 하나는 200줄 이내로 작성한다.
(2) 한 줄의 길이는 너무 길지 않게, 함수의 길이도 너무 길지 않게 작성한다.
(3) 여는 중괄호는 문장의 끝에, 닫는 중괄호는 문장의 시작에 둔다.
(4) 두줄로 작성할 때 명칭이 잘리지 않도록 줄바꿈한다.
(5) 수준이 동일한 문장은 시작 위치를 맞춘다.


* 주석에 관한 규칙
(1) 코드의 첫 주석에는 다음 내용을 담는다.
- 최초 작성자, 최초 작성일, 최초 변경일, 목적, 개정 이력(변경자, 변경일자, 변경내용), 저작권
(2) 메서드 정의 앞에 다음 내용을 적는다.
- 목적: 함수의 용도
- 매개변수
- 반환 값
- 변경 이력: 함수를 변경한 변경자, 변경일자, 변경내용
- 변수 선언/자료형에 관한 규칙
(1) 용도가 같은 변수는 한 줄에 작성
(2) 필요한 변수만 선언
(3) 지역 변수는 선언 시 초기화
(4) 배열 선언 시 요소 수를 명시하거나 초기화
(5) 배열을 초기화할 때 중괄호를 적절히 사용


* 수식에 관한 규칙
(1) 이항 연산자 전후에 공백을 넣는 것이 좋다.
(2) 증감 연산자는 다른 연산자와 섞어 사용하지 않는 것이 좋다.
(3) 연산자가 3개 이상인 경우: 우선순위를 알 수 있도록 괄호로 묶어준다.


* 문장에 관한 규칙
(1) switch 문에서 case 문이 다 끝나면 default 문을 넣어주어야 한다.
(2) goto 문은 사용하지 않는다.
(3) for 문을 제어하는 수식에는 실수를 사용하지 않는다.
(4) break 문은 가능하면 한 번만 사용한다.
(5) if~else 문의 끝은 else 문으로 종료한다.