소프트웨어 개발의 성공은 치밀한 준비에서 시작된다
디지털 전환의 물결이 각 업종을 휩쓸고 있는 오늘날, 소프트웨어 개발은 이미 기업이 핵심 경쟁력을 구축하는 관건적인 수단이 되었다.그러나 대량의 소프트웨어 개발 프로젝트가 실패로 끝났는데, 그 원인을 따져보면, 왕왕 코딩 단계에 문제가 생긴 것이 아니라, 첫 번째 줄의 코드를 쓰기 전에 준비 작업의 기초가 튼튼하지 않았기 때문이다.이른바"칼을 갈면 장작패기를 그르치지 않는다."충분하고 체계적이며 엄밀한 소프트웨어개발준비는 프로젝트의 순조로운 추진을 보장하고 위험을 통제하며 예기목표를 달성하는 전제이다.순통 소프트웨어는 10여 년 동안 수천 개의 고객을 서비스한 프로젝트 경험을 바탕으로 소프트웨어 개발 준비 단계의 10대 핵심 절차를 체계적으로 정리하여 소프트웨어 프로젝트를 시작할 기업에 조작 가능한 방법론 안내를 제공한다.
수요 조사 연구: 모호한 생각에서 명확한 초상화로
소프트웨어 개발의 첫 번째 단계이자 가장 관건적인 단계는 수요에 대해 체계적이고 구조화된 조사 연구와 정리를 진행하는 것이다.이 단계의 사명은 근본적인 문제에 대답하는 것이다. 우리는 도대체 어떤 문제를 해결해야 하는가?수요 조사 연구는 결코 간단하게 사용자에게"당신이 어떤 기능을 원하는가"를 묻는 것이 아니다.우수한 방법은 진실한 업무 장면에 깊이 들어가 사용자의 완전한 업무 흐름을 관찰하고 기존 모델의 문제점과 병목 현상을 이해하며 설명되지 않은 잠재적 수요를 통찰하는 것이다.조사연구대상은 부동한 등급, 부동한 역할의 리익관련자를 망라해야 하는데 여기에는 고위층관리자가 전략적가치에 관심을 돌리고 중층관리자가 관리통제효률에 관심을 돌리며 일선집행자가 조작이 편리하는데 관심을 돌리는것이 포함된다.
수요조사연구의 수출은 완전한 수요조사연구보고로서 업무현황묘사, 핵심통점귀납, 사용자역할정의, 관건장면환원 등 내용을 포함한다.이 보고서는 후속 모든 작업의 입력 원점으로, 그 품질이 프로젝트 방향이 정확한지를 직접 결정한다.모 제조업체는 생산집행시스템개발을 가동하기전에 프로젝트팀이 작업장에 2주간 주둔하면서 주문에서 완제품에 도달하여 입고된 37개 환절을 완전하게 추적하여 그전에 경영진이 전혀 알지 못했던 효률블랙홀 7개를 발견하였다.이러한 통찰력은 후속 시스템 설계의 핵심 가치점이 된다.
요구 사항 분석: 비즈니스 언어에서 제품 논리로
원시 요구 사항을 수집한 후 다음 핵심 단계는 체계적인 분석, 필터링, 분류 및 전환입니다.수요분석의 핵심임무는 업무일군이 묘사한"내가 무엇을 원하는가"를 제품일군이 리해하는"시스템이 무엇을 해야 하는가"로 전환시키고 다시 기술자가 집행할수 있는"코드가 어떻게 실현되는가"로 진일보 전환시키는것이다.이것은 층층이 전진하고 끊임없이 구상화하는 과정이다.
수요 분석은 우선 우선 순위 정렬이 필요합니다.어떤 프로젝트의 자원과 시간은 모두 제한되여있기에 반드시"하지 않으면 살아갈수 없는"핵심수요, 어떤것이"하면 더욱 좋아질것인가"하는 증강수요, 어떤것이"미래에 다시 고려"하는 연장수요인지 구분해야 한다.고전적인 MoSCoW 방법-있어야 한다, 있어야 한다, 있을 수 있다, 없을 것이다-이 단계의 효과적인 도구이다.그 다음은 수요 충돌의 식별과 조화이다.부동한 부문, 부동한 역할의 수요에는 내적모순이 존재할수 있다. 판매부문은 주문이 마음대로 변경되기를 바라고 생산부문은 계획을 동결한후 더는 조정하지 않기를 바라는데 이는 제품경리가 중간에서 주선하여 가장 좋은 균형점을 찾아야 한다.최종적으로 인도된 것은 수요 규격 설명서로 업무 수요를 명확한 기능 목록, 업무 규칙, 데이터 요구와 성능 지표로 전환시키는 것이 개발팀과 테스트팀의 핵심 업무 근거이다.
타당성 검토: 투입 전에 위험 예측
정식으로 입안하기 전에 반드시 프로젝트의 타당성에 대해 전면적이고 신중한 평가를 진행해야 한다.이 단계의 목적은 처음부터 성공 조건을 갖추지 못한 프로젝트에 자원을 투입하는 것을 피하는 것이다.타당성 연구는 일반적으로 기술적 타당성, 경제적 타당성, 운영 타당성 및 법적 규정 준수의 네 가지 차원으로 구성됩니다.
기술 타당성 평가 기존 기술 구조, 개발 팀 능력이 프로젝트의 기술 도전에 충분히 대응할 수 있는지, 미리 공략해야 할 기술 난점이 존재하는지 여부;경제적 타당성 측정 프로젝트의 총 투입과 예상 수익을 측정하고 투자 수익 분석을 실시하여 상업 결정에 양적 근거를 제공한다.운영 타당성 평가 시스템이 오픈된 후 상응하는 조직 능력, 인원 기능과 운영 보장을 갖추고 있는지 여부;법률 준수는 특정 산업 또는 특정 기능에 대해 데이터 보안, 지적 재산권, 산업 접근 등에 대한 법적 위험이 있는지 검토합니다.모 인터넷금융창업회사는 거액을 투입하여 새로운 시스템을 개발하기전에 타당성연구를 통해 핵심계산법에 특허침해위험이 존재한다는것을 앞당겨 발견하고 제때에 기술로선을 조정하여 수천만명의 잠재적손실을 피면하였다.
프로토타입: 추상적 요구 사항 시각화
문자 묘사의 수요 규격 설명서에는 천연적인 한계가 있다. 천 명의 독자가 보기에는 천 개의 햄릿이 있다.프로젝트 각 측의 수요에 대한 이해가 고도로 일치하도록 확보하기 위해 원형 설계는 없어서는 안 될 관건적인 절차이다.원형은 추상적인 수요를 시각화 인터페이스로 전환하는 과정으로 사용자가 진정으로 실행 가능한 소프트웨어를 보기 전에 제품의 형태, 절차와 상호작용 방식을 미리 감지할 수 있도록 한다.
원형 설계는 일반적으로 저화질 원형과 고화질 원형 두 단계로 나뉜다.최저생계비 진짜원형은 테두리도형식으로 표현되며 페이지배치, 정보구조, 조작절차에 초점을 맞추고 시각세부사항에 관심을 돌리지 않아 쾌속적인 조정과 교체에 편리하다.하이파이 프로토타입은 하이파이 확인 후 제작되어 최종 제품의 시각적 효과와 인터렉션 피드백에 접근하여 최종 확인 및 사용자 테스트에 사용된다.원형은 의사소통 도구일 뿐만 아니라 수요 검증 도구이기도 하다.사용자가 원형에서 조작을 모의할 때 흔히 이전에 생각하지 못했던 많은 장면의 루락과 론리적결함을 발견하게 된다.한 전자상거래 플랫폼은 프로토타입 시연 단계에서 운영자가 갑자기 회원 포인트와 쿠폰의 중첩 규칙에 논리적 허점이 있다는 것을 깨달았는데, 이 문제가 개발이 완료된 후에야 발견된다면 복구 비용은 현재의 수십 배가 될 것이다.
기술 옵션: 프로젝트에 적합한 도구 선택
기술 선택은 프로젝트의 기술 방향을 결정하는 관건적인 결정으로 프로젝트의 시종일관, 나아가 시스템의 전체 생명 주기에 영향을 미친다.선형은 단순히 몇 개의 유행 프레임워크나 데이터베이스 사이에서 선택하는 것이 아니라 프로젝트 특징, 팀 능력, 생태 성숙도, 지역사회 활약도, 장기 유지 비용 등 다차원적인 요소를 종합적으로 고려해야 한다.
기술 옵션은 일반적으로 개발 언어, 프런트엔드 프레임워크, 백엔드 아키텍처, 데이터베이스, 서버, 타사 서비스 등 다양한 측면을 포함합니다.중소기업의 관리 소프트웨어 개발에 대해 안정적이고 신뢰할 수 있으며 생태가 완벽하고 인재가 쉽게 얻을 수 있는 것이 우선적인 고려이다;인터넷의 높은 병발 장면에 대해 고성능, 높은 확장성이 핵심 지표가 된다;금융, 의료 등 민감한 업종에 대해 안전합규는 타협할수 없는 최저선이다.기술선형회의는 기술책임자, 구조사, 핵심개발자를 초청하여 공동으로 참여하게 하고 충분한 론증을 기초로 결책각서를 형성하여 선형리유, 적용장면 및 대안을 명확히 해야 한다.모델 선택에 절대적으로 정확하거나 오류가 없으며 일치하는지 여부가 중요합니다.짧은 동영상 생방송 플랫폼에 적합한 기술 스택이 제조업 ERP 시스템에 강제로 적용되는 것은 재앙적인 오배일 수 있다.
아키텍처 설계: 시스템의 뼈대 구축
수요가 소프트웨어의 영혼이라면 아키텍처는 소프트웨어의 뼈대입니다.구조 설계 단계의 임무는 분산된 기능 수요를 유기적인 전체로 통합하고 시스템의 모듈 구분, 차원 구조, 인터렉션 인터페이스, 데이터 흐름 등 거시적인 차원의 설계 결정을 정의하는 것이다.우수한 아키텍처 설계는 현재의 비즈니스 요구 사항과 미래의 확장 가능성을 모두 고려하여 유연성과 안정성 사이에서 적절한 균형점을 찾을 수 있습니다.
아키텍처 설계는 일반적으로 비즈니스 아키텍처, 애플리케이션 아키텍처, 데이터 아키텍처 및 기술 아키텍처의 네 가지 측면을 포함합니다.업무 구조는 업무 시각에서 시스템이 어떻게 조직의 업무 절차를 지탱하는지 설명한다.응용 구조 정의 시스템의 모듈 구분 및 모듈 간 관계;데이터 아키텍처는 핵심 데이터 엔터티 및 데이터 저장 방안을 설계합니다.기술 구조는 앞의 세 가지 구조를 구체적인 기술 실현 방안으로 착지한다.아키텍처 설계 산출물은 시스템 아키텍처 설계 문서이며, 이는 개발팀의 기술 헌법이며, 후속 모든 개발 작업은 아키텍처 프레임워크 내에서 진행되어야 한다.아키텍처 검토는 기술 전문가, 비즈니스 담당자를 초청하여 확장성, 서비스 용이성, 성능, 보안 등 여러 차원에서 가혹한 고문을 수행해야 합니다.좋은 아키텍처는 요구 사항이 변경될 때 유연하게 대처할 수 있지만, 나쁜 아키텍처는 모든 요구 사항을 조정하기 어렵게 만든다.
작업 분해 및 작업 시간 예측: 청사진을 실행 가능한 계획으로 전환
수요가 명확하고 기술 방안이 확정된 후에 시스템 개발 작업을 구체적이고 실행 가능하며 측정 가능한 개발 임무로 분해하고 각 임무의 작업량을 과학적으로 추산해야 한다.이 단계는 프로젝트를"무엇을 할 것인가"에서"누가 할 것인가, 언제 완료할 것인가"로 추진하는 핵심 노드입니다.
임무 분해는 하향식, 점진적인 세분화의 원칙에 따라 전체 시스템을 하위 시스템, 모듈, 기능 점으로 분할하여 더 이상 분할할 수 없는 원자 임무까지 한다.모든 원자 임무는 명확한 정의, 명확한 검수 기준, 합리적인 작업 시간 예측 및 책임자가 있어야 한다.노동시간 추산은 이 단계의 가장 도전적인 부분이다.개발자들은 자연히 락관적인 경향이 있으며 디버깅, 테스트, 문서작성, 소통협력 등 잠재적원가를 홀시하기 쉽다.과학적인 추산 방법에는 유추 추산법이 역사 프로젝트 경험을 참조하고, 매개변수 추산법은 코드 행 또는 기능 점에 기초하며, 세 가지 추산법은 낙관, 비관, 가장 가능한 세 가지 장면을 종합적으로 고려한다.작업 분해 구조와 작업 분해 구조는 프로젝트 관리의 기초이자 후속 진도 추적, 자원 조달, 성과 심사의 근거이다.
개발 환경 준비: 효율적인 코딩을 위한 길 닦기
공식 코딩이 시작되기 전에 안정적이고 일관적이며 효율적인 개발 환경을 구축하는 것은 과소평가되기 쉽지만 매우 중요한 일환이다.개발 환경에는 코드 버전 제어 시스템, 프로젝트 의존성 관리, 로컬 개발 환경 구성, 데이터베이스 환경, 인터페이스 시뮬레이션 서비스, 지속적인 통합 흐름선 등 인프라가 포함된다.
코드 버전 제어는 개발 환경의 초석이며 Git은 사실 표준이되었으며 Git Flow 또는 Trunk Based Development와 같은 명확한 분기 관리 정책을 개발하고 기능 개발, 결함 해결, 버전 출시에 대한 협력 사양을 명확히 해야 합니다.모든 개발자가 동일한 버전의 타사 라이브러리를 사용하도록 관리함으로써 "내 컴퓨터에서 실행할 수 있는" 난감한 상황을 피할 수 있습니다.지속적으로 흐름선을 집적하여 코드제출후의 자동구축, 자동테스트, 자동배치를 실현하고 중복적인 로동을 기계에 넘겨주어 개발자들이 창조적인 사업에 전념할수 있도록 해야 한다.개발 환경 준비의 품질은 개발 효율성과 코드 품질에 직접적인 영향을 미칩니다.모 창업팀은 프로젝트가동초기에 환경일치성을 중시하지 않았다. 6명의 개발자는 6개의 부동한 버전의 데이터베이스와 중간부품을 사용하면서 련조단계에서 대량의 호환성문제를 발견하고 핍박에 의해 2주간 조업을 중지하고 환경통일을 진행했다.
팀 구성과 역할 분담: 적합한 사람이 적합한 일을 한다
소프트웨어 개발은 팀워크의 산물로 사람의 요소는 왕왕 프로젝트의 성패의 가장 큰 변수이다.개발 작업이 정식으로 시작되기 전에 프로젝트 팀의 구성을 완성하고 각 구성원의 역할 포지셔닝과 직책 경계를 명확히 해야 한다.일반적인 소프트웨어 개발 팀은 제품 관리자, 프로젝트 관리자, 아키텍트, 프런트엔드 개발, 백엔드 개발, 테스트 엔지니어, UI 디자이너, 운영 엔지니어 등의 역할을 포함합니다.
중소규모 프로젝트에 대해 한 사람이 여러 직책을 겸할 수 있지만 직책은 반드시 명확해야 한다.제품 관리자는 요구 사항의 정확성을 책임지고 팀이 올바른 일을 할 수 있도록 보장합니다.프로젝트 매니저는 진도의 통제성을 책임지고 팀이 정확하게 일을 하도록 확보한다;구조자는 기술 방안의 합리성을 책임진다.개발 엔지니어는 코드 구현의 품질을 담당합니다.테스트 엔지니어는 결과물의 신뢰성을 제공합니다.팀 구성은 인원 배치일 뿐만 아니라 문화 형성이기도 하다.민첩한 개발이 제창하는 자기 조직, 지속적인 개선, 사용자 협력은 팀의 공감대가 되어야 한다.첫 프로젝트 가동회는 업무 임무 배치뿐만 아니라 공동 비전을 수립하고 팀의 사기를 결집하는 계기이다.연구에 따르면 명확한 역할 인식과 높은 응축력을 가진 팀의 프로젝트 성공률은 느슨한 팀보다 2.3배 높았다.
프로젝트 규약 발표: 정식으로 개발의 서막을 열다
소프트웨어 개발 준비의 마지막 단계는 정식 형식으로 프로젝트 정관을 발표하여 프로젝트가 정식으로 입안되고 개발 단계가 곧 시작될 것임을 선언하는 것이다.프로젝트 정관은 권위를 가진 강령성 문건으로, 일반적으로 프로젝트 발기인 또는 고위 관리자가 발급하고, 프로젝트의 비즈니스 목표, 핵심 범위, 핵심 이정표, 예산 제약, 주요 위험 및 대응 전략, 프로젝트 팀 수권 등 핵심 요소를 명확히 한다.
프로젝트 정관의 가치는 프로젝트에 합법성을 부여하고 조직 전체 구성원에게 고위층의 인정과 지지를 받는 중요한 프로젝트임을 선언하는 데 있다;프로젝트 관리자에게 리소스를 조정하고 의사 결정을 내릴 수 있는 권한을 부여합니다.모든 참가자를 위한 공통의 목표감과 긴박감을 구축하여 투입 의지를 불러일으킨다.프로젝트 정관이 발포된 후, 정식 킥오프 회의를 조직하고, 고위 지도자를 플랫폼에 초청하여 전체 프로젝트 구성원에게 프로젝트의 의의와 기대를 전달한다.이는 형식주의가 아니라 프로젝트의 지위를 확립하고 단체의 공감대를 결집하며 조직의 지지를 얻는 관건적인 의식이다.이로써 소프트웨어 개발 준비 단계의 10가지 핵심 단계가 모두 완료되었고, 프로젝트는 정식으로 코딩 실시 단계에 진입할 수 있는 모든 조건을 갖추게 되었다.지반이 이미 튼튼해지고 청사진이 이미 그려졌으며 팀이 이미 집결되였다. 이어서 구상을 한걸음한걸음 진실하고 사용할수 있으며 가치있는 소프트웨어제품으로 전환시키는것이다.