반응형
- 코딩 단계의 작업 끝나면 통합 테스트를 위하여 모듈이 릴리스 된다. 이때까지 작업의 로드맵을 그림으로 작성하고 설명하라.
1. 코드 표준을 정한다.
2. 프레임워크 패키지와 응용 패키지를 결정하고, 요구사항과 설계 명세서를 이용해서 메서드를 구현시킨다.
3. 클래스 구현이 끝나면 인스펙션을 한다.
4. 클래스 단위로 단위테스트를 한다.
- 헝가리안 표현법이란 무잇이며 그 사례를 들어 설명하라.
변수의 목적 또는 변수 타입의 힌트를 준다. 그 사례는 다음과 같다. long lAccountNum <- 변수명의 자료형 앞부분을 따서 l을 써준다. 또는 논리 데이터 형식에도 적용을 할 수 있는데, 행을 나타내는 변수 rwPosition이라고 작성할 수 있다.
- 다음 Java 프로그램에 사용될 식별자의 이름을 보고 명명 스타일을 평가하라.
(1) 패키지 이름 -> 모두 소문자이며, 명사로 정한다.
- com.sun.eng : GOOD?
- com.Apple.Quicktime.v2 : 대문자가 들어가면 안된다.
- edu.cmu.cs.bovik.cheese : GOOD?
(2) 클래스 이름
- class Raster :
- class imageSprite : 클래스는 첫 단어를 대문자로 사용한다.
(3) 인터페이스 이름
- interface rasterDelegate : 인터페이스 이름으로는 명사나 대명사를 사용하고, 대문자로 시작해야한다 !
- interface Storing : 명사나 대명사를 이용안함.
(4) 메서드 이름
- run() : Good
- runFast() : Good
- GetBackground() : 메서드 이름은 소문자로 시작, Ground -> 카멜케이스 적용.
(5) 변수 이름
- int i : 무엇을 하는 변수인지 모름. , 변수에 적절한 이름 적용하기
- char c : 무엇을 하는 변수인지 모름. , 변수에 적절한 이름 적용하기
- float myWidth : Good
(6) 상수 이름
- static final int MIN_WIDTH = 4 : Good
- static final int MAX_width = 999 : 상수는 대문자와 (_)의 조합으로 사용
- static final int GetTheCpu = 1 : 마찬가지로 -> GET_THE_CPU 와 같이 사용.
- 원시코드를 이해하기 위하여 주석은 매우 중요한 역할을 한다. 원시코드에서 발견할 수 있는 주석의 종류를 3가지 이상 들고 각 용도와 사용 방법을 설명하라.
메서드 주석 : 빈줄을 넣고 그 다음에 메서드가 하는 일을 설명하는 Javadoc스펙을 선행 조건과 함께 씁니다.
클래스 주석 : 클래스의 용도를 설명하는 주석이 포함되어야 합니다. - 저자, 마지막 수정 날짜 등에 관한 정보도 포함을 합니다.
문장 주석 : 논리 구조 앞에서 의미를 설명하는 주석으로 선행되어야 합니다.
- 빈 칸과 빈줄을 적당히 넣는 것이 원시코드의 이해를 돕는다. 빈칸을 넣어야 할 경우와 빈 줄을 넣어야 할 경우 각각 4가지 이상을 들고 예를들어 설명하라.
- 빈칸을 넣어야 할 경우
1. 클래스의 선언을 할 경우
2. 메서드의 본문
3. 조건문의 if-part
4. 조건문의 then-part
- 빈 줄을 넣어야 할 경우
1. if 문의 영역을 명확히 나눌 필요가 있는 경우 -> dangling else 문제 해결을 위해서.
2. for 문의 영역을 명확히 나눌 필요가 있는 경우
3. while 문의 영역을 명확히 나눌 필요가 있는 경우
4. whitch 문의 영역을 명확히 나눌 필요가 있는 경우
- 리팩토링의 목적이 무엇이며, 그 과정을 설명하라.
코드 스멜을 개선하고, 코드 성능과 구조 즉, 좋은 설계가 되도록 개선시키는 과정이다.
1. 소규모의 변경 - 단일 리팩토링
2. 코드가 전부 잘 작동되는지 테스트
3. 코드가 잘 작동하면 -> 다음 리팩토링 단계로 전진
4. 작동하지 않으면 문제를 해결하고 리팩토링 한 것을 undo하여 시스템이, 잘 작동하도록 유지
- 미들맵이란 코드 스멜은 무엇이며? 어떻게 리팩토링 해야하나?
한 클래스가 가진 메서드가 다른 클래스로 책임을 넘기는 코드 스멜을 말한다. -> 리팩토링 방법은 미들맨 역할을 하는 객체를 제거한다.
- 다음 프로그램을 정적으로 분석하여 보고 어떤 부분에 어떤 오류가 있는지 찾아라
#include<stdlib.h>
#include<stdio.h>
char *f(int size)
{
char *result;
if(size>0)
result = (char)*malloc(size);
if(size==1)
return NULL;
result[0] = 0;
return result;
}
malloc을 이용해 메모리를 할당 한 후 free로 메모리 해체를 안해주었다. 메모리 누수 발생.
조건문 사이 괄호를 사용안해주었다. 로직 상 오류 발생 가능
- 테스트 중심 개발이란 무엇이며 그 과정을 설명하라.
테스트를 위한 코드를 작성한 후 기능을 구현하도록 요구하는 개발이다. 개발과정은 다음과 같다.
1. TDD를 준비 : 개발하려는 프로그램의 뼈대를 만든다.
2. 테스트 코드 작성 : 구현할 기능을 선정하고 동시에 기능을 테스트할 방법을 설계하고 코딩한다.
3. 반복하여 기능을 구현하고 테스트 : 테스트를 통과할 때까지 반복해 테스트를 수행한다.
4. 테스트 커버리지 측정 : 원하는 수준의 커버리지를 작성하지 못했다면 반복 수행
- 짝 프로그래밍이란 무엇이며 어떤 장점과 단점이 있는가?
짝 프로그래밍이란 두 사람이 같은 컴퓨터를 사용하면서 개발을 한다. 한 사람은 개발, 한 사람은 테스트를 담당한다.
장점
1. 파트너가 존재해 스트레스 감소, 아이디어 협의를 통한 소통 향상, 창의적인 사고로 발전 -> 문제해결에 도움이된다.
단점
1. 모든 사람에게 맞지 않는다.
2. 코드 스타일을 맞추는데 시간이 걸릴 수 있다.
반응형
'학교 수업 > 소프트웨어 공학' 카테고리의 다른 글
11장 주관식 답! - 소프트웨어 공학 (0) | 2023.12.11 |
---|---|
10장 주관식 문제 답! - 소프트웨어 공학 (1) | 2023.12.11 |
8장 주관식 답! - 소프트웨어 공학 (1) | 2023.12.11 |
7장 연습문제! - 소프트웨어 공학! (1) | 2023.12.09 |
6장 주관식 문제 풀이! (1) | 2023.12.09 |