Está en la página 1de 20

Universidad Juárez Autónoma de Tabasco

División Académica de Ciencias y Tecnologías de la Información

Unidad NoCarretera
1. Introducción a la ingeniería de
Cunduacán-Jalpa KM. 1 Col. La Esmeralda CP. 86690

software.

Profesora: Ninfa Urania García Ulin.


Ingeniería: En Informática Administrativa.
Equipo 1:
Gloria Milagros Estrada Hernández.
Arturo del Ángel Martínez Alejandro.
Alejandro Pérez Solís.
Franco Obed Morales Hernández.
María Fernanda Pérez de la Cruz.
Sheila del Carmen Carrillo Wilson.
Kleiner Emmanuel De los santos Córdova.
Tania del Carmen Hernández Priego.
Grupo: 4A16
Asignatura: Ingeniería de Software.
Fecha: 8/02/24.
Lugar: Carretera Cunduacán-Jalpa KM.1. Col. La esmeralda. CP 86690

Cunduacán, Tabasco, México.


1.1. Conceptos Básicos.
La ingeniería de software se ha definido por varios autores. Según Ian
Sommerville, considerado uno de los padres de la ingeniería de software, la
ingeniería de software "es una disciplina de la ingeniería que comprende todos
los aspectos de la producción del software" [Somerville, 2004].
La IEEE (The Institute of Electrical and Electronics Engineers: el Instituto de
Ingenieros Electricistas y en Electrónica), es la asociación
internacional más grande del mundo formada por
profesionales de las nuevas tecnologías, como ingenieros
electricistas, electrónicos, en sistemas y en
telecomunicaciones.
La IEEE define a la ingeniería de software como "la
aplicación de un enfoque sistemático, disciplinado y
cuantificable al desarrollo, operación y mantenimiento del software".
Una de las definiciones más interesantes es la de Bohem (1976): "ingeniería
de software es la aplicación práctica del conocimiento científico al diseño y
construcción de programas de computadora y a la documentación asociada
requerida para desarrollar, operar y mantenerlos. Se conoce también como
desarrollo de software o producción de software". Definimos la ingeniería de
software como: Una disciplina en la que se aplican técnicas y principios de
forma sistemática en el desarrollo de sistemas de software para garantizar su
calidad. 1

¿Qué es? El software de computadora es el producto que construyen los


programadores profesionales y al que después le dan mantenimiento durante
un largo tiempo. Incluye programas que se ejecutan en una computadora de
cualquier tamaño y arquitectura, contenido que se presenta a medida de que
se ejecutan los programas de cómputo e información descriptiva tanto en una
copia dura como en formatos virtuales que engloban virtualmente a
cualesquiera medios electrónicos. La ingeniería de software está formada por
un proceso, un conjunto de métodos (prácticas) y un arreglo de herramientas
que permite a los profesionales elaborar software de cómputo de alta calidad.
¿Quién lo hace? Los ingenieros de software elaboran y dan mantenimiento al
software, y virtualmente cada persona lo emplea en el mundo industrializado,
ya sea en forma directa o indirecta.
¿Por qué es importante? El software es importante porque afecta a casi todos
los aspectos de nuestras vidas y ha invadido nuestro comercio, cultura y
actividades cotidianas. La ingeniería de software es importante porque nos
permite construir sistemas complejos en un tiempo razonable y con alta
calidad. 2
1.2. Evolución del Software.

El desarrollo del software no se detiene cuando un sistema se entrega, sino que


continúa a lo largo de la vida de éste. Después de distribuir un sistema,
inevitablemente debe modificarse, con la finalidad de mantenerlo útil. Tanto los
cambios empresariales como los de las expectativas del usuario generan nuevos
requerimientos para el software existente. Es posible que tengan que modificarse
partes del software para corregir errores encontrados durante su operación, para
adaptarlo a los cambios en su plataforma de software y hardware, y para mejorar
su rendimiento u otras características no funcionales.
La evolución del software es importante porque las organizaciones invierten
grandes cantidades de dinero en él y en la actualidad son completamente
dependientes de dichos sistemas. Sus sistemas se consideran activos
empresariales críticos, por lo que tienen que invertir en el cambio del sistema para
mantener el valor de estos activos.
De hecho, la necesidad de evolución puede volverse evidente incluso antes de que
el sistema se distribuya, de manera que las futuras versiones del software estarían
en desarrollo antes de que se libere la versión actual. Este modelo de evolución de
software implica que una sola organización es responsable tanto del desarrollo del
software inicial como de la evolución del software. La mayoría de los productos de
software empacados se desarrollan siguiendo este enfoque. Para el software
personalizado, por lo general se utiliza un enfoque diferente.
Figura 1
Modelo en espiral de desarrollo y evolución

