소프트웨어 회사

Software company

소프트웨어 회사소프트웨어, 소프트웨어 기술, 유통, 소프트웨어 제품 개발의 다양한 형태가 주요 제품인 회사다.[1]그들은 소프트웨어 산업을 구성한다.

종류들

소프트웨어 회사에는 다음과 같은 여러 가지 유형이 있다.

이러한 모든 사항은 다음 중 하나 또는 여러 가지로 분류할 수 있다.[2]

  • 계약상 - 소프트웨어 회사가 외부로부터 특정 소프트웨어를 제공하기로 계약한 경우(대부분 아웃소싱)
  • 제품 개발 - 바로 사용할 수 있는 패키지 소프트웨어, 상용 기성품

소프트웨어 회사의 공통 역할

소프트웨어 회사를 조직하는 것은 경험이 많은 사람들이 조직 문제를 독특한 이익으로 바꿀 수 있는 매우 전문적인 유형의 경영 기술이다.예를 들어, 하위팀을 다른 시간대에 분산시키는 것은 팀, 시스템 및 절차가 잘 확립되어 있다면 24시간 회사 근무가 허용될 수 있다.개발팀보다 8시간 앞이나 뒤 시간대에 있는 테스트팀이 테스터가 발견한 소프트웨어 버그를 고치는 것이 좋은 예다.

전문 소프트웨어 회사는 일반적으로 최소 3개의 전용 하위 팀으로 구성된다.

더 큰 소프트웨어 회사에서는 더 큰 전문화를 채택하고 있으며, 꽤 자주 다음과 같은 전문화가 있다.

구조

소프트웨어 회사의 매니저는 보통 개발 책임자(HOD)라고 불리며 이해관계자에게 보고한다.[3]조직의 규모에 따라 직접 또는 관리자/리더들을 통해 서브팀을 이끈다.보통 최대 10명으로 구성된 팀이 가장 많이 운영된다.더 큰 조직에는 일반적으로 두 가지 계층 모델이 있다.

소프트웨어 회사의 일반적인 구조

모든 팀들은 완전히 독립적이고 그들은 다른 프로젝트에서 따로 일한다.구조는 간단하고 전 직원이 한 명에게 보고하는데, 지식 교류와 최적의 인력 활용 측면에서 좋은 해결책은 아니다.

행렬 구조

이 모델에는 각 주요 전문화를 위한 전담 매니저/리더들이 있으며, 제품/프로젝트 관리자가 주도하는 특정 프로젝트에 그들의 직원을 "대여"하며, 그들은 공식적으로 또는 비공식적으로 사람들을 구입하고 그들의 시간을 지불한다.이를 통해 각 개인 직원은 제품/프로젝트 관리자와 전문 "자원" 관리자인 두 명의 상사를 갖게 된다.한편으로, 그것은 인적 자원의 사용을 최적화하고, 다른 한편으로, 그것은 한 관리자가 구조에서 우선순위를 갖는 것에 대한 갈등을 야기할 수 있다.

이러한 구조물의 변형도 여러 가지가 있으며, 여러 부서와 단위 내에서 이러한 구조가 확산되고 분열되어 있는 조직도 적지 않다.

방법론

소프트웨어 회사들은 코드를 생산하기 위해 많은 다양한 방법론을 사용할 수 있다.여기에는 다음이 포함될 수 있다.

또한 나선형 모델, Rational Unified Process(RUP)[8] 또는 MSF와 같은 두 가지 모두를 결합하는 방법론도 있다.[9]

제품 수명 주기

사용된 방법론에 관계없이 제품 수명 주기는 항상 최소 세 단계로 구성된다.

  • 설계 – 비즈니스 및 기술 사양 모두 포함
  • 코딩 – 개발 자체
  • 테스트 – 품질 관리

각 단계는 전체 시간의 30%를 차지하는 것이 이상적이며 나머지 10%는 예비한다.

이러한 그룹 간의 상호 작용에 대한 UML 시퀀스 다이어그램은 다음과 같이 보일 수 있다.

네 개의 주요 그룹 간의 일반적인 상호작용

