diff options
| author | Juan Marín Noguera <juan.marinn@um.es> | 2021-05-25 11:49:11 +0200 |
|---|---|---|
| committer | Juan Marín Noguera <juan.marinn@um.es> | 2021-05-25 11:49:11 +0200 |
| commit | 4103366f978a6eec781a73f1f1c459469c6079e1 (patch) | |
| tree | cf59147e2331d9e4fbc3ee168440f5794e96c4c8 /pds/n8.lyx | |
| parent | 862b06b51841711d8513e8e229f1b62575501b8e (diff) | |
PDS tema 8
Diffstat (limited to 'pds/n8.lyx')
| -rw-r--r-- | pds/n8.lyx | 650 |
1 files changed, 650 insertions, 0 deletions
diff --git a/pds/n8.lyx b/pds/n8.lyx new file mode 100644 index 0000000..d5841eb --- /dev/null +++ b/pds/n8.lyx @@ -0,0 +1,650 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\begin_preamble +\input{../defs} +\end_preamble +\use_default_options true +\begin_modules +algorithm2e +\end_modules +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +El +\series bold +proceso de software +\series default + ( +\series bold +\emph on +\lang english +software process +\series default +\emph default +\lang spanish +) es el ciclo de vida del software. + Distintos ciclos de vida organizan las actividades de formas distintas, + con distinto tiempo dado a cada actividad y distintos resultados, y distintas + organizaciones usan ciclos de vida distintos para producir la mismo, pero + para algunos tipos de programas hay ciclos de vida más convenientes que + otros. +\end_layout + +\begin_layout Standard +Un +\series bold +modelo de ciclo de vida +\series default + es una descripción de un ciclo de vida desde una perspectiva particular, + y se puede especificar, por ejemplo, con un modelo de flujo de trabajo. + Hay muchos modelos de ciclo de vida, como el sistema de ensamblaje de component +es o el desarrollo dirigido por modelos. +\end_layout + +\begin_layout Section +Modelo en cascada +\end_layout + +\begin_layout Standard +El +\series bold +ciclo de vida +\series default + o +\series bold +paradigma clásico +\series default +, +\series bold +orientado a fases +\series default +, +\series bold +lineal secuencial +\series default + o +\series bold +modelo en cascada +\series default + consiste en la ejecución secuencial de una serie de fases, normalmente + planificación, especificación de requisitos, diseño, implementación y mantenimi +ento, en la que cada fase genera documentación para la siguiente. +\end_layout + +\begin_layout Standard +Aunque cada fase se valida antes de pasar a la siguiente, una validación + +\begin_inset Quotes cld +\end_inset + +efectiva +\begin_inset Quotes crd +\end_inset + + requiere haber hecho las fases anteriores por lo que pasa mucho tiempo + desde que se produce un error de análisis hasta que se detecta. + Además, la detección de un error en una fase requiere repetir todas las + fases a partir de esta. +\end_layout + +\begin_layout Standard +Las fases suelen ser: +\end_layout + +\begin_layout Enumerate + +\series bold +Recopilación de requisitos: +\series default + Se especifican las reglas de negocio y los requisitos funcionales y no + funcionales, y se revisan con el cliente. +\end_layout + +\begin_layout Enumerate + +\series bold +Diseño: +\series default + Se define la estructura del software que satisfaga los requisitos con la + calidad necesaria, incluyendo arquitectura del software, interfaz, estructuras + de datos y algoritmos. + Se suele distinguir entre diseño preliminar y detallado. +\end_layout + +\begin_layout Enumerate + +\series bold +Codificación: +\series default + A veces se puede hacer de forma automática o semiautomática a partir de + un diseño detallado. +\end_layout + +\begin_layout Enumerate + +\series bold +Prueba: +\series default + Pruebas unitarias, de integración, del software, del sistema y de aceptación, + para asegurarse de que el sistema construido era el que se quería. +\end_layout + +\begin_layout Enumerate + +\series bold +Mantenimiento: +\series default + Es +\series bold +correctivo +\series default + si elimina defectos; +\series bold +perfectivo +\series default + si añade funciones u otras mejoras; +\series bold +adaptativo +\series default + si se adapta a nuevos escenarios como plataformas y cambios legislativos, + y +\series bold +preventivo +\series default + si sirve para fomentar la extensibilidad posterior. +\end_layout + +\begin_layout Standard +Esto es similar al enfoque de ingeniería tradicional, con el que se construyen + edificios, y para software se puede usar si el proyecto es corto, de unos + dos meses. + Sin embargo, aunque es mejor que nada, +\begin_inset Foot +status open + +\begin_layout Plain Layout +Según una gráfica que aparece en GPDS, +\begin_inset Quotes cld +\end_inset + +nada +\begin_inset Quotes crd +\end_inset + + es ligeramente mejor que esto. +\end_layout + +\end_inset + + no funciona bien para proyectos más grandes. +\end_layout + +\begin_layout Standard +Cuando hay mucha complejidad, congelar los requisitos durante todo el desarrollo +, sin retroalimentación de implementaciones y pruebas reales, no es viable, + ya que las personas involucradas pueden cambiar de idea o no imaginar lo + que quieren hasta que ven un sistema concreto, y que hay cambios en el + mercado, la tecnología, la ley, etc. +\end_layout + +\begin_layout Standard +Se tarda mucho en pasar por todo el ciclo de desarrollo, produciendo retrasos + innecesarios, y se da el +\series bold +efecto bola de nieve +\series default + en que los errores de análisis y diseño se propagan a las etapas posteriores + y el coste de eliminar dichos errores va aumentando. + En la práctica el modelo se deforma y la validación y el mantenimiento + solo se hacen al código, no al análisis ni al diseño. +\end_layout + +\begin_layout Section +Prototipos +\end_layout + +\begin_layout Standard +Un +\series bold +prototipo +\series default + es un modelo o maqueta del sistema con funcionalidad limitada que se hace + en pocos días de desarrollo y permite comprender mejor el problema y sus + posibles soluciones. + Este ayuda al cliente a establecer claramente sus requisitos y a los desarrolla +dores a validar la corrección de la especificación, detectar problemas que + se darán en el diseño y la implementación y examinar la viabilidad y utilidad + del sistema, atacando la complejidad esencial del software. +\end_layout + +\begin_layout Standard +Un prototipo se puede clasificar: +\end_layout + +\begin_layout Itemize +Según su objetivo, como +\series bold +prototipo de interfaz de usuario +\series default +, con pantallas y ventanas; +\series bold +funcional +\series default +, que implementa algunas funciones, y +\series bold +de rendimiento +\series default +, que evalúa el rendimiento de un programa y no sirve al análisis de requisitos. +\end_layout + +\begin_layout Itemize +Según su alcance, como +\series bold +vertical +\series default +, si desarrolla totalmente alguna función, u +\series bold +horizontal +\series default +, si desarrolla parcialmente todas las funciones. +\end_layout + +\begin_layout Itemize +Según el desarrollo: +\end_layout + +\begin_deeper +\begin_layout Itemize + +\series bold +Prototipo rápido +\series default + o +\series bold +desechable: +\series default + Sirve al análisis y la validación de requisitos, y una vez redactado el + SyRS se desecha y se desarrolla la aplicación con un paradigma distinto. + El problema es si no se desecha y se convierte en el sistema final, pues + seguramente el prototipo se habrá construido rápidamente sin seguir un + método de ingeniería de software y con un lenguaje poco eficiente. +\end_layout + +\begin_layout Itemize + +\series bold +Prototipo evolutivo: +\series default + Comienza con un sistema relativamente simple que implementa los requisitos + más importantes o mejor conocidos, y aumenta o cambia cuando se descubren + nuevos requisitos hasta convertirse al sistema requerido. +\end_layout + +\end_deeper +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{samepage} +\end_layout + +\end_inset + +Para el prototipado se pueden usar: +\end_layout + +\begin_layout Itemize +Lenguajes dinámicos de alto nivel ( +\series bold +3GL +\series default +), como Java o C#, a elegir según el dominio de aplicación, la interacción + de usuario y el entorno proporcionado. + Algunos como +\lang english +Python +\lang spanish +, +\lang english +Ruby +\lang spanish +, o +\lang english +Perl +\lang spanish + aportan características de lenguajes 4GL. +\end_layout + +\begin_layout Itemize +Lenguajes de cuarta generación ( +\series bold +4GL +\series default +), como los de acceso a bases de datos, diseño de interfaces de usuario + o generación de código, como el software privativo +\lang english +Oracle Developer Suite +\lang spanish + o el software privativo +\lang english +IBM Informix +\lang spanish +. +\end_layout + +\begin_deeper +\begin_layout Standard +Son fáciles de usar y aprender y reducen claramente el coste de desarrollo, + pero prestan poca atención al rendimiento, la seguridad o el mantenimiento, + resultando en programas no estructurados y difíciles de entender que pueden + quedar obsoletos haciendo que el usuario tenga que reescribir totalmente + los programas. + No están estandarizados, por lo que pueden dar lugar a incompatibilidad, + y son difíciles de integrar en el sistema global. +\end_layout + +\end_deeper +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{samepage} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +El desarrollo de prototipos con reutilización comprende el +\series bold +nivel de aplicación +\series default +, en que se integra una aplicación completa con el prototipo, y el +\series bold +nivel de componente +\series default +, en que los componentes se integran en un marco de trabajo +\begin_inset Quotes cld +\end_inset + +estándar +\begin_inset Quotes crd +\end_inset + + como +\lang english +Visual Basic +\lang spanish + o +\lang english +.NET +\lang spanish +. +\end_layout + +\begin_layout Standard +Para el prototipado de la interfaz de usuario podemos usar bocetos en papel, + aplicaciones de dibujo como el software privativo Visio +\begin_inset Foot +status open + +\begin_layout Plain Layout +Alternativas libres incluyen +\lang english +LibreOffice Draw +\lang spanish + o +\lang english +Impress +\lang spanish +, o +\lang english +Inkscape +\lang spanish +. +\end_layout + +\end_inset + + o herramientas CASE específicas como el software privativo Iplotz o el + software privativo Axure +\begin_inset Foot +status open + +\begin_layout Plain Layout +Alternativas libres incluyen +\lang english +PlantUML +\lang spanish + para bocetos o +\lang english +GNOME Glade +\lang spanish + para aplicaciones de escritorio. +\end_layout + +\end_inset + +. +\end_layout + +\begin_layout Standard +Tipos de prototipo de interfaz, de menor a mayor fidelidad y coste: +\end_layout + +\begin_layout Enumerate + +\series bold +\emph on +\lang english +Wire-frame +\emph default +\lang spanish +: +\series default + Representación esquemática de baja calidad de los elementos de la interfaz, + incluyendo contenido, características y navegación. +\end_layout + +\begin_layout Enumerate + +\series bold +\emph on +\lang english +Mock-up +\emph default +\lang spanish +: +\series default + Representación estática del diseño de mayor calidad, que a menudo supone + el diseño artístico o visual final. +\end_layout + +\begin_layout Enumerate + +\series bold +Prototipo: +\series default + Representación fiel del producto final, simulando la interacción con el + usuario. +\end_layout + +\begin_layout Section +Modelo en cascada con prototipado desechable +\end_layout + +\begin_layout Standard +Se modifica el modelo en cascada para incluir la creación de un prototipo + rápido en el análisis de requisitos, que se modifica o recrea cuanto sea + necesario hasta que el cliente lo apruebe y se desecha al terminar el análisis + de requisitos. +\end_layout + +\begin_layout Standard +El prototipo ayuda a determinar los requisitos y probar la viabilidad y + sirve de contrato con el cliente para el desarrollo del producto, ayudando + a mitigar el efecto bola de nieve, aunque no en el mantenimiento. +\end_layout + +\begin_layout Standard +Sin embargo, el cliente ve una versión preliminar, sin asumir que esta no + es robusta ni completa, y puede querer +\begin_inset Quotes cld +\end_inset + +parchear +\begin_inset Quotes crd +\end_inset + + el prototipo en vez de construir el sistema completo. + Además, es frecuente arrastrar malas decisiones de diseño que solo eran + apropiadas para el prototipo, y alguna vez puede pasar que el tiempo dedicado + a construir el prototipo haga que el producto pierda oportunidad. +\end_layout + +\begin_layout Section +Modelos evolutivos +\end_layout + +\begin_layout Standard +El software se hace en incrementos relativamente cortos en los que se hacen + todas las fases, puede que con varios incrementos simultáneos, y al terminar + un incremento se entrega un producto operativo. +\end_layout + +\begin_layout Standard +El +\series bold +modelo clúster +\series default + divide el software en +\series bold +clústeres +\series default +, agrupaciones de clases con un objetivo común, y cada una se hace en un + incremento cuyo subciclo de vida consta de especificación; diseño y realización +, y validación. +\end_layout + +\begin_layout Standard +El +\series bold +modelo en espiral +\series default + tiene 4 fases; planificación, análisis de riesgo, ingeniería y evaluación + del cliente, que se repiten en ese orden consecutivamente. + Se llama así porque se puede dibujar una gráfica en que cada cuadrante + del plano se etiqueta con el nombre de una fase y una espiral, centrada + en el origen pero sin empezar desde ahí, que va hacia fuera y va pasando + por las fases. +\end_layout + +\begin_layout Standard +Este modelo aprovecha las ventajas del modelo en cascada y las del prototipado + evolutivo, reajustando los productos con el tiempo, y es muy útil en desarrollo +s con requisitos inciertos o áreas importantes de riesgo. +\end_layout + +\begin_layout Standard +El +\series bold +método Booch 94 +\series default + distingue un +\series bold +macro-proceso +\series default + o marco de planificación, que interesa a la dirección, y un +\series bold +micro-proceso +\series default +, guiado por el macro-proceso y que guía las acciones en el desarrollo de + la arquitectura del sistema, que interesa al programador. +\end_layout + +\end_body +\end_document |
