Sei sulla pagina 1di 6

INGENIERIA DE SOFTWARE

Ingeniería del Software. La Ingenieria 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.

ESTADO DEL ARTE DE LA INGENIERIA DEL SOFTWARE

La Ingeniería del Software trata con áreas muy diversas de la Informática y de las ciencias de la computación tales
como construcción de compiladores, sistemas operativos o desarrollos de Intranet/Internet, abordando todas las
fases del ciclo de vida del desarrollo de cualquier tipo de sistemas de información y aplicables a una infinidad de
áreas tales como: negocios, investigación científica, medicina, producción, logística, banca, control de tráfico,
meteorología, el mundo del derecho, la red de redes Internet, redes Intranet y Extranet, etc.

TERMINO INGENIERÍA DEL SOFTWARE

El término Ingeniería se define en el Diccionario de la Real Academia Española de la Lengua (DRAE) como:

Conjunto dé conocimientos y técnicas que permiten aplicar el saber científico a la utilización de la materia y de las
fuerzas de energía

Según la Real Academia de Ciencias Exactas, Físicas y Naturales:

Definiciones de Ingeniería de Software:

Definición 1: Ingeniería de Software es el estudio de los principios y metodologías para desarrollo y mantenimiento
de sistemas de software

Definición 2: Ingenieria de Software es la aplicación práctica del conocimiento científico en el diseño y construcción
de programas de computadora y la documentación asociada requerida para (funcionar) y mantenerlos. Se conoce
también como desarrollo de software o producción de software.

Definición 3: Ingeniería de Software trata del establecimiento de los principios y métodos de la Ingenieria a fin de
obtener software de modo rentable que sea fiable y trabaje en máquinas reales.

Definición 4: La aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación


(Funcionamiento) y mantenimiento del software, es decir, la aplicación de ingeniería al software.

El producto y el proceso de la Ingeniería del Software;

EL PRODUCTO

Desde el punto de vista de un ingeniero de software, el producto obtenido son los datos que configuran el software
de computadora. Pero desde el punto de vista de los usuarios el producto obtenido es la información resultante
que de algún modo mejora el mundo de los usuarios.

EL PROCESO

El proceso es un diálogo en el que se reúne el conocimiento y se incluye en el software. 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 (tecnología). Es un proceso interactivo donde la herramienta de desarrollo se usa
como medio de comunicación, con cada iteración del diálogo se obtiene mayor conocimiento de las personas
involucradas.

MODELOS DE DESARROLLO DE SOFTWARE

 Modelo en cascada (modelo tradicional)


 Modelo de prototipos
 Modelo Espiral
 Desarrollo por etapas
 Desarrollo iterativo y creciente o Iterativo e Incremental
 Modelo de desarrollo rápido de aplicaciones (Rapid Application Development, RAD 6 DRA)
 Desarrollo concurrente
 Proceso Unificado de Desarrollo RUP (Proceso Unificado de Rational)
MODELO EN CASCADA

Modelo en Cascada, también llamado Lineal secuencial, es el enfoque metodológico que ordena rigurosamente
las etapas del proceso para el desarrollo de software,

FASES DEL MODELO EN CASCADA

Análisis de requisitos

En esta fase se analizan las necesidades de los usuarios finales del software para determinar qué objetivos debe
cubrir.

Diseño del Sistema

Se descompone y organiza el sistema en elementos que puedan elaborarse por separado, aprovechando ventajas
del desarrollo en equipo. Como resultado surge el SDD (Documento de Diseño del Software) que contiene la
descripción de la estructura relacional global del sistema y la especificación de lo que debe hacer cada una de sus
partes, así como la manera en que se combinan unas con otras. Es conveniente distinguir entre diseño de alto nivel
o arquitectónico y diseño detallado. El primero de ellos tiene como objetivo definir la estructura de la solución (una
vez que la fase de análisis ha descrito el problema) identificando grandes módulos (conjuntos de funciones que
van a estar asociadas) y sus relaciones. Con ello se define la arquitectura de la solución elegida. El segundo define
los algoritmos empleados y la organización del código para comenzar la implementación