Rajlich y Bennett (2000) propusieron una visión alternativa del ciclo de vida de la
evolución del software, como se indica en la figura 1. En ese modelo, distinguen
entre evolución y servicio. La evolución es la fase donde es posible hacer cambios
significativos a la arquitectura y la funcionalidad del software. Durante el servicio,
los únicos cambios que se realizan son relativamente pequeños.
Durante la evolución, el software se usa con éxito y hay un flujo constante de
propuestas de cambios a los requerimientos. Sin embargo, conforme el software se
modifica, su estructura tiende a degradarse y los cambios se vuelven más y más
costosos. Esto sucede con frecuencia después de algunos años de uso, cuando
también se requieren otros cambios ambientales como el hardware y los sistemas
operativos. En alguna etapa de su ciclo de vida, el software alcanza un punto de
transición donde los cambios significativos que implementan nuevos requerimientos
se vuelven cada vez menos rentables.
Figura 2
Evolución y servicio

Figura 3
Identificación del cambio y procesos de evolución

En dicha fase, el software avanza de la evolución al servicio. Durante la fase de


servicio, el software todavía es útil y se utiliza, pero sólo se le realizan pequeños
cambios tácticos. Durante esta fase, la compañía normalmente considera cómo
reemplazar el software. En la fase final, de retiro gradual (Phase-out), el software
todavía puede usarse, aunque no se implementan más cambios.
PROCESOS DE EVOLUCIÓN
Los procesos de evolución del software varían dependiendo del tipo de software
que se mantiene, de los procesos de desarrollo usados en la organización y de las
habilidades de las personas que intervienen. En algunas organizaciones, la
evolución es un proceso informal, donde las solicitudes de cambios provienen sobre
todo de conversaciones entre los usuarios del sistema y los desarrolladores. En
otras compañías, se trata de un proceso formalizado con documentación
estructurada generada en cada etapa del proceso.
La figura 4, adaptada de Arthur (1988), muestra un panorama del proceso de
evolución, el cual incluye actividades fundamentales de análisis del cambio,
planeación de la versión, implementación del sistema. Si los cambios propuestos se
aceptan, se planea una nueva versión del sistema. Durante la planeación de la
versión se consideran todos los cambios propuestos (reparación de fallas,
adaptación y nueva funcionalidad). Entonces se toma una decisión acerca de cuáles
cambios implementar en la siguiente versión del sistema. Después de
implementarse, se valida y se libera una nueva versión del sistema. Luego, el
proceso se repite con un conjunto nuevo de cambios propuestos para la siguiente
liberación.
Figura 4
Proceso de evolución del software

De manera ideal, la etapa de implementación del cambio de este proceso debe


modificar la especificación, el diseño y la implementación del sistema para reflejar
los cambios al mismo (figura 5). Se proponen, analizan y validan los nuevos
requerimientos que reflejan los cambios al sistema. Los componentes del sistema
se rediseñan e implementan, y el sistema vuelve a probarse. Si es adecuado, como
parte del proceso de análisis de cambio, podrían elaborarse prototipos con los
cambios propuestos.
Figura 5
Implementación de cambios
En tales casos, la necesidad de realizar el cambio rápidamente significa que quizá
no pueda seguir el proceso formal de análisis de cambio. En vez de modificar los
requerimientos y el diseño, se puede hacer una reparación de emergencia al
programa para resolver el problema de inmediato (figura 6). Sin embargo, el riesgo
es que los requerimientos, el diseño del software y el código se vuelvan
inconsistentes. Aunque se trate de documentar el cambio en los requerimientos y el
diseño, es posible que el software requiera reparaciones de emergencia
adicionales, las cuales tienen prioridad sobre la documentación. Con el tiempo, el
cambio original se olvida y la documentación y el código del sistema nunca se
realinean.
Figura 6
Proceso de reparación de emergencia
1.3. Características del Software.
1.3.1. Elementos
1.3.2 Estructura

