2010-05-19 2 views
7

나는 본질적으로 동일한 제품을 위해 소프트웨어를 작성하는 수백 명의 회사에서 일하고 있습니다. 많은 사람들이 소프트웨어 자체에 의존하기 때문에 소프트웨어의 품질은 높아야합니다. 이 때문에 모든 주요 쟁점은 자동 또는 수동으로 새로운 수표로 귀결되었습니다.많은 수의 개발자가 성가신 프로세스 또는 저품질 소프트웨어없이 소프트웨어를 함께 작성할 수 있습니까?

결과적으로 소프트웨어를 제공하는 프로세스가 점점 더 부담스러워지고 있습니다. 따라서 더 많은 개발자가 필요합니다 ... 잘 볼 수있는 것은 악순환입니다.

이제는 소프트웨어를 신속하게 출시하는 데 문제가 있습니다. 심각한 문제로 한 줄의 코드를 변경하는 데 걸리는 시간은 적어도 하루입니다.

소프트웨어 품질을 유지하면서 대규모 조직에서 소프트웨어 전송 속도를 높이기 위해 어떤 기술을 사용합니까?

+2

역사적으로, 그들은 정말하지 않습니다. –

답변

6

저는 또한 크고 귀찮은 조직에서 일합니다. 몇 가지 방법을 성공적으로 구현했지만 두 가지가 특히 유용합니다.

반복 및 증분 개발 - 출시주기를 짧고 짧게 유지하십시오. 대규모 팀 전체에서 릴리스간에 여러 변경 사항이 적용되면 통합의 악몽에 빠질 수 있습니다.

대기업은 개발 일정이 길어 큰 프로젝트 계획을 세우고 있습니다. 싸워라. 개발 초기 2 주 후에 전체 인식이 바뀔 수있는 경우 일년 내내 프로젝트를 계획하는 것은 말이되지 않습니다. 소규모 점진적 릴리즈를 만들고 지속적으로 변화하는 요구 사항에 적응하는 아이디어에 익숙해 지도록 이해 관계자를 조정하십시오.

자동 단위 테스트 - 이는 우수한 품질의 소프트웨어를 출시 할 수있는 좋은 방법입니다. 최악의 버그는 다른 곳에서 예기치 않은 결과가있는 무고한 코드 변경으로 인해 발생합니다. 포괄적 인 단위 테스트는 아마도 이런 종류의 버그를 잡는 가장 좋은 방법 일 것입니다. test driven development 또는 behavior driven development으로 졸업 할 수 있다면 더욱 좋습니다.

대규모 조직은 평범한 개발자가 될 것입니다. 그것은 삶의 사실입니다. 자동화 된 단위 테스트는 그 (것)들에 시선을 끄는 중대한 방법이다. 더 나은 개발자 중 한 명에게 단위 테스트를 작성하게하십시오. 최소한 코드가 작동한다는 확신을 가질 것입니다 (추악하더라도).

+1

+1 - 둘 다 동의 함. 조정은 어렵지만 출시주기가 짧아도 (작은 개선의 경우에도) 품질과 사기가 높아졌으며 대기업에서는 두 가지 큰 문제가 있음을 알았습니다. – wlangstroth

+0

두 의견에 모두 동의하며 감사합니다 dbyrne & Will. 우리는 애자일 (Agile)을 구현하고 있습니다. 이는 또한 빈곤 한 개발자를 찾아내는 좋은 방법입니다. 그리고 우리는 단위 테스트를 가지고 있습니다 (그러나 몇몇 독립적 인 경우를 제외하고는 진정한 테스트 주도 개발은 아닙니다). 여기에 실제로 두 가지 도전이 있습니다 - 위에서 언급 한 바와 같이 - 우리가 변화해야 할 부분을 파악한 다음 많은 사람들이 새로운 것을 시도하도록 설득해야하는 큰 조직에서 그 변화를 구현하는 것이 무엇인지 파악합니다. – Wikis

4
+0

링크, 특히 조엘 테스트에 대해 StudiousJoseph에게 감사드립니다. 나는 우리가 5 점을 얻은 것 같다고 생각한다. 그러나 문제는 더 큰 조직을 함께 일하게하는 것에 관한 것인데, 그 환경에 특별한 것이 있는가? (이들은 여전히 ​​유용한 링크입니다!) – Wikis

2

프로세스를 개선하는 데는 여러 가지 방법이 있지만 핵심 구성 요소는 modularity입니다. 코드와 조직의 책임을 명확하게 구분하고 명확하고 일관된 인터페이스를 정의함으로써 하나의 큰 팀은 모든 작은 팀이 서로 묶일 수 있습니다.

+0

예, Matt S, 모듈성에 대해 옳습니다 - 감사합니다. 그러나 종종 대기업은 작을 때 많은 레거시 코드를 다루고 있습니다 ... 따라서 모듈성은 소급 적으로 수행되어야하며 시간은 결코 충분하지 않습니다 ... = :-) 이는 또한 문제 - 장기간의 디자인을 고려하는 대신 단기적인 사고. – Wikis

1

현명한하지만 우울한 말 :

  • 프레드 브룩스 : Adding programmers to a late project makes it later.

  • Gerry Sussman : 프로그래머는 저항기를 병렬로 결합합니다.

  • 다른 사람 : 프로젝트 비용은 프로그래머 수와 일정 기간을 곱한 값입니다. 작동 할 수

뭔가 : 바람직하게는 언어를 통해 운영 한 두 사람에 의해 만들어진 핵심 응용 프로그램이되도록

프로젝트를 구성합니다. 그런 다음 모든 프로그래머가 사용자이되도록 해당 언어로 코딩하십시오.

나는 언어 기반 제품을 생각 해요 : SAS, S/R, MATLAB

+0

마이크 Dunlavey 칭찬에 감사드립니다. 따옴표는 The Mythical Man Month를 생각 나게합니다. 우리가 Matlab을 사용하는 동안 우리는 프로젝트를 다시 시작한 1-2 명이 넘는 것입니다. 이 소프트웨어는 수천 년에 걸친 인력을 보유하고 있습니다 (기존 코드에 대한 이전 주석 참조). – Wikis

+1

@ 마크 : 빌 클린턴의 말을 인용 해, 나는 너의 고통을 느낀다. –

+0

감사합니다. Mike Dunlavey! 나는 그것을 느낀다. = = ---( – Wikis

관련 문제