Diseño del Programa

Es la fase donde se realizan los algoritmos necesarios para el cumplimiento de los requerimientos del usuario, así
como también los análisis necesarios para saber que herramientas usar en la etapa de codificación.

Codificación

Es la fase en donde se implementa el código fuente, haciendo uso de prototipos, así como de pruebas y ensayos
para corregir errores. Dependiendo del lenguaje de programación

Pruebas

Existen varios tipos de Pruebas:

 Pruebas de unidad
 Pruebas de integración
 Pruebas de sistema
 Pruebas de aceptación

Verificación

Es la fase en donde el usuario final ejecuta el sistema, para ello el o los programadores ya realizaron exhaustivas
pruebas para comprobar que el sistema no falle.

Mantenimiento

Es el mantenimiento del Software ya que al utilizarlo como usuario final puede ser que no cumpla con todas
nuestras expectativas.

Tipos de Mantenimiento

 Mantenimiento Preventivo y Perfectivo


 Mantenimiento Correctivo
 Mantenimiento Evolutivo

Ventajas del Modelo

 Modelo y planificación fácil y sencillos.


 Sus fases son conocidas por los desarrolladores
 Los usuarios lo pueden comprender fácilmente
Desventajas del Modelo

 En la vida real, un proyecto rara vez sigue una secuencia lineal, esto crea una mala implementación del
modelo, lo cual hace que lo lleve al fracaso.
 El proceso de creación del software tarda mucho tiempo ya que debe pasar por el proceso de prueba y
hasta que el software no esté completo no se opera. Esto es la base para que funcione bien.

MODELO ESPIRAL

Modelo Espiral, propuesto originalmente por Boehm, es un modelo de proceso de software evolutivo que conjuga
la naturaleza iterativa de construcción de prototipos con los aspectos controlados y sistemáticos del modelo lineal
secuencial.

Funcionamiento del Modelo

En el modelo espiral, el software se desarrolla en una serie de versiones incrementales. Durante las primeras
iteraciones, la versión incremental podría ser un modelo en papel o un prototipo.

Comunicación el cliente

Establecer comunicación entre desarrollador y cliente

Planificación

Las tareas requeridas para definir recursos, el tiempo y otra información relacionadas con el proyecto

Análisis de riesgos

Las tareas requeridas para evaluar riesgos técnicos y de gestión

Ingenieria

Las tareas requeridas para construir una o más representaciones de la aplicación

Construcción y acció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 implementada durante la etapa de instalación.

Ventajas del Modelo

 Puede adaptarse y aplicarse a lo largo de la vida del software de computadora.


 Es un enfoque realista del desarrollo de sistemas y de software a gran escala.

Desventajas del Modelo

 Puede resultar difícil convencer a grandes clientes (particularmente en situaciones bajo contrato) de que
el enfoque evolutivo es controlable.
 Requiere una considerable habilidad para la evaluación del riesgo.

MODELO DE DESARROLLO RÁPIDO DE APLICACIONES

Modelo DRA (Desarrollo Rápido de Aplicaciones), Modelo de proceso del desarrollo de software lineal secuencial
que enfatiza un ciclo de desarrollo extremadamente corto.

Fases el Modele DRA

Cuando se utiliza principalmente para aplicaciones de sistemas de información.

Modelo de gestión
E flujo de información entre las funciones de gestión se modela de forma que responda a las siguientes preguntas:
¿Qué información conduce el proceso de gestión? ¿Qué información genera? ¿A dónde va la información? ¿Quién
la procesó?

Modelado de datos

El flujo de información definido como parte de la fase de modelado de gestión se refina como un conjunto de
objetos de datos necesarios para apoyar la empresa.

Modelado de proceso

Los objetivos de datos definidos en la tase de modelado de datos quedan transformados para lograr el flujo de
información necesario para implementar una función de gestión.

