construcción y arquitectura de sofware

33
Ingeniería de software La Ingeniería del Software es una disciplina o área de la Informática que ofrece métodos y técnicas para desarrollar y mantener software de calidad que resuelven problemas de todo tipo. Hoy día es cada vez más frecuente la consideración de la Ingeniería del Software como una nueva área de la ingeniería, y el ingeniero del software comienza a ser una profesión implantada en el mundo laboral.

Upload: xantiyaro123

Post on 09-Dec-2015

9 views

Category:

Documents


4 download

DESCRIPTION

trabajo explicando la construcción de software. Ingeniería del Software es una disciplina o área de la Informática,PRODUCTO Y PROCESO EN LA INGENIERÍA DEL SOFTWAREDiferencia entre ing. software y ing. sistema Ciclo de vida en la ingeniería del software

TRANSCRIPT

Ingeniería de software

 La Ingeniería del Software es una disciplina o área de la Informática que ofrece métodos y técnicas para desarrollar y mantener software de calidad que resuelven problemas de todo tipo.

Hoy día es cada vez más frecuente la consideración de la Ingeniería del Software como una nueva área de la ingeniería, y el ingeniero del software comienza a ser una profesión implantada en el mundo laboral.

Ingeniería del software

Esta ingeniería trata con áreas muy diversas de la informática y de las ciencias de la computación, abordando todas las fases del ciclo de vida del desarrollo de cualquier tipo de sistemas de información y aplicables a infinidad de áreas:

1. Negocios, 2. Investigación científica3. Medicina4. Producción5. Logística6. Banca, 7. Control de tráfico8. Meteorología9. Derecho10.Internet11.Intranet, 12.Entre otras áreas .

 

PRODUCTO Y PROCESO EN LA INGENIERÍA DEL SOFTWARE

• El producto: entregado por el ingeniero en software no es siempre el mismo que espera el usuario o cliente, El producto que ellos esperan es la solución del problemas descritos por ellos.

• El proceso: es un diálogo en el que se reúne el conocimiento y se incluye en el software, El proceso proporciona una interacción entre los usuarios y los diseñadores, entre los usuarios y las herramientas de desarrollo, y entre los diseñadores y las herramientas de desarrollo. 

Diferencia entre ing. software y ing. sistema

¿Que es la ing. Sistema?• Es una disciplina en cargada de la

analizaras, implementar y verificar sistemas informáticos.

¿Que es la ing. Software?• Es una disciplina que utiliza metodologías

para el análisis, implementación, construcción y prueba de software.

Al conocer sus definiciones nos damos cuenta de que ing. software es un parte de la ing. Sistema pero no siempreya que un sistema informático podría dar solución a un problema sin necesidad de la creación un software.

Ciclo de vida en la ingeniería del software

La vida útil o ciclo de vida: es el intervalo de tiempo determinado para el proyecto de desarrollo de software, contando con partes fundamentales para el desarrollo del mismo representa por modeles estandarizados, que se pueden adaptar a nuestros proyecto de pendiendo de la arquitectura del proyecto se decide el ciclo de vida o modelo de ciclo de vida para su implementación las principales son:

• Modelo de Desarrollo Rápido de Aplicaciones(RAD)

• Modelo Incremental• Modelo en Cascada• Modelo Espiral

Ciclo de vida en la ingeniería del software

El Desarrollo Rápido de Aplicaciones o RAD (Rapid Application Development): es aquel método que contempla un desarrollo de modo iterativo así cómo la realización de prototipos, su esencia se concentra en la usabilidad y utilidad así como la rapidez de ejecución.

Esta metodología está constituida por las siguientes etapas:

Modelo de Desarrollo Rápido

Ciclo de vida en la ingeniería del software

ETAPAS DEL DESARROLLO RÁPIDO DE APLICACIONES

• Modelado de la gestión: Dentro de esta etapa, el objetivo es la solución de las preguntas; por ejemplo:

