- Sistema (S.O, drivers)
- D'aplicació (Suite ofimàtica, navegador, edició d'imatge, etc...)
- Desenvolupament (Editors, compiladors, interprets, ...)
- Disc dur: emmagatzemar de forma pemanent els arxius executables i els de dades.
- Memòria Ram: emmagatzemae de forma temporal el codi binari dels arxius executables i els arxius de dades necessaris.
- CPU: llegeix i executa instruccions emmagatzemades a la memòria RAM, tant com les dades necessàries.
- E/S : recull dades noves des de l'entrada, es mostren els resultats, es llegeixen/es guarden en disc
- Codi font: arxiu de text legible en llenguatge de programació.
- Codi objecte: arxiu binari no executable
- Codi executable: arxiu binari executable.
Disciplica que estudia els principis, metologíes per al desenvolupament i manteniment de sistemes de software
- desenvolupament de software: tèrmit més apropiat que "ingeniería de software" ja que aquest implica nivells de rigor i proba, processos no apropiats per a tot tipus de desenvolupament de software.
- Ingeniería del software: estudia creació de software fiable, de calitat donant software operacional i de manteniment.
Fases princiapls
- Anàlisis : Estudi del que vols o vol el client
- Disseny : Plasmar l'idea
- Codificació : Creació del programa
- Proves : Testeig d'errors(trobar la major cantitat d'errors)
- Manteniment: Millores del programa
- defineix les necessitats del client i especifica els requisits que s'ha de cumplir amb el software.
- Especificacions de requisits:
- Complert i sense omisions
- Concís i sense trivialitats
- Evitar ambigüetats
- Evitar detalls de disseny o implementació
- L'ha de entendre el client
- Separar requisits fucionals i no funcionals
- Dividir i jerarquitzar el model
- Fixar criteris de validació
- Descompon i organitza el sistema a elements componenets que es poden desarrollar per separat.
- S'especifica la interrelació i funcionalitats dels elements components.
- Les activitats habituals són:
- Disseny arquitèctoni : forma que tindrà.
- Disseny detallat: detall del arquitèctonic.
- Disseny de dades: com estaran situades les dades.
- Disseny d'interfaç : com es veurà.
- Es posa el codi font de cada component.
- Es poden utilitzar diferents llenguatges informàtics.
- Llenguatge de programació: C, C++, Java, Javascript (Programes per codificar)
- Llenguatge d'altre tipus: HTML, XML, JSON
- S'ha de trobar els errors al programa
- S'ha de sometre a diferentes proves per treure el màxim de situacions diferents.
- Durant l'explotació del sistema de software es necessari realitzar canvis ocacionals.
- S'ha de tornar a fer part del treball realitzat les fases prèvies,
- Tipus de manteniment:
- Correctiu: correcció d'errors.
- Perfectiu: millora de funcionalitats.
- Evoltiu: S'anyadeixen millores.
- Adaptatiu: S'adapta a nous entorns
- Ingeníeria de sistemes : Especificacio del sistema
- Anàlisis: Especificació dels requisits de sotfware
- Disseny arquitèctonic: Document d'arquitectura del software
- Disseny detallat: Especificació de mòduls i funcions
- Codificació: Codi font
- Prova d'unitats: Mòduls utilitzables
- Prova d'integració: Sistema utilitzables
- Proves del sistema: Sistema aceptat
- Documentació: Documentació tècnica i d'usuari
- Manteniment: Informes d'errors i control de canvis
- Clàssics: Models antius
- Model en cascada: es realitzen com el seu propi nom indica en forma de cascada, és a dir es comença una part i si no es té encara acabada no es pot começar un altre.
- Model en V: les partes més simplificades es fan a la punxa i les partes més especifiques a mida que baixa es fan les més concretes.
- Model de construcció de prototips: És presenta un prototip del que es vol i a partir d'alli es treballa si el client da el vist bo, generalment s'utilitza quant el client no té clar el que vol. Hi ha dos tips:
- Prototip ràpid: És fa un prototip i no es modifica si és útil.
- Prototip evolutiu: S'utilitza el prototip que s'ha donat com bo i apartir d'ahí es continua millorant.
- Model evolutiu o incremental
- Model en espiral: Es fa revisió de tot cada vegada que s'acaba una fase principal, es a dir si s'acaba la codificació es torna a veure l'anàlisis i el disseny.(Es revisa tot el que s'ha fet)
- Metodologíes àgils: Es treballent en grups diferents, es revisa el que ha fet l'atre persona o persones i es veu si conté errors en cas de tenir s'ha de avisar.
- Tipologies més conegudes: Kanban, Scrum i XP(exTeme Programming).
- També anomenat Sistema de tarjetes.
- Controla per demanda la fabricació dels productes necessaris en catitat/temps.
- Model incremental
- Interació Sprint regulars cada 2, 3 o 4 setmanes.
- Establiment de objectius prioritzats a cada interació.
- Amb la finalització d'interació s'obté una entrega utilitzable per al client.
- Rols principals.
- Product Owner: veu del client, diu els criteris i aceptació, s'encarrega de que es cumplin.
- Scrum Master: Motiva, facilita el treball de l'equip i s'encarrega de veure que es següeix la metodologia Scrum.
- Team: Equip de desenvolupament, auto-organitzacio i multifuncional. Poden ser entre 6 i 10 membres.
-Artefactes:
- Product Backlog: Llista ordenada dels requisits del producte.
- Sprint Backlog: Llista de requisits del backlog per desenvolupament durant el sprint.
- Increment: Estat del producte després de cada sprint.
- Events:
- Sprint: Event principal, que conté el reste d'events, duració màxima d'un mes.
- Sprint Planning: Reunió inicial per la planificació del sprint. Max temps: 8hrs.
- Daily Scrum: Reunió diària posada en comú per el sprint, duració màxima de 15minuts.
- Scrum Review: Reunió per evaluar l'increment obtingut, max 4h.
- Scrum Retrospective: Reunió final per evalució correcte de l'aplicació de metodología Scrum, max: 3hrs.ç
- Disseny sencill
- Millores continues
- Proca i refactorització
- Programa per parelles
- Client s'integra al equip de desenvolupament
- Propietat de codi compartit
- Estàndars de codificació
- 40 hrs semanals
- Codi binari executable tenim dos opcions:
- Compilar: Càrrega de tots els elements per executar el programa.
- Interpretar: Càrrega d'un element, per exemple una clase de java
- ES tracta de dues fases:
- Anàlisis lèxic: veu cada element(lletra).
- Anàlisis sintàctic: veu cada paraula.
- Si no es reconeixen errors, es genera un codi objecte corresponent.
- Un codi font correcta escrit no vol dir que funcioni com es vol.
- No es realitza un anàlisis semàntic.
- Exemple: C, C++
- Ventatges: execució molt eficient.
- Desavantatge: necessari compilar cada vegada que codi font es modificat.
- Exemple: PHP, Javascript
- Ventatges: el codi s'interpreta directament.
- Desavantatge: execució menys eficient.
- Llenguatge compilat i interpretat
- El codi font es compila i s'obté un codi binari intermedi bytecode.
- Pot considerar codi objecte però destinat objecte natiu.
- Després aquest bytecode s'interpreta per executar-lo.
- Ventatges:
- Estructurat i Orientat a Objectes(EOO).
- Relativament fàcil d'aprendre.
- Bona documentació i base d'usuaris.
- Desavantatge:
- Menys eficient que els llenguatges compilats
- Declaratius: Mostren el resultat sense identificat els pasos.
- Imperatius: Mostren els pasos a seguir per obtenir el resultat.
- Es divideixen:
- Lògics: utilitzen regles, exemple: Prolog
- Funcionals: utilitzen sentencies, exemple: Lisp, Haskell
- Algebraics: utilitzen sentencies, exemple: SQL
- Normalment son llenguatges interpretats
- Es dividideixen:
- Estructurats: C
- Orientats a objectes: Java
- Multiparadigma: C++, Javascript
- Els llenguatghes orientats a objectes també son estructurats.
- Molts son compilats.
- Baix nivell: ensamblador
- Alt nivell: C++, Java
- Codi binari
- Ensamblador
- Llenguantge estructurats
- Llenguatge orientats a objectes
- Camp d'aplicació: En que aquesta mes especialitzat el llenguatge a triar
- Experiència prèvia: Si s'ho has fet servir abans.
- Eines de desenvolupament: Que eines et pot proporcionar a l'hora de treballar-hi.
- Base d'usuaris: Tipus de base de dades que ocupa.
- Re usabilitat: Possibilitat de tornar a utilitzar alguna cosa ja creat.
- Portabilitat: Si funciona en altres sistemes, exemple: de pc a mòbil.
- Imposició de client: Si el client exigeix que es treballi en un determinat programa.