UF1: DES SW Flashcards
(40 cards)
Estructura de un PC
- UC (Unidad de Control): Interpreta y ejecuta las instrucciones máquina que conforman los programas y generan las señales de control necesarias para llevarlas a cabo.
- ALU (Unidad aritmético-lógica): Cálculos y decisiones lógicas.
- Registros que posee la UC: Almacenamiento de la información temporal.
• CP (Contador del programa)
• RI (Registro de instrucción)
• RDM (Registro de dirección de memoria)
• RIM (Registro de intercambio de memoria)
• DI (Decodificador de instrucción)
• Reloj: Impulsos eléctricos a intervalos constantes. Marca los pasos a realizar para cada instrucción y el ritmo de funcionamiento.
• Secuenciador. - Buses: Circulación de instrucciones y datos.
Cuando se ejecuta una instrucción, hay dos fases:
Búsqueda y ejecución.
Etapas código:
- Código Fuente (realizado por los programadores)
- Código objeto (compilado. Representación intermedia de bajo nivel)
- Código ejecutable (código objeto + librerías).
Tipos de SW (licencias)
1. Según tarea que realizan: > De sistema, de aplicación, > de programación/desarrollo, > de uso específico y Multimedia. 2. Según el método de distribución: > Shareware (pago), > Freeware (libre, pero con derechos de autor) y > Adware (con publicidad). 3.Según licencia: > Software libre, > software propietario (Shareware o Freeware) y > de dominio público.
Compilador
Tomará como datos nuestro programa escrito en lenguaje de alto nivel y dará como resultado el mismo programa, pero escrito en lenguaje máquina.
Ejemplo: C, C++, C#, Objetive-C…
Enlazador
Insertará, en el código objeto, las librerías necesarias para que se pueda producir un programa ejecutable.
Si se hace referencia a otros ficheros que contengan las librerías especificadas en el código objeto, se combina con dicho código y se crea el fichero ejecutable
Intérprete
Efectúa la traducción y ejecución simultánea de cada una de las sentencias del programa.
Ejemplos de algunos lenguajes son: PHP, JavaScript, Python, Perl, Logo, Ruby, ASP, Basic, Prolog…
El compilador javac generará
Uno o varios archivos en bytecode (lenguaje intermedio entre el ordenador y el S.O.), que tendrán la extensión .class.
> Código Java (Programa.java) >COMPILADOR javac > Código Bytecode Programa.class > JAVA VM > 0101…> El código fuente (estará escrito en archivos de texto planos con la extensión .java)
La Java VM coge y traduce el bytecode en código binario para que el procesador de nuestro ordenador sea capaz de reconocerlo. Los ficheros .class podrán ser ejecutados en múltiples plataformas
Máquinas virtuales
De sistema / proceso
Lenguajes de programación:
Según paradigma de programación:
> Imperativos (estructurada, modular y POO),
> funcionales o lógicos.
Según nivel de abstracción:
> Alto,
> medio (C) y
> bajo.
Lenguaje ensamblador
- El modelo de programación contiene registros de 8, 16 y 32 bits.
- Los registros de 8 bits son AH, AL, BH, BL, CH, CL, DH y DL, y se hace referencia a ellos cuando se forma una instrucción en la que se utilizan estas designaciones de dos letras. Por ejemplo, una instrucción ADD AL,AH suma el contenido de 8 bits de AH con el de AL. (Sólo AL cambia debido a esta instrucción.)
• Los registros de 16 bits son AX, BX, CX, DX, SP, BP,
DI, SI, IP, FLAGS, CS, DS, ES, SS, FS y GS. También
se hace referencia a estos registros con las designaciones de dos letras. Por ejemplo, una
instrucción ADD DX, CX suma el contenido de 16 bits de CX con el de DX. (Sólo DX cambia debido a esta
instrucción.)
• Los registros extendidos de 32 bits son EAX, EBX, ECX, EDX, ESP, EBP, EDI, ESI, EIP y EFLAGS. Por ejemplo, una instrucción ADD ECX, EBX suma el contenido de 32 bits de EBX con el de ECX. (Sólo ECX cambia debido a esta instrucción.)
*Ver ejemplos en resumen
Modelos de desarrollo de SW
A) En cascada | En cascada con realimentación
B) Iterativo incremental (Evolutivo)
C) En espiral (Evolutivo)
D) En V
- Ver gráficos en resumen
Modelo de desarrollo en Cascada | En cascada con retroalimentación
VENTAJAS:
- Fácil de comprender, planificar y seguir.
- La calidad del producto resultante es alta.
- Permite trabajar con personal poco cualificado.
INCONVENIENTES:
- La necesidad de tener todos los requisitos definidos desde el principio.
- Es difícil volver atrás si se cometen errores en una etapa.
- El producto no está disponible para su uso hasta que no está completamente terminado.
SE RECOMIENDA:
- El proyecto es similar a alguno que se haya realizado con éxito anteriormente.
- Los requisitos son estables y están bien comprendidos.
- Los clientes no necesitan versiones intermedias.
Modelo iterativo incremental: (Evolutivo)
VENTAJAS:
- No necesitan conocer todos los requisitos.
- Permite la entrega temprana al cliente de partes operativas del software.
- Las entregas facilitan la realimentación de los próximos entregables.
INCONVENIENTES:
- Es difícil estimar el esfuerzo y el coste final necesario.
- Se tiene el riesgo de no acabar nunca.
- No es recomendable para desarrollo de sistemas de tiempo real, de alto nivel de seguridad, de procesamiento distribuido y/o de alto índice de riesgos.
SE RECOMIENDA CUANDO:
- Los requisitos o el diseño no están completamente definidos y es posible que haya grandes cambios.
- Se están probando o introduciendo nuevas tecnologías.
Modelo en espiral (evolutivo)
Cada ciclo está formado por 4 fases y cuando termina produce una versión incremental del software con respecto al ciclo anterior.
En este aspecto se parece al modelo iterativo incremental con la diferencia de que en cada ciclo se tiene en cuenta el análisis de riesgos.
Utiliza la construcción de prototipos como mecanismo de reducción de riesgos.
VENTAJAS:
- No necesitan conocer todos los requisitos.
- Análisis del riesgo en todas las etapas.
- Reduce riesgos del proyecto.
- Incorpora objetivos de calidad.
INCONVENIENTES:
- Es difícil evaluar los riesgos.
- El costo del proyecto aumenta a medida que la espiral pasa por sucesivas iteraciones.
- El éxito del proyecto depende en gran parte de la fase de análisis de riesgo.
SE RECOMIENDA CUANDO:
- Proyectos de gran tamaño y que necesitan constantes cambios.
- Proyectos donde sea importante el factor riesgo.
Modelo en V
El lado izquierdo de la V representa la descomposición de las necesidades y la creación de las especificaciones del sistema.
El lado derecho de la V representa la integración de las piezas y su verificación. Es muy similar al modelo de cascada, ya que es muy rígido y contiene una gran cantidad de iteraciones.
Fases del desarrollo de SW
- Análisis,
- Diseño,
- Codificación,
- Pruebas,
- Documentación,
- Mantenimiento y
- Explotación.
Fase de Análisis
TÉCNICAS:
- Entrevistas.
- Desarrollo conjunto de aplicaciones (JAD): Entrevista de dinámica de grupo en la que cada uno tiene un rol (usuarios, administradores, desarrolladores, analistas, etc.).
- Planificación conjunta de requisitos (JRP): Subconjunto de JAD dirigidos a la alta dirección, obteniendo los requisitos de alto nivel o estratégicos.
- Brainstorming: Ideal para el comienzo de un proyecto.
- Prototipos: Versión inicial del sistema en el que se puede ver el problema y sus posibles soluciones. Se puede desechar o usar para añadir más cosas.
- Casos de uso: Técnica definida por UML (Unified Modeling Language) y se basa en la representación de lo que queremos que haga el sistema, es decir, representan requisitos funcionales. Describe qué hace el sistema, pero no cómo lo hace.
PODEMOS CLASIFICAR LOS REQUISITOS EN:
• Requisitos funcionales. Nos describen al detalle la función que realiza el sistema, la reacción ante determinadas entradas y cómo se comporta en distintas situaciones.
• Requisitos no funcionales. Los requerimientos que no se refieren directamente a las funciones específicas que entrega el sistema, sino a las propiedades emergentes del mismo, como la fiabilidad o la capacidad de almacenamiento.
REPRESENTACIÓN: • Diagrama de flujo de datos (DFD), • Diagrama de flujo de control (DFC), • Diagrama de transición de estados (DTE), • Diagrama de Entidad/Relación (DER) • y Diccionario de Datos (DD).
En esta fase se desarrolla el documento ERS (Especificación de Requisitos de Software)
Fase de diseño
Traducción de los requisitos funcionales y no funcionales a una representación de software.
• Diseño estructurado. > Diseño de datos > Diseño arquitectónico > Diseño de la interfaz > Diseño a nivel de componentes • Diseño orientado a objeto (DOO)
Diseño estructurado: Diseño de datos
Transforma la información relativa al mundo real en estructuras informáticas, para su posterior implementación.
Diseño estructurado: Diseño arquitectónico
Representación de la estructura de los componentes de
software, propiedades e interacciones. Partiendo de los DFD se establece la estructura modular del software.
Es habitual el uso del MVC, modelo vista controlador. Divide el aplicativo en:
• Vista: “Lo que está de cara al usuario” (html y las
hojas de estilo).
• Controlador: Todas aquellas llamadas de cada una
de las funciones/módulos.
• Modelo (BBDD): Llamadas a la BBDD.
Diseño estructurado: Diseño de la interfaz
Detalla la comunicación que realiza el software consigo mismo, los sistemas que operan con él y los usuarios. Creación de formatos de pantalla.
Diseño estructurado: Diseño a nivel de componentes
Diseño procedimental: El resultado será el diseño de cada componente con el detalle necesario para que sirva de guía en la generación del código fuente.
Se realiza mediante diagramas de flujo, diagramas de
cajas, tablas de decisión, pseudocódigo, etc.
> Programación estructurada: Construcción secuencial / condicional / repetitiva.
Diseño orientado a objeto (DOO=
Partiendo del AOO (Análisis Orientado a objetos), define cuatro capas de diseño:
> Subsistemas / Clases y Objetos / Mensajes / Responsabilidades (atributos y métodos de la clase)