UF1: DES SW Flashcards

1
Q

Estructura de un PC

A
  1. 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.
  2. ALU (Unidad aritmético-lógica): Cálculos y decisiones lógicas.
  3. 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.
  4. Buses: Circulación de instrucciones y datos.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Cuando se ejecuta una instrucción, hay dos fases:

A

Búsqueda y ejecución.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Etapas código:

A
  1. Código Fuente (realizado por los programadores)
  2. Código objeto (compilado. Representación intermedia de bajo nivel)
  3. Código ejecutable (código objeto + librerías).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Tipos de SW (licencias)

A
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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Compilador

A

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…

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Enlazador

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Intérprete

A

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…

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

El compilador javac generará

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Máquinas virtuales

A

De sistema / proceso

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Lenguajes de programación:

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Lenguaje ensamblador

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Modelos de desarrollo de SW

A

A) En cascada | En cascada con realimentación
B) Iterativo incremental (Evolutivo)
C) En espiral (Evolutivo)
D) En V

  • Ver gráficos en resumen
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Modelo de desarrollo en Cascada | En cascada con retroalimentación

A

VENTAJAS:

  1. Fácil de comprender, planificar y seguir.
  2. La calidad del producto resultante es alta.
  3. Permite trabajar con personal poco cualificado.

INCONVENIENTES:

  1. La necesidad de tener todos los requisitos definidos desde el principio.
  2. Es difícil volver atrás si se cometen errores en una etapa.
  3. El producto no está disponible para su uso hasta que no está completamente terminado.

SE RECOMIENDA:

  1. El proyecto es similar a alguno que se haya realizado con éxito anteriormente.
  2. Los requisitos son estables y están bien comprendidos.
  3. Los clientes no necesitan versiones intermedias.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Modelo iterativo incremental: (Evolutivo)

A

VENTAJAS:

  1. No necesitan conocer todos los requisitos.
  2. Permite la entrega temprana al cliente de partes operativas del software.
  3. Las entregas facilitan la realimentación de los próximos entregables.

INCONVENIENTES:

  1. Es difícil estimar el esfuerzo y el coste final necesario.
  2. Se tiene el riesgo de no acabar nunca.
  3. 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:

  1. Los requisitos o el diseño no están completamente definidos y es posible que haya grandes cambios.
  2. Se están probando o introduciendo nuevas tecnologías.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Modelo en espiral (evolutivo)

A

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:

  1. No necesitan conocer todos los requisitos.
  2. Análisis del riesgo en todas las etapas.
  3. Reduce riesgos del proyecto.
  4. Incorpora objetivos de calidad.

INCONVENIENTES:

  1. Es difícil evaluar los riesgos.
  2. El costo del proyecto aumenta a medida que la espiral pasa por sucesivas iteraciones.
  3. El éxito del proyecto depende en gran parte de la fase de análisis de riesgo.

SE RECOMIENDA CUANDO:

  1. Proyectos de gran tamaño y que necesitan constantes cambios.
  2. Proyectos donde sea importante el factor riesgo.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Modelo en V

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Fases del desarrollo de SW

A
  • Análisis,
  • Diseño,
  • Codificación,
  • Pruebas,
  • Documentación,
  • Mantenimiento y
  • Explotación.
18
Q

Fase de Análisis

A

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)

19
Q

Fase de diseño

A

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)
20
Q

Diseño estructurado: Diseño de datos

A

Transforma la información relativa al mundo real en estructuras informáticas, para su posterior implementación.

21
Q

Diseño estructurado: Diseño arquitectónico

A

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.

22
Q

Diseño estructurado: Diseño de la interfaz

A

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.

23
Q

Diseño estructurado: Diseño a nivel de componentes

A

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.

24
Q

Diseño orientado a objeto (DOO=

A

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)

25
Q

Codificación

A

