728x90
반응형

Software Engineering/Architecture 10

SW 아키텍처 모듈화: 객체지향 설계 품질 향상 - CBO(객체 간 결합도) 메트릭 완벽 가이드

소프트웨어 아키텍처 모듈화 관련글 보기SW 아키텍처 모듈화: 왜 필요하고, 언제 고려해야 할까?SW 아키텍처 모듈화: 어떻게 할 수 있을까? 고려사항은 무엇일까?SW 아키텍처 모듈화: 아키텍처 응집도 측정 기법 (Lack of Cohesion in Methods, LCOM)SW 아키텍처 모듈화: 아키텍처 결합도 측정 기법 (Afferent and Efferent Coupling)"Coupling Between Objects (CBO)"는 객체 지향 소프트웨어 설계에서 모듈 간의 의존성을 측정하는 중요한 메트릭입니다. CBO는 클래스가 다른 클래스들과 얼마나 많은 의존성을 가지고 있는지를 정량적으로 평가합니다. 높은 CBO 값은 클래스 간의 결합도가 높다는 것을 의미하며, 이는 시스템의 유지보수성을 저하시..

Software Architect Architecting Architecture: 소프트웨어 아키텍처와 설계의 역할

아키텍처 (Architecture)?혹시 아키텍처를 한글로 번역하는 고민을 해 보셨나요? 아쉽지만 아키텍처는 한글이 따로 없습니다.경우에 따라 어떤 사람은 아키텍처를 "구조" 라는 단어로 떠올릴 수 있는데, 구조는 Structure 라는 따로 용어가 있다는건 다 아시죠?  소프트웨어 개발에서 소프트웨어 아키텍처(Software Architecture)는 종종 논란의 중심에 서 있습니다. 일부 개발자는 정교하고 아름다운 시스템 아키텍처를 설계하고도, 소프트웨어 아키텍처 자체에 대해 거부감을 표하기도 합니다. 이들의 거부감은 때로는 관료적인 설계 과정, 비현실적인 아키텍트의 태도, 또는 실질적인 소프트웨어가 아닌 다이어그램을 만들며 시간을 낭비한 경험에서 비롯됩니다. 하지만 이러한 문제들은 소프트웨어 아키텍..

High Level Architecture 오해 : 추상적이고 실제 개발과 동떨어져 있다.

고수준 아키텍처(High-Level Architecture)에 관해 많은 사람들이 이런 이야기를 합니다. "고수준 아키텍처는 너무 추상적이고 실제 개발과 너무 동떨어져 있다"이번 포스팅에서는 이 이야기가 과연 진실인지, 오해인지에 대해 알아보고자 합니다.   고수준 소프트웨어 아키텍처(High-Level Architecture)는 시스템의 전체적인 구조와 주요 구성 요소를 설계하여 큰 그림을 제공하는 역할을 합니다. 그러나 많은 개발자와 이해관계자들은 이 아키텍처가 “추상적이고 실제 개발과 동떨어져 있다”라고 느끼는 경우가 많습니다. 이러한 인식은 주로 다음과 같은 이유로 발생합니다. 1. High Level Architecture - 추상적이라는 이유로 실용성을 의심받음고수준 아키텍처는 일반적으로 시스..

SW 아키텍처 모듈화: 아키텍처 결합도 측정 기법 (Afferent and Efferent Coupling)

"Afferent Coupling (Ca)"와 "Efferent Coupling (Ce)"는 소프트웨어 설계에서 결합도를 측정하는 중요한 메트릭입니다. 이들은 각각 모듈이 외부로부터 얼마나 많은 의존성을 받는지, 그리고 외부 모듈에 얼마나 의존하는지를 정량적으로 평가합니다. 이러한 메트릭은 Robert C. Martin의 저서 “Agile Software Development: Principles, Patterns, and Practices”에서 널리 알려졌으며, 소프트웨어 아키텍처 설계의 품질을 평가하는 데 중요한 역할을 합니다.  SW 아키텍처 모듈화: 아키텍처 결합도 측정 기법 (Coupling Between Objects, CBO)"Coupling Between Objects (CBO)"는 객체 ..

SW 아키텍처 모듈화: 아키텍처 응집도 측정 기법 (Lack of Cohesion in Methods, LCOM)

"Lack of Cohesion in Methods (LCOM)"은 객체 지향 소프트웨어 설계의 품질을 평가하는 메트릭 중 하나로, 클래스 내 메서드들이 얼마나 응집력이 없는지를 측정합니다. 응집도는 클래스의 내부 요소들이 얼마나 밀접하게 관련되어 있는지를 나타내며, LCOM은 그 반대 개념으로서 응집도가 낮을수록 LCOM 값이 높아집니다.  SW 아키텍처 모듈화: 왜 필요하고, 언제 고려해야 할까?소프트웨어 개발을 하다 보면 ‘아키텍처 모듈화’라는 단어를 자주 듣게 됩니다. 하지만 이게 왜 중요한지, 그리고 언제 모듈화를 고민해야 하는지는 막상 설명하기가 어렵습니다. 그래서 오habana4.tistory.com  SW 아키텍처 모듈화: 어떻게 할 수 있을까? 고려사항은 무엇일까?소프트웨어 개발에서 모듈..

ChatGPT가 말하는 소프트웨어 아키텍처가 필요한 이유

