POINT
- 호출 그래프의 구조를 통해 비기능적 요구사항을 알 수 있음
- 구체적으로 유지보수, 테스트, 재사용성에 대한 정보를 얻을 수 있음
그래프로 알 수 있는 코드의 비기능적 요구사항
※ 추상화 된 호출 그래프의 모습
호출 그래프에서 함수 이름을 없애면
→ 구조에 대한 추상적 모습 (계층, 다른 함수와의 연결 상태)을 볼 수 있음
→ 이를 통해 소프트웨어가 하는 비기능적 요구사항을 파악할 수 있음
※ 요구사항의 분류
분류 | 내용 |
기능적 요구사항 | 소프트웨어가 정확히 해야하는 일 (세금 계산 등) |
비기능적 요구사항 | 테스트, 재사용성, 유지보수 등에 대한 요구사항 (소프트웨어 설계를 하는 중요 이유!) |
호출 그래프로 알 수 있는 비기능적 요구사항
•
유지보수성: 요구사항 변경이 필요하다면 → 쉽게 고칠 수 있는 함수는?
•
테스트성: 모두 테스트를 할 수 없다면 → 테스트 시 중요한 함수는?
•
재사용성: 재사용하기 좋은 함수는?
유지보수성: 그래프의 가장 위에 있는 코드가 고치기 쉬움
[그래프 위쪽]: 호출하는 곳이 적음 → 다른 코드에 영향을 주지 않고 쉽게 변경 가능
[그래프 아래쪽]: 호출하는 곳이 많음 → 연결된 상위 함수가 많아 변경 어려움
→ 자주 바뀌는 코드는 가능한 위쪽에 있어야 함
테스트성: 아래에 있고 많이 연결 된 함수 테스트가 더 가치 있음
[그래프 위쪽]: 자주 바뀜 → 테스트의 수명이 짧음 → 효율성이 낮음
[그래프 아래쪽]: 잘 바뀌지 않음 (안정적인 유틸 함수) → 테스트의 수명이 김 → 효율성이 높음
→ 아래 쪽에 있는 함수를 테스트 하는 것이 더 가치 있음
재사용성: 아래에 있는 코드가 재사용하기 좋음
[그래프 위쪽]: 재사용하기 어려움
[그래프 아래쪽]: 재사용하기 쉬움
→ 낮은 수준의 단계로 함수를 빼낼 때 재사용성이 더 높아짐
요약: 그래프가 코드에 대해 알려주는 것
SUMMARY
- 그래프 위쪽에 있고 적게 연결 된 함수가 유지보수 쉬움
- 그래프 아래쪽에 있고 많이 연결 된 함수가 테스트 효율성과 재사용성이 높음