300 likes | 438 Views
Razvoj Software-a u Microsoftu. Marin Bezi ć marin.bezic@concero.hr 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
E N D
Razvoj Software-a u Microsoftu Marin Bezić marin.bezic@concero.hr 19.12.2011
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 verzijeprvog MS business intelligence proizvoda • Vodio tim od 25 programerau SQL Server produkt grupi
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 razvojsa ~1000 ljudi u SQL Server timu • I još ~1000 u DevDiv • Radinasvim server OS verzijama • Microsoft podržava 10 god stare OS • Koji će biti podržan slijedećih 10 godina
Temezadanas • 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
Kako se razvija software u MS • Kultura • Organizacija tima • Razvojni ciklus • Vođenje tima • Razvojni procesi • Testiranje i kvaliteta
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?
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
Š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
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”
Zašto Milestones/Iteracije? • Proslavite male pobjede • Pokažite kod koji radi • Integriraj komponente rano i često • Provjeri rasporedirokove • Prilagodiprioritete, resurse (ako je potrebno)
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
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
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
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
Continuous Integration? • Dev practice • Frequent integration (synch, check in) • Verified by automated build • To detect (integration) errors quickly
Automatizirani build • Build serverkonstantno radi buildovei 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
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
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
“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
Najčešći problemi „u nas” • Nedostatne specifikacije • Loše planiranje i prioritiziranje posla • Nedovoljan fokus na kvalitetu • Neproduktivno okruženje
Područja za napredak • Optimizacija procesa • Bolji razvojni alati • Automatizacija • Disciplina
marin.bezic@concero.hr Hvala!