Tema1-Entorno de Desarrollo - Imprimiiiiiiiiiir
Short Description
Descripción: Entornos de Desarrollo...
Description
TEMA 1.- RECONOCIMIENTO DE ELEMENTOS DEL DESARROLLO DE SOFTWARE Sistema Informático: conjunto de partes o recursos formados por el hardware, software y las personas que lo emplean, que se relacionan entre sí para almacenar y procesar información con un objetivo en común. Hardware: partes físicas tangibles de un sistema informático; sus componentes eléctricos, electrónicos, electromecánicos y mecánicos. Software: equipo lógico o soporte lógico de un sistema informático, que comprende el conjunto de los componentes lógicos necesarios que hacen posible la realización de tareas específicas.
EL SOFTWARE DEL ORDENADOR Según la distribución del software -
Shareware: software evaluado de forma gratuita por el usuario.
-
Freeware: sofware que se distribuye sin cargo alguno, a veces ocurre lo contrario.
-
Adware: son programas Shareware, pero que añaden publicidad.
-
Software de uso específico: es software para resolver un problema de alguna organización.
Según la licencia del software -
Una licencia de software es un contrato que se establece entre el desarrollador y el usuario.
-
Software libre: en el cual el autor cede las libertades básicas al usuario en el marco de una licencia, con las libertades: 1. Libertad de usar el programa con cualquier fin en cualquier pc. 2. Libertad de estudiar el funcionamiento del programa y de adaptar su código a necesidades. 3. Libertad de distribuir copias a otros. 4. Libertad de mejorar el programa y de hacer públicas dichas modificaciones. 5. Software propietario: se distribuye en formato binario (no acceso al código fuente).
1
CICLO DE VIDA DEL SOFTWARE Definición: -Según la ISO: “Un marco de referencia que contiene procesos, actividades y tareas involucradas en el desarrollo, la explotación y el mantenimiento de un producto de software.” –Según MÉTRICA: http://administracionelectronica.gob Etapas: -Análisis: entender y comprender de forma detallada el problema a resolver, verificando su entorno. -Diseño: estrategia que se va a utilizar para resolver el problema. -Implementación: desarrollar el correspondiente programa que solucione el problema con una computadora. -Pruebas: realizar las debidas pruebas que garanticen el correcto funcionamiento del programa. -Mantenimiento: mantener una estructura de actualización, verificación y validación. La documentación: guía o comunicación escrita en sus diferentes formas, ya sea en enunciados, procedimientos, dibujos o diagramas que se hace sobre CADA ETAPA del desarrollo de un programa. Modelos de ciclo de vida: 1.Cascada: Modelo de ciclo de vida clásico del software. Cuando se acaba con una etapa se pasa a la siguiente. Si durante una fase hay que hacer una mejora volvemos a empezar desde la primera etapa. Si durante una etapa se ha producido un cambio de necesidades hay que volver hacia atrás. 2.Cascada con Retroalimentación: Es una variante del C.V. clásico. Se introduce una realimentación entre etapas, de forma que podamos volver atrás en cualquier momento para corregir, modificar o depurar algún aspecto. VENTAJAS DEL MODELO EN CASCADA INCONVENIENTES DEL MODELO EN CASCADA 1. Fácil de comprender, 1. Necesidad de tener claro todos los planificar y seguir. requisitos desde el principio 2. La calidad del producto es 2. Es difícil volver atrás si se comenten alta. errores en una etapa. 3. Permite trabajar con 3. El producto no está disponible para su personal poco cualificado. uso hasta que no se termine.
2
3.Modelo Iterativo Incremental. Está basado en varios ciclos de vida cascada realimentados aplicados repetidamente. Entrega el software en partes pequeñas. Cada incremento se hace sobre el anterior. VENTAJAS DEL MODELO ITERATIVO INCONVENIENTES DEL MODELO ITERATIVO INCREMENTAL INCREMENTAL 1. No se necesita conocer todos los 1. Es difícil de estimar el esfuerzo y el coste requisitos desde el principio. final necesario. 2. Permite la entrega temprana al 2. Se tiene el riesgo de no acabar nunca. cliente de partes operativas del 3. No recomendable para desarrollo de software. sistemas de tiempo real, de alto nivel de 3. Las entregas facilitan la seguridad, de procesamiento distribuido, realimentación de las próximas y/o alto índice de riesgos. entregas. 4. El modelo en Espiral. Combina el Modelo en Cascada con el Iterativo. El proceso se representa con una espiral. El modelo en Espiral tiene 4 fases: -
Determinar objetivos: identificar objetivos, alternativas y restricciones impuestas.
-
Análisis de riesgos: se evalúan las alternativas en relación con objetivos y limitaciones.
-
Desarrollar y probar: desarrollar la solución al problema en este ciclo y verificar que es aceptable.
-
Planificar: Revisar y evaluar todo lo que se ha hecho. Planificar las fases del ciclo siguiente.
VENTAJAS DEL MODELO EN ESPIRAL INCONVENIENTES DEL MODELO EN ESPIRAL 1. No requiere una definición 1. Es difícil evaluar los riesgos completa de los requisitos para 2. El costo del proyecto aumenta en las empezar a funcionar. iteraciones de la espiral 2. Análisis de riesgo en todas las 3. El éxito del proyecto depende en gran etapas. medida de la fase de análisis de riesgos. 3. Reduce riesgos del proyecto. 4. Incorpora objetivos de calidad.
3
5.Modelo Scrum: es un proceso en el que se aplican de manera regular un conjunto de buenas prácticas para trabajar colaborativamente, en equipo, y obtener el mejor resultado posible de un proyecto.
FASES DEL DESARROLLO DE UNA APLICACIÓN Antes de desarrollar una aplicación hay que elegir el C.V. a elegir. Independientemente del C.V. elegido.
1. Fase de análisis -
Parte del éxito de la aplicación estará en comprender y entender el problema del cliente.
-
Se analizan capacidades y requisitos que el sistema debe tener.
-
La obtención de requisitos no es tarea fácil.
-
Es imprescindible tener buena comunicación entre el cliente y el desarrollador.
Las técnicas para facilitar la comunicación son: -
Entrevista: técnica más usada para hablar con el cliente.
-
Desarrollo conjunto de aplicaciones: dinámica de grupos, tipo de entrevista muy estructurado.
-
Planificación conjunta de requisitos: subconjunto de JAD, dirigida a alta dirección.
-
Lluvia de ideas (Brainstorming): ideas en común.
-
Prototipos: versión inicial del producto, se usa para clarificar puntos.
-
Casos de uso: se basa en escenarios que describen cómo se usa el software en cada situación.
tipo de reunión en grupo para generar
Existen 3 tipos de requisitos: –Requisitos datos: datos que vamos a necesitar almacenar. –Requisitos funcionales: describen con detalle la función que realiza el sistema. –Requisitos no funcionales: características del sistema, como pueden ser.
4
Técnicas para representar los requisitos:
Diagrama de Flujo de Datos (D.F.D.): – Un diagrama de flujo de datos (DFD), representación gráfica del flujo de datos. – Objetivo: construir un modelo lógico del sistema. – Establecer “qué” funciones se deben desarrollar sin implicar “cómo”. – El DFD, debe ser un modelo gráfico, lógico, preciso y breve, bien documentado. Diagrama de Flujo de Control DFC: – Similar a los DFD, muestra el flujo de control en vez del flujo de datos. – Un diagrama de flujo de control muestra todas las posibles vías de computación. – No muestra cuales son las vías que se ejecutan ni en qué orden se encontraran. – Este diagrama se muestra con una línea discontinua. Diagrama de Transición de Estados DTE: – Representa cómo se comporta el sistema tras sucesos externos. – Diagrama de transición de estados, expresa el comportamiento del sistema. Diagrama de Entidad / Relación (DER): – Usado para representar los datos y la forma en la que se relacionan entre ellos. Diccionario de datos DD: – Descripción detallada de los datos usados por el sistema.
2. Fase de diseño En esta etapa traducimos los requisitos en una representación del software. -
Existen dos tipos de diseños:
1. Diseño estructurado: basado en el flujo de los datos a través del sistema. 2. Diseño orientado a objetos: el sistema se entiende como un conjunto de objetos con propiedades y comportamientos.
5
Diseño estructurado El diseño estructurado produce un diseño con 4 elementos: 1. Diseño de datos: transforma el modelo definido en el análisis en las estructuras de datos que se van a utilizar. 2. Diseño arquitectónico: se centra en la representación de la estructura de los componentes del software (propiedades e iteraciones). 3. Diseño de la interfaz: Define cómo se comunica el software consigo mismo y con los demás sistemas. 4. Diseño procedimental (o a nivel de componentes): transforma los elementos estructurados de la arquitectura en una descripción procedimental de los componentes del software. 3. Fase de codificación -
Una vez terminado el diseño pasamos a la codificación.
-
Se reciben las especificaciones del diseño.
-
Código fuente: conjunto de instrucciones.
-
El programador debe conocer la sintaxis del lenguaje de programación utilizado.
-
En cualquier proyecto que se trabaja con un grupo de personas tiene que haber unas normas de codificación y estilo; claras y homogéneas.
4. Fase de prueba -
Una vez que se han realizado las fases previas y se ha desarrollado la documentación se lleva a cabo la fase de prueba: 1.
Se lleva a cabo la instalación de la aplicación.
2.
Puesta en marcha de la aplicación.
-
En esta etapa se llevan a cabo las siguientes tareas:
-
Estrategia para la implementación del proceso.
-
Pruebas de operación.
-
Uso operacional del sistema dentro del entorno del cliente y soporte al usuario.
6
Existen diferentes técnicas para probar una aplicación, pero las dos más utilizadas son: 1. Pruebas de caja blanca: y está basado en el examen de los detalles procedimentales del código de la aplicación. 2. Pruebas de caja negra: estas pruebas se llevan a cabo sobre la interfaz del software, no hace falta conocer la estructura interna de la aplicación. 5. Fase de mantenimiento -
Definimos mantenimiento del software como la modificación de un producto software después de la entrega para corregir los fallos, mejorar su rendimiento o adaptar el producto a un nuevo entorno.
-
Existen cuatro tipos de mantenimientos: Mantenimiento adaptativo, Mantenimiento correctivo, Mantenimiento perfectivo y Mantenimiento preventivo.
6. Documentación Todas las etapas del desarrollo deben quedar perfectamente documentadas: -
Deben de actuar como un elemento de comunicación entre las diferentes etapas.
-
Debe ser un repositorio de información para el personal de mantenimiento.
-
Debe proporcionar información para la elaboración de futuros proyectos.
-
Algunos documentos deben proporcionar a los usuarios indicaciones de cómo usar y administrar el sistema.
La documentación se divide en dos partes: 1. Documentación de proceso: Se registran datos del proceso de desarrollo y mantenimiento. 2. Documentación de producto: describe el producto que está siendo desarrollado; teniendo dos tipos de documentos: Documentación del sistema: que describe el producto desde un punto de vista técnico orientado al equipo de desarrollo y mantenimiento. Documentación del usuario: que describe el producto.
7
ROLES QUE INTERACTÚAN EN EL DESARROLLO En el proceso de desarrollo de un software intervienen varias personas.
– Analista de sistemas: su objetivo consiste en realizar un estudio del sistema para dirigir el proyecto en una dirección que garantice las expectativas del cliente determinando el comportamiento del software. Participa en la etapa de análisis. – Diseñador de software: evolución del analista y realiza, en función del análisis de un software, el diseño de la solución que hay que desarrollar. Participa en la etapa de diseño. – Analista programador: aporta una visión general del proyecto más detallada diseñando una solución más amigable para la codificación y participando activamente en ella. Participa en las etapas de diseño y codificación. – Programador: escribe el código fuente en función al estudio realizado por analistas y diseñadores. Participa en la etapa de codificación. – Jefe de proyecto: conoce al cliente y a todo el equipo de trabajo. Participa en las etapas de análisis, diseño, documentación y explotación. CONCEPTO DE PROGRAMA Programa informático: conjunto de instrucciones escritas en un lenguaje de programación que aplicadas sobre un conjunto de datos resuelven un problema o parte del mismo. - Diferencia entre Programa y Aplicación: Programa: siempre será de ejecución lineal con un inicio y un fin, aunque su ejecución pueda verse afectada por condiciones, como las if, do while, while y for entre otras cosas como funciones y procedimientos. Aplicación: herramienta que interactúa con el usuario. LENGUAJES DE PROGRAMACIÓN Lenguaje de Programación: conjunto de instrucciones, operadores y reglas de sintaxis y semánticas, que se ponen a disposición del programador para que este pueda comunicarse con los dispositivos de hardware y software existentes. El sistema solo es capaz de entender codigo escrito en codigo maquina (1s y 0s). Objetivo: de facilitar la tarea a los programadores permitiendo escribir programas utilizando un mayor nivel de abstracción en el codigo.
8
Clasificación de los l.p – Según nivel de abstracción: El nivel de abstracción de un lenguaje implica cuan alejado está del código máquina, cuanto más parecido sea a nuestro lenguaje y menos al código máquina, de mayor nivel será el lenguaje: 1. Bajo nivel: Sólo hay un lenguaje de primera generación, el código máquina. 2. Medio nivel: Tienen definidas una serie de instrucciones sencillas para trabajar con datos simples y posiciones de memoria. 3. Alto nivel: La mayoría de los lenguajes que se utilizan hoy en día para programar aplicaciones son de alto nivel. Son muy cercanos a nuestro propio lenguaje y permiten la realización de patrones de diseño complejos como Java. – Según la forma de ejecución: 1. Compilados: Un programa traductor (compilador) convierte el código fuente en código objeto para crear un programa ejecutable. 2. Interpretados: Ejecutan las instrucciones directamente, sin generar código objeto. La propia máquina se encargará de interpretarlo instrucción a instrucción. 3. Virtuales: Con un comportamiento similar al de los lenguajes compilados con una peculiaridad, el compilador no genera código objeto sino código bytecode. – Según el paradigma de programación: 1. Imperativo: describe la programación como una secuencia de instrucciones que cambian el estado del programa, indicando cómo realizar una tarea. 2. Declarativo: especifica o declara un conjunto de premisas y condiciones para indicar qué es lo que hay que hacer y no necesariamente cómo hay que hacerlo. 3. Orientado a objetos: encapsula el estado y las operaciones en objetos, creando una estructura de clases y objetos que emula un modelo del mundo real, donde los objetos realizan acciones e interactúan con otros objetos. 4. Funcional: evalúa el problema realizando funciones de manera recursiva, evita declarar datos haciendo hincapié en la composición de las funciones y en las interacciones entre ellas. 5. Lógico: define un conjunto de reglas lógicas para ser interpretadas mediante inferencias lógicas. Permite responder preguntas planteadas al sistema para resolver problemas.
9
Obtención del código ejecutable 1. Código fuente: el código fuente de un programa informático es un conjunto de instrucciones escritas en un lenguaje de programación determinado. 2. Código objeto: el código objeto es el código resultante de compilar el código fuente. 3. Código ejecutable: el código ejecutable es el resultado obtenido de enlazar nuestro código objeto con las librerías. MÁQUINAS VIRTUALES Una máquina virtual es un tipo especial de software cuya misión es separar el funcionamiento del ordenador de los componentes hardware instalados. Características de las máquinas virtuales: - Cuando el código fuente se compila se obtiene código objeto bytecode, código intermedio). - Se requiere tener independencia para ejecutarlo en cualquier máquina. - La máquina virtual aísla la aplicación de los detalles físicos del equipo en cuestión. - Funciona como una capa de software de bajo nivel y actúa como puente entre el bytecode de la aplicación y los dispositivos físicos del sistema. - La Máquina Virtual verifica todo el bytecode antes de ejecutarlo. - La Máquina Virtual protege direcciones de memoria. - La máquina virtual actúa de puente entre la aplicación y el hardware concreto. FRAMEWORK: -
Es una estructura de ayuda al programador, en base a la cual podemos desarrollar proyectos sin partir desde cero.
-
Se trata de una plataforma software donde están definidos programas soporte, bibliotecas, lenguaje interpretado, etc, ayuda a desarrollar y unir los diferentes módulos o partes de un proyecto.
-
Con el uso de framework podemos pasar más tiempo analizando los requerimientos del sistema y las especificaciones técnicas de la app.
Ventajas de los framework: desarrollo rápido de software, reutilización de partes de código para otras aplicaciones, portabilidad de aplicaciones de un ordenador a otro y diseño uniforme del software. Inconvenientes: gran dependencia del código respecto al framework utilizado y La instalación e implementación consume muchos recursos. 10
View more...
Comments