Documentos de Académico
Documentos de Profesional
Documentos de Cultura
HERRAMIENTAS,
MÉTODOS Y PROCESOS
DE LA INGENIERÍA DE
SOFTWARE
Experto temático:
Samayda Herrera Betancur
Año: 2020
HERRAMIENTAS, MÉTODOS Y PROCESOS DE LA INGENIERÍA DE SOFTWARE
Introducción Unidad 1
1. La Ingeniería de Software
El software es una de las tecnologías más importantes a nivel mundial la cual está
presente en todas las áreas de conocimiento apoyando sus respectivos procesos. Es
difícil en este momento concebir nuestro estilo de vida sin las herramientas de software.
En la actualidad utilizamos software incluso hasta de forma inconsciente, las
organizaciones por ejemplo tienen sistemas que apoyan sus procesos como software de
facturación, de contabilidad, de inventario, o sistemas ERP (sistemas de Planificación de
Recursos Empresariales) los cuales integran muchas de estas funcionalidades. Las
empresas utilizan herramientas de software para administrar procesos específicos como
por ejemplo la administración de sistemas de transporte, procesos médicos, procesos
industriales, telecomunicaciones, comercio, procesos educativos, entre otros.
Las herramientas de software nos impactan también a nivel personal, modificando incluso
conductas, como por ejemplo la interacción entre las personas; herramientas como redes
sociales, mensajería instantánea, herramientas de teleconferencia, dispositivos móviles,
han permitido diversificar los canales de comunicación.
Con el pasar del tiempo han aparecido muchos más campos de acción en los que el
software juega un papel muy importante, Tecnologías como el Internet de las Cosas (IoT),
Big Data y analítica de datos, Inteligencia Artificial, Computación en la nube entre muchas
otras más, nos obliga a una mejora continua los procesos de desarrollo de software y aquí
es donde se hace necesaria la Ingeniería de Software.
• El software ha hecho presencia en casi todos los aspectos de nuestra vida, por tal
motivo, la demanda de herramientas de software y el interés de las personas hacia
este tipo de herramientas, ha crecido considerablemente.
• A medida que pasa el tiempo, las nuevas tecnologías que demandan las
organizaciones, las empresas y los gobiernos se hacen más complejas, por lo
tanto, las herramientas de software requeridas son cada vez más sofisticadas, y
requieren para su implementación una mayor cantidad de personas calificadas,
estas herramientas requieren una atención cuidadosa de todos los elementos del
sistema, si diseño y planificación.
• Las organizaciones y los individuos dependen cada vez más de herramientas de
software para tomar decisiones estratégicas y para la operación de sus negocios,
la información se ha convertido en un activo muy valioso para las organizaciones y
los gobiernos. El software construido debe tener alta calidad, una falla puede
representar pérdidas catastróficas.
• Muchas herramientas se pueden convertir en un activo importante de la
organización, ya que en estas se soporta su operación o valor agregado. Estas
herramientas pueden perdurar en el tiempo, por lo tanto, se requiere que sean
escalables y mantenibles·
Ingeniería de Software
La ingeniería de software por su parte, es una disciplina de ingeniería que se interesa por
todos los aspectos de la producción de software, desde las primeras etapas de la
especificación del sistema hasta el mantenimiento del sistema después de que se pone
en operación (Sommerville, 2011) . Otros autores definen la ingeniería de software como
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
(Pressman, 2010) .
Otras definiciones de la ingeniería de software son “Es el establecimiento y uso de
principios sólidos de ingeniería, orientados a obtener software económico que sea fiable y
trabaje de manera eficiente en máquinas reales” (Bauer, 1968) .
El concepto “Ingeniería de Software” se propuso por primera vez en 1968 por Fritz Bauer,
en la primera conferencia de software organizada por la OTAN, este término se utilizó
para describir los conocimientos que debían desarrollarse para dar solución a los
problemas que se presentaban en el desarrollo de software en aquella época.
Para dar solución a estos problemas, aparece entonces la “Ingeniería de Software” y con
ella, una serie de estándares, herramientas y métodos, orientadas a mejorar los procesos
de desarrollo de software y la calidad de los productos de software creados. La utilización
de estos recursos, depende en gran medida de la magnitud de los proyectos, la empresa
que lo desarrolla, la experiencia del equipo de trabajo y el presupuesto con que se cuenta.
Las Herramientas: Proporcionan un apoyo para el proceso y los métodos, estas ayudan
en la planeación de actividades, supervisan los procesos y ayudan a brindar calidades
técnicas a los productos de software.
Procesos de software
Un proceso está conformado por actividades las cuales a su vez agrupan un conjunto de
tareas. Un ejemplo de la estructura de un proceso se muestra a continuación.
Figura 2: Estructura de un proyecto de software. Se representan los procesos, activi
y tareas en un proyecto de software.
Metodologías tradicionales
• El modelo en cascada:
Figura 3: Ciclo de vida del software. Actividades del ciclo de vida del software, también
llamado modelo en cascada
Prototipado:
Es una técnica que permite la creación mostrar a los clientes versiones inicial del
producto, en la cual se plasman de los requerimientos básicos, esta versión es
incompleta, no posee estándares de calidad, y es elaborada de forma rápida con el fin de
obtener realimentación del cliente para un mejor entendimiento de los requisitos del
sistema. Normalmente el prototipo del producto realizado, no se convierte en la versión
final del software, este normalmente es desechado. Y a partir de la realimentación
obtenida, se inicia el desarrollo del proyecto con los estándares de calidad requeridos.
• Bocetos (esbozos)
• Storyboarding
• Prototipos de papel
• Maquetas (digitales)
• Mapa/Storyboard Navegacional (Whiteboarding)
• Wireframes
• Vídeos
• Prototipos software
Algunas herramientas que pueden ser de utilidad para crear prototipos de software son:
• Justinmind (www.justinmind.com)
• Balsamiq (www.balsamiq.com)
• Mockplus.com (www.mockplus.com)
• Moqups (https://moqups.com/)
Modelo en espiral
El un modelo evolutivo del proceso de software y fue propuesto por Barry Boehm, el cual
lo describe de la siguiente manera:
Figura 6: Modelo en espiral de Boehm del proceso de software. Modelo propuesto para el
desarrollo de las actividades del proceso de desarrollo de software.
Estrategias y métodos del desarrollo de software
Diseño orientado a objetos: este es uno de los métodos más utilizados, este paradigma
se destacan elementos como los objetos, métodos y atributos, y también juega un papel
importante características como la herencia y el polimorfismo.
Metodologías ágiles
Las metodologías de desarrollo de software ágiles, nacieron en la década de los 90, como
una alternativa para disminuir la probabilidad de fracaso en los proyectos de software
debido a la subestimación de costos, tiempo y funcionalidades de los proyectos de
desarrollo. Estas Este tipo de metodologías se rigen por el manifiesto ágil, creado en el
2001 y en el cual se acuerdan 4 principios básicos que diferencian los proyectos ágiles
con los proyectos tradicionales: individuos e interacciones, por encima de procesos y
herramientas; software funcionando, por encima de documentación extensiva;
colaboración con el cliente, por encima de negociación contractual; y respuesta ante el
cambio, por encima de seguir un plan (Beck et al., 2001) .
4) Las personas del negocio y los desarrolladores deben trabajar juntos diariamente a lo
largo de todo el proyecto.
6) El diálogo cara a cara es el método más eficiente y efectivo para comunicar información
dentro de un equipo de desarrollo.
11) Las mejores arquitecturas, requisitos y diseños surgen de los equipos que se han
organizado ellos mismos.
12) En intervalos regulares, el equipo debe reflexionar con respecto a cómo llegar a ser
más efectivo, y ajustar su comportamiento para conseguirlo.
• SCRUM
• RAD (Dynamic Systems Development Method)
• Crystal Methodologies
• FDD (Feature-Driven Development)
• XP (EXtreme Programming)
Para conocer más sobre cada una de estas metodologías, te
recomiendo leer el siguiente artículo Revisión de metodologías ágiles
para el desarrollo de software (Navarro et al., 2013) .
Las Herramientas:
Proporcionan un apoyo para el proceso y los métodos, estas ayudan en la planeación de
actividades, supervisan los procesos y ayudan a brindar calidad técnica a los productos
de software.
Algunas de las cualidades que debe tener un equipo de desarrollo de software son:
• Buena comunicación
• Respeto mutuo
• Compromiso
• Capacidad de trabajo en equipo
• Capacidad de auto-formación
• Gerente del proyecto: administra los recursos del proyecto con el fin de cumplir
con los objetivos establecidos.
• Analista: es el encargado de identificar las necesidades del cliente y los requisitos
del sistema y transmitir esta información al equipo de trabajo.
• Arquitecto de software: realiza el diseño arquitectónico de la herramienta,
basado en los requisitos del sistema. Vela porque el producto final cumpla con los
requisitos previamente establecidos.
• Desarrolladores: Es el encargado de llevar a cabo la codificación del software
según los requisitos y el diseño arquitectónico realizado.
• Diseñador gráfico
• Tester: es el encargado del aseguramiento de la calidad del software. Esta
persona realiza las pruebas necesarias sobre el sistema para validar su correcto
funcionamiento, teniendo como base la especificación de requisitos.
• Administradores de infraestructura o de configuración del software: es la
persona encargada de la administración del hardware o de las diferentes
herramientas necesarias para que el software funcione correctamente.
• Soporte y mantenimiento: esta persona es la encargada de mantener el software
cuando se encuentra en producción, identifica anomalías o posibles acciones de
mejora.
Los stakeholders son todas aquellas personas que influyen de alguna manera en la
operación de una organización o de un proceso en particular. Estas personas deben ser
tenidas en cuenta al momento de llevar a cabo el desarrollo del software, ya que pueden
tener información importante que influya directamente sobre los requisitos del proyecto y
el éxito del mismo.
Conclusiones
El ciclo de vida del software es importante para la ingeniería de software, porque define
de forma general las principales actividades que se deben llevar a cabo en el desarrollo
de un proyecto de software, estas actividades pueden ser implementadas por medio de
diferentes modelos o metodologías.
Las metodologías ágiles por su parte, también implementan el ciclo de vida del software,
pero estas se rigen principalmente por el manifiesto ágil, se caracterizan por mantener
una comunicación constante con el cliente, y por ser abiertas al cambio. Existen muchas
metodologías conocidas como Scrum, XP, Crystal, pero las metodologías ágiles en
general son flexibles y pueden ser modificadas para que se ajusten a la realidad de cada
equipo y proyecto, lo cual puede llevar a que las empresas creen su propia metodología.