소프트웨어 맵
Software map소프트웨어 맵은 2D 또는 3D 지도 지향 정보 시각화를 통해 소프트웨어 시스템과 그 소프트웨어 개발 프로세스의 정적, 동적, 진화적 정보를 나타낸다. 소프트웨어 시각화, 소프트웨어 분석 및 소프트웨어 진단에 있어 기본적인 개념과 도구를 구성한다. 주요 애플리케이션은 코드 품질, 팀 활동 또는 소프트웨어 개발 진행률의 위험 분석과 모니터링을 포함하며, 일반적으로 소프트웨어 엔지니어링 프로세스 및 소프트웨어 유지보수에 걸쳐 모든 관련 아티팩트, 프로세스 및 이해관계자에 대한 소프트웨어 엔지니어링의 효율성을 향상시킨다.
동기부여와 개념
소프트웨어 설계의 맥락에서 소프트웨어 맵이 적용됨: 복잡하고 장기적인 소프트웨어 개발 프로젝트는 일반적으로 시스템 기능 완성 사이의 마찰과 동시에 시스템의 소프트웨어 유지보수를 보장하기 위한 높은 수준의 코드 품질과 소프트웨어 품질을 획득하는 등 다면적인 어려움에 직면하게 된다. 미래의 특히 "복잡한 소프트웨어 시스템을 유지하는 것은 개발자들이 시스템의 구조와 행동을 이해하려고 하는 데 상당한 시간을 소비하기 때문에 비용이 많이 드는 경향이 있다."[2] 소프트웨어 맵의 핵심 아이디어는 소프트웨어 개발 프로젝트 내에서 다양한 이해관계자와 정보 도메인 간의 통신 격차를 해소하고 정보 시각화라는 의미에서 통찰력을 획득하는 효과적인 커뮤니케이션 수단을 제공하여 그러한 도전과 최적화 문제에 대처하는 것이다.
소프트웨어 맵은 가상 3D 시티 모델 은유를 사용하여[3] 잘 정의된 지도 기법을 활용하여 기반적인 복잡하고 추상적인 정보 공간을 표현한다. "소프트웨어는 물리적 형태가 없기 때문에, 2차원 공간에 소프트웨어를 자연스럽게 매핑하는 것은 없다"[4]는 은유가 필요하다. 소프트웨어 맵은 계층 데이터와 그 속성을 공간 표현으로 변환해야 하는 비공간 맵이다.
적용들
소프트웨어 맵은 일반적으로 관리 및 개발 팀과 같은 다양한 이해관계자에게 소프트웨어 개발 프로젝트의 이해가능하고 효과적인 의사소통을 가능하게 한다. 그들은 현재 개발되거나 더 발전되고 있는 애플리케이션과 시스템의 상태를 프로젝트 리더와 경영진에게 한 눈에 전달한다. "이 의사결정의 핵심 측면은 소프트웨어 맵이 이러한 성과 지표를 올바르게 해석하는 데 필요한 구조적 맥락을 제공한다는 것이다."[5] 통신 수단으로서 소프트웨어 맵은 코드 품질과 새로운 기능의 생성의 우선순위가 서로 균형을 이루도록 하고 소프트웨어 개발 프로세스를 개선하기 위해 필요한 조치를 결정하고 실행할 수 있는 개방적이고 투명한 정보 공간의 역할을 한다.
예를 들어, 그들은 현재 개발 활동을 가속화하는 것과 향후 유지 보수 문제의 위험을 줄이는 데 있어 코드 내의 어느 부분에서 품질 향상이 이로운지에 대한 결정을 용이하게 한다.
높은 표현력(예: 정보 밀도)과 즉각적이고 자동화된 생성으로 인해, 지도는 추가로 시스템과 개발 프로세스의 현황을 반영하는 역할을 하며, 경영진과 개발팀 간의 필수적인 정보 격차를 해소하고, 그 상태에 대한 인식을 개선하며, 초기 리로서의 역할을 한다.sk 탐지 장치
내용물
소프트웨어 맵은 소프트웨어 리포지토리 시스템에서 가져온 정보, 소스 코드에서 가져온 정보 또는 소프트웨어 개발 도구와 프로그래밍 도구에 의해 결정되는 객관적인 정보에 기초한다. 특히 소프트웨어 맵은 특정 프로그래밍 언어, 모델링 언어 또는 소프트웨어 개발 프로세스 모델에 구속되지 않는다.
소프트웨어 맵은 소스 코드 파일과 같은 소프트웨어 구현 아티팩트의 계층구조를 기반으로 트리 맵핑(tree mapping), 즉 전체 계층을 나타내는 직사각형 영역으로 영역을 직사각형 하위 영역으로 세분화한다. 비공식적으로 말하면 소프트웨어 맵은 소프트웨어 시스템의 유물이 가상의 직사각형 3D 건물이나 타워로 나타나며, 소프트웨어 구현 계층 구조에서 위치에 따라 배치되는 가상의 3D 도시 모델과 유사하게 보인다.
소프트웨어 맵은 그 정보를 발자국 크기, 높이, 색상 또는 질감 같은 트리 맵 요소의 시각적[6] 변수에 매핑함으로써 소프트웨어 개발, 소프트웨어 품질, 시스템 역학 등에 관한 정보를 표현하고 결합할 수 있다. 템플릿별로 체계적으로 지정, 자동 생성 및 구성할 수 있다.
매핑 소프트웨어 시스템 예제
소프트웨어 맵은 "소프트웨어 개발 프로세스(진화), 소프트웨어 품질, 구조 및 역학에 대한 주제 정보를 결합하고 그 정보를 지도적 방식으로 표시한다."[7] 예를 들면 다음과 같다.
- 가상 건물의 높이는 코드 유닛의 복잡성에 비례할 수 있다(예: 단일 또는 결합된 소프트웨어 메트릭).
- 가상 3D 건물의 지상 면적은 모듈 내 코드 라인 수 또는 (예: 비 코드의 코드 라인 NCLOC)에 비례할 수 있다.
- 색상은 현재 개발 상태, 즉 코드 단위를 변경/편집하는 개발자 수를 나타낼 수 있다.
이러한 모범적인 구성으로 소프트웨어 맵은 소프트웨어 개발 프로세스의 측면과의 관계와 함께 소스 코드의 중요한 포인트를 보여준다. 예를 들어, 다음을 위해 무엇을 변경해야 하는지 한눈에 알 수 있다.
- 신속한 변경 이행.
- 한 곳의 변경이 다른 곳의 기능에 미치는 영향을 신속하게 평가한다.
- 애플리케이션에서 통제되지 않는 프로세스를 초래하는 얽힘을 줄인다.
- 오류를 더 빨리 발견한다.
- 나쁜 프로그래밍 스타일을 발견하여 없애다
소프트웨어 맵은 자동 소프트웨어 진단 소프트웨어 진단 범위의 핵심 도구를 나타낸다.
비즈니스 인텔리전스 툴 및 권장 시스템으로서
특히 소프트웨어 맵은 소프트웨어 관련 데이터 분석에 특화된 비즈니스 인텔리전스 시스템의 분석 및 프레젠테이션 툴로서 활용할 수 있다. 게다가, 소프트웨어 맵은 "소프트웨어 엔지니어링을 위한 권장 시스템으로 제공"[7]한다.
소프트웨어 맵은 소프트웨어 관련 정보에 의해 제한되지 않는다. 그것들은 복잡한 기술 유물에 대한 유지보수 정보와 같은 계층적 시스템 정보도 포함할 수 있다.
시각화 기법
소프트웨어 맵은 소프트웨어 시각화 영역에서 조사된다. 소프트웨어 맵의 시각화는 일반적으로 트리 맵핑, "계층 정보 구조의 시각화에 대한 공간 채우기 접근법"[8] 또는 기타 계층 매핑 접근법에 기초한다.
배치 알고리즘
소프트웨어 맵을 구성하기 위해 다음과 같은 구성요소의 기본 공간 맵핑을 생성하기 위해 서로 다른 레이아웃 접근법을 사용한다.
- 소프트웨어 계층을 재귀 중첩된 사각형 영역에 처음 매핑하는 트리 맵 알고리즘.
- 처음에 보로노이 맵을 생성하여 소프트웨어 계층을 매핑하는 보로노이 맵 알고리즘.
배치 안정성
트리 맵에 의해 정의된 것과 같은 레이아웃에 의해 계산된 공간 배치는 계층에 따라 엄격하게 달라진다. 진화하고 변화하는 시스템을 위해 소프트웨어 맵을 자주 생성해야 하는 경우, 소프트웨어 맵의 가용성은 안정적이지 않은 레이아웃의 영향을 받는다. 즉, 계층에 대한 사소한 변경으로 인해 레이아웃이 크게 변경될 수 있다.
결정론적 레이아웃을 제공하지 않는 일반 보로노이 트리맵 알고리즘과 대조적으로 보로노이 트리맵의 레이아웃 알고리즘을 확장하여 다양한 계층 구조에서 높은 수준의 레이아웃 유사성을 제공할 수 있다.[9] 트리맵 기반 사례에도 유사한 접근법이 존재한다.
역사
소프트웨어 맵 방법과 기법은 소프트웨어 시각화와 정보 시각화의 과학적인 부분에 속한다. 그들은 소프트웨어 진단 분야에서 핵심 개념과 기술을 형성한다. 그들은 소프트웨어 마이닝과 소프트웨어 분석에도 응용 프로그램을 가지고 있다. 소프트웨어 맵은 예를 들어, IT 시스템 엔지니어링을 위한 Hasso Plattner Institute for IT 시스템 엔지니어링, 특히 대규모의 복잡한 IT 시스템 및 애플리케이션을 위해 광범위하게 개발되고 연구되어 왔다.
참조
- ^ Bohnet, J.; Döllner, J. (2011). "Monitoring Code Quality and Development Activity by Software Maps". Proceedings of the IEEE ACM ICSE Workshop on Managing Technical Debt. Association for Computing Machinery. pp. 9–16. doi:10.1145/1985362.1985365. ISBN 9781450305860. S2CID 17258620.
- ^ Bohnet, J. (2010). Visualization of Execution Traces and its Application to Software Maintenance (PhD). Hasso-Plattner-Institut, University of Potsdam.
- ^ Wettel, R.; Lanza, M. (2007). "Visualizing Software Systems as Cities". Proceedings of VISSOFT 2007 (4th IEEE International Workshop on Visualizing Software For Understanding and Analysis). IEEE Computer Society Press. pp. 92–99. CiteSeerX 10.1.1.135.1979. doi:10.1109/VISSOF.2007.4290706. ISBN 978-1-4244-0599-2. S2CID 9974947.
- ^ Kuhn, A.; Loretan, P.; Nierstrasz, O. (2008). "Consistent Layout for Thematic Software Maps". 2008 15th Working Conference on Reverse Engineering. pp. 209–218. arXiv:1209.5490. doi:10.1109/WCRE.2008.45. ISBN 978-0-7695-3429-9. S2CID 232783.
- ^ Limberger, D.; Wasty, B.; Trümper, J.; Döllner, J. (2013). "Interactive software maps for web-based source code analysis". Proceedings of the 18th International Conference on 3D Web Technology. pp. 91–98. doi:10.1145/2466533.2466550. ISBN 9781450321334. S2CID 3040005.
- ^ Carpendale, M.S.T. "Considering Visual Variables as a Basis for Information Visualization" (PDF).
- ^ a b Trümper, Jonas; Döllner, Jürgen (2012). "Extending Recommendation Systems with Software Maps". Proceedings of the 3rd International ICSE Workshop on Recommendation Systems for Software Engineering (RSSE). IEEE Computer Society. pp. 92–96. doi:10.1109/RSSE.2012.6233420. ISBN 978-1-4673-1758-0. S2CID 1609575.
- ^ Johnson, B.; Shneiderman, B. (1991). "Tree-maps: a space-filling approach to the visualization of hierarchical information structures" (PDF). Proceeding Visualization '91. pp. 284–291. doi:10.1109/VISUAL.1991.175815. ISBN 0-8186-2245-8. S2CID 1733343.
- ^ Hahn, S.; Trümper, J.; Moritz, D.; Döllner, J. (2014). "Visualization of varying hierarchies by stable layout of voronoi treemaps". 2014 International Conference on Information Visualization Theory and Applications (IVAPP). pp. 50–58. ISBN 978-9-8975-8132-8.
외부 링크
- VISSoft 과학 회의(IEEE 소프트웨어 시각화에 관한 실무 회의) [1]
- 복합 3D-Treemaps의 대화형 렌더링
- 실행 트레이스의 멀티스케일 시각적 비교
- 웹 기반 소스 코드 분석을 위한 대화형 소프트웨어 맵
- 소프트웨어 맵을 사용한 권장 시스템 확장
- 완벽한 소프트웨어 유지보수를 지원하기 위한 시각적 분석 접근법
- ViewFusion: 실행 추적을 위한 구조 및 활동 보기 상관 관계 분석
- 계획 소프트웨어 재엔지니어링을 위한 시각적 분석 및 설계 도구
- 대규모 소프트웨어 시스템의 3D 트리맵에 대한 대화형 면적 주석
- 실행 추적 및 소프트웨어 유지관리 애플리케이션 시각화
- 추적 시각화를 사용하여 복잡한 다중 스레드 소프트웨어 시스템 이해
- 복합 소프트웨어 시스템 유지관리를 위한 다중 스레드 동작의 시각화
- 추적 탐색을 용이하게 하기 위해 대량 제거된 실행 추적의 시각화
- 최근 도입된 버그 로컬리제이션 지원을 위한 실행 추적에 코드 변경사항 투영
- SyncTrace: 시각적 스레드-인터플레이 분석