FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
Fundamentos de la Ingeniería del Software
PROFESORA: Ing. Rosana Campos
|
PARTICIPANTES: |
C.I.V.- |
|
Angélica,
Guerra |
28.360.688 |
|
Dámyelys,
Rojas |
30.649.165 |
|
Ewduar, Hernández |
31.051.580 |
|
Mariana, Gómez |
30.641.556 |
|
Trayecto II. Sec:02.
PNFI Ingeniería del
Software I |
|
El Tigre, junio de 2022
EL SOFTWARE
Se conoce como software,
logicial o soporte lógico al sistema formal de un sistema informático, que
comprende el conjunto de los componentes lógicos necesarios que hace posible la
realización de tareas específicas, en contraposición a los componentes físicos
que son llamados hardware.
El software presenta 3 elementos que lo caracterizan:
1.
Los programas
y/o algoritmos.
2.
Las
estructuras de datos.
3.
Los
documentos.
Hay 2 tipos de derivados
de software cuando se desarrolla: 1. Productos genéricos. 2. Productos
personalizados.
Cualidades del Software
Es el conjunto de cualidades que determina su utilidad. Es el grado en que el software cumple con los requisitos especificados (eficiencia, flexibilidad, corrección, mantenimiento seguridad e integridad, entre otros). La cualidad del software es medible y varía según el tipo de sistema y de programa, por ejemplo, no es lo mismo un software para control de viajes el cual deba ser confiable a un nivel de cero errores que un software elaborado para la implementación de un sistema de calidad (Febles, 2006).
Dichas cualidades son las
siguientes:
Robustez: Es la capacidad de los productos software de
reaccionar apropiadamente ante condiciones excepcionales. La robustez viene a
ser el complemento de la corrección. En implementación se cuenta con el
mecanismo de excepciones el cual garantiza el correcto flujo de ejecución del
código
Corrección: Un sistema es correcto si hace lo que el cliente
necesita. Dicho de otra forma, un sistema es correcto si su resuelve el problema
real que causó su desarrollo.
Eficiencia o Performance: tiene dos dimensiones posibles para medir la
eficiencia (tiempo/recursos) de un sistema: Recursos necesarios para la
construcción (tiempo de desarrollador). Recursos necesarios para la ejecución
(tiempo de usuario + hardware). Tiene mejor eficiencia el sistema que necesita
menos recursos para realizar una tarea determinada, por lo tanto, deberíamos
considerar ambas dimensiones a la hora de medir esta cualidad.
Claridad: Se refiere a la posibilidad de entender el
funcionamiento de un sistema, subsistema o una porción de código cualquiera, su
objetivo y la forma de solucionar el problema; en particular por gente que no
es la que lo construyó. La claridad de un módulo afecta claramente a las
posibilidades de modificarlo.
Flexibilidad: es la capacidad que tiene un sistema para reflejar
cambios percibidos en el dominio (sea por mejor comprensión del mismo o porque
de verdad cambió) de una manera simple y sencilla. Conceptos relacionados son:
Extensibilidad: un sistema es extensible cuando pueden
incorporarse nuevas características al mismo sin mayor impacto sobre las
características actuales.
Mantenibilidad: un sistema o desarrollo es más mantenible cuanto
menor esfuerzo requiere para que el sistema siga funcionando en condiciones
distintas a las originales e incluso en las originales.
Consistencia: el sistema debe comportarse siempre de la misma
manera ante un mismo evento y las tareas similares deben poder realizarse
siguiendo pasos similares.
Simplicidad: el sistema debe ser simple tanto en la interfaz
como en la implementación. Es más importante la simplicidad en la interfaz que
en la implementación.
Completitud: Un sistema es completo
cuando contempla todas las posibles situaciones a darse en la práctica.
Encapsulamiento o Modularidad: poder
agrupar unidades funcionales me permite que el sistema sea cohesivo, reduciendo
la complejidad del sistema y aumentando en cierta forma su flexibilidad.
· Escalabilidad: la
facilidad con la que un sistema pensado originalmente para una carga
determinada puede ser adaptado para soportar una carga mayor. Las aplicaciones
Web nos dan una buena muestra de cuándo la escalabilidad puede ser importante
para no afectar 1) la imagen del usuario que da vida a nuestro sistema, 2) la
imagen corporativa del negocio que manejamos
Abstracción: un sistema debería
contener buenas abstracciones de la realidad.
Utilidad: no está de más recordar que el sistema debe ser
útil al usuario.
Seguridad: Un sistema seguro debe impedir que agentes (personas u otros sistemas)
no autorizados realicen acciones sobre el sistema.
Etapas de la
ingeniería de software
La ingeniería de Software
consta de siete etapas. A continuación, cada una de ellas brevemente definidas:
·
Etapa de
análisis: Es el procedimiento de
investigación de un problema al que se desea encontrar la solución. Se
define con claridad el Problema que hay que resolver o el programa que se desea
inventar, identificando los elementos principales que conformarán el producto.
·
Etapa de
Diseño: Es el procedimiento que
emplea la información acumulada en la etapa de análisis al diseño del producto.
La labor principal de la etapa de diseño es crear un modelo o las
características precisas para el producto o Componentes del Sistema.
·
Etapa de
Desarrollo: Consiste en
el empleo de los diseños creados durante la etapa de diseño para elaborar los
elementos a utilizarse en el sistema.
·
Etapa de
Pruebas o Verificación Prueba:
·
Etapas de la
Ingeniería de Software: Consiste en
garantizar que los elementos individuales que componen el sistema o producto,
presentan las características requeridas en la especificación creada durante la
etapa de diseño.
·
Etapa de
Implementación o Entrega Implantación: Consiste en
la distribución del producto y hacerlo llegar a manos del cliente.
·
Etapa de
Mantenimiento: Consiste en
aplicar las soluciones apropiadas a cualquier problema del producto y re-
liberar el producto mejorado, dándole una nueva versión.
· Etapa final EOL (End-of-Life): Consiste en ejecutar todas las labores que garanticen que tanto los clientes como los empleados tiene la certeza de que el producto ya no estará más a la disposición, por lo que no se venderá más.
Calidad del Software, es el
grado con el que un sistema, componente o proceso cumple los requerimientos
especificados y las necesidades o expectativas del cliente o usuario. La
calidad de software es todo el conjunto de cualidades que determinan su
eficacia y utilidad, cumpliendo con las necesidades tanto implícitas como
explícitas del cliente.
Los factores que
determinan la calidad de un software se dividen en tres grupos:
·
Operaciones
del producto: Características operativas.
– Corrección: El grado en
que una aplicación satisface sus especificaciones y consigue los objetivos encomendados
por el cliente.
– Fiabilidad: El grado que
se puede esperar de una aplicación lleve a cabo las operaciones especificadas y
con la precisión requerida.
– Eficiencia: La cantidad
de recursos hardware y software que necesita una aplicación para realizar las
operaciones con los tiempos de respuesta adecuados.
– Integridad: El grado con
que puede controlarse el acceso al software o a los datos a personal no
autorizado.
– Facilidad de uso: El
esfuerzo requerido para aprender el manejo de una aplicación, trabajar con
ella, introducir datos y conseguir resultados.
·
Revisión del
producto: Capacidad para soportar cambios.
– Facilidad de
mantenimiento: El esfuerzo requerido para localizar y reparar errores.
– Flexibilidad: El
esfuerzo requerido para modificar una aplicación en funcionamiento
– Facilidad de prueba: El
esfuerzo requerido para probar una aplicación de forma que cumpla con lo
especificado en los requisitos.
·
Transición del
producto: Adaptabilidad a nuevos entornos.
– Portabilidad: El
esfuerzo requerido para transferir la aplicación a otro hardware o sistema
operativo.
– Reusabilidad: En que
partes de una aplicación pueden utilizarse en otras aplicaciones.
– Interoperabilidad: El
esfuerzo necesario para comunicar la aplicación con otras aplicaciones o
sistemas informáticos.
Ingeniería de Software
Es la rama de la
ingeniería que estudia todo lo relacionado con la informática o sistemas de
computación, con una orientación metódica, ordenada y cuantificable al
incremento, ejecución y conservación del software. Es una especialidad que consiste en sistemas, instrumentos y técnicas
que se emplean en el desarrollo de los programas informáticos.
La ingeniería de software,
también, incorpora el análisis precedente de la situación, el bosquejo del
proyecto, el desarrollo del software, el ensayo necesario para comprobar su
funcionamiento correcto y poner en funcionamiento el sistema.

