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:

ingeniería de software

·  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.

 Factores de Calidad del Software

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 del Software

 

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.

ingeniería de software

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

ingeniería de 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