Desarrollo de Software PDF

Summary

This document provides an overview of software development, including types of software, hardware components (like CPUs and RAM), and programming languages. It also discusses different programming methodologies.

Full Transcript

Qué es el software y su ingeniería El software es el conjunto de programas que realizan una tarea concreta en el equipo, para que el software pueda estar en buenas condiciones de funcionamiento, existe algo que se denomina “Ingeniería del software” y consiste en diseñar, desarrollar y mantener los p...

Qué es el software y su ingeniería El software es el conjunto de programas que realizan una tarea concreta en el equipo, para que el software pueda estar en buenas condiciones de funcionamiento, existe algo que se denomina “Ingeniería del software” y consiste en diseñar, desarrollar y mantener los programas de manera organizada y eficiente. Se enfoca en crear software de calidad que funcione bien, sea fácil de usar y pueda actualizarse sin problemas Tipos de software De sistemas: Son los programas que utilizan un ordenador, a través de comunicarse con el hardware (conexión usuario y equipo) (controladores, drivers sistema operativo…) De programación: Es el software encargado de dar la posibilidad de crear programas (editor, compilador, depurador…) De aplicación: Nos permiten a los usuarios realizar tareas, esto es gracias tanto al software de sistema como al de programación (ofimática, programas de gestión…) Hardware Para que podamos trabajar y comunicarnos con el software de nuestro equipo, existe el “Hardware” (elementos físicos del equipo: ratón, teclado, disco duro…), se compone de: Unidad central de proceso: Aquí es por donde se ejecutan las instrucciones de los programas; dentro de la CPU para que pueda hacer su trabajo, necesita de lo siguiente: Unidad Aritmético-Lógica: Hace todo lo relacionado con operaciones ya sean aritméticas como lógicas, que le llega desde la CPU Unidad de control: Recibe lo que le llega de la memoria principal y le dice a la ALU que lo realice y también a los registros Registros: Ahí está el almacenamiento de la CPU e intervienen en la ejecución de instrucciones Memoria principal o RAM: Es en donde está todas las instrucciones que se quieran ejecutar y sus datos correspondientes a la operación que se haga, esta le manda todo lo que hay que hacer a la CPU para que dicho elemento envíe las órdenes que hagan falta Unidad de entrada/salida: Comunica al ordenador con el exterior, para ello se utilizan los periféricos (ratón, teclado, monitor, impresora, etc), estos periféricos pueden ser de: ➔ Entrada: le dan la información al equipo (teclado, ratón, etc) ➔ Salida: Lo contrario,es decir, nos da la información al usuario (monitor, impresora, etc) ➔ Entrada/Salida: hacen las dos funciones (enviar información al equipo y la recibimos nosotros) (discos duros, DVD, etc) Lenguaje de programación Consiste en un conjunto de reglas y códigos que los programadores usan para escribir instrucciones que un ordenador puede entender y ejecutar. A continuación se explicará qué elementos lo conforman: Identificadores: Son los nombres que representa a los elementos de un programa (variables, módulos, etc) Constantes: Datos fijos del programa (no cambia el valor que tiene) Operadores: Consiste en símbolos que sirven para operar entre varios tipos de identificadores y constantes Instrucciones: También son símbolos, pero estos son para representar estructuras de procesamiento y definición Comentarios: Es todo el texto que se añade a la hora de documentar el programa El lenguaje puede clasificarse de esta manera: Lenguaje de bajo nivel: consiste en el único que entiende la máquina de forma directa y que emplea código binario (0 y 1) para poder comunicarse con el hardware, cada ceros y unos que conforman los códigos, cada uno hace referencia a los datos que queremos procesar Lenguaje de alto nivel: Se encarga de ayudar al programador a facilitar el trabajo y no hacerlo mucho más complejo, para ello presenta estas características: Se utilizan caracteres, ya sean alfabéticos, numéricos, alfanuméricos o especiales Uso de variables para simplificar mucho a la hora de hacer programación Puede haber líneas de comentarios Hay instrucciones de gran valor (aritméticos, lógicos, etc) Se tarda menos tiempo a la hora de codificar y ejecutar Es más fácil de corregir o modificar Tiene un aprendizaje más corto Lenguaje de programación estructurado: Consiste en tres tipos de estructuras para poder crear un programa, esos son: Secuencial (Las instrucciones se van ejecutando según en el orden en el que esté elaborado, una tras otra, por orden) Alternativa (En este caso, se ejecuta una orden u otra en función de la decisión que se tome a cabo) Repetitiva (Dicha instrucción no para de hacerse una y otra vez hasta que se cumple una condición) Diagrama de estructuras Es una representación gráfica en el que se representa como está todo organizado y estructurado, se representa con un rectángulo todos aquellos módulos (se encargan de realizar tareas de procesamiento) y las flechas (la unión de esos módulos) Lenguaje orientado a objetos Es un tipo de lenguaje de programación que organiza el software en "objetos". Estos objetos representan cosas del mundo real (como un coche, una persona) o conceptos (como una cuenta bancaria), y combinan tanto datos como comportamientos Otros lenguajes de programación ➔ C: Es un lenguaje que se destina para crear sistemas operativos y programas que interactúen directamente con el hardware del equipo ➔ Python: Es para personas que no son muy expertas en cuanto a programación por su aprendizaje y uso fácil ➔ PHP: Sirve muy bien para páginas y aplicaciones web a través de HTML, su uso es para crear sitios y bases de datos ➔ Java: Para trabajos que requieran mayor complejidad en los proyectos de gran escala. El Java está compuesto por lo siguiente: ❖.Java: Es la extensión de archivos que tienen el código fuente de java ❖.Class: Extensión de archivos que contengan la compilación de java ❖ JDK: Es todo aquello que necesitare para trabajar con java ❖ JRE: Es el entorno de desarrollo de java, está el JVM, las bibliotecas y lo necesario para ejecutar ❖ JVM: La máquina virtual de java, sirve para ejecutar el Bytecode (que está en.class) ❖ API: Son herramientas y otras funciones que nos ayuda a facilitar el desarrollo de programas en java El codigo fuente El código fuente es el conjunto de instrucciones que realiza el programador para que el software o el programa funcione, para que el ordenador comprenda todo lo que queremos hacer ejecutar y funciona, se transforma en código objeto. Según la manera en que se haga ese proceso, existen dos traductores diferentes: Compiladores: Se encargan de traducir de una sola vez todo el código que se ha creado y una vez hecho, este se genera por medio de un archivo ejecutable para que corra directamente en el ordenador Intérpretes: En este caso es lo contrario, en vez de hacerlo de una vez, se va ejecutando nuestro código linea tras linea y se va ejecutando sobre la marcha Para el caso exclusivo de java, este lenguaje utiliza tanto la compilación como la interpretación, primero se compila todo, generando después un formato llamado Bytecode y ya al final, la máquina virtual de java lo va interpretando IDE Un ide es una serie de varias herramientas (editor de código, compilador, depurador, etc) que nos sirve para escribir, ejecutar y depurar. Esas herramientas tienen las siguientes funciones: Editor: Aquí se escribe y editamos el código fuente Compilador: Traduce el código ( por medio del Bytecode) a otro que sea fácil de entender por el equipo Depurador: Analiza, detecta y corrige los errores que puedan surgir en el programa Hay otros elementos que son estos: GUI: Es lo que nosotros podemos ver e interactuar en algún programa GIT: A través de esta herramienta, se puede controlar las versiones de mi código Netbeans Es un programa que nos permite desarrollar software de manera sencilla, el Netbeans se compone de: ★ Editor de código (ahí se escribe el código) ★ Explorador de proyectos (nos da la estructura de los proyectos) ★ Depurador (detecta y soluciona errores de código) ★ Consola (vemos la salida y posibles errores del código) ★ Diseñador de interfaces (GUI Builder) (crea aplicaciones por medio de interfaz gráfica) Fases de desarrollo del software ❖ Fase 1 (Análisis): Analizamos todas las necesidades de los usuarios que sean necesarios y escribimos una especificación precisa. Durante el análisis, existen unas serie de requisitos funcionales y no funcionales y esos son: Funcionales ◆ Permitir que los usuarios puedan registrarse o iniciar sesión con usuario y contraseña ◆ Deben poder crear, leer, actualizar y eliminar los registros de la base de datos ◆ La interfaz debe ser sencilla para el usuario, compatible tanto para pc como para móvil ◆ Notificar a usuarios mediante correo electrónico o por medio de su app correspondiente en caso de actualizaciones o eventos ◆ Integración por medio de APIs externas que permita intercambiar información con otros servicios ◆ Se debe tener roles (administrador, cliente, etc) ◆ Avisar por mensaje de manera clara en caso de errores, dándole al usuario la posibilidad de arreglarlo ◆ Tener un buscador para encontrar información según criterios (fecha, nombre etc) ◆ Un historial en el que este todo registrado y mostrado para tener un seguimiento No funcionales ○ Fiabilidad: La aplicación esté funcionando sin ningún fallo ○ Escalabilidad: Manejo de gran carga sin que disminuya el rendimiento ○ Extensibilidad: Añadir funciones y componentes nuevos al software ○ Seguridad: Protección de la información de accesos indebidos ○ Mantenibilidad: Es que el software tenga un mantenimiento, esté reparado si se necesita reparar o mejorar ❖ Fase 2 (Diseño): Se planifica una vez se sepa qué es lo que queremos hacer, por medio de una organización a través de diagramas y modelos para ver como funcionaria y saber como se irá a trabajar después ❖ Fase 3 (Programación): Aquí se elaboran dichos códigos, siguiendo el modelo de la fase anterior. Dentro de la programación, existe una serie de elementos que lo conforman: Comentarios: Van al principio de cada codigo y es para describir como es y funciona cada linea de codigo que añadamos y para aclarar lo mas complejo Declaraciones: Poner las variables y parámetros Nombres: nombramos atributos, clases, métodos, variables, constantes, etc Lìneas de blanco: entre clases, métodos, etc Sangrados: Nos ayuda a que sea legible el código ❖ Fase 4 (Pruebas): Se comprueba una vez escrito y ejecutado, si cumple con el funcionamiento que queremos y también, de que no haya errores ninguno. En esta fase, se quiere conseguir estos dos objetivos: Verificar que el software está bien construido Validar que dicho software es el que he cliente ha pedido tener, es decir, que cumpla su función Durante las pruebas al software, se realizan dos tipos de técnicas: Prueba de caja blanca: sirve para examinar los módulos a detalle, se debe tener el código fuente para ello Prueba de caja negra: sirve para comprobar independientemente de como este elaborado, si funciona o no ❖ Fase 5 (Explotación): Una vez probado y bien, lo que se hace en esta fase es instalar y poner en marcha el software en el entorno de trabajo del cliente ❖ Fase 6 (Mantenimiento): Esta última fase es para ir realizando cambios y cambios en el software para ya sea corregir, mejorar o actualizar Máquinas virtuales Las máquinas virtuales son aplicaciones que ejecutan los programas como si fuera un equipo físico, existen dos tipos de máquinas virtuales: ➔ Máquina virtual de sistema: Aplicaciones que Simulan tener un sistema operativo dentro de tu mismo equipo, para asi poder por ejemplo ver cómo es o probar sus programas o aplicaciones (VMware, Virtualbox) ➔ Máquina virtual de procesos: Consiste en una máquina virtual que nos permite ejecutar un programa en cualquier tipo de plataforma, de manera independiente al hardware y sistema operativo que sea Róles que intervienen en el proceso de desarrollo de software Jefe de proyecto: Se encarga de llevar toda la planificación del proyecto (puesta en marcha,ejecución,seguimiento,control y cierre), es el máximo responsable de que todo salga bien Expertos del dominio: Son los trabajadores que tiene la función de d desarrollar la aplicación, deben hablar directamente con las personas ya que saben como solucionar correctamente el problema que se les informa Analista: Analiza mediante un modelo el problema que se menciona con aquello que les diga el o los trabajadores mencionados anteriormente, también se conoce como Analista funcional Arquitecto: Después del trabajo del analista, está la persona encargada de realizar una arquitectura del sistema, con la referencia de los demás trabajadores Diseñador: Realizan los diseños de las partes que conforman el sistema con los requisitos hasta que después sea trabajo para el programador Programador: Toma el relevo del diseñador, una vez acabada su parte, el programador lo que hace es escribir el código fuente sobre el modelo del diseñador Probador: Su función es la probar realizando varias pruebas para ver si la aplicación cumple con lo que se solicita Encargado de la implantación: Realiza el empaquetado final y su instalación en el cliente Modelos del ciclo de vida del software Se podría definir el ciclo de vida del software como una serie de etapas que le van ocurriendo a partir del momento en que se tiene la idea hasta que ya no se usa más, los ciclos de vida pueden ser de varios tipos de modelos: Modelo en cascada: Es el modelo más antiguo de todos, en el que consiste en un flujo secuencial en el que vas avanzando de un proceso a otro una vez que hayas cumplido dicha parte por completo (como si fuera una cascada); para que una fase acabe y pase a la siguiente, se debe cumplir los objetivos que cada uno plantea; una vez que se acaba cada parte, antes de avanzar se realiza una revisión para verificar si hay o no errores Modelo incremental: Se asemeja al modelo en cascada, solo que en este caso, el software se va dividendo en partes o incrementos, dicho incremento lo que hace es mejorar o añadir características nuevas con respecto a otras versiones anteriores, es decir, que aquí a la vez que van pasando por las fases como el de cascada, se va desarrollando y teniendo funcionalidades nuevas progresivamente Modelo evolutivo: El software, a medida que se va desarrollando, irá cambiando constantemente con el paso del tiempo , este modelo para que funcione así lo que hace es adaptarse con los cambios que se van produciendo Metodologías de desarrollo de software Esta metodología consiste en una guia organizado y estructurado sobre el proceso de creación, mantenimiento y mejora del software, para ello se necesita de unas herramientas para llevar a cabo la metodología y se denomina: CASE; existen tres periodos de tiempo: ❖ Desarrollo convencional: Antes se realizaban de esta manera, es decir, de manera más artesanal y sin mucha metodología. Todo esto finalmente hizo que se produjera lo que se llama: Crisis de software ❖ Metodología estructurada: Es el empleo de programas de tipo estructurada, que lo que hacen es regular las tareas de programación; esto hizo que surgieran también los métodos de diseño y analisis estructurado ❖ Metodologías orientadas a objetos: Esta metodología lo que hace es centrarse en objetos y no en los procedimientos o las funciones, su software ve en torno a los objetos que representan entidades en la vida real, dichos objetos tienen datos y comportamientos y la interacción entre ellos se llama desarrollo de sistema El proceso unificado de rational (RUP) Lo podemos describir en función de dos dimensiones: Dimensión temporal: funciona mediante ciclos, fases, iteraciones e hitos; dichos ciclos se componen de las siguientes fases: Dimensión estática: en este caso es por activities (que viene a ser aquella actividad a realizar), artifacts (que es todo aquello que consiste en información, ya sean producidos o modificados para el desarrollo del software), workers (el rol o roles que cada uno lleva a cabo cada individuo o grupo) y el workflow (Actividades secuenciales que sirven para producir productos intermedios) Programación extrema (XP) Consiste en una metodología ágil en el que para que funcione, se debe establecer unos valores y esos son: ★ Simplicidad: Consiste en simplificar el diseño y así de esa forma poder agilizar todo el proceso de desarrollo, facilitando también su posterior mantenimiento (para ello se diseña únicamente lo necesario) ★ Comunicación: Se debe comunicar con el cliente de una manera más cercana e informal ★ Retroalimentación: Es cuando hacemos incrementos en un corto periodo de tiempo, en el que después se le muestra al cliente una vez terminado; la retroalimentación es continua y frecuente ★ Valentía: Para ello se debe cumplir bien con las prácticas que son más complejas o extremas ★ Respeto: Hay que tener un respeto sobre todo lo mencionado anteriormente para cumplirlo con respecto a los otros miembros del equipo de desarrollo y/o las personas que participan también Scrum Consiste en un modelo de desarrollo ágil en el que se tiene como objetivo el entregar del producto al cliente en poco tiempo; para ello se basa en: Transparencia: Los miembros que realizan el proyecto conocen que ocurre en todo momento (todo el mundo) Inspección: De una manera organizada, todos inspeccionan el proyecto para detectar posibles problemas Adaptación: En caso de cambiar algo, los miembros del equipo, se adaptan a la situación para lograrlo cada actividad estructural que se hace, se divide en Sprints (periodo de tiempo en el que se realiza el trabajo, en el que la duración máxima es de un mes), antes del Sprint, viene el Sprint planning (se organiza el trabajo que se hace en el Sprint), cuando se acaba dicho sprint se entrega el producto al cliente y en cada uno de esos sprint, se realizan reuniones diarias que duran como mucho 15 minutos. Cuando el producto ya es entregado al fin, está el Sprint review (muestra el funcionamiento del producto para que vea si es lo que ha pedido)

Use Quizgecko on...
Browser
Browser