Características del Software


Confiable: El software no debe causar daños físicos o económicos en el caso de
fallos. Es un término necesario que sea separado en varios elementos, los cuales
permiten darle al software el fiabilidad, éstos son:
• Consistencia y precisión.
• Solidez.
• Simplicidad.
• Calidad en los procesos de desarrollo
Eficiente: Debe realizar las funciones establecidas con resultados confiables,
ejecutar todas las operaciones que se requieren en un tiempo aceptado y que sea
fácilmente usado por el grupo de usuarios a quien está dirigido.
Facilidad para dar mantenimiento: Debe ser posible que el software evolucione y
que siga cumpliendo con sus especificaciones. Involucra los elementos que
simplifican la labor de prevención, corrección o ampliación del código del programa.
Las siguientes características se pueden considerar como atributos de este aspecto:
• Exactitud y claridad en la documentación
• Modularidad acoplamiento
• Facilidad de lectura
• Simplicidad
Estructura
• Funcionales.
• Orientados a objetos.
• Orientados a listas.
• Orientados a componentes.
Elementos
• Software operativo: permite manejar todo lo relacionado con el hardware,
como puede ser el funcionamiento de programas informáticos, sistemas de
almacenamiento, el disco duro, etc.
• Lenguaje de programación: lenguaje que utiliza cada sistema operativo en
sus aplicaciones.
• Aplicación informática: cualquier programa informático que el usuario emplea
para realizar una tarea específica.
• Paquetes de software: conjuntos de programas distribuidos en un mismo set
de forma complementaria.
• Driver: programa informático que conecta al software operativo con los
periféricos, como pueden ser el teclado, el ratón o los altavoces.

1.4. Importancia de la IS.


Es vital en la actualidad, ya que nos permite aprovechar al máximo la tecnología y
crear soluciones innovadoras. En un mundo cada vez más digitalizado, los
softwares desempeñan un papel fundamental en nuestro día a día. ¿Te imaginas
como sería la vida sin aplicaciones móviles, sistemas operativos o redes sociales?
Sería casi imposible funcionar sin ellos. Es por eso que la Ingeniera de Software es
esencial, ya que nos brinda las herramientas necesarias para construir y mejorar
estas tecnologías, y así, elevar nuestra calidad de vida.
Además, garantiza la seguridad y estabilidad de los sistemas. Los ingenieros de
software diseñan y prueban cuidadosamente los programas para evitar errores y
vulnerabilidades que podrían comprometer la integridad de los datos o perjudicar el
funcionamiento de los sistemas
El desarrollo de software se ha convertido en una de las disciplinas más importantes
de la actualidad, y se encuentra avanzando a pasos agigantados, ya que el
consumo de productos software por parte de la sociedad es cada vez mayor y la
necesidad de dar soluciones a problemas cotidianos con la tecnología se vuelve
imprescindible.
1.5. Capas de la IS.

La IS se puede concebir como una disciplina compuesta por varias capas o niveles,
que abarcan diferentes aspectos o dimensiones del desarrollo, operación y
mantenimiento del software.

Algunas de estas capas o niveles son:

• Capa de herramientas: Incluye los instrumentos, dispositivos, programas,


aplicaciones, etc., que se usan para facilitar, automatizar, mejorar o controlar las
actividades relacionadas con el software.

• Capa de métodos: Incluye las técnicas, procedimientos, prácticas, normas, etc.,


que se usan para definir, organizar, realizar o evaluar las actividades relacionadas
con el software.

• Capa de procesos: Incluye las fases, etapas, tareas, roles, etc., que se usan para
planificar, gestionar, ejecutar o supervisar las actividades relacionadas con el
software.

• Capa de producto: Incluye los componentes, elementos, características,


propiedades, etc., que se usan para describir, modelar, implementar o verificar el
software.

• Capa de calidad: Incluye los criterios, indicadores, medidas, métricas, etc., que
se usan para asegurar, controlar, mejorar o certificar la calidad del software.