각 단계에서 서로 다른 그룹이 주요 역할을 수행하지만, 각 유형의 역할은 전체 개발 과정 동안 모두 포함되어야 한다.

  • 애널리스트들은 사업시방서를 완성한 후 변화하는 사업상황을 관리해 시간이 지남에 따라 변화할 가능성을 최소화한다.그들은 또한 최종 제품이 시작 시 명시된 비즈니스 요구를 충족시킬 수 있도록 전체 개발 프로세스 동안 프로그래머와 테스터를 모두 지원한다.이 프로세스는 최적의 비즈니스 계층을 제공하는 데 가장 적합한 솔루션이기 때문에 비즈니스 분석가를 고객에게 최종 솔루션을 제공하는 동안 가장 이상적인 핵심 참여자로 간주한다.
  • 프로그래머는 설계 단계에서 기술 사양을 수행하는데, 그래서 프로그래머/디자이너라고 하며, 시험 시간에는 버그를 수정한다.
  • 테스터는 설계 단계에서 테스트 시나리오를 완료하고 코딩 단계에서 평가한다.

시스템 및 절차

소프트웨어 회사는 모든 하위 시스템에 걸쳐 내부적으로 구현되고 작동되는 다양한 시스템과 절차를 보유하고 있다.여기에는 다음이 포함된다.

비즈니스 분석가

프로그래머

테스터

프로젝트/제품 관리자

또한 애플리케이션 라이프사이클 관리(ALM)도 있는데, 이러한 기능 중 일부를 하나의 패키지에 내장하고 그룹 전체에 걸쳐 사용된다.그것들은 볼랜드, ECM 또는 컴푸웨어와 같은 다양한 공급업체로부터 공급된다.

효율성 감사

잘 확립된 소프트웨어 회사들은 대개 그들 자신의 효율성을 측정하는 어떤 방법을 가지고 있다.이는 일반적으로 다음과 같은 주요 성과 지표(KPI) 집합을 정의함으로써 이루어진다.

  • 개발자가 코드의 시간 단위 또는 소스 라인당 수행한 평균 버그 수
  • 테스트 주기당 테스터에서 찾은 버그 수
  • ZBB(Zero Bug Bounce)까지의 평균 테스트 사이클 수
  • 테스트 사이클의 평균 시간
  • 작업의 실제 시간과 비교한 예상 작업 시간(계획의 정확성)
  • 기준선에 대한 수정 횟수

많은 조직이 최적의 CMM(Capability Mergency Model) 수준에 도달하는 데 초점을 맞추고 있으며, 여기서 "최적화"가 반드시 최고를 의미하지는 않는다.카네기-멜론 대학SEMA나 특정 ISO 표준과 같은 다른 시스템도 있다.소규모 소프트웨어 회사들은 때때로 덜 정형화된 접근법을 사용할 것이다.조직은 그들만의 스타일을 고안하는데, 그것은 총체적 테크노크라시(모든 것이 숫자로 정의되는 곳)와 총체적 무정부 상태(숫자가 전혀 없는 곳) 사이에 있다.조직이 어떤 방향으로 가든지 간에, 그들은 이미 존재하는 개발 과정에 변화를 도입하는 비용과 위험을 설명하는 피라미드를 고려한다.

변화의 위험과 시간 비용을 보여주는 피라미드

참고 항목

참조

  1. ^ "What is a Software Company Today?". RedMonk. 2014. Retrieved June 2, 2017.
  2. ^ 소프트웨어 프로세스: 원칙, 방법론 및 기술 저자: 장 클로드 데르니메, 바다라 알리 카바, 데이비드 와셀 페이지 166
  3. ^ 그린라이트:개념에서 피치 페이지 12까지 사실/실제 TV 아이디어 개발
  4. ^ PRINGS2를 사용하여 성공적인 프로젝트 관리
  5. ^ PMBOK 가이드 사용 설명서
  6. ^ 익스트림 프로그래밍 계획
  7. ^ Scrum을 통한 신속한 프로젝트 관리
  8. ^ 합리적으로 통합된 프로세스: 작업자의 RUP 가이드
  9. ^ MSF(Microsoft Solutions Framework): 포켓 가이드