razvoj software-a u microsoftu

30
Razvoj Software-a u Microsoftu Marin Bezić [email protected] 19.12.2011

Upload: ayita

Post on 24-Feb-2016

59 views

Category:

Documents


0 download

DESCRIPTION

Razvoj Software-a u Microsoftu. Marin Bezi ć [email protected] 19 . 12 .201 1. O meni. Osnivač Concero d.o.o. Optimiziram razvojne timove i procese iOLAP Dev Center advisor 4 godine MSFT u Europi Business i marketing management 8 godina MSFT u Redmond -u - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Razvoj  Software-a u  Microsoftu

Razvoj Software-a u Microsoftu

Marin Bezić[email protected]

19.12.2011

Page 2: Razvoj  Software-a u  Microsoftu

O meni• Osnivač Concero d.o.o.

• Optimiziram razvojne timove i procese• iOLAP Dev Center advisor

• 4 godine MSFT u Europi• Business i marketing management

• 8 godina MSFT u Redmond-u• Izbacio na tržište 3 verzije prvog MS

business intelligence proizvoda• Vodio tim od 25 programera u SQL Server

produkt grupi

Page 3: Razvoj  Software-a u  Microsoftu

Izazovi• Napraviti najuspješniji OLAP server• Za globalno tržište• Pobijediti konkurente koji imaju X puta više resursa:

– Oracle, Hyperion, Cognos, Business Objects• Lokaliziran na 8 jezika

– english, japanese, german, french, spanish, chinese, italian, korean• Koordiniran razvoj sa ~1000 ljudi u SQL Server timu

– I još ~1000 u DevDiv• Radi na svim server OS verzijama

– Microsoft podržava 10 god stare OS• Koji će biti podržan slijedećih 10 godina

Page 4: Razvoj  Software-a u  Microsoftu

Teme za danas

• Počeci u Microsoft-u – “startup” mentalitet• Transformacija u Software Inženjering• Kako smo razvijali software • Najčešći problemi u razvoju softvera u našoj

regiji

Page 5: Razvoj  Software-a u  Microsoftu

Kako se razvija software u MS

• Kultura• Organizacija tima• Razvojni ciklus• Vođenje tima• Razvojni procesi• Testiranje i kvaliteta

Page 6: Razvoj  Software-a u  Microsoftu

KULTURA

Page 7: Razvoj  Software-a u  Microsoftu

Kultura

• Menadžment tim definira kulturu• Tie breaker u SQL Server timu:– “Što je najbolje za korisnika?”

• Kultura ima različitih– Command and control– Trust and track

• U kakvoj kulturi želite raditi?

Page 8: Razvoj  Software-a u  Microsoftu

Kultura uspješne organizacije• Meritokracija• Svrha - veliki ciljevi• Uspjeh/rezultat je jedino važan

– Ok je napraviti pogreške – (nauči od njih)– Ok je pitati za pomoć– Izgovori su gubljenje vremena

• Pojedinci:– Ovlašteni– Odgovorni za svoje postupke– Samokritični

• Commitment – korisnici, kvaliteta, schedule

Page 9: Razvoj  Software-a u  Microsoftu

STRUKTURA TIMA

Page 10: Razvoj  Software-a u  Microsoftu

Organizacija timaProduct Unit

Manager

Development Manager

Dev lead

SDE

Test Manager

Test lead

SDET

Group Program Manager

PM lead

PM

Architect

Page 11: Razvoj  Software-a u  Microsoftu

Što znači kvalitetan softver?• Ovisi koga pitate• Korisnici/kupci

– Funkcionalnost radi– Efikasan – troši koliko treba, ne više, resurse kao CPU, disk, memorija– Performantan– Skalabilan– Pouzdan– Lagan za korištenje– Siguran– Dokumentiran

• Proizvođači softvera– Čist kod– Lagan za održavanje– Lagan za testiranje– Instrumentiran – lagan za debug-iranje

Page 12: Razvoj  Software-a u  Microsoftu

RAZVOJNI CIKLUS

Page 13: Razvoj  Software-a u  Microsoftu

Tipični Microsoft App Development Lifecycle

M0 M1 M2 CTP/Beta 1 CTP/Beta 2 RTM/RTW SP

M0 M1

Version N+1

“Eat your own dogfood”

Page 14: Razvoj  Software-a u  Microsoftu