Arquitectura de capas
Este tipo de arquitectura es la más común para la mayoría de software, y su punto central
es la base de datos en casi todos los casos para persistir la información. Todo el código en
esta arquitectura se organiza para que accedan por una capa superior y ésta pase la
petición a una capa inferior hasta llegar a la capa de persistencia (base de datos, ficheros...)
En cada fase (o capa del aplicativo) se realiza una única tarea, como validar los datos
introducidos, transformarlos...
Una estructura típica en esta arquitectura sería: MVC (Modelo, Vista, Controlador), es el
más común porque la mayoría de frameworks de desarrollo lo ofrecen como versión
estándar al iniciar un desarrollo.
1. Capa persistencia (Base de datos)
Es la capa inferior, el corazón de nuestra aplicación. Ésta capa solo debe
comunicarse con su capa inmediatamente superior. Es en ésta, dónde se persiste
la información, sea en base de datos, ficheros, memoria...

2. Capa lógica negocio (Modelo)


En esta parte del aplicativo, tenemos toda la lógica perteneciente a nuestro negocio,
el mapeo con las bases de datos si es el caso y los tipos de datos que existen en
nuestra persistencia.

3. Capa intermedia (Controlador)


Capa que recibe una petición del usuario y contienen todas las reglas y métodos
para transformar, parsear... que se intercambian entre la vista y el modelo.

4. Capa pública (Vista)


Es la capa superior que se compone de código HTML, CSS3, JavaScript por
ejemplo, mezclado con código dinámico que nos proporciona el motor de vistas si
es el caso.

Esta arquitectura puede contener más


