#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 \begin_layout Section Verificación y validación (V&V) \end_layout \begin_layout Standard La \series bold verificación \series default o \series bold prueba \series default consiste en comprobar si el software funciona bien. La programación \series bold \begin_inset Quotes cld \end_inset prueba primero \begin_inset Quotes crd \end_inset \series default consiste en escribir código de prueba antes de escribir la implementación, para luego escribir el código que satisface las pruebas. Tiene la ventaja de que las pruebas se escriben; el programador queda satisfech o y grita \begin_inset Quotes cld \end_inset ¡He superado la prueba! \begin_inset Quotes crd \end_inset \begin_inset Foot status open \begin_layout Plain Layout Fuente: Apuntes de la asignatura. El grito de entusiasmo puede variar según el programador. \end_layout \end_inset ; se verifica la corrección, y no hay miedo a los cambios. \end_layout \begin_layout Standard La \series bold validación \series default consiste en comprobar con el usuario si el software que se está construyendo es el que este quiere. La hace el usuario comprobando, para cada caso de uso, que el sistema muestra el comportamiento esperado, considerando el escenario principal, los excepciona les y los requisitos no funcionales. \end_layout \end_body \end_document