Está en la página 1de 18

UNIVERSIDAD GRAN ASUNCIÓN

UNIGRAN

TEMA: INGENIERIA DEL SOFTWARE. UN ENFOQUE


PRACTICO.

INTEGRANTES: .
.

PROFESOR:

CURSO: QUINTO

ITA – PARAGUAY
2023
INDICE.
INTRODUCCIÓN...........................................................................................................................2
EL SOFTWARE Y LA INGENIERÍA DE SOFTWARE..........................................................................3
¿Quién lo hace?........................................................................................................................3
¿Por qué es importante?..........................................................................................................3
¿Cuáles son los pasos?.............................................................................................................3
¿Cuál es el producto final?.......................................................................................................3
DOMINIOS DE APLICACIÓN DEL SOFTWARE...............................................................................4
UN MODELO GENERAL DE PROCESO...........................................................................................6
EL PROCESO DEL SOFTWARE.......................................................................................................7
MODELOS DEL PROCESO..............................................................................................................7
Principios que guían el proceso................................................................................................7
EL PROCESO DE DISEÑO...............................................................................................................8
DISEÑO DE WEBAPPS..................................................................................................................8
CALIDAD DEL DISEÑO DE WEBAPPS.............................................................................................8
ADMINISTRACIÓN DE CALIDAD....................................................................................................9
¿Qué es la calidad?...................................................................................................................9
PRUEBA DE APLICACIONES WEB...............................................................................................10
CONCEPTOS DE PRUEBAS PARA APLICACIONES WEB................................................................10
Dimensiones de calidad..........................................................................................................10
Errores dentro de un entorno de webapp..............................................................................11
Estrategia de las pruebas.......................................................................................................12
Planificación de pruebas........................................................................................................13
MEJORAMIENTO DEL PROCESO DEL SOFTWARE......................................................................13
¿QUÉ ES MPS?............................................................................................................................13
Enfoques del MPS...................................................................................................................14
BIBLIOGRAFÍA............................................................................................................................16
CONCLUSIÓN.............................................................................................................................17

1
INTRODUCCIÓN
La ingeniería del software es una disciplina fundamental en el desarrollo de
aplicaciones y sistemas informáticos. Su enfoque práctico se centra en la aplicación de
principios, métodos y herramientas para garantizar la calidad y eficiencia en la
producción de software. En este sentido, el objetivo de la ingeniería del software es
establecer procesos y prácticas que permitan la creación de sistemas confiables,
seguros y fáciles de mantener.

En esta obra, exploraremos los aspectos clave de la ingeniería del software desde un
enfoque práctico. Analizaremos las etapas del ciclo de vida del desarrollo de software,
desde la especificación de requisitos hasta la entrega final, pasando por el diseño, la
implementación y las pruebas. También abordaremos temas relevantes como la
gestión de proyectos, la calidad del software y la ingeniería de requisitos.

A lo largo de este libro, los lectores encontrarán ejemplos reales y consejos prácticos
que les ayudarán a comprender y aplicar los conceptos de la ingeniería del software en
su propio trabajo.

2
EL SOFTWARE Y LA INGENIERÍA DE SOFTWARE
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 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.

¿Cuáles son los pasos?


El software de computadora se construye del mismo modo que cualquier producto
exitoso, con la aplicación de un proceso ágil y adaptable para obtener un resultado de
mucha calidad, que satisfaga las necesidades de las personas que usarán el producto.
En estos pasos se aplica el enfoque de la ingeniería de software.

¿Cuál es el producto final?


Desde el punto de vista de un ingeniero de software, el producto final es el conjunto
de programas, contenido (datos) y otros productos terminados que constituyen el
software de computadora. Pero desde la perspectiva del usuario, el producto final es la
información resultante que de algún modo hace mejor al mundo en el que vive.

3
DOMINIOS DE APLICACIÓN DEL SOFTWARE
Actualmente, hay siete grandes categorías de software de computadora que plantean
retos continuos a los ingenieros de software:

 Software de sistemas: conjunto de programas escritos para dar servicio a otros


programas.