Ingeniería
de software en la actualidad
En
la actualidad el software tiene un doble papel. Es el producto, pero al mismo
tiempo, actúa como el conductor que entrega el producto. Como conductor utilizado
para entregar el producto, actúa como base de control, por ejemplo, un sistema
operativo, o un sistema gestor de redes. El software actúa como distribuidor y
hace llegar a los usuarios, el producto más importante del este siglo: la
información. El software modifica la información personal para hacerlos más
útiles en un entorno local, administra información comercial para mejorar la
competitividad, facilita el acceso a redes a nivel mundial, y propone la forma
de obtener información de cualquier manera.
En
la actualidad la ingeniería del Software es considerada una nueva
especialidad de la ingeniería y junto con la especialidad de Ingeniería
Informática, es una de las profesiones con más demanda, aunque hay lugares en
el mundo, en los que no es muy bien remunerada, como sucede en España.
La palabra ingeniería está estrechamente ligada a la
de prestigio de lo que se deriva, que muchas ramas del conocimiento tiendan a
autodenominarse así.
En la actualidad, hay muchas demandas de ingenieros
que estén altamente preparados, como son los requerimientos de las grandes
compañías como Google, Facebook, Twitter entre otras, que además compiten entre
sí, para obtener a los egresados de las universidades que presenten las mejores
posibilidades.
Esta circunstancia hace más que obvia la palpable
realidad del cambio de sistema y las inclinaciones laborales del nuevo ciclo,
muy especialmente, en el mercado norteamericano, por ser, el que mayor
manifestación y origen de empresas actores tecnológicos posee, aunque son datos
fácilmente extrapolables a otras zonas con nivel de desarrollo análogo.

