aboutsummaryrefslogtreecommitdiff
path: root/pds
diff options
context:
space:
mode:
Diffstat (limited to 'pds')
-rw-r--r--pds/n.lyx14
-rw-r--r--pds/n8.lyx650
2 files changed, 664 insertions, 0 deletions
diff --git a/pds/n.lyx b/pds/n.lyx
index c5dc933..0808d9f 100644
--- a/pds/n.lyx
+++ b/pds/n.lyx
@@ -328,5 +328,19 @@ filename "n7.lyx"
\end_layout
+\begin_layout Chapter
+Modelos de ciclo de vida
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset include
+LatexCommand input
+filename "n8.lyx"
+
+\end_inset
+
+
+\end_layout
+
\end_body
\end_document
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