Determinado software de sistemas (por ejemplo, compiladores, editores y


herramientas para administrar archivos) procesa estructuras de información complejas
pero deterministas.

Otras aplicaciones de sistemas (por ejemplo, componentes de sistemas operativos,

manejadores, software de redes, procesadores de telecomunicaciones) procesan,


sobre todo datos indeterminados. En cualquier caso, el área de software de sistemas
se caracteriza por: gran interacción con el hardware de la computadora, uso intensivo
por parte de usuarios múltiples, operación concurrente que requiere la secuenciación,
recursos compartidos y administración de un proceso sofisticado, estructuras
complejas de datos e interfaces externas múltiples.

 Software de aplicación: programas aislados que resuelven una necesidad


específica de negocios. Las aplicaciones en esta área procesan datos
comerciales o técnicos en una forma que facilita las operaciones de negocios o
la toma de decisiones administrativas o técnicas. Además de las aplicaciones
convencionales de procesamiento de datos, el software de aplicación se usa
para controlar funciones de negocios en tiempo real (por ejemplo,
procesamiento de transacciones en punto de venta, control de procesos de
manufactura en tiempo real).
 Software de ingeniería y ciencias: se ha caracterizado por algoritmos
“devoradores de números”. Las aplicaciones van de la astronomía a la
vulcanología, del análisis de tensiones en automóviles a la dinámica orbital del
transbordador espacial, y de la biología molecular a la manufactura
automatizada. Sin embargo, las aplicaciones modernas dentro del área de la
ingeniería y las ciencias están abandonando los algoritmos numéricos
obvencionales.

4
El diseño asistido por computadora, la simulación de sistemas y otras aplicaciones

interactivas, han comenzado a hacerse en tiempo real e incluso han tomado


características del software de sistemas.

 Software incrustado: reside dentro de un producto o sistema y se usa para


implementar y controlar características y funciones para el usuario final y para
el sistema en sí. El software incrustado ejecuta funciones limitadas y
particulares (por ejemplo, control del tablero de un horno de microondas) o
provee una capacidad significativa de funcionamiento y control (funciones
digitales en un automóvil, como el control del combustible, del tablero de
control y de los sistemas de frenado).
 Software de línea de productos: es diseñado para proporcionar una capacidad
específica para uso de muchos consumidores diferentes. El software de línea de
productos se centra en algún mercado limitado y particular (por ejemplo,
control del inventario de productos) o se dirige a mercados masivos de
consumidores (procesamiento de textos, hojas de cálculo, gráficas por
computadora, multimedios, entretenimiento, administración de base de datos
y aplicaciones para finanzas personales o de negocios).
 Aplicaciones web: llamadas “webapps”, esta categoría de software centrado en
redes agrupa una amplia gama de aplicaciones. En su forma más sencilla, las
webapps son poco más que un conjunto de archivos de hipertexto vinculados
que presentan información con uso de texto y gráficas limitadas. Sin embargo,
desde que surgió Web 2.0, las webapps están volucionando hacia ambientes de
cómputo sofisticados que no sólo proveen características

aisladas, funciones de cómputo y contenido para el usuario final, sino que también

están integradas con bases de datos corporativas y aplicaciones de negocios.

Software de inteligencia artificial: hace uso de algoritmos no numéricos para resolver

problemas complejos que no son fáciles de tratar computacionalmente o con el


análisis directo.

Las aplicaciones en esta área incluyen robótica, sistemas expertos, reconocimiento

5
de patrones (imagen y voz), redes neurales artificiales, demostración de teoremas y
juegos.

UN MODELO GENERAL DE PROCESO


Acciones y tareas que se realizan cuando va a crearse algún producto terminado. Cada
una de las actividades, acciones y tareas se encuentra dentro de una estructura o
modelo que define su relación tanto con el proceso como entre sí.

En la figura se representa el proceso del software de manera esquemática. En dicha


figura, cada actividad estructural está formada por un conjunto de acciones de
ingeniería de software y cada una de éstas se encuentra definida por un conjunto de
tareas que identifica las tareas del trabajo que deben realizarse, los productos del
trabajo que se producirán, los puntos de aseguramiento de la calidad que se requieren
y los puntos de referencia que se utilizarán para evaluar el avance.