capas, como por ejemplo una capa de Service, Repository, ViewModel. Cuando
sumamos más capas a nuestro aplicativo aumentamos la complejidad del mismo,
la curva de aprendizaje pero desacoplamos muchísimo más las capas y otorgamos
más independencia a cada una de las fases del aplicativo.
Uno de los principales problemas, es que un desarrollador puede saltar una capa y
acoplarse fuertemente produciendo una mezcla de responsabilidades sin ningún
sentido.
1.6. Clasificación de los Software.
1. Software de sistema:
• Este tipo de software proporciona los componentes básicos para el
funcionamiento de una computadora y gestiona los recursos del
sistema. Ejemplos incluyen sistemas operativos como Windows,
macOS, Linux, Unix, entre otros.
El objetivo principal del software de sistema es ofrecer funcionalidad a los
usuarios, así como ser la plataforma donde correrá el programa de
aplicación. Una de sus características es que no es muy manipulable al
estar en un segundo plano y difícilmente lo podrás operar como usuario,
ya que tiene un diseño complejo. Por eso, está más orientado al sistema
y al hardware que a los usuarios, de ahí que se le considere como
lenguaje de bajo nivel para interactuar con las máquinas de la mejor forma
posible.
Entre las funciones del software de sistema están: controlar la
transferencia de recursos, administrar la memoria RAM, acceder a los
periféricos y al disco duro, etc.
Dentro del software de sistema encontramos:
• Controladores de dispositivo.
• Herramientas de diagnóstico.
• Herramientas de corrección y optimización.
• Servidores.
• Utilidades.
2. Software de aplicación:
• Estos programas están diseñados para realizar tareas específicas y
satisfacer las necesidades de los usuarios finales. Se dividen en varias
categorías:
• Aplicaciones independientes: Se trata de sistemas de
aplicación que corren en una computadora local, como una PC,
e incluyen toda la funcionalidad necesaria y no requieren
conectarse a una red, como procesadores de texto (Microsoft
Word, Google Docs), hojas de cálculo (Microsoft Excel, Google
Sheets), software de presentación (Microsoft PowerPoint,
Google Slides), programas CAD, software de manipulación de
fotografías, etcétera
• Aplicaciones interactivas basadas en transacción: Consisten en
aplicaciones que se ejecutan en una computadora remota y a
las que los usuarios acceden desde sus propias PC o
terminales. Evidentemente, en ellas se incluyen aplicaciones
Web como las de comercio electrónico, donde es posible
interactuar con un sistema remoto para comprar bienes y
servicios. Esta clase de aplicación también incluye sistemas
empresariales, donde una organización brinda acceso a sus
sistemas a través de un navegador Web o un programa de
cliente de propósito específico y servicios basados en nube,
como correo electrónico y compartición de fotografías.
• Software de entretenimiento: Como videojuegos, reproductores
multimedia, aplicaciones de streaming de música y video, etc.
La calidad de interacción ofrecida al usuario es la característica
más importante de los sistemas de entretenimiento.
• Software educativo: Aplicaciones diseñadas para el
aprendizaje y la enseñanza, como software para la gestión de
clases, herramientas de autoría de contenido educativo, etc.
• Sistemas de procesamiento en lotes: Procesan gran cantidad
de entradas individuales para crear salidas correspondientes.
Los ejemplos de sistemas batch incluyen sistemas de
facturación periódica, como los sistemas de facturación
telefónica y los sistemas de pago de salario.
• Sistemas para modelado y simulación: Éstos son sistemas que
desarrollan científicos e ingenieros para modelar procesos o
situaciones físicas, que incluyen muchos objetos separados
interactuantes. Dichos sistemas a menudo son
computacionalmente intensivos y para su ejecución requieren
sistemas paralelos de alto desempeño.
• Sistemas de adquisición de datos: Son sistemas que desde su
entorno recopilan datos usando un conjunto de sensores, y
envían dichos datos para su procesamiento a otros sistemas.
El software tiene que interactuar con los sensores y se instala
regularmente en un ambiente hostil, como en el interior de un
motor o en una ubicación remota.
• Sistemas de sistemas: Son sistemas compuestos de un cierto
número de sistemas de software. Algunos de ellos son producto
del software genérico, como un programa de hoja de cálculo.
Otros sistemas en el ensamble pueden estar especialmente
escritos para ese entorno.
3. Software de desarrollo o programación:
• Estas herramientas son utilizadas por los desarrolladores para crear,
depurar y mantener otros programas y aplicaciones. Incluyen editores
de código (Visual Studio Code, Sublime Text), entornos de desarrollo
integrado (IDEs) como Eclipse, Visual Studio, y herramientas de
gestión de versiones como Git.
Dentro del software de programación encontramos:
• Editor de texto: utilizados para escribir código limpio.
• Entornos de Desarrollo Integrado (IDE): Que no son más que
conjuntos de herramientas de programación “todo en uno” para
conseguir mejor productividad en la programación.
• Depuradores de código: ayudan al programador a depurar y
mejorar el código eliminando código basura.
• Compiladores.
4. Software embebido:
• Este tipo de software está incrustado en dispositivos electrónicos y se
utiliza para controlar su funcionamiento. Se trata de sistemas de
control de que regulan y gestionan dispositivos de hardware.
Numéricamente, quizás existen más sistemas embebidos que
cualquier otro tipo de sistema. Algunos ejemplos de sistemas
embebidos incluyen el software en un teléfono móvil (celular), el
software que controla los frenos antibloqueo de un automóvil y el
software en un horno de microondas para controlar el proceso de
cocinado.
5. Software de código abierto vs. Software propietario:
• Esta clasificación se basa en la licencia y el modelo de distribución del
software. El software de código abierto permite a los usuarios acceder,
modificar y redistribuir el código fuente, mientras que el software
propietario tiene restricciones en su uso y distribución, y su código
fuente suele ser cerrado.
6. Software de licencia gratuita vs. Software comercial:
• Esta clasificación se basa en el costo de adquisición del software. El
software de licencia gratuita es gratuito para descargar y usar,
mientras que el software comercial requiere un pago por su uso o
licencia.
1.7. Paradigmas de ingeniería de Software.
ingeniería de software es un campo que se ha desarrollado a lo largo de los años,
y a medida que ha evolucionado, han surgido diferentes enfoques para abordar los
desafíos de desarrollo de software. Estos enfoques se denominan "paradigmas" y
representan diferentes maneras de pensar y abordar el proceso del desarrollo de
software.
Los paradigmas de la ingeniería de software de Kendall se refieren a un conjunto
de principios o enfoques fundamentales que guían la forma en que se desarrolla el
software. Estos paradigmas fueron propuestos por Kenneth Kendall, un reconocido
experto en ingeniería de software, y son útiles para comprender las diferentes
formas en que se aborda el proceso de desarrollo de software.
1. Paradigma estructurado: Este paradigma se centra en descomponer un problema
en partes más pequeñas y manejables. Utiliza técnicas como la división en módulos,
el uso de estructuras de control (como bucles y condicionales), y el modularidad
para desarrollar software de manera ordenada y fácil de entender. Es
particularmente útil para proyectos grandes donde la complejidad puede ser
abrumadora si no se divide en partes más simples.
2. Paradigma orientado a objetos (OO): En este enfoque, el software se diseña y
desarrolla pensando en entidades llamadas "objetos", que tienen atributos y
comportamientos asociados. Se enfoca en la encapsulación, la herencia y el
polimorfismo para organizar y reutilizar el código de manera efectiva. El paradigma
orientado a objetos es muy útil para modelar sistemas del mundo real y fomenta la
reutilización del código, lo que puede mejorar la productividad y la mantenibilidad
del software.
3. Paradigma basado en componentes: Este paradigma se basa en la idea de
construir software a partir de componentes reutilizables, que son unidades
independientes de funcionalidad que pueden ser ensambladas para formar
sistemas más grandes. Los componentes pueden ser tanto software desarrollado
internamente como componentes de terceros. Este enfoque promueve el
modularidad y la flexibilidad, ya que permite a los desarrolladores construir sistemas
complejos a partir de piezas preexistentes.
4. Paradigma dirigido por modelos (MDSD): En este enfoque, se utiliza un modelo
de software como el artefacto principal durante el proceso de desarrollo. Los
modelos se crean utilizando lenguajes específicos de dominio (DSL) que son más
cercanos al problema que se está resolviendo que a la implementación concreta.
Luego, estos modelos se transforman en código ejecutable mediante herramientas
automáticas. El paradigma dirigido por modelos puede aumentar la productividad y
la calidad del software al permitir una abstracción más alta y una generación
automática de código.
Cada uno de estos paradigmas tiene sus propias fortalezas y debilidades, y la
elección del enfoque adecuado depende del contexto del proyecto, los requisitos
del cliente y las preferencias del equipo de desarrollo. Es común que en un proyecto
de ingeniería de software se combinen elementos de varios paradigmas para
aprovechar lo mejor de cada uno.
Los modelos de procesos de software, métodos de ingeniería de software y
herramientas se han adoptado con éxito en el amplio
espectro de las aplicaciones industriales. Los gestores y usuarios reconocen
la
necesidad de un enfoque más disciplinado del software.