¿Que información conduce el proceso de gestión?,¿Qué información se genera?, ¿A donde va a parar esa información?,etc.

• Modelado de datos: Contempla la definición de las características de los objetos, así como la constitución de los objetos y sus vínculos entre ellos.

• Modelado de proceso: Describe las metodologías que manipulan los objetos así como la comunicación entre ellos.

• Generación de aplicaciones: Permite la utilización de recursos que ya existen o crear componentes reutilizables.

• Pruebas de entrega:  Prueba todos los componentes nuevos.

Ciclo de vida en la ingeniería del software

DESARROLLO RÁPIDO DE APLICACIONES

Ventajas• Ciclos de desarrollo más

pequeños.• El desarrollo se realiza a un

nivel de abstracción mayor.• Menor codificación manual.• Mayor involucramiento de

los usuarios.• Posiblemente menos fallas.• Interfaz gráfica estándar.• Posiblemente menos fallas.

Desventajas• Comprar puede ser más

caro que construir.• Progreso más difícil de

medir.• Menos eficiente.

Ciclo de vida en la ingeniería del software

Modelo Incremental

El Modelo Incremental para el desarrollo del software, consiste en crear funcionalidad por pequeña que sea de modo que a partir de ella, las creaciones posteriores en base a la que primero fue creada.

• Definición de requerimientos.• Asignar los requerimientos a los incrementos.• Diseño del incremento a partir de los requerimientos.• Desarrollo del incremento.• Validar incrementos.• Integrar incrementos.• Validar funcionamiento.

Ciclo de vida en la ingeniería del software

-Fácil administración-Sencilla comprensión-Fácil prueba-Poco tiempo por entrega

-Después de realizar una entrega no se puede dar marcha atrás-Si el proyecto es muy pequeño puede tardarse mas.

Ven

taja

s

Desven

taja

sModelo Incremental

Ciclo de vida en la ingeniería del software

Modelo en Cascada

El Modelo en Cascada da las pautas que permiten la organización en el desarrollo del software a través de la implementación de sus características o etapas, esto quiere decir que no se podrá avanzar a la siguiente etapa hasta no concluir con todas las tareas.

Ciclo de vida en la ingeniería del software

Modelo en cascada

Análisis

Diseño

Codificación

Pruebas

Mantenimiento

Análisis: se obtienen los Requerimientos.

Diseño: describe la atracción y el diseño visual que cumplan con los requerimientos.

Codificación: se codifica en un lenguaje de programación.

Prueba: se verifica que el software cumpla con los requerimientos y funcionalidad deseada.

Mantenimiento: se realizan cabios al software para solucionar errores y adaptación a nuevas tecnologías.

Ciclo de vida en la ingeniería del software

Desventajas• Si se detecta algún fallo hay que comenzar

todo el proceso tomando en cuenta que hay que comenzar la construcción desde el inicio.

• Mantenimiento difícil.• Perdida de tiempo en etapas innecesarias.

Ventajas• Fácil administración.• Sencilla comprensión.• Fácil implementación.• Recursos para implementación mínimos.

Modelo en cascada

Ciclo de vida en la ingeniería del software

Modelo Espiral

Ciclo de Vida en Espiral tiene en cuenta fuertemente el riesgo que aparece a la hora de desarrollar software. Para ello, se comienza mirando las posibles

alternativas de desarrollo, se opta por la de riesgo más asumible y se hace un ciclo de la

espiral.El modelo espiral tuvo varias modificaciones que son:

• Modelo Original de Boehm.• Modelo Típico de Seis Regiones.• Modelo WINWIN.

Ciclo de vida en la ingeniería del softwareModelo Original de Boehm.

Determinación de objetivos Se definen objetivos específicos para la fase.

Se identifican los posibles riesgos.Análisis y reducción de riesgos

Se toman medidas para reducir los riesgos.Desarrollo y validación

Se elige un modelo de desarrollo Se desarrolla un prototipo.

Planeación Se evalúa el proyecto.

