프로그램의 고급 아키텍처를 문서화하기위한 표준이 있습니까?


10

저는 아마추어 개발자이며 지금까지의 모든 프로그램은 코드 내에 문서화하기에 충분히 간단했습니다. 코드를 읽는 동안 내가하고있는 일과 그와 같은 행동이 분명했습니다 (표준 테스트는 6 개월 후에 코드를보고 처음 읽을 때 모든 것을 이해하는 것이 었으며 메모리가 짧습니다).

나는 지금 사이의 다양한 상호 작용을 기억하기 위해 내 능력을 능가하는 프로그램에 직면하고있다.

  • 코드 자체
  • 데이터베이스의 인덱스
  • 다양한 모듈 간의 상호 작용 ( "작업자"핵심 코드 및 "라이브러리"모듈)

현재 문서는 화이트 보드이며 코드, 데이터베이스 인덱스, 실행중인 작업, 상태 변경 등을 가리키는 모든 종류의 상자와 화살표가 있습니다. 참고로 엉망진창 :

여기에 이미지 설명을 입력하십시오

내 질문은 더 복잡한 제품을 문서화하기위한 표준 또는 모범 사례 세트 (특정 이름으로 그룹화 된 사례 세트라는 의미로 명명 됨)가 있는지 여부입니다.

내가 찾아야 할 키워드는 무엇입니까 ( "문서 소프트웨어 아키텍처 표준"에 대한 일반적인 시도와 유사한 변형으로 인해 워크 플로 용 소프트웨어 또는 아키텍처 CAD 시스템 구축이 일반적이었습니다).

또한 높은 수준의 설명을위한 일반적인 모범 사례가 없을 수 있으며 모든 사람이 고유 한 철학을 구축 할 것으로 기대합니다.


um UML 및 보통 오래된 텍스트
jk.

독일어를 읽을 수 있다면 arc42.de/template/index.html을 보십시오 . 소프트웨어 아키텍처를 문서화하기위한 몇 가지 지침을 보여줍니다.
Bernhard Hiller

8
"아무것도 귀찮게하지 않는"것은 아마도 표준에 가장 가까운 것입니다.
whatsisname

답변:


13

모든 사람이 준수하는 표준은 없습니다. 소프트웨어 프로젝트는 크게 다를 수 있습니다 (helloworld.py와 우주 왕복선의 코드 비교).

가장 일반적인 방법 중 하나는 4 + 1 모델 을 사용하는 것 입니다. 이 방법론은 모든 것을 단일 스타일의 문서에 넣는 대신 디자인을 다섯 가지 구성 요소로 나눕니다.

  • 개발 보기
  • 논리 보기
  • 물리적 보기
  • 프로세스 보기
  • 시나리오

다양한 관점은 네 가지 관점에서 제품을 설명합니다. 시나리오는 사용 사례가 존재하는 곳이며 다른 뷰의 상호 작용을 설명합니다.

참고 : 이것은 개념적 모델이며 특정 도구와 관련이 없습니다.

자세한 내용은 여기를 참조하십시오.

  1. 4 + 1 아키텍처 뷰 모델 (wikipedia)
  2. 아키텍처 청사진 —“4 + 1”보기 소프트웨어 아키텍처 모델 (IEEE 백서-pdf)

이것은 매우 좋은 접근법입니다. 감사합니다. 뒤로 물러서서, 그것은 꽤 명백하다고 생각할 수 있지만, 하나의 그래프에서 내가 가지고있는 다양한 4 + 1 조각을 분리하는 데 많은 도움이됩니다.
WoJ

4

IMHO UML은 실제 소프트웨어 아키텍처를 문서화하는 데 잘 작동하는 도구 가 아닙니다 . 클래스 다이어그램은 유용하지만이 목적으로는 너무 낮은 추상화 수준을 사용합니다. 유스 케이스 다이어그램은 일반적으로 너무 "높은 수준"이므로 특정 측면이 누락되었습니다. 다른 UML 다이어그램 유형에는 비슷한 문제가 있습니다 (공평하게 말하면 패키지 다이어그램, 배포 다이어그램, 구성 요소 다이어그램은 특정 아키텍처 측면을 문서화 할 수는 있지만 개인적으로는 결코 유용하지 않습니다).