Un paradigma de programación es un modelo básico de diseño y desarrollo


de
programas, que permite producir programas con una directriz específica, tales
como: estructura modular, fuerte cohesión, alta rentabilidad, etc
Existen tres categorías de paradigmas de programación: [11]
a) Los que soportan técnicas de programación de bajo nivel (ejemplo: copia de
ficheros frente estructuras de datos compartidos)
b) Los que soportan métodos de diseño de algoritmos (ejemplo: divide y
vencerás, programación dinámica, etc.)
c) Los que soportan soluciones de programación de alto nivel, como los
descritos en el punto anterior

Los paradigmas relacionados con la programación de alto nivel se agrupan en tres


categorías de acuerdo con la solución que aportan para resolver el problema:
a) Solución procedimental u operacional. Describe etapa a etapa el modo de
construir la solución. Es decir señala la forma de obtener la solución.
b) Solución demostrativa. Es una variante de la procedimental. Especifica la
solución describiendo ejemplos y permitiendo que el sistema generalice la
solución de estos ejemplos para otros casos. Aunque es fundamentalmente
procedimental, el hecho de producir resultados muy diferentes a ésta, hace
que sea tratada como una categoría separada.
1.7.1. El enfoque estructurado.

Uno de los enfoques principales que se abordan en el libro es el enfoque


estructurado. Este enfoque se basa en la idea de descomponer un sistema en sus
componentes más pequeños y luego construirlo de manera gradual y organizada.
El enfoque estructurado se centra en dividir el sistema de software en componentes
más pequeños, lo que facilita su comprensión, desarrollo y mantenimiento. Por otro
lado, el enfoque orientado a objetos se basa en la idea de crear componentes de
software, llamados objetos, que representan entidades del mundo real.

1. División jerárquica: En el enfoque estructurado, un sistema se divide en módulos


