안녕하십니까?
아키텍트 연합회 공동 의장 김정호입니다.
지난번 아키텍트 연합회 정회원 오프라인 세미나에서 Software Architecture Knowledge Map에 대한 논의가 있었습니다.
오프라인 모임에서 열딘 토론이 있었고 그 열딘 의견을 온라인에서도 해보자는 의견이 있었서 온라인에 핫 이슈로 위의 토론 내용을 올립니다.
토론 내용
아래 정리된 Knowledge Map에 대해서 카테고리 별로 정회원 여러분들의 의견을 첨부해주십시오. 첨부된 의견은 정리하여 다음주 수요일 아키텍트 정기 모임에서 발표하겠습니다.
l Software Architect 역할 측면
i. 소프트웨어 아키텍트는 비즈니스 영역의 요구사항과 그것을 만족시키는 소프트웨어를 개발하는 중간단계에 위치하는 역할
ii. 소프트웨어 아키텍트는 기본적인 요구사항(기능, 비기능, 제약사항)을 이해하고 그에 해당하는 소프트웨어 구조를 설계. (그 구조를 가지고 요구사항을 만족할 수 있는지 확인하고 또 나아가 그 구조로 개발을 하면 어느 정도의 effort, time이 소비되는지 확인)
iii. 궁극적으로 요구사항을 만족시켜주는, 즉 고객을 만족시켜주면서 소프트웨어 개발 또한 책임지는 개발의 총괄 책임자 역할
l Software Architect가 알아야 할 지식 측면 (프로젝트 단계 별로 정리)
|
단계 |
주요사항 |
세부사항 |
|
분석 |
Requirement Analysis |
|
|
객체지향 분석 설계 |
OOAD, CBD 등 | |
|
Basic UML (UML 기반의 객체지향 분석/설계 방법) |
Use case Analysis | |
|
설계 |
Architecture에 대한 이해 |
S/W 아키텍처 수립 방법론 아키텍처 패턴 아키텍처 설계 사례 연구 - 엔터프라이즈 아키텍처 설계 사례 - 임베디드 아키텍처 설계 사례 - 포탈 아키텍처 설계 사례 등 |
|
Architecture 평가 |
ATAM | |
|
Advanced UML & UML(2.0)의 이해 |
Class Diagram Sequence Diagram Statechart Diagram등 | |
|
Component Modeling |
| |
|
UML 모델링 툴 |
TAU, Rational Rose, Rhapsody등 | |
|
Design Pattern |
| |
|
구현 |
객체지향 프로그래밍 언어에 대한 이해 |
Java / C++, J2EE 기반 프로그래밍 |
|
개발 프레임워크 |
오픈 프레임워크 (Spring, Struts, iBatis, etc.) | |
|
Database System |
Database system에 대한 이해 -서버용/임베디드용 DB | |
|
Distributed Parallel Systems |
성능과 확장을 고려한 분산 서버 환경 구축 | |
|
코드 분석 Tool |
Static Analysis Tool -PREFast / FxCorp등 Dynamic Analysis Tool | |
|
Coding Documentation Tool |
Doxgen등 | |
|
빌드 |
빌드 자동화 Tool |
Cruise Control등 |
|
테스트 |
단위 테스트 |
xUnit (JUnit, Nunit등 ) |
|
통합 테스트 |
Team System (MS社) | |
|
기반사항 |
Network |
|
|
Security |
| |
|
Digital Video & Audio |
Video, Audio Codec에 대한 이해 | |
|
HCI (Human Computer Interface) |
| |
|
개발 방법론 |
RUP(Rational Unified Process) Product Line Extreme Programming 등 | |
|
개발 지원툴 |
소스 버전 관리 |
CVS, ClearCase |
|
이슈관리 |
ClearQuest | |
|
일정 관리 |
MS-Project |
l Software Architect의 갖춰야할 비즈니스적인 능력 측면
i. 아키텍트가 되려면 숫자에 능해야 함. (돈이나 시간에 대한 이해)
1. 요구하는 기능을 구현하기 위해서 어떤 소프트웨어 구조가 좋고 그 구조는 적어도 얼마의 비용과 시간이 들어가야 한다는 수치를 제시할 수 있어야 함.
2. 소프트웨어 개발자 단가는 얼마이고 Weblogic 1 unit당 비용이 얼마이다. 인력 시장에서 c 개발자 5명을 구하기는 어려우므로 …
ii. 각 파트간의 이익(누가 얼마나 일을 적게 할 것인가?)에 대해서 잘 관찰하고 있어야 함
iii. 아키텍처 구성 요소를 이루고 있는 솔루션 제공 업체들과의 관계에는 어떤 역학이 존재하는 가? 고객과의 관계는 어떠한가?
단계 주요사항 세부사항 Architecture Competence 아키텍트의 역할 프로젝트에서 아키텍트가 해야할 역할 아키텍트 조직 구성 조직 간의 효율적인 커뮤니케이션을 위한 아키텍트 조직 구성 아키텍처 재사용 아키텍처 지식이나 Asset을 유사한 프로젝트에서 재사용할 수 있도록 한 방법 들 아키텍처 기반의 비용 예측 아키텍처를 기반으로 개발해야할 요소들에 들어가는 인력이나 기간 산정 Architecture Conformance 아키텍처 기반의 개발 여부 체크 기 수립된 아키텍처 기반으로 개발이 진행되고 있는지 확인하고 이슈를 해결 하기 위한 효과적인 방법 Quality Attributes for Architecture 소프트웨어 품질 속성에 대한 이해 아키텍처를 작성하기 위해 필요한 품질 속성 연구 품질 속성 기반의 대안 아키텍처 선택 대안 아키텍처 평가를 위한 다양한 방법 (ATAM, CBAM) Tool for Architecture 아키텍처를 지원하는 툴 품질 속성 기반의 아키텍처를 수립 지원 툴이나 아키텍처 수준에서 테스트가 가능한 툴 등
l Software Architecture 본질 측면
Software Architect의 본질측면을 중심으로 SA가 토의하고 고민해야 할 주제들을 간단하게 정리하는 수준으로 Knowledge Map을 만들어 갔으면 좋겠습니다.
본질적인 질문을 통해서 중요한것을 뽑고, 그것에 대한 낱개 지식을 결부시켜야 할 것 같습니다.
김과장님, 수고 많으셨습니다.
아래 주제별로 기술들의 depth보다는 아키텍처 구성요소로 묶을때 필요한 연결고리에 대한
고민이 필요할 것 같습니다.
- 아키텍처 기반 비용분석: Cost estimation 관련 이슈 (Build/Buy 등), Solution reference architecture
- 아키텍처 Reconstruction: Legacy architecture topology 및 주요 구성요소 분석 방법 및 도구 등
- COTs integration: 어플리케이션 솔루션 Stack들을 레이어별 End-to-End 연계 방안 등
- 아키텍처 기반 설계: 아키텍처 설계 패턴, 어플리케이션 모델링(IE/OO/CBD/SOA)
- 아키텍처 기반 개발: Framework (오픈/상용), IDE, CI, 통합테스트, 배포관리
- 아키텍처 기반 절차 및 관리: WBS, 산출물, 역할자간 R&R, 주요 Milestone, 관리 KPI, Agile기반 관리 방안
- 아키텍처 정의: 아키텍처 뷰, Notation, 문서화 등
- 아키텍처 검증: 검증 절차 (BMT/PoC/Pilot vs. ATMA/SAAM/ARID), 검증 도구 (Profiling, 성능 모니터링, 부하 테스트 기법 등)
- 기술 도메인: MIS, Extreme Process Transaction, Embedded 등
- 업무 도메인: 공공, 금융, 제조, 서비스 별 아키텍처 패턴 및 트랜드
- 아키텍트 Skill: Consulting, Facilitation, Leadership, Communication






근데 좀 이상해~~ ㅎㅎㅎ
모두 다 이상한 의견 하나씩 꼭 냅시다!