Una estructura general para la ingeniería de software define cinco actividades


estructurales: comunicación, planeación, modelado, construcción y

despliegue.

6
EL PROCESO DEL SOFTWARE

MODELOS DEL PROCESO


Principios que guían el proceso
En la parte 1 de este libro se estudia la importancia del proceso de software y se
describen los abundantes modelos de proceso que se han propuesto para hacer el
trabajo de ingeniería de software. Sin que importe que un modelo sea lineal o
iterativo, prescriptivo o ágil, puede caracterizarse con el empleo de la estructura
general del proceso aplicable a todos los modelos de proceso. Los siguientes principios
fundamentales se aplican a la estructura y, por extensión, a todo proceso de software:

 Principio 1. Ser ágil. Ya sea que el modelo de proceso que se elija sea
prescriptivo o ágil, son los principios básicos del desarrollo ágil los que deben
gobernar el enfoque. Todo aspecto del trabajo que se haga debe poner el
énfasis en la economía de acción: en mantener el enfoque técnico tan sencillo
como sea posible, hacer los productos del trabajo que se generan tan concisos
como se pueda y tomar las decisiones localmente, siempre que sea posible.
 Principio 2. En cada etapa, centrarse en la calidad. La condición de salida para
toda actividad, acción y tarea del proceso debe centrarse en la calidad del
producto del trabajo que se ha generado.
 Principio 3. Estar listo para adaptar. El proceso no es una experiencia religiosa,
en él no hay lugar para el dogma. Cuando sea necesario, adapte su enfoque a
las restricciones impuestas por el problema, la gente y el proyecto en sí.
 Principio 4. Formar un equipo eficaz. El proceso y práctica de la ingeniería de
software son importantes, pero el objetivo son las personas. Forme un equipo
con organización propia en el que haya confianza y respeto mutuos.
 Principio 5. Establecer mecanismos para la comunicación y coordinación. Los
proyectos fallan porque la información importante cae en las grietas o porque
los participantes no coordinan sus esfuerzos para crear un producto final
exitoso. Éstos son aspectos de la administración que deben enfrentarse.

7
 Principio 6. Administrar el cambio. El enfoque puede ser formal o informal,
pero deben establecerse mecanismos para administrar la forma en la que los
cambios se solicitan, evalúan, aprueban e implementan.
 Principio 7. Evaluar el riesgo. Son muchas las cosas que pueden salir mal
cuando se desarrolla software. Es esencial establecer planes de contingencia.
 Principio 8. Crear productos del trabajo que agreguen valor para otros. Sólo
genere aquellos productos del trabajo que agreguen valor para otras
actividades, acciones o tareas del proceso. Todo producto del trabajo que se
genere como parte de la práctica de ingeniería de software pasará a alguien
más. La lista de las funciones y características requeridas se dará a la persona (o
personas) que desarrollará(n) un diseño, el diseño pasará a quienes generan
código y así sucesivamente. Asegúrese de que el producto del trabajo imparte
la información necesaria sin ambigüedades u omisiones.

EL PROCESO DE DISEÑO
El diseño de software es un proceso iterativo por medio del cual se traducen los
requerimientos en un “plano” para construir el software. Al principio, el plano ilustra
una visión holística del software. Es decir, el diseño se representa en un nivel alto de
abstracción, en el que se rastrea directamente el objetivo específico del sistema y los
requerimientos más detallados de datos, funcionamiento y comportamiento. A medida
que tienen lugar las iteraciones del diseño, las mejoras posteriores conducen a niveles
menores de abstracción. Éstos también pueden rastrearse hasta los requerimientos,
pero la conexión es más sutil.

DISEÑO DE WEBAPPS

CALIDAD DEL DISEÑO DE WEBAPPS


El diseño es la actividad de la ingeniería que genera un producto de alta calidad. Esto
lleva a una pregunta recurrente que surge en todas las disciplinas de la ingeniería:
¿qué es calidad? En esta sección estudiaremos la respuesta en el contexto del
desarrollo de webapps.

