Notes
Tema 1
Content of the notes (4)
Page 1
Software:
De sistema: Software base instalado y configurado en nuestro ordenador para que las apps puedan funcionar. Sistemas operativos como Windows.
De programación: Conjunto de herramientas que nos permiten desarrollar programas informáticos. Editores de texto, compiladores, IDE....
Apps informáticas: Conjunto de programas que tienen una finalidad concreta. Hojas de cálculo, videojuegos...
Relación software-hardware:
El sistema operativo es el encargado de coordinar al hardware durante el funcionamiento del ordenador debido a que todas las aplicaciones necesitan recursos hardware durante su ejecución.
Una aplicación es un conjunto de programas escritos en algún lenguaje de programación que el hardware del equipo debe interpretar y ejecutar debido a que solo es capaz de interpretar señales electricas (código binario)
Page 2
Análisis: Fase de mayor importancia del desarrollo y dependerá de lo bien detallada que esté.
Documento de especificación de requisitos software
Funcionales: Funciones que tendrá que realizar la app. Que respuesta dará la app a todas las entradas y a situaciones inesperadas. Ejemplo: Los usuarios deben poder agregar productos a un carrito de compras y proceder al pago.
No funcionales: Tiempos de respuesta del programa, legislación aplicable, tratamiento ante la simultaneidad de peticiones. Ejemplo: El sistema debe cargar las páginas de productos en menos de 3 segundos
2. Documento de diseño de arquitectura: Contiene la descripción de la estructura relacional global del sistema y lo que debe hacer cada parte y las relaciones entre ellas. A veces se genera como una de las primeras tareas de la parte de diseño
Diseño:
Documento de diseño de software: Se debe crear un modelo funcional-estructural de los requerimientos para dividirlo y afrontar las partes por separado
Plan de pruebas detallado a utilizar en la fase de prueba
Codificación: Consiste en elegir el lenguaje de programación, codificar la información anterior creando así el código fuente.
El código debe tener las siguientes características: Modularidad (dividido en trozos pequeños), corrección (que haga lo que se pide), fácil de leer (facilitar su desarrollo y mantenimiento futuro), eficiencia (que haga un buen uso de los recursos) y portabilidad (que se pueda implementar en cualquier equipo
Compilación: En esta fase se hace una traducción del código fuente para pasarlo a lenguaje máquina. Puede realizarse de 2 formas.
Compilación: Se realiza sobre el código fuente en un solo paso a través del compilador. Se crea un código objeto que habrá que enlazar
Interpretación: La traducción se hace línea a línea a través del interprete. Se ejecuta simultáneamente. No existe código objeto intermedio. Es un proceso mas lento pero recomendable cuando el programador es inexperto ya que la detección de errores es más detallada
Pruebas: Imprescindible para asegurar la validación y verificación del software construido.
Pruebas unitarias: Consiste en probar las diferentes partes del software y comprobar su funcionamiento por separado. Se genera un documento de procedimiento de pruebas, este incluye los resultados esperados que se compararan con los resultados obtenidos.
Pruebas de integración: Puesta en común de todos los programas desarrollados después de las pruebas unitarias. Se genera un documento de procedimiento de pruebas de integración, que se comparará con los resultados obtenidos
Explotación: Instalación, puesta a punto y funcionamiento de la aplicación en el equipo final del cliente. Se suelen llevar a cabo las Beta Test.
Mantenimiento: Es la etapa mas larga de todo el ciclo de vida, el software deberá irse adaptando a las mejoras de hardware o a situaciones nuevas, o corregir errores que van apareciendo. Hay distintos tipos de cambio: Perfectivos (mejorar la funcionalidad), evolutivos (el cliente propone mejoras para el producto, implica nuevos requisitos), adaptativos (modificaciones para adaptarse al mercado, hardware, condiciones de organismos reguladores) y correctivos (resolver errores detectados)
Documentación: No debe ser considerada como una etapa más en el desarrollo del proyecto, sino que es constante en todo su ciclo de vida. Es necesario para dar información a los usuarios de nuestro software, y para dar asar de una etapa a otra de forma clara y definida. Existen 3 tipos:
Guías técnicas: Dirigidos al personal técnico (analistas y programadores)
Guías de uso: Dirigidos a usuarios que van usar la aplicación (clientes)
Guías de instalación: Dirigidos al personal informático responsable de la instalación
Page 3
Ciclos de vida del software
Los modelos de ciclos de vida más conocidos son:
Modelo en cascada: Es el modelo de vida clásico del software. Se pasa de una etapa a otra sin retorno posible, aunque se detecte un error en fases iniciales. Sólo es aplicable a pequeños desarrollos. Requiere conocimiento previo de los requerimientos, no permite modificaciones ni actualizaciones, esto todo lo hace utópico.
Modelo en cascada con realimentación: Uno de los más utilizados ya que se puede retornar a etapas anteriores pero a veces los errores detectados al concluir el proyecto pueden provocar que haya que empezar de cero
Modelos evolutivos
Modelo iterativo incremental: Basado en el de cascada con realimentación pero las fases se repiten y refinan. Cada iteración genera versiones parciales del producto y será el punto de partida para la siguiente iteración. Permite una evolución temporal al no sacar productos completos, sino versiones.
Modelo en espiral: Combinación del modelo cascada con el iterativo incremental. Se divide en 6 zonas con tareas asignadas, esto hace que se reducen los riesgos y adapta la naturaleza evolutiva del software
Modelos ágiles: Modelos que están ganando gran presencia. Muy centrados en la satisfacción del cliente, Las fases se solapan entre ellas lo que hace necesaria la comunicación entre los integrantes.
Uno de ellos es el scrum, donde los equipos son capaces de organizarse y autogestionarse, avanzando a medida que el equipo va adquiriendo madurez. Para organizarse, se crea una lista de tareas con orden de prioridad y desglosada detalladamente llamado product backlog Al conjunto de elementos seleccionado para realizar en un sprint (período breve de tiempo, de menos de un mes, en el que el equipo trabaja para completar un trabajo establecido), se denomina sprint backlog. Para organizar esas tareas a realizar en el sprint, se reúne el equipo de trabajo diariamente unos 15 minutos. Esa reunión se llama daily scrum meeting y es organizada por el scrum master pero dirigida por los desarrolladores, que suelen ser entre 3 y 9 miembros además del Scrum Master (lidera al grupo de desarrollo centrándose en la mejora de los procesos internos) y Product Owner (responsable del producto final y nexo entre miembros del equipo y usuarios finales). Antes de empezar cada sprint se realiza el Sprint planning meeting para planificar que y como se va a hacer durante el sprint . Al final del sprint se realiza el Sprint Review para revisar lo realizado durante el Sprint, centrándose en el producto. Y por último, el último evento se llama Sprint Retrospective, en donde se centra en lo que salió bien y que podría mejorarse en el próximo sprint, centrándose en la forma de trabajo y las relaciones entre el equipo
Page 4
Herramientas de apoyo al desarrollo del software
Las herramientas CASE (Computer Aided Software Engineering) son un conjunto de app para el desarrollo de software para automatizar fases y reducir costos y tiempo. Se clasifican en función de las fases del ciclo de vida del software en la que ofrecen ayuda
U-CASE: Fases de planificación y análisis de requisitos
M-CASE: Análisis y diseño
L-CASA: Ayuda en la programación, detección de errores del código, depuración y generación de documentación
Frameworks
Estructura de ayuda al programador para desarrollar proyectos sin partir de cero. Desarrollo rapido, reutilización del código, diseño uniforme y portabilidad. Ejemplos como: .NET, SPRING de Java, Qt o Angular
Lenguajes de programación
Es el conjunto de alfabeto, sintaxis y semántica creado de forma artificial para obtener un código que el hardware pueda entender y ejecutar. Se elige en la fase de diseño y en la fase de desarrollo cuando se usa. Sus características son
Lenguaje máquina: primer lenguaje utilizado que consta de combinaciones de unos y ceros que no necesitan de traducción. Hoy nadie utiliza
Lenguaje ensamblador: Se programa usando mnemotécnicos (instrucciones complejas) haciendo necesaria su traducción al lenguaje máquina
Lenguaje de alto nivel basados en código: Se utilizan sentencias derivadas del inglés siendo necesaria su traducción, cada vez se utilizan menos
Lenguajes visuales: Se programa gráficamente usando el ratón y diseñando directamente la apariencia. Su código se genera automáticamente
Según lo cerca que esté del lenguaje humano:
Lenguajes de programación de alto nivel: Traducen algoritmos a un lenguaje más fácil de programar pero la máquina para ejecutarlos necesitan ser traducidos
Lenguajes de programación de bajo nivel: Aprovechan al máximo los recursos del ordenador donde se van ejecutar
Lenguaje máquina: Se programan con ceros y unos. Difícil de programar y resolver errores
Lenguaje ensamblador: Expresa las instrucciones de una forma mas cercana al ser humano que al anterior
Según su forma de ejecución
Lenguajes compilados: Traducen a través de un programa traductor llamado compilador generando un nuevo fichero ejecutable escrito en lenguaje máquina
Lenguajes interpretados: Se tiene que traducir el programa cada vez que se quiera ejecutar a través de programas llamados intérpretes. No generan un fichero cada vez que se ejecuta.
En los lenguajes compilados no podemos ejecutar el programa hasta que no haya un error mientras que en los interpretados si. Para obtener las ventajas de ambos el programa original se traduce a un lenguaje intermedio obteniendo un fichero y después es traducido a lenguaje máquina y ejecutado.
Entonces tendremos código fuente lenguaje mas cercano al programador, y puede ser código abierto o código cerrado, código objeto que no es ejecutable por el equipo pero tampoco inteligible por el ser humano que solo se obtiene cuando el código fuente está libre de errores, y código ejecutable que es el código objeto con ciertas rutinas y bibliotecas necesarias, siendo así inteligible por la computadora
Lenguajes imperativos: Se describe paso a paso un conjunto de instrucciones para solucionar el problema
Declarativos: Las sentencias que se utilizan describen el problema que se requiere solucionar pero no las instrucciones
Según la técnica de programación utilizada
Estructurados: Permite solo el uso de sentencias secuenciales, selectivas (condicionales) y repetitivas (bucles). Son faciles de leer y sencillos pero todo el programa es un único bloque por eso se acabó convirtiendo en programación modular.
Orientados a objetos: Se componen en objetos independientes entre si que colaboran para realizar acciones siendo menos intuitivo que la anterior
Visuales: Basados en técnicas anteriores permiten programar gráficamente creando un código equivalente de forma automática
Entornos de ejecución
Son servicios de máquinas virtuales con base software junto con API´S (bibliotecas necesarias para que la app) para la ejecución de programas. A veces pertenece al propio S.O pero también se puede instalar como software independiente
Java runtine enviroment: Conjunto de utilidades que permite la ejecucuion de programas java sobre cualquier plataforma.
Information
- Description
- Grado Superior Contornos Note on Tema 1, created by Marcos Ramos on 02/12/2023.
- Created by
- Marcos Ramos
- Views
- 5
- Rating