소프트웨어 아키텍처를 이해하고 학습하는 것은 여러 가지 중요한 이유가 있습니다. 그래서 오늘은 ChatGPT에게 소프트웨어 아키텍처를 알아야 하는 이유를 물어 보았습니다. 다음은 ChatGPT가 말하는 소프트웨어 아키텍처가 필요한 이유입니다.목차 1. 시스템의 전반적인 구조 이해소프트웨어 아키텍처는 시스템의 구조적 청사진이라고 할 수 있습니다. 아키텍처를 이해함으로써 개발자는 시스템이 어떻게 구성되어 있으며, 각 구성 요소가 어떤 역할을 하는지, 그리고 이들이 어떻게 상호작용하는지를 명확하게 파악할 수 있습니다. 이는 복잡한 시스템의 전체적인 그림을 이해하는 데 필수적입니다. 2. 유지보수성과 확장성 확보좋은 아키텍처는 시스템이 변경될 때 쉽게 유지보수할 수 있고, 확장할 수 있는 기반을 제공합니다. 아..

SW 아키텍처 모듈화: 어떻게 할 수 있을까? 고려사항은 무엇일까?

소프트웨어 개발에서 모듈화는 시스템의 유지보수성과 확장성을 크게 향상시킬 수 있는 중요한 기법입니다. 하지만 막상 모듈화를 시도할 때는 어떻게 해야 할지 막막할 수 있습니다. 이 글에서는 소프트웨어 아키텍처를 모듈화하는 방법과, 모듈화를 고려할 때 신경 써야 할 주요 특성에 대해 알아보겠습니다.  SW 아키텍처 모듈화: 왜 필요하고, 언제 고려해야 할까?소프트웨어 개발을 하다 보면 ‘아키텍처 모듈화’라는 단어를 자주 듣게 됩니다. 하지만 이게 왜 중요한지, 그리고 언제 모듈화를 고민해야 하는지는 막상 설명하기가 어렵습니다. 그래서 오habana4.tistory.com목차 소프트웨어 아키텍처 모듈화: 어떻게 할 수 있을까?기능별 분리 (Functional Decomposition)모듈화의 첫걸음은 시스템을..

SW 아키텍처 모듈화: 왜 필요하고, 언제 고려해야 할까?

소프트웨어 개발을 하다 보면 ‘아키텍처 모듈화’라는 단어를 자주 듣게 됩니다. 하지만 이게 왜 중요한지, 그리고 언제 모듈화를 고민해야 하는지는 막상 설명하기가 어렵습니다. 그래서 오늘은 아키텍처 모듈화가 왜 필요한지, 어떤 문제들이 모듈화를 고민하게 만드는지에 대해 쉽게 풀어보려고 합니다.소프트웨어 아키텍처 모듈화란?먼저, 소프트웨어 아키텍처 모듈화가 뭔지 간단히 짚고 넘어가 볼까요? 모듈화란 소프트웨어를 작은 단위, 즉 모듈로 쪼개서 관리하는 방법이에요. 이렇게 나눠진 모듈들은 각기 다른 기능을 수행하며, 독립적으로 개발, 테스트, 배포할 수 있어요. 핵심은 이게 코드의 복잡함을 줄여주고, 유지보수와 확장을 훨씬 쉽게 만들어준다는 거죠. 왜 모듈화가 필요할까요?모듈화가 필요한 이유는 여러 가지가 있지..

E/E 아키텍처 설계에서 고려해야 할 사항

급변하는 자동차 산업에서 차량 제어는 날이 갈수록 더 정교해지고, 차량 내외부 시스템과의 연결도 고도화되고 있습니다. 이러한 복잡성의 증가는 차량 전기 및 전자(E/E) 아키텍처 설계에 많은 도전과 과제를 가져오고 있습니다. 이번 글에서는 차량 E/E 아키텍처를 개발할 때 직면하는 주요 도전과 고려 사항을 자세히 다루고, 이러한 문제를 해결하기 위해 사용될 수 있는 기술과 방법을 소개합니다. 차량 복잡성의 증가현대 차량의 복잡성 증가는 잘 알려진 사실입니다. 전기 및 전자 콘텐츠가 빠르게 증가하고 있으며, 연결된 차량 기능이 모든 카테고리와 세그먼트에서 채택되고 있습니다. 이로 인해 더 강력한 스마트 기능이 통합되고 있으며, 이러한 고급 기능은 모두 전기 배선과 전자 부품에 의존합니다. 이러한 증가하는 ..

소프트웨어 진화와 아키텍처 트레이드 오프 (Software Evolution and Architecture Trade-Off)

소프트웨어 아키텍처는 인생처럼 불완전한 정보와 시간 압박 속에서 수많은 상황과 제약에 따른 트레이드 오프 결정을 내리는 과정입니다. 완벽한 소프트웨어 아키텍처를 찾으려는 팀은 실망할 가능성이 높지만, 완벽하지 않더라도 다른 대안이 없다면, 어쩔수 없는 트레이드 오프 결정을 내려야 할 때가 많습니다. 예를 들어, 진화할 수 없고 유지 보수가 어려운 취약하고 비용이 많이 드는 시스템이 그렇습니다. 또한 여러 이해관계자들의 다양한 니즈를 충족시켜야 한다는 점에서도 트레이드 오프 결정이 필요한 경우가 많습니다. 특히, 소프트웨어 아키텍처 결정 시점에 수많은 품질 속성 요구사항이 존재하지만, 모든 품질 속성 요구사항을 만족시킨다는 것은 현실적으로 불가능하기 때문에 역시 트레이드 오프가 필요합니다. 그외에도 트레이..

728x90
반응형