고급 아키텍처를 문서화하는 실용적이고 실용적인 방법을 찾고 있다면 데이터 흐름 다이어그램에 익숙해지는 것이 좋습니다 . 이들은 이해하기 쉽고 다양한 레벨의 추상화로 확장 할 수있는 이점이 있습니다. 다른 종류의 시스템을 문서화하는 데 가장 유용한 것으로 나타났습니다. 너무 안타깝게도 UML에 들어 가지 않았지만 그럼에도 불구 하고 다이어그램을 만들기위한 많은 도구 (Dia 또는 DrawIO 와 같은 무료 도구)를 찾을 수 있습니다 .

참고 로 고급 문서에 "데이터베이스의 인덱스"가 필요한 이유는 무엇입니까? 나는 그것들이 (관계형) 데이터 모델의 구현 세부 사항이라고 생각하며, 추가하거나하지 않으면 내 경험에 더 많은 성능 및 최적화 문제가됩니다.


패키지 다이어그램? 배포 다이어그램? 구성 요소 다이어그램?
Nick Keighley

3
솔직히 화살표가있는 많은 상자는 많은 디자인 기능을 전달하는 데 놀라운 일을 할 수 있습니다. 구성 요소 다이어그램이 해당 범주에 속한다고 생각하지만 고객은 기본 비트를 나타내는 상자를 사용하여 데이터 흐름을 이해합니다. Doc Brown에 동의합니다. UML의 형식은 의도 된 목적으로 마크를 놓칩니다.
Berin Loritsch

@ NickKeighley : 내 편집을 참조하십시오.
Doc Brown

@BerinLoritsch : IMHO "화살표가있는 여러 상자"는 Nick Keighley가 언급 한 다이어그램 유형을 나타냅니다. 그러나 데이터 흐름도는 데이터 또는 데이터 그룹 / 클러스터와 이러한 데이터를 전송하거나 변환하는 프로세스 또는 구성 요소를 명확하게 구분합니다. UML 다이어그램으로 쉽게 표현할 수있는 것은 아닙니다.
Doc Brown

1
때로는 데이터 흐름 다이어그램, 특히 상점을 허용하는 다이어그램에 의존한다는 것을 인정해야합니다. 실제로 우리 시스템을 설명하는 최상위 다이어그램은 본질적으로 DFD입니다. 여전히 클래스 다이어그램과 패키지가 어느 정도 유용하다는 것을 알았습니다. UML의 "공식적인"부분에 대해서는 크게 신경 쓰지 않습니다.
Nick Keighley

0

UML (Unified Modeling Language)은 소프트웨어 엔지니어링 분야의 범용, 개발, 모델링 언어로, 시스템 설계를 시각화하는 표준 방법을 제공하기위한 것입니다.


공식 사양은 omg.org/spec/UML/2.5 에서 찾을 수 있지만 웹에는 훨씬 더 친숙한 튜토리얼이 있습니다.
Simon B

2
이것은 질문의 일부일 뿐이며, UML은 모델링에 가장 적합한 도구이지만, 그 자체만으로는 완전한 문서가 아닙니다
Walfrat

3
누구든지 UML을 자주 사용합니까?
Panzercrisis

낙서. 리버스 엔지니어링.
Nick Keighley

1
@ 월프. 그렇습니까? 정말? 의심이 있습니다.
Doc Brown

-3

나는 우리가 더 잘했다고 생각합니다. UML은 아기를 목욕물로 버리는 것처럼 보였습니다. 통합 모델링 언어를 제공함으로써 아키텍처와 구현 간의 구별을 폐지했습니다. 또는 이것이 의도하지 않은 경우 효과가있는 것으로 보입니다.

나는 괴물 UML 모델을 보았고 솔직히 코드가 할 수없는 일을하지 않고 더 잘합니다.


3
SuperGirl의 답변에 대한 의견으로 더 나은 질문에 대답하지 않습니다.
Newtopian

1
문제를 해결합니다. 나는 그 질문에 대한 답이 예전보다 "아니오"라고 주장하고있다.
Nick Keighley
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.