Algunas normas en código Java son:
• NOMBRE DE FICHEROS: Los archivos de código fuente tendrán extensión .java o .cs y los archivos compilados .class.
• ORGANIZACIÓN DEL FICHERO: Cada archivo debe tener una clase pública y podrá tener otras clases privadas e interfaces que irán definidas después de la pública y estarán asociadas a ésta. El archivo se dividirá en varias secciones:
- Comentarios: Cada archivo debe empezar con un comentario en el que se indique el nombre de la clase, la información de la versión, la fecha y el aviso de derechos de autor.
- Sentencias de tipo package e import: Después de los comentarios, por este orden: package e import.
- Declaración de clases e interfaces:
> Comentario de documentación (/** …/) acerca de la clase o interface.
> Sentencia tipo class o interface
>Comentario de implementación (/
…*/) de la clase o interface.
> Variables estáticas, por orden: públicas, protegidas y privadas.
> Variables de instancia, por orden: públicas, protegidas y privadas.
> Constructores.
> Métodos.
- Indentación
> 4 espacios como unidad de indentación.
> Longitud de líneas de código no superior a 80 caracteres.
> Longitud de líneas de comentarios no superior a 70 caracteres.

 - Si una expresión no cabe en una sola línea se deberá romper antes de una coma o un operador y se alineará al principio de la anterior. 
 - Comentarios de documentación: Describen la especificación del código como las clases Java, interfaces, constructores, métodos y campos. Se situarán antes de la declaración. La herramienta Javadoc genera páginas HTML partiendo de este tipo de comentarios.  /** ...*/ 