Generación de aplicaciones

El DRA asume la utilización de técnicas de cuarta generación.

Pruebas y entrega

Como el proceso DRA enfatiza la reutilización, ya se han comprobado muchos de los componentes de los
programas. Esto reduce tiempo de pruebas.

Ventajas del Modelo DRA

 Es muy rápido
 Permite trabajar en el a varias personas a la vez.
 Desventajas del Modelo DRA
 Requiere clientes y desarrolladores comprometidos en las rápidas actividades necesarias para completar
un sistema en un marco de tiempo abreviado. Si no hay compromiso, por ninguna de las partes
constituyentes, los proyectos DRA fracasaran.

PROCESO UNIFICADO DE DESARROLLO

Proceso Unificado de Desarrollo (RUP): Es un proceso que puede especializarse para una gran variedad de
sistemas de software, en diferentes áreas de aplicación, diferentes tipos de organizaciones, diferentes niveles de
aptitud y diferentes tamaños de proyecto.

Un poco de historia

Los orígenes de RUP se remontan al modelo espiral original de Barry Boehm. Ken Hartman, uno de los
contribuidores claves de RUP colaboró con Boehm en la investigación. En 1995 Rational Software compro una
compañía sueca llamada Objectory AB, fundada por Ivar Jacobson, famoso por haber incorporado los casos de uso
a los métodos de desarrollo orientados a objetos.

Principales Elementos

Como RUP es un proceso, en su modelación define como sus principales elementos:

Trabajadores ("quién"): Define el comportamiento y responsabilidades (rol) de un individuo, grupo de individuos,


sistema automatizado o máquina, que trabajan en conjunto como un equipo.