8
Toda persona que haya navegado en la red mundial o que haya utilizado una intranet
corporativa se ha formado una opinión sobre lo que constituye una “buena” webapp.
Los puntos de vista individuales varían mucho. A algunos usuarios les gustan los
gráficos brillantes, otros prefieren el texto simple, algunos más demandan mucha
información, mientras los hay que desean una presentación abreviada. A algunos les
agradan las herramientas analíticas sofisticadas o tener acceso a bases de datos y a
otros les gusta lo sencillo. En realidad, la percepción del usuario acerca de lo que es
“bueno” (y en consecuencia la aceptación o rechazo de la webapp) puede ser un
aspecto más importante que cualquier otro de índole técnica sobre la calidad de las
webapps.

 Seguridad. Las webapps se han integrado mucho con bases de datos críticas,
corporativas y gubernamentales. Las aplicaciones de comercio electrónico
extraen y después almacenan información delicada para el cliente.
 Disponibilidad. Aun la mejor webapp será incapaz de satisfacer las necesidades
de los usuarios si no se encuentra disponible. En sentido técnico, la
disponibilidad es la medida porcentual del tiempo que una webapp puede
utilizarse. El usuario final común espera que las webapps se hallen disponibles
las 24 horas de los 365 días del año.
 Escalabilidad. ¿Una webapp y su ambiente de servidor pueden crecer para que
manejen 100, 1 000, 10 000 o 100 000 usuarios? ¿La webapp y los sistemas con
los que tiene interfaz son capaces de manejar una variación significativa del
volumen o su respuesta se desplomará (o cesará)? No basta construir una
webapp exitosa. También es importante que pueda asimilar la carga del éxito
(muchos más usuarios) y que tenga aún más éxito.

ADMINISTRACIÓN DE CALIDAD
¿Qué es la calidad?
La calidad del diseño se refiere a las características que los diseñadores especifican
para un producto. El tipo de materiales, tolerancias y especificaciones del desempeño,
todo contribuye a la calidad del diseño. Si se utilizan mejores materiales, tolerancias

9
más estrictas y se especifican mayores niveles de desempeño, la calidad del diseño de
un producto se incrementa si se fabrica de acuerdo con las especificaciones.

En el desarrollo del software, la calidad del diseño incluye el grado en el que el diseño
cumple las funciones y características especificadas en el modelo de requerimientos.
La calidad de la conformidad se centra en el grado en el que la implementación se
apega al diseño y en el que el sistema resultante cumple sus metas de requerimientos
y desempeño.

PRUEBA DE APLICACIONES WEB

CONCEPTOS DE PRUEBAS PARA APLICACIONES WEB


Probar es el proceso de ejecución del software con la intención de encontrar (y a final
de cuentas corregir) errores. Esta filosofía fundamental, que se expuso por primera vez
en el capítulo 17, no cambia para las webapps. De hecho, puesto que los sistemas y las
aplicaciones basadas en web residen en una red e interactúan con muchos sistemas
operativos, navegadores residentes en varios dispositivos), plataformas de hardware,
protocolos de comunicaciones y aplicaciones “de cuarto trasero” diferentes, la
búsqueda de errores representa un reto significativo.

Para entender los objetivos de las pruebas dentro de un contexto de ingeniería web,
debe considerar las muchas dimensiones de calidad de la webapp.1 En el contexto de
esta discusión, se consideran las dimensiones de calidad que son particularmente
relevantes en cualquier análisis de las pruebas de la webapp. También se considera la
naturaleza de los errores que se encuentran como consecuencia de las pruebas y la
estrategia de prueba que se aplica para descubrir dichos errores.

Dimensiones de calidad
La calidad se incorpora en una aplicación web como consecuencia de un buen diseño.
Se evalúa aplicando una serie de revisiones técnicas que valoran varios elementos del
modelo de diseño y un proceso de prueba que se estudia a lo largo de este capítulo.
Tanto las revisiones como las pruebas examinan una o más de las siguientes
dimensiones de calidad [Mil00a]:

