---
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