Se decide si se continúa con otra iteración de la espiral.

Se planea la siguiente fase.

Ciclo de vida en la ingeniería del software Modelo Típico de Seis Regiones

Comunicación con el cliente: las tareas requeridas para establecer comunicación entre el desarrollador y el cliente.

Planificación: las tareas requeridas para definir recursos, el tiempo y otras informaciones relacionadas con el proyecto. Son todos los requerimientos.

Análisis de riesgos: las tareas requeridas para evaluar riesgos técnicos y otras informaciones relacionadas con el proyecto.

Ingeniería: las tareas requeridas para construir una o más representaciones de la aplicación.

Construcción y adaptación: las tareas requeridas para construir, probar, instalar y proporcionar soporte al usuario.

Evaluación del cliente: las tareas requeridas para obtener la reacción del cliente según la evaluación de las representaciones del software creadas durante la etapa de ingeniería e implementación durante la etapa de instalación.

Ciclo de vida en la ingeniería del software Modelo WINWIN

WIN-WIN: es una adaptación del modelo de espiral y define un conjunto de actividades de negociación al principio de cada paso alrededor de la espiral. 

Se basa en el principio que el proyecto solo es exitoso si y solo si todos los implicados resultan ganadores.

 Actividades

•Identificación del sistema o subsistemas clave de los directivos.•Determinación de las condiciones de victoria de los directivos.•Negociación de las condiciones de victoria de los directivos para reunirlas en un conjunto de condiciones para todos los afectados.

Ventajas• Los desarrolladores y

cliente pueden reaccionar a riegos con anticipación.

• Permite utilizar enfoques de prototipo.

• En sistema grande puede doblar la productividad.

Desventajas• Es difícil convencer a

clientes de enfoques evolutivos.

• Por su complejidad no seria bueno utilizarlo en sistemas péquelos.

Ciclo de vida en la ingeniería del software Modelo en espiral

Herramientas en la ingeniería de software

A lo largo de las historia de la ingeniería en software han ido surgiendo herramienta para ayudar o facilitar las tares del ingenieros estas herramientas permites desde crear modelos uml hasta crear modelo de relaciones en base de datos facilitado su posterior uso en la construcción o en la implementación del modelo dentro de estas herramientas encontramos de distintas licencia como pueden ser paga , free y open sourse.

Herramientas en la ingeniería de software

Enterprise Architect 12 $ 699

• Administrar Requisitos• Modelar y analizar los procesos de negocios• Construir diseño y modelos de comportamientos• Generar e importar código fuente en una variedad de lenguajes• Generar e importar esquema de base de datos• Crear modelos de componentes y de despliegue• Rastrear cambios• Administrar pruebas• Confirmar la trazabilidad desde los requisitos a través y hasta el

despliegue• Documentar su desarrollo de software• Comunicar y desarrollar proyectos de ingeniería de

software basados en el equipo• Modelado/ingeniería rápida de su desarrollo de software

Project Professional 2013 $1,159.99 || 25.00 por /mes

Herramientas en la ingeniería de software

Permite la administración y manejo de los proyectos, divide las tareas por importancia Permite conectar te desde cualquier lugar y comunicarte con tu equipo puedes diseñar estadística para ver y prevenir Situaciones antes de que ocurran en el proyecto, y permitiendo usar diagrama de Gantt.

Herramientas en la ingeniería de software

Rational Rose Enterprise $ 2,923.00 / 12 meses

Permite acelerar el desroño de aplicaciones creando código atreves de modelos uml Y permite modelar aplicaciones web.

CA Erwin $778.99

Permite crear modelado diagramas y relaciones de bases de datoY luega crear crear el código sql para la mayor parte de gestores de base de datos

SQL Server, MySQL, Oracle, Progress

Herramientas en la ingeniería de software

Gantt Project (free)

Permite diseñar diagramas Gantt. Fácil de usar, con importación y exportación de archivos en formato MS Project.

Open projer (open sourse)