10
• El contenido se evalúa tanto en el nivel sintáctico como en el semántico. En el
primero, se valora vocabulario, puntuación y gramática para documentos basados en
texto. En el segundo, se valora la corrección (de la información presentada), la
consistencia (a través de todo el objeto de contenido y de los objetos relacionados) y la
falta de ambigüedad.

• La función se prueba para descubrir errores que indican falta de conformidad con los
requerimientos del cliente. Cada función de la webapp se valora en su corrección,
inestabilidad y conformidad general con estándares de implantación adecuados (por
ejemplo, estándares de lenguaje Java o AJAX).

• La estructura se valora para garantizar que entrega adecuadamente el contenido y la


función de la aplicación, que es extensible y que puede soportarse conforme se
agregue nuevo contenido o funcionalidad.

• La usabilidad se prueba para asegurar que la interfaz soporta a cada categoría de


usuario y que puede aprender y aplicar toda la sintaxis y semántica de navegación
requerida.

Errores dentro de un entorno de webapp


Los errores que se encuentran como consecuencia de una prueba exitosa de una
webapp tienen algunas características únicas:

1. Puesto que muchos tipos de pruebas de webapps descubren problemas que se


evidencian primero en el lado del cliente (es decir, mediante una interfaz implantada
en un navegador específico o en un dispositivo de comunicación personal), con
frecuencia se ve un síntoma del error, no el error en sí.

2. Puesto que una webapp se implanta en algunas configuraciones distintas y dentro


de diferentes entornos, puede ser difícil o imposible reproducir un error afuera del
entorno en el que originalmente se encontró.

3. Aunque algunos errores son resultado de diseño incorrecto o codificación HTML (u


otro lenguaje de programación) impropia, muchos errores pueden rastrearse en la
configuración de la webapp.

11
4. Dado que las webapps residen dentro de una arquitectura cliente-servidor, los
errores pueden ser difíciles de rastrear a través de tres capas arquitectónicas: el
cliente, el servidor o la red en sí.

5. Algunos errores se deben al entorno operativo estático (es decir, a la configuración


específica donde se realiza la prueba), mientras que otros son atribuibles al entorno
operativo dinámico (es decir, a la carga de recurso instantánea o a errores
relacionados con el tiempo).

Estrategia de las pruebas


La estrategia para probar webapps adopta los principios básicos de todas las pruebas
de software

(capítulo 17) y aplica una estrategia y las tácticas que se recomendaron para los
sistemas

orientados a objetos (capítulo 19). Los siguientes pasos resumen el enfoque:

1. El modelo de contenido para la webapp a se revisa a fin de descubrir errores.

2. El modelo de interfaz se examina para garantizar que todos los casos de uso pueden
alojarse.

3. El modelo de diseño para la webapp se revisa para descubrir errores de navegación.

4. La interfaz de usuario se prueba para descubrir errores en la mecánica de


presentación y/o navegación.

5. Los componentes funcionales se someten a prueba de unidad.

6. Se prueba la navegación a lo largo de toda la arquitectura.

7. La webapp se implanta en varias configuraciones de entorno diferentes y se prueba


para asegurar la compatibilidad con cada configuración.

8. Las pruebas de seguridad se realizan con la intención de explotar las


vulnerabilidades en la webapp o dentro de su entorno.

9. Se realizan pruebas de rendimiento.

12
10. La webapp se prueba con una población controlada y monitoreada de usuarios
finales; los resultados de su interacción con el sistema se evalúan para detectar errores
de contenido y de navegación, preocupaciones de usabilidad y compatibilidad, y
seguridad, confiabilidad y rendimiento de la webapp.

Planificación de pruebas
El uso de la palabra planificación (en cualquier contexto) es un anatema para algunos
desarrolladores web que no planifican; sólo arrancan, con la esperanza de que surja
una webapp asesina. Un enfoque más disciplinado reconoce que la planificación
establece un mapa de ruta para todo el trabajo que va después. Vale la pena el
esfuerzo.

MEJORAMIENTO DEL PROCESO DEL SOFTWARE