o subsistemas más pequeños. Estos módulos se organizan en una jerarquía, donde
cada nivel de la jerarquía se subdivide en módulos más específicos y detallados.
Esta división jerárquica facilita la comprensión y el desarrollo del sistema.
2. Diagramas de flujo de datos (DFD):Los DFD son una herramienta central en el
enfoque estructurado. Representan la forma en que la información fluye a través del
sistema, mostrando los procesos, las entradas, las salidas y los almacenes de
datos. Los DFD ayudan a visualizar y comprender cómo interactúan los diferentes
componentes del sistema.
3. Diccionario de datos: El diccionario de datos es una lista detallada de todos los
elementos de datos utilizados en el sistema, junto con sus definiciones y
descripciones. Ayuda a mantener la consistencia y la integridad de los datos en todo
el sistema, proporcionando una referencia centralizada para los desarrolladores.
4. Especificación de procesos: En el enfoque estructurado, los procesos se
describen en detalle, especificando qué hace cada proceso, qué datos utiliza y qué
produce como resultado. Esta especificación detallada facilita la implementación y
la verificación de cada proceso dentro del sistema.
5. Control de flujo: El enfoque estructurado también se preocupa por el control de
flujo, es decir, cómo se dirige el flujo de información y procesamiento a través del
sistema. Esto se logra mediante la utilización de técnicas como la programación
estructurada, que enfatiza el uso de estructuras de control como secuencias,
selecciones y repeticiones.
En resumen, el enfoque estructurado promueve una metodología organizada y
sistemática para el análisis y diseño de sistemas de información. Al dividir un
sistema en componentes más pequeños, utilizar herramientas como los DFD y el
diccionario de datos, y especificar procesos y controles de flujo, los desarrolladores
pueden construir sistemas complejos de manera más eficiente y efectiva.
El modelo estructurado se basa en la descomposición del sistema en
componentes más pequeños y manejables. Estos componentes, llamados módulos,
se organizan de manera jerárquica, lo que permite una mejor comprensión y
mantenimiento del sistema.

Este modelo se divide en tres fases principales: análisis, diseño y programación. En


la fase de análisis, se realiza un estudio detallado de los requisitos del sistema y se
identifican las funciones que el software debe cumplir. A continuación, en la fase de
diseño, se definen las estructuras de datos y algoritmos necesarios para
implementar las funciones identificadas en la fase de análisis. Por último, en la fase
de programación, se lleva a cabo la implementación del software utilizando un
lenguaje de programación específico.

En primer lugar, permite una mejor comprensión y comunicación entre los miembros
del equipo de desarrollo, ya que la estructura jerárquica facilita la división del trabajo
y la asignación de responsabilidades. Además, este modelo se centra en la
modularidad, lo que facilita la reutilización de código y reduce el tiempo de
desarrollo. También ayuda a identificar y corregir errores de manera más rápida y
eficiente.

Consejo para el usuario: Al utilizar el modelo estructurado en la ingeniería de


software, es importante seguir las buenas prácticas de programación y
documentación. Además, se recomienda realizar pruebas exhaustivas para
garantizar la calidad del software desarrollado.

En resumen, el modelo estructurado es una metodología ampliamente utilizada en


la ingeniería de software que se basa en la descomposición jerárquica del sistema
en módulos. Este modelo permite una mejor comprensión y comunicación entre los
miembros del equipo de desarrollo, facilita la reutilización de código y reduce el
tiempo de desarrollo. Para utilizar este modelo de manera efectiva, es importante
seguir buenas prácticas de programación y documentación, así como realizar
pruebas exhaustivas.
1.7.2. El enfoque orientado a objetos.
El enfoque orientado a objetos (OO) es un paradigma de programación que se basa
en el concepto de "objetos", los cuales son entidades que pueden contener tanto
datos (llamados atributos) como código (llamados métodos). Estos objetos
interactúan entre sí a través de mensajes, lo que permite la comunicación y la
manipulación de datos de manera modular y flexible.

Algunos conceptos clave del enfoque orientado a objetos incluyen:

Abstracción: Permite modelar entidades del mundo real como objetos en el


software, capturando solo los detalles relevantes para el sistema en cuestión y
ocultando los detalles irrelevantes.

Encapsulamiento: Consiste en agrupar datos y métodos relacionados en un


objeto, y luego controlar el acceso a estos datos mediante métodos públicos. Esto
promueve el modularidad y la seguridad al ocultar la implementación interna de un
objeto.

