razvoj software-a u microsoftu
DESCRIPTION
Razvoj Software-a u Microsoftu. Marin Bezi ć [email protected] 22. 9 .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 PresentationTRANSCRIPT
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
Image credit: http://nexus404.com/Blog/2007/06/04/world-atlas-rubik-cube/
http://www.gartner.com/technology/media-products/reprints/microsoft/vol2/article15/article15.html
Gartner Magic Quadrant for Business Intelligence Platforms, 2011
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
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
Počeci u Microsoftu – V1
• 7.7.97 – developer u OLAP Services timu• Cilj je bio izbaciti v1 u godinu dana• Mali tim• Startup mentalitet• Kauboji• “Death March”• Uspjeh nakon svega – verzija 1 je izašla 10.98!
Transformacija – V2
• Izazovi verzije 2 – Postojeći korisnici
• Backwards compatibility
– Veći tim• Komunikacija
– Integracija sa SQL Server organizacijom• Noćni build
• Novi procesi i alati– No spec, no code– Catch mistakes early (Reviews are good)
Mašina za razvoj – V3
• Primjenjene najbolje prakse vođenja projekata i software inženjeringa
• Automatizirana integracija• Automatizirano testiranje• Sigurnost integrirana u sve faze razvoja
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
Organizacija timaProduct Unit
Manager
Development Manager
Dev lead
SDE
Test Manager
Test lead
SDET
Group Program Manager
PM lead
PM
Architect
Test/QA
• Test “zastupa prava korisnika”• U redu je ako dev ne voli test – znači test radi
dobro posao• Test manager – veto na isporuku proizvoda • SDET – software design engineer in test, piše
kod da testira proizvod• STE – software test engineer, manualno
testiranje, test analiza itd.
Š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 raspored i rokove
• Prilagodi prioritete, 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 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
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