Szoftveripar és üzleti modellek Irodalom Michael A. Cusumano: The business of software Michael Hiltzik: Dealers of lightning Eric Raymond: A katedrális és a bazár
Szoftver technológia Software engineering A szoftver fejlesztés, üzemeltetés, karbantartás szisztematikus, fegyelmezett, mérhet! megközelítése Mérnöki eljárások alkalmazása 1968 NATO Software Engineering Conference Szoftver technológia (folyt.) Tudás, módszerek, eszközök Érintett tevékenységek, területek követelmények meghatározása szoftvertervezés és implementáció szoftver tesztelés szoftver karbantartás konfiguráció menedzsment szoftver folyamat kialakítása szoftver fejleszt! eszközök
Szoftver technológia (folyt.) Kapcsolódó tudományterületek computer engineering számítástudomány menedzsment tudomány projekt menedzsment matematika rendszerelmélet Problémák a szoftverfejlesztés területén Kezelhetetlen komplexitás Túl nagy kód Túl sok programozó Projektek kis hányada sikeres csak Be nem fejez!d! projektek Túllépett határid!k Túllépett költségvetések
Célok Szoftver termékek min!ségének javítása Felhasználói elégedettség növelése Termelékenység fokozása Jobb munkafeltételek kialakítása Történet (hw) Lyukkártya válogató gépek Mechanikus számológépek Els! generációs gépek: elektro- mechanikus számológépek (relék, rádiócsövek) analóg digitális
Történet (hw folyt.) Második generációs gépek: tranzisztor Harmadik generációs gépek: integrált áramkörök Negyedik generációs gépek: mikroprocesszor Történet (hw folyt.) Mainframe terminálok Mini terminálok, munkaállomások Personal Computer
Moore-törvény Történet (sw) 1940-es évek: Közvetlen gépi kódú programozás 1950-es évek: Korai eszközök, gépikódú programozás. 1960-as évek: Magasszint" programozási nyelvek. Mainframek kereskedelmi forgalomban. Operációs r. 1970-es évek Kollaborativ szoftverek, mini számítógépek. 1980-as évek: Személyi számítógépek, végfelhasználói programok 1990-es évek: Objektum orientált programozás. Hálózati technológiák 2000-es évek: Menedzselt kód, interpretált script nyelvek.
Történet (fejleszt!i felh. felület) Lyukkártyák, konzol, írógép Karakteres terminálok Grafikus megjelenít!k GUI Szoftver-jellemz!k A szoftvert fejlesztik, nem gyártják nem gyártási folyamat lényegében szellemi termék (tervezési folyamat) A szoftver nem használódik el A legtöbb szoftver egyedi fejlesztés"
Szoftverfejlesztés Új szoftver kifejlesztése Kibocsátás utáni sw-karbantartás Költségek 1976-81 1992-98 Szoftverfejlesztés Kritikus tevékenység szoftver fejleszt! cégek szoftverre épül! technológiai ipar e-business, telekom szektor, pénzügyi szektor rövidtávú profit hosszútávon ügyfél bizalom változékony piaci helyzet
Szoftver (fejlesztési) folyamat tevékenységei Követemény meghatározás Elemzés,tervezés Implementáció Tesztelés Karbantartás Kihívások Programozó, menedzser struktúra irányíthatóság ~ kreativitás, rugalmasság Követelmények megrendel! vs fejleszt! (El!zetes) költségbecslés Programozói hatékonyság szórása Tervezés és gyártás átfedése Alacsony újra felhasználás
Okok Átfogó fejlesztési stratégia hiánya Nem elég fegyelmezett funkcionális tervezés, követelmény meghatározás Termék tervek stabilizálási vagy módosítási nehézsége Rossz változás kezelési megoldás Elégtelen megrendel!i visszacsatolás Nem világos termék koncepció vagy architektúra Tudás és munkaer! menedzsment problémák A szoftver-folyamat rétegei Folyamat réteg keret, kontextus Módszererek, módszertan réteg tevékenységek irányítása Eszköz réteg (fél)automatikus támogatás CASE Módszer 1 Eszköz 1 Folyamat Eszköz 2 Módszer 2 Eszköz 3
Programozási elvárások Kifejez! képesség komplexitás csökkentése Integráltság tudás kiterjeszthet!sége Er!forrás igény Méretezhet!ség Flexibilitás Programozási nyelvek generációi 1GL közvetlen gépi kód 2GL assembly 3GL magas szint" nyelvek compiler 4GL spec. (általában adatbázis alk.) célú magas szint" nyelvek 5GL vizuális, komponens alapú eszközök
Programozási paradigmák Programozási stílus Imperatív programozás Procedurális nyelvek Objektum orientált nyelvek Deklaratív programozás Funkcionális nyelvek Logikai nyelvek Kevert nyelvek Fejlesztési módszertanok Szoftver fejlesztési folyamat irányítása, struktúrálása Struktúrált rendszer elemzés OOD, OOP RAD Agilis fejlesztés XP RUP
Szoftver ipar Üzleti szervezetek (vállalkozások) Szoftver fejlesztés Karbantartás Kiadás, kereskedelem Szolgáltatások képzés dokumentálás tanácsadás Az iparág változása Szoftver fogalma ~ 1950-es évek Els! sw cég 1955 (Computer Usage Co.) 1960-as évek komputerek "tömeg"- termelése sw-ek iránti kereslet megjelenése HW gyártók - op.r., programozási környezetek "házon belüli" és kereskedelmi sw gyártás
Az iparág változása (folyt.) Relatív alacsony árú mini és micro gépek (DEC, IBM AS400) sw fejlesztés egyetemeken, sw cégekben Személyi számítógépek (PC) irodai alkalmazások növekv! alkalmazás piac domináns op.r-ek Az iparág változása (folyt.) Internet, World Wide Web "Content is king" Open source Mobile computing Open innovation
Szektorok Infrastruktúra szoftverek Vállalati szoftverek op.r., adatbáziskezel!k, middlewarek pénzügy, gyártás, kereskedelem, marketing Szakterület specifikus szoftverek bank, telekom, oktatás Egyedi fejlesztés" szoftverek, testreszabás Üzleti modellek Mit? (termék), Kinek? (piac), Hogyan? (tevékenység) Üzleti modellek elemei Értékteremt! folyamat Piaci lehet!ségek Bevételi csatornák Tevékenységek, folyamatok, tranzakciók
Üzleti modellek (folyt.) Implementációs model Termék stratégia Ügyfél kapcsolatok Kulcs tevékenységek Kulcs partnerek Kulcs er!források Megfogalmazott érték Ügyfél szegmensek Disztribúciós csatornák Költség struktúra Bevétel folyamok Bevételi logika Üzleti modellek (folyt.) Befolyásoló tényez!k versenyhelyzet, ügyfelek, er!forrás helyzet, financiális környezet cég stratégia termékvonal, termék vs szolgáltatás orientáció, piacépítés, K+F politika
A szoftver, mint termék Információ intenzív termék drága el!állítani olcsó reprodukálni Kapcsolódó lényeges szolgáltatások használati érték, eladási érték elengedhetetlen része Értékesítési csatornák, értékesítési ciklus Üzleti lehet!ségek Teljes, holisztikus megoldás szemlélet pl. korai IBM Piaci szegmensek, rések, ahová a domináns cégek nem léptek be Horizontális alkalmazások adatbázis kezel!k (Oracle), általános ERP rendszerek (SAP), félegyedi megoldások Sz"k, vertikális piacok egyedi fejlesztés" szoftverek egyszeri "nagy dobások"
PC-k Üzleti lehet!ségek (folyt.) tömeges, fogyasztói piac szabványos platformok, relatív nyílt technológiák "dobozos szoftverek" Szolgáltatások fejleszt! eszközök, support, integrálás (open source támogatás, middleware, alk. szerverek) on-demand computing Üzleti lehet!ségek (folyt.) Internet infrastruktúra szoftverek (böngész!k, szerverek, middlewarek) webalkalmazások tartalom - tranzakciók new services for old businesses new businesses e-business (e-commerce, ads) Web 2
Üzleti stratégiák Egyen szoftverek ("mindenkinek egy méret") Teljesen egyedi szoftverek 1960-1980 kapcsolva (pl. HWhez, csomagban) teljesen egyedi tömeg (fogyasztói) piac iparág egyedi 1980-2000- alkalmazás szolgáltatás tömeg testreszabás Egyedi vs tömeg termelés Teljesen egyedi szoftverek Egyen szoftverek ("mindenkinek egy méret") Kevés ügyfél Sok ügyfél Specifikus funkcionalitás Standard funkcionalitás Alacsony befektetési kockázat Magas befektetési kockázat Változtatási igények adott ügyfélt!l Változtatási igény a piactól, versenytársaktól
Alkalmazás szolgáltatás Szoftverek megosztott távoli végrehajtással Internet/intranet alapú hozzáférés Hozzáférés vagy el!fizetéses árazás Integrált szolgáltatások Vékony kliens alkalmazások, webservice-k Tömeg testreszabás Koherens piacokra rászabható termékek Tömeg piaci és egyedi termék hibridje Termék vonalak, családok Ügyfelenként kicsit eltér! megoldások
Értékesítési stratégiák Önálló szoftver eladások Kiegészít! eladás értékesítés szoftver/szolgáltatás csomagokban El!fizetéses értékesítés használati id!szakhoz vagy tranzakciószámhoz kötött fizetés Hírdetés szponzorált szoftverek Cég üzleti modellek Szoftver termék cég bevétel 60-80% szoftver termék értékesítésb!l és karbantartásból Szolgáltató cég bevétel nagyrésze szoftverekhez kapcsolódó szolgáltatásokból (support, tanácsadás, üzemeltetés) Hibrid cég szoftver termék fejlesztés és szolgáltatások nyújtása
IBM nyereségek Szoftvertermék vs szolgáltatás
Open source Hozzáférhet!, felhasználható (módosítható), redisztributálható forráskód UNIX, ARPANET hagyományok fejleszt! közösségek (fejleszt!k elosztott hálózata) hozzáférés, hozzájárulás ingyenes, nyílt techológiák lazán koordinált innováció Open innovation Nyílt rendszerek technológia mellett tudás disszemináció nyílt API-k, support 3rd party fejleszt!knek (dokumentáció, min!ség biztosítás), kereskedelmi csatorna megosztása Küls! fejlesztések, ötletek (a bels! mellett) Költség csökkentés, fejlesztés, piacra kerülés gyorsítása Közelebb kerülés a megrendel!khöz (visszacsatolás)