본문 바로가기
- 배움이 있는 삶/- 소프트웨어 공학

2022년 기출문제-소공(ing)

by story of interesting 2024. 11. 8.
반응형

2022년 소공 기출문제를 정리 합니다


Agenda

1. Refactoring 기법 
2. Java code error (30번 문제)
3. TC coverage 계산(33번 문제)
4. 아키텍처 스타일 (32번 문제)
5. 아티텍처 평가 - CBAM, ATAM (36번 문제)
6. Spring - 모듈간 상호의존 관계 (39번 문제)
7. Chidamber, Kemerer의 객체지향 척도 - LCOM, WMC, RFC (40번 문제)
8. Design pattern - command. Adapter pattern (43번 문제)
9. Sequence  와. Class. 과 연계 설명 (45번 문제)
10. Sequence 에서 순환복잡도 cbo. 결합도 (50번 문제)

 


1. Refactoring 기법 

- Encapsulate 기법 : 캡슐화 기법

 

- Refactoring : Replace error code with exception

<변경 전>

int withdraw (int amount) {
    if (amount > _balence)
        return -1;
    else {
        _balence -= amount;
        return 0;
    }
}

<변경 후>
void withdraw(int amount) throws B_exception {
    if (amount > _balence) throw new B_exception();
    _blanece -= amount;
}

 

 


2. Java code error (30번 문제)

아래 코드의 실행 결과

import java.util.*;

public class Search {
    public static int search(List<Integer>list, int k) {
        int left = 0, right = list.size() -1, result = -1;
        
        while (left <= right) {
            int mid = left + ((right - left) / 2);
            System.out.println("mid=" + mid+", left=" + left+",right=" + right);
            //2) list로 1,2,3,4받고, k=3을 받으면, right=3이되고, int mid는 1.5인데, int로 1임
            //6) right=3, left=2 으로 변경, mid=2로 변경
            
            if (list.get(mid) > k) {  // 3) (mid=1 > 3) false 임으로 -> 4)번으로 이동
                right = mid - 1;
                System.out.println("찾으려는 k 보다 list(mid) 값이 더 큼, right값 변경, right ="+right);
                
            } else if(list.get(mid) == k) { 
                result = mid;
                right = mid -1;
                System.out.println("k 값을 찾았음, right값 변경, right="+right);
                
            }else {  
                left = mid +1;  // 4) mid=1 임으로, left=2로 변경됨
                System.out.println("찾으려는 k 보다 list(mid) 값이 작음, left를 mid+1로 변경, left ="+ left);
            } // 5) 다시 while으로 진행
        }
        return result;  
    }
    public static void main(String[] args) {
        Integer[] intArr = {1,2,3,4};
        List<Integer>list = Arrays.asList(intArr);
        System.out.println(search(list,3)); // 1) search함수를 호출함, value= list, k는 3을 할당함
    }
    
}

실행결과

1,2,3,4
3

mid=1, left=0,right=3
찾으려는 k 보다 list(mid) 값이 작음, left를 mid+1로 변경, left =2
mid=2, left=2,right=3
k 값을 찾았음, right값 변경, right=1
2

 


3. TC coverage 계산(33번 문제)

white box test coverage 계산하기

위 설명 자료) - 아래 영상 여러번 스터디 필요

https://www.youtube.com/watch?v=K59d8XduE28


4. 아키텍처 스타일 (32번 문제)

 



5. 아티텍처 평가 - CBAM, ATAM (36번 문제)

- ATAM : 비 기능 요구사항에 대한 품질속성간 Trade off를 고려한 평가, 즉 품질속성간에 상출관계, 상호작용 등을 고려하여 평가

- CBAM : COST를 고려한 평가 방법

https://www.youtube.com/watch?v=-tGKFQwSWJU

 



6. Spring - 모듈간 상호의존 관계 (39번 문제)

 



7. Chidamber, Kemerer의 객체지향 척도 - LCOM, WMC, RFC (40번 문제)

 

 


8. Design pattern - command. Adapter pattern (43번 문제)

 



9. Sequence  와. Class. 과 연계 설명 (45번 문제)

 



10. Sequence Diagram에서 순환복잡도 cbo. 결합도 (50번 문제)

 

 

반응형