Gå til innhold

Samarbeid mellom programmerere i prosjekter


Anbefalte innlegg

Heisann!

 

Jeg har i lange stunder lurt på en ting angående samarbeid mellom programmererene i et eller annet stort prosjekt hvor det for eksempel utvikles programvare eller spill.

 

Si at man har ti programmerere (ja, det er da ikke forferdelig mye, eller lite?), som alle sitter og skriver kode samtidig. Vil da ikke det være uhyre vanskelig å kombinere denne koden de skriver? Jeg mener, man har jo funksjoner, variabler, klasser og hele pakken, som alt skal kobles sammen til ett program. Hender det ikke de samme funksjonene defineres to ganger, at de samme variablene deklareres to ganger, osv? Jeg har tenkt på mange problemer av den typen, men enda verre blir det antagelig når man har fem programmerere, som alle jobber til forskjellig tid, som alle bor veldig langt fra hverandre. Er det noen spesielle systemer for dette, eller er det ikke så vanskelig å organisere som jeg tror? Jobber man kanskje med så mange forskjellige filer, på så mange forskjellige områder av programmet, at dette sjeldent er noe problem? :roll:

 

Jeg spør fordi jeg antagelig selv skal begi meg ut i en slik bransje (håper jeg), og om ikke altfor lenge vil jeg antagelig sitte å utvikle mitt eget MMORPG (forhåpentligvis), og jeg finner tanken på flere programmere i et prosjekt så skummel, at kanskje å ta all kodingen selv ville vært det beste, men det er mye!

 

På forhånd takk for svar.

Lenke til kommentar
Videoannonse
Annonse

Sjekk ut http://www.wincvs.org

Alle jobber ikke i de samme filene til enhver tid... Husk; alle jobber utifra et design... Ala

kravspec->design->utvkling->testing->prod

 

Dette vil da lede til at flere mennesker kan utvikle hver sin del av programvaren fordi det er dokumentert hvordan grensesnittene mellom de er...

 

Skjønner?!?!

Lenke til kommentar

For å ta et enkelt eksempel: Programmerer A jobber med forretningslogikken i et system (applikasjonslag og domenelag, eventuelt GUI), mens programmere B tar seg av det tekniske aspektet ved å faktisk lagre/endre/hente ut informasjon, f.eks fra database. Programmerer B vil da sannsynligvis lage et grensesnitt som programmerer A da kan bruke, f.eks kan A kalle metoden lagreKunde(data) uten å bry seg mer om hva som skjer i denne metoden eller delen av systemet. De vil altså planlegge (gjennom design-prosessen) hvordan informasjonsflyten skal gå, og ut ifra det sette opp grensesnitt de forskjellige utviklerne skal arbeide mot. Ved å gjøre det slik vil man automatisk få en fordeling av ansvar slik at en forhindrer dobbelt-arbeid.

 

Eksepelet mitt er VELDIG enkelt med bare to programmerere, men du har igrunn samme prinsippet på større prosjekter (selv om det blir betydelig mer komplisert).

Lenke til kommentar

Takker for svar. Jeg skjønte eksempelet til smetho rimelig godt, selv om jeg er rimelig sikker på at det krever en god del planlegging for å få et prosjekt med 5 programmerere som ikke sitter i samme rom til å fungere. Det ble litt klarere, takk. ;)

Lenke til kommentar

Det finnes ulike utviklingspraksiser man kan følge, og noen lyse hoder samler slike i form av utviklingsmodeller : ) En modell som får mye oppmerksomhet for tiden er eXtreme Programming, men denne er først og fremst beregnet på mindre team, opptil ca. 12 deltagere. Versjonskontroll er også et uvurderlig verktøy, selv benyttet meg av Perforce.

Lenke til kommentar

ved større prosjekter legger man mye arbeid i analyse og design slik at selve kodingen blir en triviell sak.

Use cases og diverse diagram samt dokumentasjon blir veldig viktig. UML notasjon er utbredt til dette.

Ledelse blir viktig samt samarbeid og samarbeidsteknologi

 

andre stikkord; prototyping, mockups, testing og oppfølging og kvalitetssikring

Lenke til kommentar

Takk for svar.

 

Jeg tror jeg har fattet det ganske godt, men tror det blir verre når jeg skal gjøre det praktisk. Det man skulle hatt, var et program som gjorde det mulig for alle koderne å jobbe på samme prosjektet (og prosjektet ligger på internett). Da hadde det ikke være mye problemer med "jeg har allerede definert en slik funksjon", "oops, det er to forskjellige versjoner av en noe forskjellig kode", osv. Er det en løsning? Jeg tror jeg har hørt om noe slik, men det er mulig det er i nettverk.

Lenke til kommentar

enkelt! Sørg for å lage en api underveis. Når en programmerer har laget/endret en funksjon så oppdaterer han api-en. Dersom en annen trenger en funksjon, så sjekker han api-en, og om funksjonen ikke finnes så tar han kontakt med den som har ansvaret for denne delen av systemet. De kan da bli enige om hvem som skal implementere denne funksjonen.

Stikkordet her er ansvar.

Ligner vel mest på eXtreme Programming. (angrer litt på at jeg ikke valgte dette som valgfag neste år...)

Lenke til kommentar

Sanoj, høres ut som versjonskontroll på meg, alle deltagerne jobber på en delt kodebase. eXtreme Programming omtaler kodeintegrasjon, og det anbefales at man integrerer flere ganger per dag, da kan man oppdage slik konflikter i koden snarest mulig. Det finnes uansett mange utviklingsmodeller å velge mellom, f.eks Alistair Cockburns Crystal-familie.

Lenke til kommentar
Det man skulle hatt, var et program som gjorde det mulig for alle koderne å jobbe på samme prosjektet (og prosjektet ligger på internett). Da hadde det ikke være mye problemer med "jeg har allerede definert en slik funksjon", "oops, det er to forskjellige versjoner av en noe forskjellig kode", osv. Er det en løsning? Jeg tror jeg har hørt om noe slik, men det er mulig det er i nettverk.

 

www.groove.net

 

-alt ligger lagret hos hver bruker og blir synkronisert når man logger seg på groove.

-andre løsninger er en delt database, server, vpn osv.

Lenke til kommentar

Tusen takk begge to!

 

Det var noe veldig likt det jeg hadde tenkt på. Dette var som sagt bare noe jeg var nysgjerrig på, men jeg får vurdere å invistere i noe slikt hvis saken går den veien jeg vil at den skal gå. :) Skal ta å legge den sida til i bokmerker. ;)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...