Actividades ("cómo): Tarea que tiene un propósito claro, es realizada por un trabajador y manipula elementos.

Artefactos ("qué"): Productos tangibles del proyecto que son producidos, modificados y usados por las actividades

Flujo de actividades ("cuándo"): Secuencia de actividades realizadas por trabajadores y que produce un resultado
de valor observable

Características Principales de RUP

 Unifica los mejores elementos de metodologías anteriores.


 Preparado para desarrollar grandes y complejos proyectos orientado a Objetos.
 Utiliza el UML como lenguaje de representación visual.
Principales ventajas

 Coste del riesgo a un solo incremento.


 Reduce el riesgo de no sacar el producto en el calendario previsto.
 Acelera el ritmo de desarrollo.

Ciclo de vida de RUP

Dirigido por casos de uso: Los casos de uso reflejan lo que los usuarios futuros necesitan y desean.

Centrado en la arquitectura: La arquitectura muestra la visión común del sistema completo por lo que describe
los elementos del modelo que son más importantes para su construcción.

Iterativo e Incremental: Una iteración involucra actividades de todos los flujos de trabajo, aunque desarrolla
fundamentalmente algunos más que otros.

Flujo de Trabajo de RUP

En RUP se han agrupado las actividades en grupos lógicos definiéndose 9 flujos de trabajo principales, los 6
primeros son conocidos como flujos de ingeniería y los tres últimos como flujos de apoyo.

 Modelo del Negocio: Describe los procesos de negocio, identificando quiénes participan y las
actividades que requieren automatización
 Requerimiento: Define qué es lo que el sistema debe hacer, para lo cual se identifican las funcionalidades
requeridas y las restricciones que se imponen.
 Análisis y Diseño: Describe cómo el sistema será realizado a partir de la funcionalidad prevista y las
restricciones impuestas (requerimientos), por lo que indica con precisión lo que se debe programar
 Implementación: Define cómo se organizan las clases y objetos en componentes, cuáles nodos se
utilizarán y la ubicación en ellos de los componentes y la estructura de capas de la aplicación.
 Prueba (Testeo): Busca los defectos a lo largo del ciclo de vida.
 Instalación o despliegue: Produce release del producto y realiza actividades (empaque, instalación,
asistencia a usuarios, etc.) para entregar el software a los usuarios finales.
 Administración del proyecto: Involucra actividades con las que se busca producir un producto que
satisfaga las necesidades de los clientes
 Administración de configuración y cambios: Describe cómo controlar los elementos producidos por
todos los integrantes del equipo de proyecto en cuanto a: utilización/actualización concurrente de
elementos, control de versiones, etc.
 Ambiente: Contiene actividades que describen los procesos y herramientas de trabajo del proyecto; así
como el procedimiento para implementar el proceso en una organización.

Fases

La fase de concepción o inicio tiene por finalidad definir la visión, los objetivos y el alcance del proyecto tanto
desde el punto de vista funcional como del técnico. Es la única fase que no necesariamente culmina con una versión
ejecutable.

La fase de elaboración tiene como principal finalidad completar el análisis de los casos de uso y definir la
arquitectura del sistema.

La fase de construcción está compuesta por un ciclo de varias iteraciones en las cuales se van incorporando
sucesivamente los casos de uso, de acuerdo a los factores de riesgo del proyecto

La fase de transición se inicia con una versión "beta" del sistema y culmina con el sistema en fase de producción.

Diferencias de RUP con las demás metodologías

Algunos aspectos que diferencian a RUP de las demás metodologías y lo que lo hace único son que en RUP los
casos de uso no son sólo una herramienta para especificar los requisitos del sistema, sino que también guían su
diseño, implementación y prueba. También este propone que cada fase se desarrolle en iteraciones.

METODOLOGÍAS AGILES DE DESARROLLO DE SOFTWARE


Las metodologías ágiles de desarrollo de software son imprescindibles en un mundo en el que las cosas cambian
a velocidad de vértigo. Los programadores vivimos preocupados sobre cuáles son las últimas tendencias, que
lenguajes o prácticas quedan obsoletos y con la constante espada de Damocles de pensar que lo que estamos
desarrollando hoy quizás no sirva para nada mañana.

SCRUM

Scrum es una metodología ágil fantástica para desarrolladores. Consiste en un modelo de asignación de tareas
diarias basado en reuniones rápidas y control de la evolución de los procesos. Es muy bueno para llevar un
seguimiento de las tareas que se están llevando a cabo y saber en qué puntos se ha atascado el equipo.

XP o Xtream Programming

Programación Extrema es un método ágil que se suele utilizar en equipos con muy pocos programadores que
tienen muy pocos procesos abiertos al mismo tiempo. Consiste principalmente en diseñar, implementar, programar
e implantar lo más rápido posible en equipos de programadores muy pequeños, principalmente parejas, saltándose
la documentación y los procedimientos tradicionales. Se fundamente en la capacidad del equipo para comunicarse
entre sí y las ganas de aprender de los errores propios inherentes en un programador. Las grandes ventajas que
tiene este sistema es la increíble capacidad de respuesta del equipo ante imprevistos, aunque es una metodología
para la que es difícil documentar

XP es un método estupendo para equipos extremadamente pequeños que se centran en un solo cliente.

 Desarrollo Lean

Lean Software Development, también conocido como Lean Programming es un conjunto de técnicas que
engloban una metodología de desarrollo ágil de software orientado a con exactamente lo que necesita el cliente.
Es una evolución del Método Toyota de Producción aplicado al desarrollo y que está muy de moda entre los
equipos de desarrollo en startups.

Principalmente consiste en ciclos de evolución de software incrementales en los que se posponen las decisiones lo
más posible hasta haber obtenido un feedback del cliente y así reaccionar lo más rápido y eficazmente posible a
sus necesidades. Se fundamenta en tener un equipo potente y comprometido y el principio de aprendizaje
continuo sobre el producto.

El Desarrollo Lean una metodología fantástica para startups que están desarrollando un software orientado a
tener éxito en el mercado, como desarrolladores de videojuegos o apps para móviles

Potrebbero piacerti anche