StackOverflow 및 Programmers SE 에서의 SA (Software Architect)의 역할에 대한 많은 답변이 있습니다 . 나는 그들보다 약간 더 집중된 질문을하려고합니다. SA의 정의는 광범위하므로이 질문을 위해 SA를 다음과 같이 정의하겠습니다.
소프트웨어 아키텍트는 프로젝트의 전체 디자인을 안내하고, 코딩 노력에 참여하고, 코드 검토를 수행하고, 사용할 기술을 선택합니다.
다시 말해, 나는 경영상의 휴식과 조끼에 대해 말하지 않고있다. SA 유형의 모든 유형을 추구한다면 코딩을 피하고 싶지 않습니다. 고객 및 비즈니스 분석가 등과 연락하기 위해 약간의 시간을 희생 할 수는 있지만, 기술적으로 여전히 관여하고 있으며 회의를 통해 진행되는 일에 대해서만 알고있는 것은 아닙니다.
이러한 점을 염두에두고 SA는 무엇을 가져와야합니까? "법률을 세우고"말하자면, 그들의 가이드 라인, 소스 제어, 패턴, UML 문서 등과 같은 "그들의 길"에 맞는 특정 도구의 사용을 강요해야한다는 생각을 가져야합니까? 아니면 초기 방향과 전략을 지정한 다음 배의 방향을 수정하기 위해 필요에 따라 배치하고 뛰어야합니까?
조직에 따라 작동하지 않을 수 있습니다. 모든 것을 시행하기 위해 TFS에 의존하는 SA는 StarTeam 만 사용하는 고용주에게 계획을 이행하는 데 어려움을 겪을 수 있습니다. 마찬가지로 SA는 프로젝트 단계에 따라 유연해야합니다. 새로운 프로젝트라면 더 많은 선택권이 있지만 기존 프로젝트에는 더 적을 수 있습니다.
다음은 내 질문에 대한 답변이 이러한 문제에 대한 정보를 얻을 수 있기를 희망하는 배경 지식을 공유하는 방법으로 경험 한 SA 사례입니다.
나는 문자 그대로 팀의 모든 단일 코드 줄을 코드 검토 한 SA와 함께 일했습니다. SA는 우리의 프로젝트뿐만 아니라 조직의 다른 프로젝트에 대해서도이를 수행 할 것입니다 (이에 소요 된 시간을 상상해보십시오). 처음에는 특정 표준을 시행하는 것이 도움이되었지만 나중에는 무너졌습니다. FxCop은 SA가 문제를 찾는 방법이었습니다. 저를 잘못 이해하지 마십시오, 그것은 주니어 개발자들을 가르치고 그들이 선택한 접근법의 결과에 대해 생각하게하는 좋은 방법이었습니다.
하나의 특정 SA는 특정 라이브러리의 사용에 반대하여 느리다고 주장했습니다. 다른 라이브러리는 많은 시간을 절약 할 수 있었지만, 다른 방식으로 달성하기 위해 수많은 코드를 작성해야했습니다. 프로젝트의 마지막 달로 넘어 가고 고객은 성능에 대해 불평했습니다. 유일한 해결책은 개발자의 조기 경고에도 불구하고 원래 무시 된 접근 방식을 사용하도록 특정 기능을 변경하는 것입니다. 이 시점까지 많은 코드가 폐기되어 재사용 할 수 없어 초과 근무와 스트레스를 유발했습니다. 안타깝게도 프로젝트에 사용 된 추정치는 내 프로젝트의 사용이 금지 된 기존의 접근 방식을 기반으로했기 때문에 추정에 대한 적절한 지표가 아니 었습니다. 나는 PM이 "이전에 해본 적이있다"고 말합니다.
모든 프로젝트에서 DTO, DO, BO, 서비스 계층 등의 사용을 강제하는 SA 새로운 개발자는이 아키텍처와 SA가 강제로 사용 지침을 배워야했습니다. 지침을 준수하기 어려울 때 사용 지침에 대한 예외가있었습니다. SA는 그들의 접근 방식에 기초를 두었습니다. DTO 및 모든 CRUD 작업에 대한 클래스는 CodeSmith를 통해 생성되었으며 데이터베이스 스키마는 또 다른 유사한 왁스입니다. 그러나이 설정을 모든 곳에서 사용한 SA는 LINQ to SQL 또는 Entity Framework와 같은 새로운 기술에 공개되지 않았습니다.
이 게시물을 환기 플랫폼으로 사용하지 않습니다. 위에서 언급 한 SA 이야기에 대한 나의 경험에는 긍정적이고 부정적인 측면이있었습니다. 내 질문은 다음과 같이 요약됩니다.
- SA가 무엇을 가져와야합니까?
- 의사 결정에서 어떻게 균형을 잡을 수 있습니까?
- 특정 기본 규칙을 시행해야한다는 생각으로 SA 작업 (앞에서 정의한대로)에 접근해야합니까?
- 다른 고려 사항이 있습니까?
감사! 이러한 직무가 선임 개발자 나 기술 책임자에게 쉽게 확장 될 수 있으리라 확신합니다.