La ingeniería del software trata campos muy variados
de la informática y de las Ciencias de la Computación, que además se aplican a
un amplio espectro de campos, tales como negocios, investigación científica,
medicina, producción, logística, banca, meteorología, derecho, redes, entre
otras muchas. No obstante, es común que en el ejercicio diario profesional no
se introduzca casi ninguna de las sugerencias más elementales de la ingeniería
del software.
Las
apreciaciones de los procedimientos productivos de software realizados a raíz
de los modelos de procesos de software confirman que el desarrollo de software
suele estar básicamente en estado caótico. Y esto no ocurre sólo en pequeñas
empresas de países como España, sino en grandes proyectos en naciones como
EE.UU. y Japón.
La revista sarcástica inglesa Private Eye, hizo planteamientos importantes sobre los proyectos de software que fracasaron en alguna medida, pero lo que se quería resaltar era lo imprescindible que es la ingeniería de software.
VISIÓN
GENERAL DEL PROCESO DE DESARROLLO DE SOFTWARE
El papel
del usuario dentro del proceso de desarrollo de software
Desde la
perspectiva de Castillo (2013). El rol que el usuario desempeña dentro del
desarrollo de un Sistema de Información es de suma importancia, ya que los
sistemas se construyen para satisfacer las necesidades particulares del
usuario, en función de los objetivos estratégicos de la organización y ninguna
otra persona, incluyendo al analista del sistema, conoce mejor que el usuario
mismo, sus propios requerimientos; razón por la cual se dice que el usuario es
el “Dueño del Sistema”. Sin embargo, éste no es su único papel, ya que existen
una serie de funciones que el usuario debe asumir durante todo el desarrollo
del proyecto, las cuales van exigiendo una determinada categorización del
usuario de acuerdo a la responsabilidad que tendrá dentro del proyecto.
Deben
comportarse de una forma ética y moral responsable. No basta con poseer
estándares normales de honestidad e integridad. No debería utilizar su
capacidad y sus habilidades para comportarse de forma deshonesta o de forma que
deshonre la profesión de la ingeniería del software. Existen áreas donde los
estándares de comportamiento aceptable no están acotados por las leyes, sino
por la responsabilidad profesional. Algunas de éstas son: Confidencialidad.
Respetar la confidencialidad de sus empleadores o clientes, independientemente
de que se haya firmado un acuerdo formal de confidencialidad. Competencia. No
debe falsificar su nivel de competencia, ni aceptar conscientemente trabajos
que están fuera de su capacidad.
Responsabilidad
Ética y Profesional en Ingeniería del Software
La ingeniería del software se lleva a cabo dentro de un marco legal y
social que limita la libertad de los ingenieros. Los ISW deben aceptar que su
trabajo comprende responsabilidades más amplias que simplemente la aplicación
de habilidades técnicas. Deben comportarse de una forma ética y moral
responsable, no basta con poseer estándares normales de honestidad e
integridad. No debería utilizar su capacidad y sus habilidades para comportarse
de forma deshonesta o de forma que deshonre la profesión de la ingeniería del
software.
Existen áreas donde los estándares de comportamiento aceptable no están
acotados por las leyes, sino por la responsabilidad profesional, algunas de
estas son:
• Confidencialidad. Respetar la confidencialidad de sus empleadores o
clientes, independientemente de que se haya firmado un acuerdo formal de
confidencialidad.
• Competencia. No debe falsificar su nivel de competencia, ni aceptar
conscientemente trabajos que están fuera de su capacidad.
• Derechos de propiedad intelectual. Debe ser consciente de las leyes
locales que gobiernan el uso de la propiedad intelectual, como las patentes el
el copyright. Debe asegurarse de que la propiedad intelectual de los
empleadores y clientes está protegida.
Uso inapropiado de las computadoras. No debe emplear sus habilidades
técnicas para utilizar de forma inapropiada las computadoras de otras personas.
Desde los relativamente triviales (utilizar juegos en las máquinas de un
empleado, por ejemplo) hasta los extremadamente serios (difusión de virus).
CÓDIGO DE ÉTICA (ACM/IEEE)
Los ingenieros de software deberán comprometerse consigo mismo en
convertir el análisis, especificación, diseño, desarrollo, prueba y
mantenimiento de software en una profesión respetable y beneficiosa. De acuerdo
con su compromiso con la salud, seguridad y bienestar del público, los
ingenieros de software deberán apegarse a ocho principios
Ciclo
de Vida del Software
Al igual que en otros sistemas de ingeniería, los
sistemas de software requieren un tiempo y esfuerzo considerable para su
desarrollo y deben permanecer en uso por un periodo mucho mayor. Durante este
tiempo de desarrollo y uso, desde que se detecta la necesidad de construir un
sistema de software hasta que este es retirado, se identifican varias etapas
que en conjunto se denominan el ciclo de vida del software y en cada caso, en
función de cuales sean las características del proyecto, se configurará el
ciclo de vida de forma diferente. Usualmente se consideran las etapas:
especificación y análisis de requisitos, diseño del sistema, implementación del
software, aplicación y pruebas, entrega y mantenimiento. Un aspecto esencial
dentro de las tareas del desarrollo del software es la documentación de todos
los elementos y especificaciones en cada fase. Dado que esta tarea siempre
estará influida por la fase del desarrollo en curso, se explicará de forma
distribuida a lo largo de las diferentes fases como un apartado especial para
recalcar su importancia en el conjunto del desarrollo del software.
Tal
como ya hemos mencionado, las etapas principales a realizar en cualquier ciclo
de vida son:
Análisis:
Construye un modelo de los requisitos
Diseño: A
partir del modelo de análisis se deducen las estructuras de datos, la
estructura en la que descompone el sistema y la interfaz de usuario.
Codificación:
Construye el sistema. La salida de esta fase es código ejecutable.
Pruebas: Se
comprueba que se cumplen criterios de corrección y calidad.
Validación: Es
el proceso de comprobar que lo que se ha especificado es lo que el usuario
realmente quería.
Mantenimiento: En
esta fase, al culminar este ciclo, comienza el mantenimiento del software, el
cual consiste en una etapa en la que el software ofrece soluciones a errores
que son denunciados por los usuarios, principalmente y se incorporan
actualizaciones para hacer frente a los nuevos requisitos.
REFERENCIAS
Blog de Informática y Sistema (2014). Visión General del Proceso de Desarrollo de
Software. [Blog en Línea] Disponible:
http://memorywil.blogspot.com/2014/04/vision-general-del-proceso-de.html
[Consulta: 2022, junio 22]
Castillo, Humberto, (2013). El Papel del Usuario
Dentro del Proceso de Desarrollo de Software. [Documento en Línea] Disponible: http://softwarelibre-informatica.blogspot.com/2013/04/el-papel-del-usuario-dentro-del-proceso.html
[Consulta: 2022, junio 22]
Febles, Estrada (2006). Calidad
de software [Documento en Línea]
Disponible: http://www.ecured.cu/index.php/Calidad_de_software. [Consulta: 2022, junio 22]
Ingeniería de Software Código de Ética y Práctica
Profesional 5.2 [Documento en Línea]
Disponible: https://ethics.acm.org/wp-content/uploads/2016/07/SE-code-spn.pdf
[Consulta: 2022, junio 22]
Comentarios
Publicar un comentario