Zašto Milestones/Iteracije?

• Proslavite male pobjede

• Pokažite kod koji radi

• Integriraj komponente rano i često

• Provjeri raspored i rokove

• Prilagodi prioritete, resurse (ako je potrebno)

Page 15: Razvoj  Software-a u  Microsoftu

M0: Temelji za uspješan projekt• Planiranje

– High level requirements– Prioritization of scenarios/use cases/features

• 1 – can’t ship without it, 2 – important , 3 – nice to have– Specifications (at least for M1)– Master schedule

• Infrastruktura– Source code management– Build machine – automated builds– Testing environment – test repository, automated test runs– Work item/bug tracking tool

Page 16: Razvoj  Software-a u  Microsoftu

M1 - Mn: Razvoj i stabilizacija

• Feature teamovi (dev, test, PM) razvijaju funkcionalnost zajedno– Kodiranje i testiranje paralelno (osim UI)– Kada je nešto gotovo?• Kada i test i PM kažu da je gotovo• Kada je test coverage > X%• Kod pregledan• Testovi automatizirani

Page 17: Razvoj  Software-a u  Microsoftu

Vođenje tima• Važan je protok informacija• Važan je ritam• Tjedni sastanci

– Cijeli tim– Koji je status timova i pojedinaca?– Da li kasnimo?

• Stand up meetings (daily scrum) – 5-15 min svaki dan

• Morale events – Cilj je provesti vrijeme zajedno izvan ureda, bolje upoznati ljude

Page 18: Razvoj  Software-a u  Microsoftu

RAZVOJNI PROCESI

Page 19: Razvoj  Software-a u  Microsoftu

Fundamenti su najvažniji• Dev guidelines/standards• Prije nego sto počneš raditi, da li imaš:

– Prioritizirane zadatke– Specifikaciju– Raspored

• Alati– Work item/bug tracking– Source control– Automated build– Automated test runs

• Specs– Functional specs – kako se ponaša aplikacija sa strane korisnika– Design specs – kako će se implementirati

Page 20: Razvoj  Software-a u  Microsoftu

Continuous Integration?

• Dev practice• Frequent integration (synch, check in)• Verified by automated build• To detect (integration) errors quickly

Page 21: Razvoj  Software-a u  Microsoftu

Automatizirani build

• Build server konstantno radi buildove i testira ih– Uzme najnoviju verziju koda– Izbilda cijelu aplikaciju– Pokrene subset funkcionalnih testova– Ako build pukne, ili testovi otkriju regresiju, šalje

se email sa listom promjena od zadnjeg builda

Page 22: Razvoj  Software-a u  Microsoftu

TESTING

Page 23: Razvoj  Software-a u  Microsoftu

Koja je uloga testiranja?

• Otkriti i popraviti greške• Provjeriti vjernost specifikaciji• Ustanoviti trenutnu kvalitetu

proizvoda/rješenja• Pomoći menadžeru odlučiti kada je

proizvod/rješenje gotovo• Smanjiti troškove podrške i održavanja

Page 24: Razvoj  Software-a u  Microsoftu

Tipovi testova• Unit tests• Functional tests• Check-in tests• BVTs• Performance tests• Security tests• Stress tests• Usability tests • Accessibility tests• Localization tests• Globalization tests• OS compatibility tests• Backwards compatibility tests• Forward compatibility tests

Page 25: Razvoj  Software-a u  Microsoftu

END GAME

Page 26: Razvoj  Software-a u  Microsoftu

“Shipping the product”

• Kako znate kada ste gotovi?• “Mogu li popraviti još samo jedan bug?”• “Ali još nije perfektno...”

Što vođe tima moraju napraviti:• Zatvori projekt – pošalji “victory mail”• Proslavi – neka se ljudi osjećaju super• Uzbudi – izazovi i prilike za slijedeću verziju

Page 27: Razvoj  Software-a u  Microsoftu

ZA KRAJ - NAŠI PROBLEMI

Page 28: Razvoj  Software-a u  Microsoftu

Najčešći problemi „u nas”

• Nedostatne specifikacije• Loše planiranje i prioritiziranje posla• Nedovoljan fokus na kvalitetu• Neproduktivno okruženje

Page 29: Razvoj  Software-a u  Microsoftu

Područja za napredak

• Optimizacija procesa• Bolji razvojni alati• Automatizacija• Disciplina