UNIDAD 2. Fundamentos de La Ingenieria Del Software
UNIDAD 2. Fundamentos de La Ingenieria Del Software
UNIDAD 2. Fundamentos de La Ingenieria Del Software
ELABORADO POR:
Douglas Marrufo Olivera
C.I.: 9.600.373
Código: 11319
Sección: 14
DOCENTE:
José Quero
INDICE
INTRODUCCIÓN………………………………………………………………………….3
EL SOFTWARE: Definición………..……………………………………………………..4-5
Paradigmas de programación.
* Programación Lógica:
* El paradigma funcional:
* Programación Imperativa:
* Programación estructurada:
* Programación Orientada a Objetos:
Modelado de sistema.
CONCLUSIONES….…………………………………………………………………………33
ANEXO…………………………………………………………………………………….…..34
FUENTES CONSULTADAS………………………………….……………………………35-36
2
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
INTRODUCCIÓN:
Dentro de estos procesos se encuentra el desarrollo del software como herramienta que va a
permitir llevar a la práctica todo el sistema de codificación ya mencionado. El software es un
programa que está llamado a reinventarse, adecuarse e incluso re4usarse en función de mejor los
procesos, de allí que la creación de software, a través de la ingeniería del software marca la pauta en
el futuro promisorio de esta tecnología.
Por medio del presente trabajo se hará un abordaje de todos los elementos que constituyen
los fundamentos de la ingeniería del software y sus partes. Para ello se presentan los conceptos
básicos y las principales características y técnicas a aplicar en las etapas de desarrollo de software:
requisitos, análisis, diseño, implementación y pruebas.
Como resultado de este estudio se espera cumplir con los objetivos exigidos en la Unidad
Curricular Ingeniería de Sistemas y específicamente en la Unidad II que trata sobre los fundamentos
básicos de la ingeniería del software. Por medio de la investigación se espera también capacitar al
estudiante con las habilidades y conocimientos básicos necesarios para trabajar como Ingeniero
Software. Estos conocimientos serán muy útiles en el procesos de formación estudiantil y
profesional, lo que proporcionará el conocimiento necesario para poder desenvolverse en cualquier
organización.
3
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
EL SOFTWARE: Definición.
Para entrar en el tema, es necesario definir el término del software, ya que por medio de esto
se podrá dilucidar un poco más con relación a lo que significa este concepto de la informática. Para
ello se abordarán varias conceptualizaciones acerca del conocimiento de los programas intangibles
de la computación.
FIGURA N° 1. El Software.
Otro concepto es el acuñado por Wikipedia (2010)2, donde se afirma que el software es el
logicial o soporte lógico al sistema formal de un sistema informático, que comprende el conjunto de
los componentes lógicos necesarios que hacen posible la realización de tareas específicas, en
contraposición a los componentes físicos que son llamados hardware.
1https://dle.rae.es/software
2 Diccionario de la lengua española 2005 (2010). wordreference.com, ed. «software» (diccionario). Espasa-Calpe. Consultado el 1 de febrero de
2010.
4
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
5
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
En cuanto a los caracteres, EcuRed (2015)3, plantea que el concepto direcciona hacia un
“conjunto de cualidades que determina su utilidad. La cualidad del software 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”. Es decir,
los criterios en cuanto a que si el software es bueno en calidad y es el adecuado, dependiendo de su
uso, dicho de otra manera, un sistema es correcto si hace lo que el cliente necesita. si resuelve el
problema real que causó su desarrollo.
Las cualidades de un software pueden ser establecidas en base a los siguientes criterios:
3 http://phpteamltap.blogspot.com/2015/05/cualidades-del-software.html
6
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
Mantenibilidad: menor esfuerzo que se requiere para que el sistema siga funcionando en
condiciones distintas a las originales e incluso en las originales.
7
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
La calidad del software es una noción que puede ser descrita mediante una serie de factores,
que pueden ser externos (observables por los usuarios del producto) o internos (observables por
profesionales de la computación).
Factores externos:
Corrección: capacidad de los productos de software de ejecutar sus tareas tal como están
definidas en su especificación de requerimientos.
Reusabilidad: facilidad para ser reutilizado en todo o en parte para nuevas aplicaciones.
Compatibilidad: facilidad de los productos de software para combinarse unos con otros.
8
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
Facilidad de uso: capacidad de aprender a manejar un sistema de software, operar con él,
preparar datos de entrada, interpretar resultados, etc.
Factores internos
Por su parte, McCall (1977)4, propone tres perspectivas para agrupar los factores de calidad:
Estas tres perspectivas que propone McCall, recogen en gran manera las experiencias que a
nivel de desarrollo de software se han extraído en función de un software de calidad. Un ejemplo
muy cotidiano es observar como a nivel de plataformas de aplicación móviles se observan gran
cantidad de aplicación creadas y que están a disposición en Google Play, pero que una inmensa
mayoría de esas aplicaciones, que han sido creadas por nóveles e inexpertos desarrolladores, no
re4unenh los criterios de calidad y es visible las aspiraciones de cada uno de los clientes, a través de
la interacción con los desarrolladores, por esta causa, se trajo a colación la cita bibliográfica de
McCall.
En síntesis, los factores de calidad del software tienen que ver al trabajo organizacional para
conformar equipos de alto desempeño, basados en su estructura como organización, en la cual estén
claramente definidos los roles, cargos, cultura organizacional y corporativa, los valores de la
organización. Esto dará como resultado una organización sólidamente conformada y cada uno de
los miembros que integran la organización consustanciados con los objetivos, mediante un clima
organizacional favorable.
Por otro lado, los requerimientos de los clientes vienen a ser otro de los factores que inciden
en la producción de proyectos de software. En la medida que hay claridad en cada uno de los
4 https://www.goconqr.com/es/mindmap/2774916/modelo-de-calidad-mccall
9
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
Asimismo, estas premisas no servirían de mucho si en cada uno de los integrantes del
equipo desarrollador de software no estén comprometidos, a fin de cumplir con los parámetros
establecidos en los sistemas de calidad que la organización haya establecido. Mediante estas dos
nociones de estructura organizacional y la disposición a cumplir a cabalidad con los lineamientos
establecidos en el manual de procedimientos del desarrollo de software, van a ser factores que van a
contribuir al desarrollo de software de calidad.
10
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
La Ingeniería de Software es una de las ramas de las ciencias de la computación que estudia
la creación de software confiable y de calidad, basándose en métodos y técnicas de ingeniería. Es la
que brinda soporte operacional y de mantenimiento, el campo de estudio de la ingeniería de
software. La integran las ciencias de la computación, las ciencias aplicadas y las ciencias básicas en
las cuales se encuentra apoyada la ingeniería.
Para Bauer (1972), la ingeniería de software trata del establecimiento de los principios y
métodos de la ingeniería a fin de obtener software de modo rentable, que sea fiable y trabaje en
máquinas reales (Bauer, 1972). Concepto práctico y claro en función de los objetivos que persiguen
los desarrolladores.
Esta caracterización que hace Bohem da para reflexionar la relación que existe entre los
enfoques paradigmáticos de investigación científica con la apropiación de estos criterios que
esgrimen teóricos del tema para ser utilizados en el área de las tecnologías y en el caso particular ,
en lo que se refiere a los paradigmas de programación y otros aspectos informáticos.
Mientras que Zelkovitz (1978), dijo que la ingeniería de software es el estudio de los
principios y metodologías para el desarrollo y mantenimiento de sistemas software. Este concepto
de Zelkovitz hace juego con las características y formuladas en el punto anterior referente a los
factores de calidad del software, en cuanto a seguir patrones establecidos en las normativas
correspondientes y manuales de procedimientos para el desarrollo de software.
11
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
software. Existe mucha similitud en este concepto con las apreciaciones expresadas en el párrafo
anterior.
12
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
Pruebas
Se estima que el 50% de todos los procesos de desarrollo de software deberían ser
evaluados. Los errores pueden arruinar el software tanto a nivel crítico y hasta el punto de ser
eliminado. Las pruebas de Software se hacen mientras se codifica y suelen hacerlo los
desarrolladores y otros expertos evaluadores a varios niveles. Esto incluye evaluación de módulos,
evaluación del programa, evaluación del producto, evaluación interna y finalmente evaluación con
el consumidor final. Encontrar errores y su remedio a tiempo es la llave para conseguir un software
fiable.
Integración
El Software puede necesitar estar integrado con las bibliotecas, Bases de datos o con otro u
otros programas. Esta fase del SDLC se focaliza en la integración del software con las entidades del
mundo exterior.
Implementación
Aquí se instala el software en máquinas de clientes. A veces, el software necesita instalar
configuraciones para el consumidor final con posterioridad. El Software se evalúa por su
adaptabilidad y su portabilidad, en cuanto a las cuestiones relacionadas con la integración y
conceptos asociados, se resuelven durante la implementación.
Mantenimiento y Funcionamiento
Esta fase confirma el funcionamiento del software en términos de más eficiencia y menos
errores. Si se requiere, los usuarios se forman, o se les presta documentación sobre como operar y
como mantenerlo en funcionamiento. El software se mantiene de forma temprana actualizando el
código en acorde a los cambios que tienen lugar en entornos del usuario o tecnológicos. Esta fase
puede que tenga que encarar retos originados por virus ocultos o problemas no identificados del
mundo real.
Disposición
Con el paso del tiempo, puede que el software falle en su ejecución. Puede que se vuelva
totalmente obsoleto o que necesite actualizaciones. De ahí surge una necesidad urgente de eliminar
una parte importante del sistema. Esta fase incluye archivar datos y componentes software
requerido, cierre del sistema, planificación de la actividad de disposición y terminación de sistema
en el momento final del sistema.
14
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
15
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
18
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
Por otra parte, existen distintas formas, paradigmas o modelos de ciclo de vida de software;
por ejemplo: Clásico o cascada, Prototipado, Evolutivo o en espiral, Combinación de estilos, etc.
Alternativamente, a veces se usan los términos “Ciclo de vida”, y “Modelo de ciclo de vida”
Clásico o cascada:
Propuesto por W. Royce a principios de los 70. Aplicación secuencial de una serie de pasos.
Cada paso genera entradas y documentación para la siguiente.
Prototipado:
Prototipear consiste en construir una versión inicial de un producto, el cual se describe la
interacción hombre-máquina sin implementar completamente la funcionalidad del sistema
(prototipo sin funcionalidad). La utilidad es la siguiente:
Ayuda a los analistas a establecer las necesidades del cliente.
Ayuda a los desarrolladores a mejorar los productos.
Clases de prototipos
Vertical: desarrolla completamente algunas de las facetas del producto.
Horizontal: desarrolla parcialmente todas las facetas del producto.
Evolutivo: la versión final es el producto ya construido.
Desechable: se usa solo para la captación de requerimientos y funcionalidad.
Evolutivo o en espiral: El desarrollo en espiral fue definido por primera vez por Barry
Boehm en 1986. Las actividades de este modelo se conforman en una espiral, en la que cada bucle o
iteración representa un conjunto de actividades. Las actividades no están fijadas a ninguna
prioridad, sino que las siguientes se eligen en función del análisis de riesgo, comenzando por el
bucle interior.
Estudio de viabilidad
Después de la recolección de requisitos, el equipo idea un plan para procesar el software. En
esta fase, el equipo analiza si el software puede hacerse para cubrir todos los requisitos del usuario
y si hay alguna posibilidad de que el software ya no sea necesario. Se investiga si el proyecto es
viable a nivel financiero, práctico, y a nivel tecnológico para que la organización acepte la oferta.
Hay varios algoritmos disponibles, los cuales ayudan a los desarrolladores a concluir si el proyecto
software es factible o no.
20
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
21
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
22
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
El paradigma funcional:
Considera al programa como una función matemática, donde el dominio representaría el
conjunto de todas las entradas posibles (inputs) y el rango sería el conjunto de todas las salidas
posibles (outputs). La forma en que una función puede ser entendida como una caja negra:
1. En los lenguajes funcionales no existe el concepto de variables y consecuentemente
tampoco existen operaciones de asignación. Aunque podría parecer que los parámetros de una
función se comportan como una variable (puesto que pueden llevar un nombre y su uso es de hecho
parecido al de las variables), esto es incorrecto: El valor de los parámetros es dado como fijo al
inicio de la función.
2. La existencia de una propiedad llamada transparencia referencial (Referential
transparency), la cual indica que una función sólo depende de sus parámetros y que tendrá efecto
únicamente en su resultado, por lo que podríamos llamar a una función arbitrariamente sin tener
efectos colaterales en el resto de las computaciones. Por último, que una función puede ser utilizada
como parámetros y resultados de cualquier otra función.
Programación Imperativa:
El término imperativo en este caso, no difiere esencialmente del modo gramático imperativo
del español. De forma similar, la programación imperativa consiste en una serie de comandos que
una computadora ejecutará. Estos comandos detallan de forma clara y específica el cómo hacer las
cosas y llevarán al programa a través de distintos estados.
Los elementos más importantes de la programación imperativa son: variables, tipos de datos,
expresiones y estructuras de control.
Programación estructurada:
C, Pascal y Fortran, y lenguajes similares, se conocen como lenguajes procedimentales (por
procedimientos). Es decir, cada sentencia o instrucción señala al compilador para que realice alguna
tarea: obtener una entrada, producir una salida, sumar tres números, dividir por cinco, etc. En
resumen, un programa en un lenguaje procedimental es un conjunto de instrucciones o sentencias.
En el caso de pequeños programas, estos principios de organización (denominados paradigma) se
demuestran eficientes.
El programador sólo tiene que crear esta lista de instrucciones en un lenguaje de
programación, compilar en la computadora y ésta, a su vez, ejecuta estas instrucciones. Cuando los
programas se vuelven más grandes, cosa que lógicamente sucede cuando aumenta la complejidad
23
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
del problema a resolver, la lista de instrucciones aumenta considerablemente, de modo tal que el
programador tiene muchas dificultades para controlar ese gran número de instrucciones.
Los programadores pueden controlar, de modo normal, unos centenares de líneas de
instrucciones. Para resolver este problema los programas se descompusieron en unidades más
pequeñas que adoptaron el nombre de funciones (procedimientos, subprogramas o subrutinas en
otros lenguajes de programación). De este modo en un programa orientado a procedimientos se
divide en funciones, de modo que cada función tiene un propósito bien definido y resuelve una tarea
concreta, y se diseña una interfaz claramente definida (el prototipo o cabecera de la función) para su
comunicación con otras funciones.
24
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
25
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
1. Modelo en Cascada:
También conocido como modelo clásico, modelo tradicional o modelo lineal secuencial. Él
método de la cascada es considerado como el enfoque clásico para el ciclo de vida del desarrollo de
sistemas, se puede decir que es un método puro que implica un desarrollo rígido.
Es caracterizado por ordenar de manera rigurosa las etapas del ciclo de vida de software,
dado que el comienzo de cada etapa debe esperar a la finalización de la inmediata anterior. Cuando
la revisión determina que el proyecto no está listo para pasar a la siguiente etapa, permanece en la
etapa actual hasta que esté preparado. Y debido a que el proceso está planeado es más fácil
determinar costos y los plazos.
2. Modelo de Espiral:
El modelo en espiral, propuesto originalmente por Bohem, 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. Proporciona el potencial para el
desarrollo rápido de versiones incrementales del software. En el modelo espiral, el software se
desarrolla en una serie de versión.
26
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
Requiere una considerable habilidad para la evaluación del riesgo, y cuenta con esta
habilidad para el éxito. Si un riesgo importante no es descubierto y gestionado, indudablemente
surgirán problemas.
3. Metodología de Prototipo:
Es un procedimiento de desarrollo especializado que permite a los desarrolladores la
posibilidad de poder solo hacer la muestra de la resolución para poder validar su esencia funcional
ante los clientes, y hacer los cambios que sean fundamentales antes de crear la solución final
auténtica.
La mejor parte de esta metodología es que tiende a resolver un conjunto de problemas de
diversificación que ocurren con el método de la cascada
Este modelo es útil cuando:
El cliente no identifica los requisitos detallados.
El responsable del desarrollo no está seguro de la eficiencia de un algoritmo, sistema
operativo o de la interface hombre-máquina.
27
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
28
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
MODELADO DE SISTEMA.
Se define sistema como un conjunto de partes operativamente interrelacionadas, del que
interesa considerar fundamentalmente su comportamiento global. En el proceso de toma de decisión
se elige una entre varias acciones posibles, teniendo en cuenta el efecto que cada acción vaya a
producir. La relación que liga las posibles acciones con sus efectos es el modelo del sistema. Por lo
tanto, en el proceso de toma de decisiones se está empleando un modelo del sistema.
El modelado de sistemas software es una técnica para tratar con la complejidad inherente a
estos sistemas. El uso de modelos ayuda al ingeniero de software a "visualizar" el sistema a
construir. Además, los modelos de un nivel de abstracción mayor pueden utilizarse para la
comunicación con el cliente. Por último, las herramientas de modelado y las de Ingeniería de
Software Automatizada pueden ayudar a verificar la corrección del modelo.
30
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
• El nivel de avance entre una y otra es notable, casi todas ofrecen como funcionalidad:
Diagramas de caso de uso.
Diagramas de clases.
Diagramas de secuencia.
• Generación de código en java, c++, python y php.
• Algunas entidad-relación (pero ninguna lo suficientemente avanzada)
• Pocas herramientas permiten ingeniería reversa, y si lo hacen solo es de lenguajes tipo java
o c++.
32
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
CONCLUSIONES
Los desarrollos de proyectos de software guardan mucha relación con los sistemas
procedimentales establecidos y diseñados puertas adentro por las mismas organizaciones
desarrolladoras para cumplir a cabalidad en el proceso de creación de software de calidad. Esta
serie de normativas internas y externas van en función de sistematizar, e incluso estandarizar cada
una de las fases en las que está compuesto el desarrollo de software. Estos procesos también van en
función de cumplir con los requerimientos del cliente, que a la postre el que verdaderamente sabe lo
que requiere, necesita y pretende desarrollar aguas abajo su organización.
Como ya se mencionó, desarrollar software, debe ser siguiendo las pautas establecidas para
lograr el fin, pero estas pautas serían imposible poner en práctica si no se cuenta con un buen
equipo, desde el punto de vista del desempeño, en la producción de software que transforme la
realidad de una organización.
Hay que tomar en cuenta que el software tiene un tiempo establecido de vida óptima y es por
eso que en la actualidad, el requerimiento de software se hace en función de prospectivas de
desarrollo de otras tendencias tecnológicas, sin que ello represente un costo adicional al cliente para
adaptarse a los cambios experimentados en el desarrollo de software.
Todas estas consideraciones hacen del software un avance tecnológico interesante a la hora
de evaluar de cuál será el futuro. Mientras tanto el desarrollador de software debe estar consciente
de lo fundamental de su rol dentro de la sociedad y de allí el punto de reflexión a que la calidad del
software no sólo va estar cimentada sobre la base de sus condiciones técnicas y de diseño, sino
también de la calidad de desarrolladores, desde el punto de vista del recurso humano, dado que es
inevitable el avance hacía el dominio de las máquinas sobre el hombre, urge entonces desarrollar
buenos desarrolladores en cuanto a su calidad humana. Es cuestión de tiempo, el tiempo lo dirá.
33
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
Puesto Responsabilidades
34
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
FUENTES CONSULTADAS:
https://dle.rae.es/software
https://es.wikipedia.org/wiki/Software
https://www.todamateria.com/que-es-software/
https://es.slideshare.net/manuelalfredochaconv/fundamentos-de-ingenieria-del-software-
2?next_slideshow=1
https://www.cavsi.com/preguntasrespuestas/cuales-son-ejemplos-de-software/
https://www.goconqr.com/es/mindmap/2774916/modelo-de-calidad-mccall
https://es.slideshare.net/evewalkiria/2-software-y-sus-cualidades
http://phpteamltap.blogspot.com/2015/05/cualidades-del-software.html
https://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software
http://ing1-fundamentos.blogspot.com/2012/11/participantes-en-el-proceso-de.html
https://sites.google.com/site/sinformaciondrose/ciclo-de-vida-del-software
https://www.tutorialspoint.com/es/software_engineering/software_development_life_cycle.h
m
http://ing1-fundamentos.blogspot.com/2012/11/paradigmas-de-programacion.html
https://1library.co/document/myj93vkz-fundamentos-teoricos-de-los-paradigmas-de-
programacion.html
https://es.slideshare.net/albertocalatayu/fundamentos-de-la-ingenieria-del-software
https://es.wikipedia.org/wiki/Modelado_del_software#:~:text=El%20modelado%20de%20si
stemas%20software,la%20comunicaci%C3%B3n%20con%20el%20cliente.
35
UNIDAD 2: FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE
http://www2.isa.uma.es/C17/Presentaciones%20de%20Clase%20(ppt)/Document%20Librar
y/INTRODUCION%20AL%20MODELADO%20DE%20SISTEMAS.pdf
http://ing1-fundamentos.blogspot.com/2012/11/tecnicas-y-herramientas-en-el-proceso.html
36