¿QUÉ ES MPS?
El término mejoramiento del proceso de software (MPS) implica muchas cosas.
Primero, que los elementos de un proceso de software efectivo pueden definirse en
forma efectiva; segundo, que un enfoque organizacional existente sobre el desarrollo
del software puede valorarse en contraste con dichos elementos; y tercero, que es
posible definir una estrategia de mejoramiento significativa. La estrategia MPS
transforma el enfoque existente sobre el desarrollo del software en algo que es más
enfocado, más repetible y más confiable (en términos de la calidad del producto
producido y de la oportunidad de la entrega).

Puesto que el MPS no es gratuito, debe entregar un rendimiento sobre la inversión. El


esfuerzo y el tiempo que se requieren para implementar una estrategia MPS deben
pagar por sí mismos en alguna forma mensurable. Para hacer esto, los resultados del
proceso y la práctica mejorados deben conducir a una reducción en los “problemas”
del software que cuestan tiempo y dinero. Debe reducir el número de defectos que se
entregan a los usuarios finales, la cantidad de repetición de proceso debida a
problemas de calidad, los costos asociados con el mantenimiento y el soporte del
software (capítulo 29) y los costos indirectos que ocurren cuando el software se
entrega tarde.

13
Enfoques del MPS
Aunque una organización puede elegir un enfoque relativamente informal del MPS, la
gran mayoría elige uno de los marcos conceptuales MPS. Un marco conceptual MPS
define:

1) un conjunto de características que deben presentarse si quiere lograrse un proceso


de software efectivo

2) un método para valorar si dichas características están presentes

3) un mecanismo para resumir los resultados de cualquier valoración

4) una estrategia para auxiliar a una organización de software a implementar aquellas


características del proceso que sean débiles o que hagan falta. Un marco conceptual
MPS valora la “madurez” del proceso de una organización y proporciona un indicio
cualitativo de su nivel de madurez. De hecho, con frecuencia se aplica el término
“modelo de madurez” (sección 30.1.2). En esencia, el marco conceptual MPS abarca un
modelo de madurez que a su vez incorpora un conjunto de indicadores de calidad de
proceso que ofrecen una medida global de la calidad del proceso que llevará a la
calidad del producto.

Debe observarse que no existe un marco conceptual MPS universal. De hecho, el


marco conceptual MPS que elige una organización refleja las áreas que impulsan el
esfuerzo MPS. Conradi define seis diferentes grupos de apoyo al MPS:

Certificadores de calidad. Los esfuerzos de mejoramiento de proceso que impulsa este

grupo se enfocan en la siguiente relación:

14
Calidad (Proceso) ⇒ Calidad (Producto)

Su enfoque consiste en enfatizar los métodos de valoración y examinar un conjunto


bien definido de características que le permiten determinar si el proceso muestra
calidad.

15
BIBLIOGRAFÍA

16
CONCLUSIÓN
La ingeniería del software, como disciplina práctica, se ha vuelto esencial en el mundo
de la tecnología. En un entorno en constante evolución, donde los sistemas
informáticos y las aplicaciones juegan un papel crucial en nuestras vidas, es
imprescindible contar con enfoques y metodologías que nos permitan desarrollar
software confiable y de calidad.

A lo largo de este libro, hemos explorado los fundamentos de la ingeniería del software
y hemos destacado la importancia de adoptar un enfoque práctico en su aplicación.
Hemos visto cómo las diferentes etapas del ciclo de vida del desarrollo de software se
entrelazan y cómo es fundamental tener en cuenta aspectos como la gestión de
proyectos, la calidad del software y la satisfacción de los requisitos del cliente.

Además, hemos resaltado la relevancia de metodologías ágiles y enfoques


colaborativos, que fomentan la adaptabilidad y la entrega continua de software
funcional. Estas prácticas se han convertido en piezas clave para afrontar los desafíos
de un entorno tecnológico cambiante y exigente.

En resumen, la ingeniería del software, enfoque práctico, es una disciplina en


constante evolución que requiere un compromiso constante con la mejora y la
adopción de buenas prácticas. Esperamos que este libro haya sido una guía útil para
comprender los principios y conceptos fundamentales de la ingeniería del software, y
que haya proporcionado a los lectores las herramientas necesarias para enfrentar los
desafíos del desarrollo de software en el mundo actual.

17

También podría gustarte