본문 바로가기
컴퓨터 | IT

소프트웨어 개발

by 호기심심풀이 2021. 1. 31.
반응형

소프트웨어 개발 프로세스

소프트웨어 개발

소프트웨어 개발은 응용 프로그램, 프레임 워크 또는 기타 소프트ㅜ에어 구성 요소를 만들고 유지 관리하는 데 관련된, 구상, 지정, 설계, 프로그래밍, 문서화, 테스트 및 버그 수정 과정이다.

소프트웨어는 다양한 목적으로 개발될 수 있으며, 세 가지 가장 일반적인 용도는 특정 클라이언트 / 비즈니스의 특정 요구(맞춤형 소프트웨어의 경우), 일부 잠재적 사용자의 인식된 요구(상업 및 오픈 소스 소프트웨어의 경우), 개인적인 사용을 위해 개발될 수 있다. 일상적인 임베디드 소프트웨어 개발, 즉 소비자 제품을 통제하기 위해 사용되는 것과 같은 임베디드 소프트웨어의 개발은 통제된 물리적 제품의 개발과 통합되어야 한다. 시스템 소프트웨어는 애플리케이션과 프로그래밍 프로세스 자체의 기초가 되며, 종종 별도로 개발된다.

시스템 개발 과정

1. 문제분석 및 시장조사

소프트웨어 제품에 대한 아이디어의 원천은 풍부하다. 이러한 아이디어는 잠재적인 신규 고객, 기존 고객, 제품을 거부한 판매 잠재 고객, 기타 내부 소프트웨어 개발 직원 또는 창의적인 제3자의 인구 통계 등을 포함한 시장 조사로부터 나올 수 있다. 소프트웨어 제품에 대한 아이디어는 일반적으로 경제적 타당성, 기존 채널 배포에 적합함, 기존 제품군에 미칠 수 있는 영향, 필요한 기능 및 회사의 마케팅 목표에 적합함을 위해 마케팅 담당자가 먼저 평가한다. 마케팅 평가 단계에서는 비용과 시간 가정이 평가된다. 1단계 초기에 마케팅 및 개발 담당자에 의해 생성된 보다 상세한 정보를 바탕으로 프로젝트를 더 추진해야 하는지에 대한 결정이 내려진다.

소프트웨어 개발은 고객이 요구하는 것을 절충하거나 그 이상을 포함할 수 있기 때문에, 소프트웨어 개발 프로젝트는 인력, 리스크 관리, 지적 재산권, 예산 책정, 위기 관리 등과 같은 덜 기술적인 문제로 빠져들 수 있다. 또한 이러한 프로세스로 인해 비즈니스 개발의 역할이 소프트웨어 개발과 중복될 수 있다.

2. 계획공정

계획은 프로젝트에 속한 것들을 발견하고자 하는 모든 활동의 목표다. 소프트웨어 프로그램을 만드는 데 있어 중요한 작업은 요구 사항 또는 요구 사항 분석을 추출하는 것이다. 고객은 일반적으로 최종 결과로 무엇을 원하는지 추상적으로 알고 있지만 소프트웨어가 무엇을 해야 하는지 알지 못한다. 숙련되고 경험이 풍부한 소프트웨어 엔지니어는 이 시점에서 불완전하고 모호하거나 심지어 모순된 요구 사항을 인식한다. 라이브 코드를 자주 시연하면 요구 사항이 잘못될 위험을 줄이는 데 도움이 될 수 있다.

고객에게서 일반적인 요구사항을 수집한 후에는 개발 범위에 대한 분석을 결정하고 명확하게 명시해야한다.

3. 디자인

요구사항이 확정되면 소프트웨어 설계 문서에서 소프트웨어 설계를 설정할 수 있다. 여기에는 주요 모듈의 예비 또는 고급 설계가 포함되며, 부품들이 어떻게 서로 결합되는지에 대한 전체적인 그림이 포함된다. 언어, 운영 체제 및 하드웨어 구성 요소를 모두 알아야한다. 그런 다음 프로토타이핑을 개념 증명으로 사용하거나 요구 사항을 강화하는 등 상세하거나 낮은 수준의 설계가 만들어진다.

4. 구현, 테스트, 문서화

구현은 소프트웨어 엔지니어가 프로젝트의 코드를 실제로 프로그래밍하는 프로세스의 일부다.

소프트웨어 테스트는 소프트웨어 개발 프로세스의 필수적이고 중요한 단계다. 공정의 이 부분은 가능한 한 빨리 결점이 인식되도록 한다. 일반적으로 시험 주도 개발로 알려진 일부 프로세스에서는 시험이 구현 직전에 개발되어 구현의 정확성을 위한 지침 역할을 할 수 있다.

향후 유지보수 및 개선을 위한 소프트웨어 내부 설계 문서화는 개발 전반에 걸쳐 이루어진다. 여기에는 외부 또는 내부 API 작성도 포함될 수 있다. 개발 팀이 선택한 소프트웨어 엔지니어링 프로세스는 필요한 내부 문서를 결정한다. 계획 기반 모델(예: 폭포수)은 일반적으로 애자일 모델보다 더 많은 문서를 생성한다.

5. 구축 및 유지 관리

배포는 코드가 적절한 테스트, 릴리스 승인, 판매 또는 운영 환경에 배포되는 즉시 시작된다. 여기에는 설치, 사용자 정의(예: 고객의 가치에 대한 매개 변수를 설정하는 방법), 테스트 및 평가 기간이 길어질 수 있다.

소프트웨어는 올바르게 사용할 경우에만 효과적이기 때문에 소프트웨어 교육 및 지원이 중요하다.

새로 발견된 결함 또는 요구 사항에 대처하기 위해 소프트웨어를 유지 관리하고 개선하는 데는 상당한 시간과 노력이 들 수 있다. 요구 사항을 충족하지 못할 경우 소프트웨어를 다시 설계해야 할 수 있기 때문이다. 대부분의 경우 보고된 문제를 해결하고 소프트웨어를 계속 실행하기 위해 정기적으로 유지보수가 필요하다.

반응형

댓글