--- header-includes: - \usepackage{natbib} - \usepackage{longtable,booktabs} - \usepackage{amsmath,amssymb} - \usepackage{lmodern} - \usepackage{minted} - \usepackage{parskip} - \usepackage{url} - \title{Software \& Information Technology Systems} - \assignatura{Integració de Sistemes} - \numpract{Software and Information Technology Systems} - \autor{Artur Blaya} - \usepackage{fvextra} - \DefineVerbatimEnvironment{Highlighting}{Verbatim}{breaklines,commandchars=\\\{\}} --- ###### tags: `IS` # Software and Information Technology Systems # Introduction * El software cada cop més és el centre dels sistemes complets * El software s'adapta a les dificultades econòmiques i tècniques del hard * En el passat, el hard predominava, però ara predomina el software * Els microcontroladors cada vegada són més barats i consumeixen menys energia, això provoca que els dissenyadors de hardware, passin a tenir la integració de hardware en el desenvolupament de soft * El cost de fabricació de soft és pràcticament 0 * Té la capacitat d'adaptar-se a futurs canvis * És un medi molt flexible, es pot implementar una certa intel·ligència * Per reduir el cost s'utilitza grans llibreries de codi, això contribueix a fer que hi hagi codi obert per donar diversos serveis * Com a conseqüència, el software té una petita complexitat, cada vegada és més important saber en quina arquitectura en trobem * El millor és començar amb un sistema fàcilment millorable # Formal Standards S'han desenvolupat estàndards relacionats amb: * El paper * Les tasques * Els resultats # First Software * El hardware s'ha d'adaptar al hard que tenim. És important que el soft s'ha d'adaptar al hard ## Heurística - Today I am more convinced than ever. Conceptual integrity is central to product quality. Having a system architect is the most important step toward conceptual integrity. Significat: - La integritat conceptual és fonamental per la qualitat del producte - Tenir un sistema ben arquitecturat és el pas més important cap a la bona integritat conceptual # Software as a system Component * El software és extensible, no té una estructura jeràrquica * Econòmic, és factible fer-lo evolutiu * Tot software s'ha d'adaptar al hard, s'ha de comunicar correctament amb el hard * Triem software, ja que no hi ha tecnologies semblants que puguin comparar-se amb el software * El software com a component facilita la integració del soft amb el hard i facilita afegir canvis continus # Software for Modern Systems ## Software Roles * Programari d'aplicació per al mercat de masses * Real-time analysis and control software. * Human interactive assistants. Això provoca: * Enmagatzegatge de grans quantitats de dades i la seva gestió * Interficie que interactua l'usuari * Adaptació a l'entorn i als usuaris * Control de maquinari en temps real * Components informàtics produïts en massa amb capacitat de ser personalitzat * Coevolució dels sistemes a mesura que canvia la tecnologia Així doncs: * Els costos d'enginyeria del soft son grans * No obstant, son més barats que els sitemes de hard complexos Hi ha hagut una evolució del software: * Assemblador * Software compilat * Software interpretat * Software de domini específic # Systems, Software & Process Models * El software no pot desenvolupar-se sense saber quin hardware tindrem * Les actualitzacions es poden fer periòdicament * La distribució i l'actualització de software és més barata * La certificació de les noves versions (testatge) en alguns casos suposa un gran esforç # Waterfalls for Software? * El hard utilitza un model de cascada, va per parts i es produeixen iteracions * En els sistemes de soft, no surt bé aplicar aquest model * El que fa és implementar el mètode d'espirals # Spirals for Hardware * Equivalent a crear un nou sistema des de 0 * El desenvolupament del procés s'ha de pensar molt bé, i els seus requisits i objectius * Fer prototips de hard és molts costos # Integration: spirals and circles * El hardware hauria d'estar disponible per poder testejar el soft * S'ha de desenvolupar hard i soft paral·lelament ## Heurística - Do the hard part first - Fes la part difícil primer: Fes primer els reptes de programari més difícils. - La resposta arquitectònica als problemes de la integració hard-soft és dissenyar el procés i el producte. # Hierarchy * Un sistema està format per altres sistemes * Es poden descompondre sistema - subsistema... * Integració - partir de sistemes petits i els ajuntem per crear sistemes més grans * Llenguatge C - una instància es pot veure com un sistema, i les crides de les instruccions compilades els seus components # Object Orientation * Col·lecció de funcions i dades * Poden ser actius - poden conviure amb altres objectes # Layers * Les capes són una forma de jerarquia - elements de les capes més baixes proveeixen servei a capes superiors, però aquestes no poden accedir a les parts petites * Middleware: traductor entre aplicacions distribuïdes i sistema operatiu # Large, Autonomous Components * La migració del software cap a capes, és parcial * A l'hora de descompondre un sistema ... # The Role of Architecture in SW Systems * L'arquitecte és el responsable de què i el com es fa * també és responsable de si el sistema evolucionable # Programming Languages * Abstracció del hardware * Hi ha diversos llenguatges i de diversos tipus ## Heurística - Programmers deliver the same number of lines of code per day regardless of the language they are writing in - Els programadors entreguen el mateix nombre de línies independentment del llenguatge # Architectures, Models and Visions * Les arquitectures de programari es defineixen com a metàfores. * Els components d'aquestes arquitectures hauran de funcionar de manera similar als components físics associat. * Metàfora de l'escriptori: l'escriptori d'un ordinador com a escriptori físic de l'usuari. Trobem documents, carpetes i dreceres com la calculadora o el bloc de notes. # Heurístiques * Choose components so that each can be implemented independently of the internal implementation of all others. * Escollir els complements de manera independent * Programmer productivity in lines of code per day is largely independent of language. For high productivity, use languages as close to the application domain as possible. * La productivitat del codi no depèn del llenguatge * The number of defects remaining undiscovered after a test is proportional to the number of defects found in the test. The constant of proportionality depends on the thoroughness of the test but is rarely less than 0’5. * Els defectes que queden després d'arreglar els defectes, són la meitat. Si inicialment tens 50 errors. Quan les has arreglat, encara et queden 25 * Very low rates of delivered defects can be achieved only by very low rates of defect discovery. * Al tenir pocs bugs només depèn d'haver posat pocs bugs - no s'assoleix treient defectes "no és més net qui neteja més, sinó qui embruta menys (aplicat al món del software)" * Personnel skill dominates all other factors in productivity amb quality. * Per tenir una bona productivitat, depèn de les habilitats personals, no tant de la metodologia, etc. ( això són filigranes) * Software should be grown or evolved, not built. * El programari s'ha de fer créixer o evolucionar, no construït. * The cost of removing a defect from a software system rises exponentially with the number of development phases since the defect was inserted. * El cost d'eliminar un defecte d'un sistema de programari augmenta exponencialment amb el nombre de fases de desenvolupament des que es va inserir el defecte. * The cost of discovering a defect does not rise. It may be cheaper to discover a requirements defect in customer testing than in any other way, and hence the importance of prototyping. * El cost de descobrir un defecte no augmenta. Pot ser més barat descobrir un requisit defecte en les proves del client que de qualsevol altra manera, i d'aquí la importància del prototipatge. * Do not fix bugs later; fix them now. * No corregiu els errors més tard; arregla'ls ara. \clearpage # Presentació En general m'ha costat seguir la presentació. No obstant això, les explicacions del Pere m'han ajudat a consolidar els coneixements, sobretot, la part de les heurístiques... ## Punts Forts * La presentació ha servit per tenir una base de coneixement del temari. La qual ha estat vitaminada amb les explicacions del docent ## Punts Febles * Els presentadors llegien constantment els continguts * moltes coses no m'han quedat clares * Hi havia moltes faltes * Canvi de ritme entre els dos presentadors * Les heurístiques no s'han entès