ACTIVIDAD FINAL 3 SEMANA 7
Por
Maicol Stiven Gonzalez Bastidas
PROGRAMA INGENIERIA DE SISTEMAS
Actividad Final 3 Semana 7 presentada a
Dr. José Vicente Toro Gaviria
en Cumplimiento de los Requisitos
de Ingeniería de Software
Corporación Unificada Nacional de Educación Superior (CUN)
Abril 2020
1 SOFTWARE
El Software es la parte no física de un computador o un equipo de cómputo, ya sea Laptops,
Smartphone, Impresoras, Smart TV, etc., de hecho, el software abarca una gran parte de los
electrodomésticos de la nueva generación, ya que hay varios de ellos que necesitan de un software
para poder interactuar con el usuario.
En si el concepto de software abarca todas las aplicaciones informáticas, como los procesadores
de texto, las planillas de cálculo o los editores de imagen, estos software o programas son
desarrollados por programadores de software los cuales los crean con diferentes lenguajes de
programación como por ejemplo JAVA, C++, PHYTON, C#, PHP, HTML ETC.… Permitiendo
así el control de los comportamientos de una máquina.
Clasificación:
Los softwares se clasifican en tres, Software de base, software de programación y Software de
aplicación, en el Software de base están los programas que permiten tener el control sobre el
hardware, componentes físicos y dar soporte a otros programas informáticos por lo cual se llaman
SISTEMAS OPERATIVOS, funcionando desde el momento en el que se enciende el dispositivo
o computadora Y brindando una interfaz al usuario para su control y manejo.
El software de programación no es más que los programas diseñados para los programadores, para
que ellos puedan crear sus propios programas informáticos, haciendo uso de su conocimiento y
algunos lenguajes de programación anteriormente mencionados.
El Software de aplicación es el que se encarga de realizar tareas específicas, como procesadores
de texto, hojas de cálculo, reproductores multimedia, aplicaciones web, editores de multimedia,
etc…
2 INGENIERIA DE SOFTWARE
Es la rama de la ingeniería que estudia todas las partes en relación con la informática o sistemas
de computación, utilizando un modelo metódico, ordenado y cuantificable al incremento,
conservación y ejecución del software.
Esta ingeniería incorpora análisis precedente de la situación, el bosquejo del proyecto, el desarrollo
del software, y un ensayo necesario para comprobar su correcto funcionamiento y poner a trabajar
el sistema.
Dentro de la ingeniería de software es importante conocer y comprender como funciona el ciclo
de vida del software y sus etapas: Concepción, Elaboración, Construcción y Transición.
Concepción: Parte determinando si o puede haber repercusión en el proyecto, con su viabilidad y
diseña el modelo de negocio.
Elaboración: Precisa la planificación del proyecto, especificando las características y apoya la
arquitectura.
Construcción: Es cuando el software está siendo elaborado.
Transición Parte de finalización y entrega del producto al usuario final.
Dentro de la ingeniería de software es importante saber que fue a inicio de la década de los 70’s
cuando los programas (software) querían ser comercializados a gran escala requiriendo de
funciones aún más complejas y no había un modelo funcional para la creación en masa, que pudiera
dar garantías como seguridad de la información, modificación del software entre otras.
Elementos de caracterización de la ingeniería de Software:
Los programas y/o algoritmos.
Las estructuras de datos.
Los documentos.
También cuenta con etapas de ella misma,
Etapa de análisis
Etapa de Desarrollo:
Etapa de Pruebas o Verificación Prueba:
Etapa de Mantenimiento:
Etapa final EOL (End-of-Life)
Uno de los desafíos en la ingeniería de software se contemplan 3 principales que son:
Heterogeneidad: Desarrollar técnicas para la construcción de software confiable, seguro y que este
software pueda comprender el futuro del negocio para que se adapte a él.
Entrega: trata de reducir considerablemente los tiempos de entrega para sistemas robustos y
complejos, sin descuidar la calidad de los mismos.
Confianza: demostrar bajo la experiencia y conocimiento al usuario, que tan competitivo se es para
crear el software y que este software cumpla con las condiciones pactadas.
PUNTO 3 Y 4:
MODELO EN CASCADA
Este modelo divide los procesos de desarrollo en fases sucesivas del proyecto, y estas fases se
ejecutan una sola vez.
Estos resultados son tomados como hipótesis para la siguiente fase este modelo se utiliza en el
desarrollo de software.
Ventajas: Si se utiliza de forma correcta los resultados pueden ser muy buenos.
MODELO INCREMENTAL
Este modelo tiene como objetivo crecer con cada una de las entregas parciales que se realizan en
fechas establecidas en un calendario, y estas entregas deben cumplir con una evolución con respeto
del anterior.
Fases Modelo Incremental:
1.Requerimientos.
2.Definición de las tareas y las iteraciones.
3.Diseño de los incrementos.
4.Desarrollo del incremento.
5.Validación de incrementos.
6.Integración de incrementos.
7.Entrega del producto.
MODELO EVOLUTIVO
Se crea una versión inicial, que después de ser expuesta se va mejorando, es decir, que gracias a
las contextualizaciones, comentarios o nuevos comentarios del cliente final (usuario), se van
realizando las mejoras pertinentes teniendo un perfecto versionamiento de cada una de las mejoras.
1 desarrollo exploratorio donde el objetivo del proceso es trabajar con el cliente para explorar sus
requerimientos y entregar un sistema final El desarrollo empieza con las partes del sistema que se
comprenden mejor El sistema evoluciona agregando nuevos atributos propuestos por el cliente
2 prototipos desechables donde el objetivo del proceso de desarrollo evolutivo es comprender los
requerimientos del cliente y entonces desarrollar una definición mejorada de los requerimientos
para el sistema El prototipo se centra en experimentar con los requerimientos del cliente que no se
comprenden del todo.
MODELO ESPIRAL
Funciona como arquetipo para el proceso de desarrollo de apps.
Cuenta con la hipótesis de que el desarrollo va a ser un ciclo iterativo en el que las etapas de este
modelo se distribuyen en ciclos y a su vez ellos se van cumpliendo en forma de espiral.
Se caracteriza por ser uno de los modelos más complejos en comparación a los demás modelos.
Ventajas: los riesgos se van disminuyendo conforme avanzan los ciclos o iteraciones.
MODELO GANAR-GANAR
Toma como base el modelo de espiral y hace énfasis en la identificación de condiciones de
ganancia para todas las partes, crea un plan para cumplir las condiciones más importantes y
ganadoras, con sus riesgos correspondientes.
Tiene como base ciclos que son indispensables que su funcionamiento.
Ciclo 0: Grupos de aplicación. Se determina la fiabilidad de un grupo apropiado de aplicaciones
Ciclo 1: Objetivos del ciclo de vida de la aplicación. Se desarrollan los objetivos del ciclo de vida,
incluyendo prototipos, planes y especificaciones de aplicaciones individuales, y se verifica la
existencia de al menos una arquitectura viable para cada aplicación.
Ciclo 2: Arquitectura del ciclo de vida de la aplicación. Se establece una arquitectura del ciclo de
vida detallado, se verifica la viabilidad y determina que no existen riesgos mayores en satisfacer
los planes y especificaciones.
Ciclo 3: Capacidad de operación inicial. Alcanzar una capacidad operacional inicial para cada
etapa crítica del proyecto en el ciclo definida del software.
5 ACTIVIDADES DE GESTION DE GESTION DE PROYECTOS
Para la correcta gestión de un proyecto de software es importante poder comprender que esto
conlleva a cumplir con una serie de actividades las cuales ayudaran a que el resultado del proyecto
sea exitoso, para esto se comprenden las siguientes actividades:
Planificación del proyecto: Esta tarea se realiza antes de que la producción del software comience,
es decir se debe tener en cuenta, para seguir el paso a paso de cómo desarrollar el proyecto.
Gestión del alcance: Define el alcance que va a tener el proyecto, incluyendo los procesos y
actividades que se necesitan para crear un producto comercializable.
Gracias a esta gestión el proyecto crea condiciones de lo que se debe hacer y lo que no, haciendo
que el proyecto tenga tareas limitadas y cuantificables, con lo que podría ser documentado mucho
más rápido.
Esto evitaría sobrecostos en el proyecto y tiempos excedidos, adicional es importante cumplir
durante la gestión del proyecto con los siguientes puntos:
Definir el alcance
Decidir su verificación y control
Dividir el proyecto en pequeñas partes para facilitar su gestión.
Verificar el alcance
Controlar el alcance incorporando cambios a éste
Estimación del proyecto: Para que la gestión del proyecto sea lo más efectiva es importante realizar
una estimación del proyecto, y esta estimación comprende varios aspectos a estimar como lo son:
Estimación del tamaño del Software
Estimación del esfuerzo
Estimación del tiempo
Estimación del costo
El tamaño del software
La calidad del Software
El Hardware
Herramientas o software adicional, licencias, etc.
Personal formado para tareas concretas
Implicaciones de viaje
Communicación
Formación y soporte
6 PRIMERAS FASES DEL DESARROLLO
Análisis de requisitos.
Diseño y arquitectura.
Programación.
Pruebas.
Documentación.
Mantenimiento
7 DESCRIPCION DE ANALIS Y DISEÑO
Análisis: Identificar los requisitos de un producto de software es la primera fase para crearlo, sin
embargo, puede que el requerimiento sea complejo y es necesario conocer todo el sistema para
evaluar los impactos tanto positivos como negativos antes de iniciar con el proceso de diseño.
Esto se debe a que varios sistemas que ya están implementados son ambiguos o contradictorios.
Ya finalizando el proceso de análisis se debe plasmar en un documento tipo ERS (Especificación
de Requerimientos del Sistema), incluyendo el estándar o varios de ellos como entidad/relación
etc.
Diseño: en esta fase se determina de manera general la forma de interacción del software, con los
diferentes medios tecnológicos como lo son la red, el hardware etc…
Adicional se deben definir los casos de usos para cubrir funcionalmente las acciones del sistema y
se transforman las entidades del modelo Entidad/relación de la fase análisis en clases de diseño,
para que puedan tener un parecido a programación orientada a objetos.
Diseño conceptual: se refiere a que el diseño debe basarse en datos o hechos reales para realizar
la abstracción de un tema en un área específica a nivel informático. Para la creación con este diseño
nada esta al azar todo debe tener una secuencia lógica.
Diseño lógico: permite representar los datos adquiridos en el diseño conceptual, usando de manera
eficiente posibles recursos para estructurar datos, modelando así restricciones disponibles en el
modelo lógico.
Este diseño construye un esquema lógico del anterior esquema conceptual, y utilizará las
estructuras de datos del modelo de bases de datos, y convirtiéndose así en una guía para el diseño
físico.
Diseño físico: es poner en marcha los anteriores diseños en una memoria secundaria, la cual
albergara estructuras de almacenamiento y métodos de acceso que garanticen el correcto
funcionamiento y accesibilidad a los datos.
8 FASE DE CODICFICACION EN UN DISEÑO DE SOFTWARE
Durante esta fase se realizan las tareas de programación, las cuales consisten en llevar a cabo a
través del código fuente y el lenguaje de programación todo lo diseñado en la fase anterior.
Su realización depende del programador de software y es completamente obligatorio seguir los
lineamientos impuestos en el diseño sin obviar los requisitos fundamentales y no fundamentales
especificados en la etapa de análisis.
9 FASES DEL PROCESO DE PRUEBAS DE SOFTWARE:
Pruebas de componentes.
Pruebas de integración.
Pruebas de sistema.
Pruebas de aceptación.
TIPOS DE PRUEBAS DE SOFTWARE
Pruebas funcionales.
Pruebas de desempeño.
Pruebas de usabilidad o interfaz de usuario.
10 PASOS PARA ELABORAR UN PLAN DE PRUEBAS
Analizar los requerimientos de desarrollo de software.
Identificar las funcionalidades nuevas a probar.
Identificar las funcionalidades de sistemas existentes que deben probarse.
Definir la estrategia de pruebas.
Definir los criterios de inicio, aceptación y suspensión de pruebas.
Identificar los entornos (ambientes) requeridos.
Determinar necesidades de personal y entrenamiento.
Establecer la metodología y procedimientos de prueba.
Elaborar la planificación de las pruebas.
Identificar los riesgos y definir planes de respuesta.
11 TIPOS DE MANTENIMIENTO DE SOFTWARE
Mantenimiento preventivo.
Mantenimiento predictivo.
Mantenimiento correctivo.
Mantenimiento adaptativo.
Mantenimiento evolutivo.
Mantenimiento perfectivo.
12 REINGENIERIA DE SOFTWARE
La reingeniería de software es una parte fundamental de la ingeniería de software, ya que permite
evaluar los sistemas y aplicaciones de información para determinar si su funcionamiento está
acorde con las políticas del negocio o si es necesario reestructúralo, para lograr mayor efectividad
en sus procesos.
También se puede aplicar este concepto a la parte de negocios, ya que puede intervenir para que
el negocio realice cambios en sus metodologías y conseguir una mayor productividad o
competitividad frente a la actual.
13 TIPOS DE REINGENIERIA DE SOFTWARE
1. Análisis de Inventarios
2. Reestructuración de documentos
3. Ingeniería Inversa
4. Reestructuración de código
5. Reestructuración de datos
6. Ingeniería directa
14 CALIDAD DE SOFTWARE O CALIDAD EN EL SOFTWARE
Parte de la nueva estandarización de la ISO (ISO/IEC DEC 9126), la cual indica que la calidad se
da en ultima palabra por parte del usuario final, y que para ser un software de calidad debe cumplir
con criterios o exceder las expectativas del usuario, en cuanto a funcionalidad, ejecución,
confiabilidad, disponibilidad, apoyo a un valor que el usuario esté dispuesto a pagar o pueda pagar.
En pocas palabras la calidad de software depende de estos factores anteriormente mencionados y
solo el usuario final puede decir si el software es de calidad o no.
15 FASES DEL PROCESO DE PRUEBAS DE SOFTWARE
Esta es la estrategia de pruebas para evaluar dinámicamente el software, evaluando los
componentes del software más sencillos, e ir avanzando hasta completar todo el software en su
conjunto.
Pruebas Unitarias: las pruebas unitarias parte de realizar cada prueba modulo por modulo.
Pruebas de Integración: las pruebas de integración van de la mano con el esquema de diseño, pero
incluyendo los módulos correctamente integrados y así probar las toda la interfaz.
Prueba del Sistema: en esta prueba de sistema también se ven involucrados los componentes de
hardware, los cuales deben cumplir una función con el ya instalado software de manera que
cumplan con el requerimiento inicial.
Pruebas de Aceptación: estas pruebas de aceptación no son más que otras pruebas de sistema, pero
incluyendo al usuario final el cual debe realizar su set de pruebas, y dar la aceptación de
conformidad del software recibido.
BIBLIOGRAFÍA
Sistemas de Información y Ciclo de Vida del Software:
https://www.youtube.com/watch?v=4D1nhygWOKw
Ingeniería de software: Qué es, objetivos, características y más:
https://micarrerauniversitaria.com/c-ingenieria/ingenieria-de-software/
Cuáles son los retos fundamentales que afronta la Ingeniería del Software:
https://itsoningsoftware.blogspot.com/2014/12/cuales-son-los-retos-fundamentales-que.html
Modelo en Cascada
https://softwaretheory.wordpress.com/2014/10/13/modelo cascada/
Modelo Incremental
https obsbusiness.school/int/blog projectmanagement/metodologias agiles/caracteristicas y fases
del modelo
Modelo Evolutivo
https:// ingsoftware.weebly.com/modelo evolutivo.html
Modelo en Espiral
https://www.lifeder.com/modelo espiral
Modelo Ganar Ganar
https ://ingsoft ittg.blogspot.com/2016/05/modelo ganar ganar.html
Reingenieria de software:
http://cursos.aiu.edu/REINGENIER%C3%8DA%20EN%20SISTEMAS/2/PDF/Reingenieria%2
0de%20sistemas%20sesion%202.pdf
Fases del proceso de desarrollo del software
https://sistemasvd.wordpress.com/2008/07/05/fases-del-proceso-de-desarrollo-del-software/
Calidad de software
http://www.eumed.net/libros-gratis/2008a/351/Calidad%20de%20Software.htm