Solución multiplataforma que sustituye a alternativas de seguimiento de proyectos. Permite realizar manejos de proyectos ,costos de valor acumulado Diagrama de Gantt, grafico pert

Redmine (open sourse)

Es una herramienta para la gestión de proyectos Soporta múltiples proyectos.Sistema de seguimiento de errores flexible, Diagramas de Gantt y calendario, Subversión, Soporta diferentes bases de datos (MySQL, PostgreSQL y SQLite).

Arquitectura de Software

Es un conjunto de patrones que proporcionan un marco de referencia necesario paraguiar la construcción de un software permitiendo a los programadores, analistas y todo el conjunto de desarrolladores del software compartir una misma línea de trabajoy cubrir todos los objetivos y restricciones de la aplicación.

Tipos de arquitecturas

Para utilizar la arquitectura de software se sigue un conjunto de patrones de la arquitectura, entre los cuales podemos

encontrar:

Cliente-Servidor.

Blackboard.

Modelo entre capas.

Intérprete.

Orientada a Servicios

Tipos de arquitecturasCliente-Servidor

Esta arquitectura las tareas del sistema es repartidas un servidor que la ejecuta y un cliente que la pide

Tipos de arquitecturas

Blackboard

Esta arquitectura utiliza varios servidores para completar una terea dividiéndola en varias partes en distintos sistemas.

Tipos de arquitecturasModelo entre capas

Esta arquitectura permite crear una mejor abstracción y manejo en el modelo por que divide la funcionalidad del software en varias capas creado una independencia entre ella y una mejor forma de prueba. Estas capas pueden reutilizarse con mayor facilidad, dividimos las capas en:

Presentación: tiene las vista o atracción del programa;Dato: contiene todas las conexiones y funcionalidades de las base de datos;Negocio: tiene relación directa con la capa de dato;Entidad: contiene todas las entidades de la conexión;

Tipos de arquitecturas

Esta arquitectura costa de utilizar lenguajes que son interpretados (que no son trasformado total mente en un objeto y necesitan asistencia para ser entendidos por el computador) donde permite una prueba mas fácil ya que al momento de probarlos puedes tener acceso al código fuente ejemplo: java, HTML, Ruby, php, python.

Intérprete

Tipos de arquitecturas

Arquitectura Orientada a Servicios

Como su nombre lo indica la función de esta arquitectura es crear un marcho de aplicaciones que puedan trabajar con servicio, pudiendo resolver los objetivos de negocio como integración de los datos con todas la aplicaciones Una mayor flexibilidad y sistemas mas escalables.

El ciclo de desarrollo de la arquitectura

• Requerimientos:  La etapa de requerimientos se enfoca en la captura, documentación y priorización de requerimientos que influencian la arquitectura.

• Diseño: La etapa de diseño es la etapa central en relación con la arquitectura y probablemente la más compleja. Durante esta etapa se definen las estructuras que componen la arquitectura. La creación de estas estructuras se hace en base a patrones de diseño, tácticas de diseño y elecciones tecnológicas.

• Documentación: Una vez creado el diseño de la arquitectura, es necesario poder comunicarlo a otros involucrados dentro del desarrollo. La comunicación exitosa del diseño muchas veces depende de que dicho diseño sea documentado de forma apropiada.

• Evaluación: Dado que la arquitectura de software juega un papel crítico en el desarrollo, es conveniente evaluar el diseño una vez que este ha sido documentado con el fin de identificar posibles problemas y riesgos.

Herramienta para la arquitectura de software

Herramientas para desarrollo de aplicaciones XML, SQL y UML y para proyectos de arquitectura informática

Herramientas basadas en un servidor para gestionar y automatizar flujosde trabajo y procesos de integración de datos.

Altova € 1,390.00

argoUml (open sourse)

Asistencia al momento de modular uml y distintos diagramas Como Clases, Estados, Casos de Uso, Actividad, Colaboración, DesarrolloSecuencia.