최상의 답변
이러한 역할에 대한 공식적인 정의는 없습니다. 따라서 많은 변형과 현지화 된 컨텍스트가있을 것입니다.
일반 가이드로서 다음 정의를 사용합니다.
- 기술 설계자-정렬 된 영역의 전문가 인프라, 네트워킹 및 보안에.
- 솔루션 아키텍트-솔루션의 모든 측면 (예 : 비즈니스 영향, 애플리케이션 변경, 데이터 및 정보 고려 사항 및 기술)을 고려하는 프로젝트 기반 솔루션을 담당하는 일반 담당자 이 모든 것을 뒷받침하고 있습니다), 그리고 바라건대 고객 고려 사항도 마찬가지입니다.
- 주임 설계자-위의 역할보다 더 광범위한 책임을 가진 사람. 이것은 비즈니스 도메인, 더 큰 작업 프로그램 또는 전체 엔터프라이즈에 초점을 맞출 수 있습니다. 또한 컨설턴트에서 팀의 다른 건축가보다 우월한 수준 (경험)을 제안하는 데 자주 사용됩니다. 그들은 일반적으로 인프라와 같은 단일 아키텍처 도메인에 초점을 맞추기보다는 일반적인 관심사를 가지고 있지만 항상 그런 것은 아닙니다.
그게 도움이되기를 바랍니다. 다음이 있다는 것을 기억하는 것이 중요합니다. 허용되는 표준이 없으므로 용어 자체는 사용되는 환경에 따라 다릅니다.
답변
첫째, 단순히 모범 사례와 소프트웨어 아키텍처를 구별하는 것이 중요합니다. 훌륭한 소프트웨어 엔지니어는 코딩에 탁월하고 접근 방식이 뛰어나고 자세하며 문제에 대한 많은 통찰력을 가지고 있지만 여전히 훌륭한 설계자는 아닐 수 있습니다.
최소한 좋은 건축가는 다음과 같은 기술을 갖추어야합니다.
아키텍트는 문제 분해에 탁월합니다 . 문제 분해는 거의 모든 수준에서 문제를 확인하고이를 구현하는 데 필요한 단계와 조각으로 나누는 데 필요한 기술입니다. 좋은 소프트웨어 아키텍트는 “항공 교통 관제 시스템이 부적절하고 더 나은 설계가 필요합니다”와 같은 진술을 할 수 있으며 문제를 달성 가능한 구성 요소로 분해하기 시작하고 이러한 구성 요소 목표를 달성 가능한 하위 프로젝트로 분해하기 위해 묻는 질문을 알고 있습니다. , 해당 하위 프로젝트를 달성 가능한 프로그래밍 작업으로 분해합니다. 훌륭한 설계자는 수십억 줄의 소프트웨어 프로젝트를 구상하는 것부터 신뢰할 수없는 링크에 대처하기위한 알고리즘을 구현하는 가장 좋은 방법을 이해하는 것까지 모든 수준 또는 규모에서 이러한 작업을 수행 할 수 있습니다. 프로세스가 항상 동일하기 때문에 규모는 무관합니다.
아키텍트는 인터페이스를 이해합니다 . 프로토콜, 함수 라이브러리, 클래스 인터페이스 또는 스키마 형태에 관계없이 인터페이스는 독립적 인 계약자와 구현자가있을 때 프로젝트의 복잡성을 관리하는 데 필요한 기본 도구입니다. 논리적으로 완전한 명확하고 모호하지 않은 인터페이스를 정의하는 프로세스를 알면 설계자는 많은 사람들이 더 큰 목표를 달성하기 위해 쉽게 연결되는 시스템을 구축 할 수 있습니다.
설계자 복잡성이적임을 이해하고 모든 구성 요소의 복잡성을 줄이고 인터페이스의 복잡성을 줄이며 구현 중복성을 최소화하거나 전혀 보장하는 데 필요한 프로그래밍 도구 및 패러다임을 숙달했습니다. 기능. 그들은 너무 구체적이거나 너무 일반적인 알고리즘과 구현을 빠르게 인식 할 수 있으며 개발하는 사람들이 올바른 기능을 수행하는 구성 요소를 만들도록 안내 할 수 있습니다. 종종 복잡성을 관리하는 도구는 데이터 숨김, 개체 지향 프로그래밍, 자체 검증 시스템 및 표준 인터페이스에 대한 포괄적 인 테스트 계획과 같은 것입니다. 그러나 훌륭한 설계자는 도구와 기술에 대해 독단적이지 않습니다. 그들은 데이터 숨김이 작동하는 이유와 토대에 대한 포괄적 인 학문적 이해를 가지고 있으며 특정 언어가 좋은 디자인 원칙을 지원하고 다른 언어는 그렇지 않은 이유를 가지고 있기 때문입니다.
An architect는 좋은 커뮤니케이터, 훌륭하고 다작의 작가이자 다큐멘터이며 프로그래밍 언어뿐만 아니라 이해 관계자들의 공통 언어에 능숙합니다. 좋은 의사 소통과 함께 좋은 아키텍트는 의견보다는 프로그래밍 관행에 대한 구체적인 이유를 제시 할 수 있고 논쟁보다는 팀에 통찰력을 제공 할 수 있습니다. 그들은 사용자의 적합성에 대한 사용자의 의견을 강력히 선호하고 찾습니다. 자신이나 프로젝트에 참여한 프로그래머의 것입니다.
훌륭한 설계자는 훌륭한 리더이며 모든 기술 인력의 존경을받는 데 탁월합니다. 그들은 함께 작동합니다 .일반적으로 이는 높은 수준의 기술을 보유하고 있고, 여러 언어로 작업했으며, 이전에 설계자 였거나, 변화에도 유연하게 유지되는 시스템 설계를 만들 수있는 능력을 입증했음을 의미합니다.
많은 정의에는 데이터 기반 설계, 애자일 프로그래밍, 특정 언어, 플랫폼 및 툴킷과 같은 방법론을 강조하는 유행어 배열이 포함됩니다. 이러한 것들은 기반을 잘 이해해야하는 다양한 기술에 대한 현재 레이블이며, 현재 유행하고 있습니다. 따라서 여러면에서 건축가의 주된 기술은 경험, 지성, 열심히 일하고 직접 역할을 수행하려는 의지, 좋은 직관 및 논리를 사용하여 문제를 분석하는 능력입니다. 그들의 디자인은 여전히 유용하고 관련성이 있습니다.
상기 정의에는 의도적으로 프로젝트 관리, 일정 및 관리 기술이 포함되지 않습니다. 설계자의 역할은 팀 문제 나 예산을 해결하는 것이 아니라 좋은 시스템을 만드는 것입니다. 실제로 예산과 팀 문제가있는 사람이 단순히 설계자가 처리해야하는 제약 조건 중 하나를 정의하는 데 도움을주는 이해 관계자 인 경우에 가장 좋습니다. 디자인 문제의 일부라면