Académique Documents
Professionnel Documents
Culture Documents
INGENIERÍA DE SOFTWARE:
I) Definición:
La primera mención que se hace a la ingeniería de software fue en 1968 en una conferencia
financiada por la OTAN allí se adopta este término la primera persona en usarlo es Fritz Bauer
[1] quien la define de la siguiente manera: “La ingeniería de software es el establecimiento y uso
de principios fundamentales de la ingeniería con objeto de desarrollar en forma económica
software que sea confiable y que trabaje con eficiencia en máquinas reales” no obstante esta
definición resulta muy sencilla por lo que se hace necesario complementarla con la definición
contribuida por IEEE que dice: “La ingeniería de software es: 1) La aplicación de un enfoque
sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software;
es decir, la aplicación de la ingeniería al software. 2) El estudio de enfoques según el punto 1.”
Se hace necesario resaltar que el ingeniero de software no es igual que un programador ya que
el ingeniero está en la capacidad de crear una solución complejo en tiempo, costo y calidad
mientras el programador no. Se puede considerar una ingeniería que está más relacionada a la
computación no tanto a las ciencias tradicionales sin embargo también se hace uso de estas.
No está restringido por materiales, ni procesos de manufactura lo cual la simplifica, sin embargo,
al no tener este tipo de limitaciones el software puede volverse complejo lo cual implica un difícil
entendimiento del mismo ya que es intangible.
La velocidad de cambia tecnológico es muy rápida, cada vez los clientes presentan nuevos
requerimientos este cierto tipo de presión limita el desarrollo de software.
La importancia del desarrollo de software radica en su amplia utilidad ya que en esta era existe
una gran cantidad de software en muchas de las cosas que se están acostumbrados a llevar a
cabo, dentro de sus más grandes rasgos se puede resaltar su aplicación en computadoras,
dispositivos móviles, para la educación, investigación, trabajo, comunicación, etc. La capacidad
de poder optimizar tareas, incrementar ganancias, aumenta ingresos, optimizar tiempo hace de
la ingeniería de software indispensable y fundamental para la sociedad de la actualidad.
III) Gestión de Proyectos Informáticos: el proyecto informático es una secuencia de actividades
con un tiempo determinado y con recursos limitados para obtener un resultado, tiene
diferentes etapas:
- Planificación: Se establece el ámbito del software, es decir, la función, rendimiento,
restricciones, interfaces, fiabilidad que le cliente requiere, también se establece la
estimación de los recursos requeridos.
- Organización: Estructurar los aspectos mencionados en la planificación para poder dar
un orden, organizar los medios humanos y materiales para poder cumplimiento a lo
pactado.
- Ejecución: Proceso donde el equipo comienza la construcción.
- Control: Asegura la adecuada ejecución del proyecto.
IV) Métricas De Software: Las métricas del software proporcionan una indicación de cómo se
ajusta el software a los requisitos implícitos y explícitos del cliente, es decir, la calidad la cual
como se menciona anteriormente es una base para el desarrollo adecuado de software, estas
proporcionan una forma de crear modelos efectivos. Dentro de estas características se
encuentran:
Cascada (Imagen 1): también llamado ciclo de la vida clásico tiene un enfoque secuencial
consta de las siguientes etapas: análisis y definición de requerimientos, diseño y del sistema
software, implementación y prueba de unidades, integración y prueba del sistema,
funcionamiento y mantenimiento. Es necesario indicar el hecho de que para cada fase que
cambie es necesario que la anterior esté terminada, una de las ventajas de este proceso es
que la documentación se produce en cada fase y esta es compatible con otros modelos, por
otro lado, una desventaja es el hecho de ser inflexible en cuanto a dividir los procesos del
proyecto en distintas etapas a menos que se hagan compromisos al comienzo de las etapas.
El diseño del sistema y del software o planeación implica establecer una arquitectura del
sistema, se identifica y describa las abstracciones fundamentales del sistema de software y
las relaciones que se tendrán.
Incremental (Imagen 2): En este modelo se aplica secuencias lineales (escalonados) y cada
una de estas secuencias produce incrementos, es decir, cada incremento tiene su propio ciclo
y conforme se complete cada etapa se verifica y se integra con los otros incrementos ya
completados. Las actividades de este modelo se dividen en procesos y subprocesos (software
factory) y para poderse llevar a cabo esta etapa es necesario tener etapas que no requieran
cambiar resultados anteriores al agregar nuevas.
Dentro de sus ventajas están: el cliente no tiene que esperar hasta que esté completo ya que
con solo el primer requerimiento (satisface requerimientos críticos) puede comenzar a
utilizarlo, existe bajo riesgo de fallo total del proyecto, es más flexible lo que reduce su coste,
es más sencillo de probar.
Sus desventajas son: los incrementos deben ser relativamente pequeños y cada uno debe
entregar una funcionalidad al sistema, cada fase no se puede superponer con otra. Este tipo
de modelo se encuentra una variante llamada programación extrema.
Evolutivo (Imagen 3): Para algunos casos es necesario que cambie los requerimientos del
negocio esto no se puede representar en un proceso rectilíneo por lo que se hace necesario
hacer uso de otro modelo como es el caso de este, la idea es desarrollar una idea central y
se expone a los comentarios de los usuarios hasta que se desarrolle un sistema adecuado, las
actividades de especificación y desarrollo se entrelazan en vez de separarse
Existen dos tipos de este modelo el primero es el exploratorio (objetivo es que cliente explore
sus requerimientos) y entregar un sistema final el segundo es el de prototipos desechables
donde objetivo es comprender los requerimientos y desarrollar una mejor versión.
Dentro de sus ventajas se encuentra que satisface las necesidades inmediatas a los clientes,
especificación se puede desarrollar en forma creciente, aunque también tiene dos problemas
el proceso no es visible y a menudo los sistemas tienen una estructura deficiente, por lo que
se recomienda trabajarlo para sistemas pequeños
Su uso es ideal para clientes que no tienen claro los requisitos ya que se puede ir presentando
distintos prototipos, también permite gestionar en pequeños ciclos lo que hace que riesgos
sean más manejables. En cuanto desventajas el hecho de que puede que al no tener los
requisitos definidos pueden aparecer problemas en la arquitectura.
Espiral (Imagen 5): Este es una extensión del modelo de cascada, pero en vez de representar
un proceso secuencial se realiza un proceso en espiral, este modelo se basa en una estrategia
para reducir los riesgos, lo hace enfatizando cada ciclo de trabajo y estudia su riesgo antes
de proceder. Este espiral se divide en cuatro sectores.
DRA: Este es el Modelo de Desarrollo Rápido de aplicaciones, que como su nombre lo indica
facilita y crea aplicaciones esto lo hace permitiendo crear sistemas utilizables en poco tiempo
por medio de un enfoque de construcción basado en componentes, para aprovechar al
máximo este modelo se hace necesario tener bien claros los requisitos. Se caracteriza por no
tener un sistema detallado, es desarrollado y utilizado en una serie de incrementos que
incluye una nueva función. Dentro de sus fases esta:
- Modelado de gestión
- Modelado de datos
- Modelado de procesos
- Generación de aplicaciones
- Pruebas de entrega
Tiene ventajas como sus entregables pueden ser pasados fácilmente a otra plataforma, su
desarrollo tiene mayor nivel de abstracción, mayor flexibilidad, menor codificación, posibles
menos fallas, posible menor costo y tiene desventajas como que tiene inconvenientes si el
proyecto es grande, progreso más difícil de medir, menos eficiente y menor precisión
científica.
RUP (Proceso Unificado de Rational): En este se define claramente quien, como, cuando y
que debe hacerse en el proyecto. Es iterativo e incremental donde quedan proyectos
divididos en mini proyectos, es una implementación del Desarrollo en espiral y consta de las
siguientes 4 fases:
El inicio en donde se define el alcance del proyecto y sus riesgos, se produce un plan de fases
y de iteraciones posteriores, en la elaboración se seleccionan casos que permiten la
arquitectura adecuada, se diseña solución preliminar se hace primer análisis, la construcción
es completar la funcionalidad del sistema y la transición es asegurar que el software esté
disponible para los usuarios finales.
Imagen 13
Primera etapa: Los objetos del dominio se representan con ayuda del modelo E-R.
Segunda etapa: Se determina presentación del contenido y su modo de acceso
Tercera etapa: Se definen los caminos, en esta parte es posible definir estructuras de acceso
de alto nivel lo que permite dotar a la aplicación de niveles diferentes de trozos de
información.
Cuarta etapa: definir el protocolo de conversión de elementos del diagrama.
Quinta etapa: concepción del interfaz usuario
Sexta etapa: construcción del sistema y test
SCRUM: Son congruentes con manifiesto ágil se utiliza la iteración, sirve para las siguientes
votaciones estructurales: requerimientos, análisis, diseño, evolución y entrega. Se basa en
realizar entregas parciales y regulares del producto final, es recomendado para proyectos
donde se tenga un entorno complejo y se haga necesario la obtención de datos de forma
rápida, sus requisitos son poco definidos y la innovación, competitividad, flexibilidad y
1
Modelo de Diseño de Hipermedia
2
Su nombre viene de hipertexto y multimedia, lo cual quieres decir que no solo trabaja texto, sino que
tiene imágenes, audio, vídeo, etc. (multimedia).
productividad son fundamentales. SCRUM consiste en ejecutar bloques temporales (cortos
y fijos) y cada uno de estos proporcionara un resultado, un incremento en el producto final.
Consta de tres etapas: planificación de la iteración, ejecución de la iteración e inspección y
adaptación.
|
Imagen 14- Flujo proceso Scrum
Sprint: Unida de trabajo para alcanzar un requerimiento definido por el retraso en este tiempo
no se introducen cambios.
Retraso: lista prioridades del proyecto que dan al cliente un valor de negocio, a este si es posible
introducirle los cambios.
El Lenguaje de Modelamiento Unificado (UML) es “un lenguaje estándar para escribir diseños
de software. El UML puede usarse para visualizar, especificar, construir y documentar los
artefactos de un sistema de software intensivo” el objetivo del lenguaje modelado es hacer una
representación abstracta de la realidad con un propósito determinado, se pretende capturar
partes esenciales del sistema, es decir que es un lenguaje el cual se usa para especificar,
visualizar y documentar los diferentes sistemas de software, también el modelado de negocios
y almacenamiento de datos.
Dentro de sus principales características se encuentra que: Esta basado en Booch, OMT y OOSE,
se puede describir un sistema en diferentes niveles de abstracción, fragmenta el proyecto en el
número de diagramas que representan las diferentes vistas del proyecto y juntos representan
la arquitectura del mismo, ofrece vocabulario y reglas para crear y leer modelos, es
independiente al proceso de desarrollo, es capaz de cubrir las distintas vistas de la arquitectura
de un sistema.
En 1994 Grady Booch y Jim Rumbaugh de Rational Corporation comienzan a unir sus métodos,
en 1995 Ivar Jacobson y su compañía Objectory se incorporan a Rational para poder seguir el
proceso de unificación, Jacobson aporta el método OOSE (OOSE: Object- Oriented Software
Engineering); esta fusión de notaciones termino convirtiéndose en el mencionado UML. En
1997, UML 1.0 se envía al Object Management Group3, esta versión de UML se revisó y dio como
resultado UML 1.1. Actualmente el estándar es UML 2.0 (es un estándar ISO), esta versión
contiene 13 diferentes diagramas para el modelado de software. Cabe destacar que para el
proceso de creación de UML también participaron otras empresas como Microsoft, Hewlett-
Packard, Oracle o IBM, así como grupos de analistas y desarrolladores.
Vista de casos de uso (Use case view): A esta arquitectura le corresponden los siguientes
diagramas: estático4 y dinámico5, la funcionalidad que captura es como se percibe por los
usuarios finales, analistas y encargados de pruebas, se basa en casos de usos, no se
especifica la organización real del sistema.
3
Empresa sin fines de lucro involucrada en especificaciones de mantenimiento para su empleo en la
industria de la computación
4
Diagramas de caso de uso
5
Diagramas de interacción, de estados y de actividades
Vista de Diseño (Logical View): A esta arquitectura le corresponden los siguientes diagramas:
estático6 y dinámico7, lo elementos que lo conforman dan soporte a los requisitos funcionales
del sistema, además interfaces y colaboraciones que describen el sistema.
Vista de Interacción (Process view): A esta arquitectura le corresponden los mismos
diagramas de la vista de diseño, captura el flujo de control entre las diversas partes del
sistema, incluyendo los posibles mecanismos de concurrencia y sincronización, comprende
requisitos no funcionales como el rendimiento, escalabilidad y capacidad de procesamiento.
Vista de Implementación (Development View): A esta arquitectura le corresponden los
siguientes diagramas: estático8 y dinámico9, captura los artefactos que se utilizan para
ensamblar y poner en producción el sistema software real, la arquitectura física del sistema
está definida por esta vista, su objetivo este en: configurar las distintas versiones de los
archivos físicos, hacer correspondencia entre clases y ficheros de código fuente, también
hace correspondencia entre componentes lógicos y artefactos físicos.
Vista de Despliegue (Physical View): A esta arquitectura le corresponden los siguientes
diagramas: estático10 y dinámico11, captura las características de instalación y ejecución del
sistema, su ocupación principal distribuir las partes que forman el sistema real de software.
- Diagrama de clases: Sirve para visualizar las relaciones las relaciones entre clases las
cuales pueden ser asociativas, de herencia, de uso y de consentimiento. Se caracteriza
por:
Las clases se dibujan como rectángulos, se muestra el nombre de la clase, atributos
y operaciones en diferentes compartimentos.
Las relaciones entre clases se dibujan como las líneas que conectan rectángulos de
clases.
6
Diagramas de clases y de objetos. También son útiles los diagramas de estructura compuesta de clases.
7
Diagramas de interacción, de estados y de actividades.
8
Diagramas de componentes (especialmente la versión de artefactos) y de estructura compuesta.
9
Diagramas de interacción, de estados y de actividades.
10
Diagramas de despliegue
11
Diagramas de interacción, de estados y de actividades
- Diagrama de objetos: modelan las instancias de elementos contenidos en los diagramas
de clases. Se caracteriza por:
Utilizan un subconjunto de los elementos de un diagrama de clase.
No muestran la multiplicidad ni los roles
Puede considerarse un caso especial de diagrama de clases.
- Diagrama de despliegue: Muestran las relaciones físicas entre los componentes físicos y
lógicos del sistema final (hardware y software). Se caracteriza por:
12
Un componente es una unidad física de implementación con interfaces bien definidas pensada para
ser utilizada como parte reemplazable del sistema
Los nodos se representan como un prisma.
Los componentes con una caja rectangular con dos protuberancias del lado
izquierdo.
Representa la creación de redes de sistemas de complejidad arbitraria.
Describe la topología del sistema, tiempo de ejecución, estructura del hardware y
el software
[14] J. F. Hiebaum, «Manual del Game Designer,» 6 Abril 2015. [En línea]. Available:
http://manualdelgamedesigner.blogspot.com.co/2015/04/metodo-scrum.html.
[15] F. R. Patricia López, «INGENIERÍA DEL SOFTWARE I,» [En línea]. Available:
https://ocw.unican.es/pluginfile.php/1403/course/section/1792/is1-t02-trans.pdf.