Herencia: Permite crear nuevas clases basadas en clases existentes, lo que facilita
la reutilización de código y la creación de jerarquías de clases. Las clases derivadas
(subclases) heredan atributos y métodos de las clases base (superclases), y pueden
extender o modificar su comportamiento.

Polimorfismo: Es la capacidad de diferentes objetos de responder al mismo


mensaje de manera diferente. Esto se logra mediante la implementación de
métodos con el mismo nombre en clases diferentes, pero con comportamientos
específicos para cada una.

El enfoque orientado a objetos se utiliza ampliamente en el desarrollo de software


debido a su capacidad para modelar problemas de manera intuitiva, promover la
reutilización de código y facilitar el mantenimiento y la evolución del software a
medida que los requisitos cambian. Lenguajes de programación como Java, C++,
Python y C# están diseñados con soporte para el paradigma de programación
orientada a objetos.
1.7.3. Importancias de las herramientas CASE en la
ingeniería de software.
Las herramientas CASE (Computer-Aided Software Engineering, Ingeniería de
Software Asistida por Computadora) son software diseñado para ayudar en el
desarrollo de sistemas de software. Estas herramientas proporcionan un conjunto
de funcionalidades integradas que abarcan desde la gestión de requisitos hasta la
implementación y el mantenimiento del software. Algunas de las importantes
razones por las cuales las herramientas CASE son importantes en la ingeniería de
software son:

Gestión de requisitos: Las herramientas CASE facilitan la captura, el análisis y la


gestión de requisitos del software. Permiten a los equipos de desarrollo mantener
un registro centralizado de los requisitos del sistema, gestionar cambios y asegurar
la trazabilidad entre los requisitos y otros artefactos del proyecto.

Modelado y diseño: Las herramientas CASE proporcionan funcionalidades para el


modelado y diseño de sistemas de software. Esto incluye la creación de diagramas
de clases, diagramas de casos de uso, diagramas de secuencia y otros modelos
que ayudan a visualizar la estructura y el comportamiento del sistema antes de su
implementación.

Generación de código: Algunas herramientas CASE ofrecen capacidades de


generación de código automático a partir de los modelos diseñados. Esto ayuda a
reducir el esfuerzo y el tiempo necesarios para implementar el software, además de
minimizar los errores humanos en la fase de codificación.

Documentación: Las herramientas CASE pueden generar documentación


automáticamente a partir de los modelos y diseños del sistema. Esto incluye la
generación de especificaciones técnicas, manuales de usuario, diagramas UML y
otros documentos necesarios para el desarrollo y mantenimiento del software.

Gestión de versiones y control de cambios: Las herramientas CASE ofrecen


funcionalidades para gestionar versiones de los artefactos del proyecto y controlar
los cambios realizados en ellos. Esto es crucial para mantener la integridad y la
trazabilidad de los artefactos a lo largo del ciclo.
Referencias
Fundamentos de Ingeniería de Software, Dra. María del Carmen Gómez Fuentes,
Dr. Jorge Cervantes Ojeda, Dr. Pedro Pablo González Pérez, UNIVERSIDAD
AUTONOMA METROPOLITANA. 1
INGENIERÍA DEL SOFTWARE. UN ENFOQUE PRÁCTICO Séptima edición, Roger
S. Pressman, Ph.D. University of Connecticut. 2
¿Qué es el software y sus componentes básicos? | Euroinnova
A4 Capítulo 1.pdf (unam.mx)

https://www.poli.edu.co/blog/poliverso/que-es-la-ingenieria-de-software

Somerville, Ian. (2011). INGENIERÍA DE SOFTWARE (NOVENA EDICIÓN). Luis

M. Cruz Castillo.

https://gc.scalahed.com/recursos/files/r161r/w25469w/ingdelsoftwarelibro9_

compressed.pdf

Enfoque estructurado y Enfoque OO - Ingenieria de software | PPT (slideshare.net)

Ingivision. (2021, Agosto 3). ¿Cuántos tipos de software existen? Retrieved from

Ingivision: https://www.ingivision.com/2021/08/03/tipos-software/

Somerville, I. (2011). Ingenieria de Software. In I. Somerville. México: Pearson.

Torres, D. (2023, Agosto 30). Tipos de software: clasificación, cómo funcionan y

ejemplos. Retrieved from HubSpot: https://blog.hubspot.es/sales/tipos-de-

software

También podría gustarte