- Comentarios de implementación: Sirven para hacer algún comentario sobre la aplicación en particular. Pueden ser de 3 tipos: 
      > De bloque: /* 
                              * 
                           ..*/ 
      > De línea: /* Esto es un comentario de línea */ 
      > Corto: // Esto es un comentario corto 
 - Declaraciones 
      > Declarar una variable por línea. 
      > Inicializar una variable local al comienzo donde se declara y situarla al comienzo del bloque. 
      > En clases o interfaces: 
           >> No poner espacios en blanco entre el nombre del método y el “(“. 
           >> Llave de apertura “{“, situarla en la misma línea que el nombre del método. 
           >> Llave de cierre “}“, situarla en una línea aparte y en la misma columna que el inicio del método, excepto cuando esté vacío. 
           >> Métodos separados por una línea en blanco. 
 - Sentencias 
      > Cada línea contendrá una sentencia. 
      > Si es un bloque, debe de estar sangrado con respecto a lo anterior y entre llaves, aunque solo tenga una sentencia. 
      > Sentencias if-else, if else-if else. Nos definen bloques y tendrán todos los mismos niveles de sangrado. 
      > Bucles. Tendrán las normas anteriores y si está vació no irá entre llaves. 
      > Sentencias return no irán entre paréntesis. 

 - Separaciones 
      > Dos líneas en blanco: Entre definiciones de clase e interfaces. 
      > Una línea en blanco: Entre métodos, definición de variables locales y la primera instrucción, antes de un comentario, entre secciones lógicas dentro de un método. 
      > Un carácter en blanco: entre una palabra y un paréntesis, después de una coma, los operadores binarios menos el punto, expresiones del for y entre un cast y la variable. 

 - Nombres 
      > Paquetes: se escriben en minúscula. Se podrán utilizar puntos para algún tipo de organización jerárquica. Ej.: java.io 
      > Clases e interfaces: Deben ser sustantivos o descriptivos, según lo que estemos creando. Si está compuesta por varias palabras, la primera letra de cada palabra irá en mayúscula. 
      > Métodos: Se usarán verbos en infinitivo. Si está formado por varias palabras, el verbo estará en minúscula y la siguiente palabra empezará con mayúscula. 
      > Variables: Deben ser cortas (incluso una letra) y significativas. Si está formada por varias palabras, la primera debe ir en minúscula. 

 - Constantes : El nombre debe ser descriptivo. Será totalmente escrita en mayúscula y si son varias palabras, separadas por un carácter de subrayado
26
Q

Pruebas

A
  • Verificación: Conjunto de actividades que permiten comprobar si el producto se está construyendo correctamente.
  • Validación: Acciones para comprobar si el producto es correcto y si se ajusta a los requisitos del cliente.
27
Q

El flujo de proceso en esta fase consiste en:

A
  • Plan de pruebas
  • Diseño de pruebas
  • Generación de Casos de prueba
  • Ejecución de pruebas
  • Evaluación (identificación de posibles errores)
  • Depuración (Corregir y verificar que se ha corregido)
  • Análisis de errores
28
Q

Para la realización del diseño de prueba se usan dos técnicas:

A
  • Prueba de caja blanca
  • y Prueba de caja negra.

La primera valida la estructura interna del sistema y, la segunda, los requisitos funcionales sin observar el funcionamiento interno del programa. No son
pruebas excluyentes y podemos combinarlas para descubrir distintos tipos de error.

29
Q

Documentación: 2 tipos de documentación

A
  • Documentación de proceso: Se registra el proceso de desarrollo y mantenimiento.
  • Documentación de producto: Incluye la documentación del sistema y la documentación de usuario. Se utilizará sobre todo una vez desarrollado el software.
30
Q

Documentación: 2 tipos de usuario

A
  • Usuarios finales: Se centran en cómo el programa realiza las tareas. No interesados en los detalles informáticos.
  • Administradores del sistema: Puede funcionar como gestor de red o como técnico, resolviendo los problemas de los usuarios finales
31
Q

Tabla de documentos para usuarios finales: Documento | Usuario | Descripción

A

• Descripción funcional:
> Usuario: Evaluadores
> Descripción: Describe funciones generales. El usuario al leerlo debe decidir si el sistema es lo que necesita.

• Documento de instalación:
> Usuario: Administradores
> Descripción: Describe como instalar el sistema. Contiene información de fichero del sistema, su configuración, hardware mínimo o como iniciar el sistema.

• Manual introductorio:
> Usuario: Usuarios nóveles
> Descripción: explicaciones sencillas de como empezar a usar el sistema Soluciones de errores.

• Guía del administrador de sistemas:
> Usuario: administradores
> Descripción: para sistemas que hay comandos, describir tareas, los mensaje producidos y las respuestas del operador.

• Tarjeta de referencia rápida:
> Descripción: sirve para realizar búsquedas rápidas.

32
Q

Tabla de documentos para Administradores del sistema: Documento | Descripción

A
  • Fundamentos del sistema: Se describen los objetivos del sistema.
  • El análisis y especificación de requisitos: información exacta de los requisitos.
  • Diseño: se describe la arquitectura del sistema.
  • Implementación: Descripción de la forma se expresa el sistema y acciones del programa en forma de comentarios.
  • Plan de pruebas del sistema: Evaluación individual de las unidades del sistema y las pruebas que se realizan.
  • Plan de pruebas de aceptación: Descripción de las pruebas que el sistema debe pasar antes de que los usuarios las acepten.
  • Los diccionarios de datos: Descripciones de los términos que se relacionan con el software en cuestión.
33
Q

Explotación

A

Instalación y puesta en marcha del producto, llevando a cabo la implementación del proceso, pruebas de operación, uso operacional del sistema y soporte al usuario.

34
Q

Mantenimiento

A

Etapa de modificación del software después de la entrega al usuario para:
• Mantenimiento ADAPTATIVO: Modificación del producto según cambios tanto a nivel de software como de hardware.

  • Mantenimiento CORRECTIVO: Corrección de errores
  • Mantenimiento PERFECTIVO: Perfeccionamiento de la aplicación.
  • Mantenimiento PREVENTIVO: Sin alterar las especificaciones, está relacionado con la mejora de la comprensión y de la usabilidad del probrama.
35
Q

Metodologías ágiles

A

Son métodos de gestión que permiten adaptar la forma de trabajo al contexto y naturaleza de un proyecto, basándose en la flexibilidad y la inmediatez, y teniendo en cuenta las exigencias del mercado y de los clientes.

Los pilares fundamentales de las metodologías ágiles son el trabajo colaborativo y en equipo.

36
Q

Ventajas de las metodologías ágiles

A
  • Ahorrar tanto en tiempo como en costes (son baratas y más rápidas).
  • Mejora la satisfacción del cliente.
  • Mejora la motivación e implicación del equipo de desarrollo.
  • Mejora la calidad del producto.
  • Eliminar aquellas características innecesarias del producto.
  • Alerta rápidamente tanto de errores como de problemas.
37
Q

Metodología Scrum

A
  • Cada ciclo desarrolla un incremento en el sistema.
    Los Springs tienen una longitud fija (2 a 4 semanas).
  • El punto de partida para la planeación es la cartera del producto es la lista de trabajo por realizar. En la fase de valoración del Sprint, ésta se revisa y se asignan prioridades y riesgos.
  • El cliente está implicado en esta fase y al comienzo de cada Sprint, donde puede introducir nuevos requerimientos o tareas.
  • La fase de selección incluye a todo el equipo y su objetivo es seleccionar las características y la funcionalidad a desarrollar durante el Sprint.
  • Fase de desarrollo: Con el objetivo de revisar el progreso y reasignar prioridades si es necesario, se realizan reuniones diarias breves. Durante esta etapa, el equipo se aísla del cliente y la organización y todas las comunicaciones se canalizan a través del
    “maestro de Scrum”, quien protege al equipo de distracciones externas.
  • Al final del Sprint se revisa el trabajo hecho y se presenta.
  • Estas iteraciones (en Scrum se llaman Sprint) se repiten de forma continua hasta que el cliente da por cerrada la evolución del
    producto
38
Q

Programación extrema (XP)

A
  • La programación extrema (XP) es quizás el método ágil mejor conocido y más ampliamente usado. Lleva al extremo el desarrollo iterativo.
  • Muchas versiones actuales de un sistema pueden
    desarrollarse mediante diferentes programadores, integrarse y ponerse a prueba en un solo día.
  • Metodología ágil centrada en potenciar las relaciones
    interpersonales como clave para el éxito en desarrollo del software, promoviendo el trabajo en equipo, preocupándose por el aprendizaje de los desarrolladores y propiciando un buen clima de trabajo.
  • XP se basa en retroalimentación continua entre cliente y el equipo de desarrollo. XP es especialmente adecuada para proyectos con requisitos imprecisos y muy cambiantes.
  • Los requerimientos se fundamentan en simples historias del cliente, o bien, en escenarios usados como base para decidir qué funcionalidad debe incluirse en un incremento del sistema.
  • La inclusión del cliente se apoya a través de un enlace continuo con el cliente en el equipo de desarrollo. El representante del cliente participa en el desarrollo y es responsable de definir las pruebas de aceptación para el sistema.
  • Las personas, no los procesos, se basan en la programación en pares, en la propiedad colectiva del código del sistema y en un ritmo sustentable que no incluya jornadas de trabajo excesivamente largas.
  • El cambio se acepta mediante liberaciones regulares del sistema a los clientes, desarrollo de primera prueba, refactorización para evitar degeneración del código e integración continua de nueva funcionalidad.
  • Mantener la simplicidad se logra mediante la refactorización constante, que mejora la calidad del código, y con el uso de diseños simples que no anticipan innecesariamente futuros cambios al sistema.
39
Q

Kanban

A
  • Es una palabra japonesa que significa tarjetas visuales. Esta técnica se creó en Toyota, y se utiliza para controlar el avance del trabajo, en el contexto de una línea de producción. Actualmente está siendo aplicado en la gestión de proyectos software.
40
Q

Características específicas de Kanban:

A
  • Barras de progreso donde la tarea va avanzando según su estado.
  • Visión global de todas las tareas pendientes, en proceso y acabadas.
  • Se pueden hacer cálculos de tiempo con las tareas finalizadas y tareas similares que se van a realizar.