portafolio de evidencia asd

64
1

Upload: daniel-alejandro-coubillier-amado

Post on 31-Mar-2016

230 views

Category:

Documents


1 download

DESCRIPTION

INGENIERIA DE SOFTWARE

TRANSCRIPT

Page 1: Portafolio de evidencia asd

1

Page 2: Portafolio de evidencia asd

La misión de UNIDEP es formarprofesionales de éxito quecuenten con las actitudes,habilidades y conocimientos quedemanda el sector productivo dela región.

2

Page 3: Portafolio de evidencia asd

• La Universidad del Desarrollo Profesional es una instituciónde educación superior de calidad, que ofrece programaspresenciales y semipresenciales de bachillerato, profesionalasociado, licenciatura, posgrado, diplomados y cursos enMéxico y en el extranjero.

Se distingue por facilitar a sus egresados la incorporación almercado de trabajo, apoyada en una estrecha vinculacióncon el sector productivo y en planes de estudio pertinentesy dinámicos.

Es reconocida por su modelo educativo profesionalizante,por la flexibilidad de su oferta académica impartida en cicloscontinuos y por horarios y cuotas accesibles, acordes a ladisponibilidad de tiempo y recursos económicos del alumno.

Cuenta con profesores de amplia experiencia profesional yeducativa. Sus instalaciones dentro de la ciudad permiten elfácil acceso.

Cuenta con un modelo de administración sistematizado,participativo, operado por personal que es recompensadopor su desempeño efectivo que le permite maximizar lasaportaciones de sus socios y mantener finanzas sanas.

3

Page 4: Portafolio de evidencia asd

INDICE

1.- ARCHIVO EN WORD INTRODUCCIÓN A INGENIERIA DE SOFTWARE2.- REPORTE DE LECTURA PREGUNTAS FRECUENTES DE INGENIERÍA DEL

SOFTWARE3.- PRESENTACIÓN DEL EQUIPO #1 PREGUNTAS FRECUENTES DE INGENIERIA

DEL SOFTWARE4.- REPORTE DE LECTURA EQUIPO # 2 INGENIERÍA DEL SOFTWARE ASISTIDA

POR COMPUTADORA5.- PRESENTACIÓN DEL EQUIPO #2 INGENIERÍA DEL SOFTWARE ASISTIDA POR

COMPUTADORA6.- INVESTIGACIÓN DE CLASE MODELO RUP7.- INVESTIGACIÓN DE CLASE DE LAS 4 FASE DEL MODELO RUP8.- INVESTIGACIÓN DE CLASE MÉTRICA-CALIDAD9.- INVESTIGACIÓN DE CLASE FASE DE GESTIÓN DE PLANEACIÓN

(PLANIFICACIÓN-CLAENDARIZACIÓN-GETIÓN DE RIESGOS)10.- REPORTE DE LECTURA TEMA EQUIPO #3: DISEÑO DE INTERFASE DE

USUARIOS11.- REPORTE DE LECTURA TEMA EQUIPO #4: ATRIBUTOS DE LOS SISTEMAS Y

APLICACIONES BASADAS EN WEB.12.- INVESTIGACIONES ESPECIALES:

– FRAMEWORKS– UML (MODELO DE LENGUAJE UNIFICADO)– MICROSOFT PROJECT, INTELIGENCIA ARTIFICIAL, LENGUAJE COBOL– SOFTWARE REQUISITE PRO– SECOND LIFE

4

Page 5: Portafolio de evidencia asd

INGENIERÍA DE SOFTWAREIntroducciónUn sistema informático está compuesto por hardware y software. En cuanto al hardware, suproducción se realiza sistemáticamente y la base de conocimiento para el desarrollo de dichaactividad está claramente definida. La fiabilidad del hardware es, en principio, equiparable a la decualquier otra máquina construida por el hombre. Sin embargo, respecto del software, suconstrucción y resultados han sido históricamente cuestionados debido a los problemasasociados, entre ellos podemos destacar los siguientes [1]:•Los sistemas no responden a las expectativas de los usuarios.•Los programas “fallan” con cierta frecuencia.•Los costes del software son difíciles de prever y normalmente superan las estimaciones.•La modificación del software es una tarea difícil y costosa.•El software se suele presentar fuera del plazo establecido y con menos prestaciones de lasconsideradas inicialmente.•Normalmente, es difícil cambiar de entorno hardware usando el mismo software.•El aprovechamiento óptimo de los recursos (personas, tiempo, dinero, herramientas, etc.) nosuele cumplirse.Según el Centro Experimental de Ingeniería de Software (CEIS)[1], el estudio de mercado TheChaos Report realizado por Standish Group Internactional[2] en 1996, concluyó que sólo un 16%de los proyectos de software son exitosos (terminan dentro de plazos y costos y cumplen losrequerimientos acordados). Otro 53% sobrepasa costos y plazos y cumple parcialmente losrequerimientos. El resto ni siquiera llega al término. Algunas deficiencias comunes en el desarrollode software son:•Escasa o tardía validación con el cliente.•Inadecuada gestión de los requisitos.•No existe medición del proceso ni registro de datos históricos.•Estimaciones imprevistas de plazos y costos.•Excesiva e irracional presión en los plazos.•Escaso o deficiente control en el progreso del proceso de desarrollo.•No se hace gestión de riesgos formalmente.•No se realiza un proceso formal de pruebas.•No se realizan revisiones técnicas formales e inspecciones de código.El primer reconocimiento público de la existencia de problemas en la producción de software tuvolugar en la conferencia organizada en 1968 por la Comisión de Ciencias de la OTAN en Garmisch(Alemania), dicha situación problemática se denominó crisis del software. En esta conferencia,así como en la siguiente realizada en Roma en 1969, se estipuló el interés hacia los aspectostécnicos y administrativos en el desarrollo y mantenimiento de productos software. Se pretendíaacordar las bases para una ingeniería de construcción de software. Según Fritz Bauer [2] lo que senecesitaba era “establecer y usar principios de ingeniería orientados a obtener software de maneraeconómica, que sea fiable y funcione eficientemente sobre máquinas reales”. Esta definiciónmarcaba posibles cuestiones tales como: ¿Cuáles son los principios robustos de la ingenieríaaplicables al desarrollo de software de computadora? ¿Cómo construimos el softwareeconómicamente para que sea fiable? ¿Qué se necesita para crear programas de computadoraque funcionen eficientemente no en una máquina sino en diferentes máquinas reales?. Sinembargo, dicho planteamiento además debía incluir otros aspectos, tales como: mejora de lacalidad del software, satisfacción del cliente, mediciones y métricas, etc.

[1] http://www.ceis.cl/Gestacion/Gestacion.htm (5.3.2003)[2] http://standishgroup.com/ (5.3.2003)

5

Page 6: Portafolio de evidencia asd

El “IEEE Standard Glossary of Software Engineering Terminology” (Stad. 610.12-1990) hadesarrollado una definición más completa para ingeniería del software [1]: “(1) La aplicación de unenfoque sistemático, disciplinado y cuantificable para el desarrollo, operación y mantenimiento delsoftware; es decir, la aplicación de ingeniería al software. (2) El estudio de enfoques en (1)”.Pressman [1] caracteriza la Ingeniería de Software como “una tecnología multicapa”, ilustrada enla Figura 1.

No se puede mostrar la imagen en este momento.

Figura 1: Capas de la Ingeniería de Software.Dichas capas se describen a continuación:•Cualquier disciplina de ingeniería (incluida la ingeniería del software) debe descansar sobre un esfuerzode organización de calidad. La gestión total de la calidad y las filosofías similares fomentan una culturacontinua de mejoras de procesos que conduce al desarrollo de enfoques cada vez más robustos para laingeniería del software.•El fundamento de la ingeniería de software es la capa proceso. El proceso define un marco de trabajopara un conjunto de áreas clave, las cuales forman la base del control de gestión de proyectos desoftware y establecen el contexto en el cual: se aplican los métodos técnicos, se producen resultados detrabajo, se establecen hitos, se asegura la calidad y el cambio se gestiona adecuadamente.•Los métodos de la ingeniería de software indican cómo construir técnicamente el software. Los métodosabarcan una gran gama de tareas que incluyen análisis de requisitos, diseño, construcción de programas,pruebas y mantenimiento. Estos métodos dependen de un conjunto de principios básicos que gobiernancada área de la tecnología e incluyen actividades de modelado y otras técnicas descriptivas.•Las herramientas de la ingeniería del software proporcionan un soporte automático o semi-automáticopara el proceso y los métodos, a estas herramientas se les llama herramientas CASE (Computer-AidedSoftware Engineering).Dado lo anterior, el objetivo de la ingeniería de software es lograr productos de software de calidad (tantoen su forma final como durante su elaboración), mediante un proceso apoyado por métodos yherramientas.A continuación nos enfocaremos en el proceso necesario para elaborar un producto de software.El proceso de desarrollo del softwareUn proceso de desarrollo de software tiene como propósito la producción eficaz y eficiente de un productosoftware que reúna los requisitos del cliente. Dicho proceso, en términos globales se muestra en la Figura 2[3]. Este proceso es intensamente intelectual, afectado por la creatividad y juicio de las personasinvolucradas [4]. Aunque un proyecto de desarrollo de software es equiparable en muchos aspectos acualquier otro proyecto de ingeniería, en el desarrollo de software hay una serie de desafíos adicionales,relativos esencialmente a la naturaleza del producto obtenido. A continuación se explican algunasparticularidades asociadas al desarrollo de software y que influyen en su proceso de construcción.Un producto software en sí es complejo, es prácticamente inviable conseguir un 100% de confiabilidad deun programa por pequeño que sea. Existe una inmensa combinación de factores que impiden unaverificación exhaustiva de las todas posibles situaciones de ejecución que se puedan presentar (entradas,valores de variables, datos almacenados, software del sistema, otras aplicaciones que intervienen, elhardware sobre el cual se ejecuta, etc.).Un producto software es intangible y por lo general muy abstracto, esto dificulta la definición del producto ysus requisitos, sobre todo cuando no se tiene precedentes en productos software similares. Esto hace quelos requisitos sean difíciles de consolidar tempranamente. Así, los cambios en los requisitos soninevitables, no sólo después de entregado en producto sino también durante el proceso de desarrollo.Además, de las dos anteriores, siempre puede señalarse la inmadurez de la ingeniería del software como

6

Page 7: Portafolio de evidencia asd

Requisitos nuevoso modificados

Sistema nuevoo modificadoProceso de Desarrollo

de Software

Requisitos nuevoso modificados

Sistema nuevoo modificadoProceso de Desarrollo

de Software

disciplina, justificada por su corta vida comparada con otras disciplinas de la ingeniería. Sinembargo, esto no es más que un inútilconsuelo.

Figura 2: proceso de desarrollo de software.

El proceso de desarrollo de software no es único. No existe un proceso de software universal quesea efectivo para todos los contextos de proyectos de desarrollo. Debido a esta diversidad, esdifícil automatizar todo un proceso de desarrollo de software.A pesar de la variedad de propuestas de proceso de software, existe un conjunto de actividadesfundamentales que se encuentran presentes en todos ellos [4]:•Especificación de software: Se debe definir la funcionalidad y restricciones operacionales quedebe cumplir el software.•Diseño e Implementación: Se diseña y construye el software de acuerdo a la especificación.•Validación: El software debe validarse, para asegurar que cumpla con lo que quiere el cliente.•Evolución: El software debe evolucionar, para adaptarse a las necesidades del cliente.Además de estas actividades fundamentales, Pressman [1] menciona un conjunto de “actividadesprotectoras”, que se aplican a lo largo de todo el proceso del software. Ellas se señalan acontinuación:•Seguimiento y control de proyecto de software.•Revisiones técnicas formales.•Garantía de calidad del software.•Gestión de configuración del software.•Preparación y producción de documentos.•Gestión de reutilización.•Mediciones.•Gestión de riesgos.Pressman [1] caracteriza un proceso de desarrollo de software como se muestra en la Figura 3.Los elementos involucrados se describen a continuación:•Un marco común del proceso, definiendo un pequeño número de actividades del marco detrabajo que son aplicables a todos los proyectos de software, con independencia del tamaño ocomplejidad.•Un conjunto de tareas, cada uno es una colección de tareas de ingeniería del software, hitos deproyectos, entregas y productos de trabajo del software, y puntos de garantía de calidad, quepermiten que las actividades del marco de trabajo se adapten a las características del proyecto desoftware y los requisitos del equipo del proyecto.•Las actividades de protección, tales como garantía de calidad del software, gestión deconfiguración del software y medición, abarcan el modelo del proceso. Las actividades deprotección son independientes de cualquier actividad del marco de trabajo y aparecen durantetodo el proceso.

7

Page 8: Portafolio de evidencia asd

No se puede mostrar la imagen en este momento.

No se puede mostrar la imagen en este momento.

Figura 3: Elementos del proceso del softwareOtra perspectiva utilizada para determinar los elementos del proceso de desarrollo de software esestablecer las relaciones entre elementos que permitan responder Quién debe hacer Qué,Cuándo y Cómo debe hacerlo.

Figura 4: Relación entre elementos del proceso del softwareEn la Figura 4 se muestran los elementos de un proceso de desarrollo de software y susrelaciones. Así las interrogantes se responden de la siguiente forma:•Quién: Las Personas participantes en el proyecto de desarrollo desempeñando uno o más Rolesespecíficos.•Qué: Un Artefacto es producido por un Rol en una de sus Actividades. Los Artefactos seespecifican utilizando Notaciones específicas. Las Herramientas apoyan la elaboración deArtefactos soportando ciertas Notaciones.•Cómo y Cuándo: Las Actividades son una serie de pasos que lleva a cabo un Rol durante elproceso de desarrollo. El avance del proyecto está controlado mediante hitos que establecen undeterminado estado de terminación de ciertos Artefactos.

Un artefacto es una pieza de información que (1) es producida, modificada o usada por el proceso,(2) define un área de responsabilidad para un rol y (3) está sujeta a control de versiones. Unartefacto puede ser un modelo, un elemento de modelo o un documento.

8

Page 9: Portafolio de evidencia asd

La composición y sincronía de las actividades está basada en un conjunto de Principios yPrácticas. Las Prácticas y Principios enfatizan ciertas actividades y/o la forma como debenrealizarse, por ejemplo: desarrollar iterativamente, gestionar requisitos, desarrollo basado encomponentes, modelar visualmente, verificar continuamente la calidad, gestionar los cambios, etc.Modelos de proceso softwareSommerville [4] define modelo de proceso de software como “Una representación simplificada deun proceso de software, representada desde una perspectiva específica. Por su naturaleza losmodelos son simplificados, por lo tanto un modelo de procesos del software es una abstracción deun proceso real.”Los modelos genéricos no son descripciones definitivas de procesos de software; sin embargo,son abstracciones útiles que pueden ser utilizadas para explicar diferentes enfoques del desarrollode software.Modelos que se van a discutir a continuación:•Codificar y corregir•Modelo en cascada•Desarrollo evolutivo•Desarrollo formal de sistemas•Desarrollo basado en reutilización•Desarrollo incremental•Desarrollo en espiralCodificar y corregir (Code-and-Fix)Este es el modelo básico utilizado en los inicios del desarrollo de software. Contiene dos pasos:•Escribir código.•Corregir problemas en el código.Se trata de primero implementar algo de código y luego pensar acerca de requisitos, diseño,validación, y mantenimiento.Este modelo tiene tres problemas principales [7]:•Después de un número de correcciones, el código puede tener una muy mala estructura, haceque los arreglos sean muy costosos.•Frecuentemente, aún el software bien diseñado, no se ajusta a las necesidades del usuario, porlo que es rechazado o su reconstrucción es muy cara.•El código es difícil de reparar por su pobre preparación para probar y modificar.Modelo en cascadaEl primer modelo de desarrollo de software que se publicó se derivó de otros procesos deingeniería [8]. Éste toma las actividades fundamentales del proceso de especificación, desarrollo,validación y evolución y las representa como fases separadas del proceso.El modelo en cascada consta de las siguientes fases:•Definición de los requisitos: Los servicios, restricciones y objetivos son establecidos con losusuarios del sistema. Se busca hacer esta definición en detalle.•Diseño de software: Se particiona el sistema en sistemas de software o hardware. Se establece laarquitectura total del sistema. Se identifican y describen las abstracciones y relaciones de loscomponentes del sistema.•Implementación y pruebas unitarias: Construcción de los módulos y unidades de software. Serealizan pruebas de cada unidad.•Integración y pruebas del sistema: Se integran todas las unidades. Se prueban en conjunto. Seentrega el conjunto probado al cliente.

9

Page 10: Portafolio de evidencia asd

•Operación y mantenimiento: Generalmente es la fase más larga. El sistema es puesto en marchay se realiza la corrección de errores descubiertos. Se realizan mejoras de implementación. Seidentifican nuevos requisitos.La interacción entre fases puede observarse en la Figura 5. Cada fase tiene como resultadodocumentos que deben ser aprobados por el usuario.Una fase no comienza hasta que termine la fase anterior y generalmente se incluye la correcciónde los problemas encontrados en fases previas.

No se puede mostrar la imagen en este momento.

Figura 5: Modelo de desarrollo en cascada.En la práctica, este modelo no es lineal, e involucra varias iteraciones e interacción entre lasdistintas fases de desarrollo. Algunos problemas que se observan en el modelo de cascada son:•Las iteraciones son costosas e implican rehacer trabajo debido a la producción y aprobación dedocumentos.•Aunque son pocas iteraciones, es normal congelar parte del desarrollo y continuar con lassiguientes fases.•Los problemas se dejan para su posterior resolución, lo que lleva a que estos sean ignorados ocorregidos de una forma poco elegante.•Existe una alta probabilidad de que el software no cumpla con los requisitos del usuario por ellargo tiempo de entrega del producto.•Es inflexible a la hora de evolucionar para incorporar nuevos requisitos. Es difícil responder acambios en los requisitos.Este modelo sólo debe usarse si se entienden a plenitud los requisitos. Aún se utiliza como partede proyectos grandes.Desarrollo evolutivoLa idea detrás de este modelo es el desarrollo de una implantación del sistema inicial, exponerla alos comentarios del usuario, refinarla en N versiones hasta que se desarrolle el sistema adecuado.En la Figura 6 se observa cómo las actividades concurrentes: especificación, desarrollo yvalidación, se realizan durante el desarrollo de las versiones hasta llegar al producto final.Una ventaja de este modelo es que se obtiene una rápida realimentación del usuario, ya que lasactividades de especificación, desarrollo y pruebas se ejecutan en cada iteración. 10

Page 11: Portafolio de evidencia asd

No se puede mostrar la imagen en este momento.

Figura 6: Modelo de desarrollo evolutivo.Existen dos tipos de desarrollo evolutivo:•Desarrollo Exploratorio: El objetivo de este enfoque es explorar con el usuario los requisitos hastallegar a un sistema final. El desarrollo comienza con las partes que se tiene más claras. El sistemaevoluciona conforme se añaden nuevas características propuestas por el usuario.•Enfoque utilizando prototipos: El objetivo es entender los requisitos del usuario y trabajar paramejorar la calidad de los requisitos. A diferencia del desarrollo exploratorio, se comienza por definirlos requisitos que no están claros para el usuario y se utiliza un prototipo para experimentar conellos. El prototipo ayuda a terminar de definir estos requisitos.Entre los puntos favorables de este modelo están:•La especificación puede desarrollarse de forma creciente.•Los usuarios y desarrolladores logran un mejor entendimiento del sistema. Esto se refleja en unamejora de la calidad del software.•Es más efectivo que el modelo de cascada, ya que cumple con las necesidades inmediatas delcliente.Desde una perspectiva de ingeniería y administración se identifican los siguientes problemas:•Proceso no Visible: Los administradores necesitan entregas para medir el progreso. Si el sistemase necesita desarrollar rápido, no es efectivo producir documentos que reflejen cada versión delsistema.•Sistemas pobremente estructurados: Los cambios continuos pueden ser perjudiciales para laestructura del software haciendo costoso el mantenimiento.•Se requieren técnicas y herramientas: Para el rápido desarrollo se necesitan herramientas quepueden ser incompatibles con otras o que poca gente sabe utilizar.Este modelo es efectivo en proyectos pequeños (menos de 100.000 líneas de código) o medianos(hasta 500.000 líneas de código) con poco tiempo para su desarrollo y sin generar documentaciónpara cada versión.Para proyectos largos es mejor combinar lo mejor del modelo de cascada y evolutivo: se puedehacer un prototipo global del sistema y posteriormente reimplementarlo con un acercamiento másestructurado. Los subsistemas con requisitos bien definidos y estables se pueden programarutilizando cascada y la interfaz de usuario se puede especificar utilizando un enfoque exploratorio.

11

Page 12: Portafolio de evidencia asd

Desarrollo formal de sistemasEste modelo se basa en transformaciones formales de los requisitos hasta llegar a un programaejecutable.

Especificación TranformaciónInteractiva

TransformaciónAutomática

OptimizaciónValidación deEspecificación

Mantenimiento

Especificaciónde alto nivel (prototipo)

DesarrolloFormalDesiciones

Especificaciónde bajo nivel

CódigoFuente

EspecificaciónInformal

Figura 7: Paradigma de programación automática.La Figura 7 (obtenida desde [20]) ilustra un paradigma ideal de programación automática. Sedistinguen dos fases globales: especificación (incluyendo validación) y transformación. Lascaracterísticas principales de este paradigma son: la especificación es formal y ejecutableconstituye el primer prototipo del sistema), la especificación es validada mediante prototipación.Posteriormente, a través de transformaciones formales la especificación se convierte en laimplementación del sistema, en el último paso de transformación se obtiene una implementaciónen un lenguaje de programación determinado. , el mantenimiento se realiza sobre laespecificación (no sobre el código fuente), la documentación es generada automáticamente y elmantenimiento es realizado por repetición del proceso (no mediante parches sobre laimplementación).Observaciones sobre el desarrollo formal de sistemas:•Permite demostrar la corrección del sistema durante el proceso de transformación. Así, laspruebas que verifican la correspondencia con la especificación no son necesarias.•Es atractivo sobre todo para sistemas donde hay requisitos de seguridad y confiabilidadimportantes.•Requiere desarrolladores especializados y experimentados en este proceso para llevarse a cabo.Desarrollo basado en reutilizaciónComo su nombre lo indica, es un modelo fuertemente orientado a la reutilización. Este modeloconsta de 4 fases ilustradas en la Figura 9. A continuación se describe cada fase:•Análisis de componentes: Se determina qué componentes pueden ser utilizados para el sistemaen cuestión. Casi siempre hay que hacer ajustes para adecuarlos.•Modificación de requisitos: Se adaptan (en lo posible) los requisitos para concordar con loscomponentes de la etapa anterior. Si no se puede realizar modificaciones en los requisitos, hayque seguir buscando componentes más adecuados (fase 1).•Diseño del sistema con reutilización: Se diseña o reutiliza el marco de trabajo para el sistema. Sedebe tener en cuenta los componentes localizados en la fase 2 para diseñar o determinar estemarco.•Desarrollo e integración: El software que no puede comprarse, se desarrolla. Se integran loscomponentes y subsistemas. La integración es parte del desarrollo en lugar de una actividadseparada.

12

Page 13: Portafolio de evidencia asd

No se puede mostrar la imagen en este momento.

Las ventajas de este modelo son:•Disminuye el costo y esfuerzo de desarrollo.•Reduce el tiempo de entrega.•Disminuye los riesgos durante el desarrollo.

Figura 8: Desarrollo basado en reutilización de componentesDesventajas de este modelo:•Los “compromisos” en los requisitos son inevitables, por lo cual puede que el software no cumplalas expectativas del cliente.•Las actualizaciones de los componentes adquiridos no están en manos de los desarrolladores delsistema.Procesos iterativosA continuación se expondrán dos enfoques híbridos, especialmente diseñados para el soporte delas iteraciones:•Desarrollo Incremental.•Desarrollo en Espiral.Desarrollo incrementalMills [9] sugirió el enfoque incremental de desarrollo como una forma de reducir la repetición deltrabajo en el proceso de desarrollo y dar oportunidad de retrasar la toma de decisiones en losrequisitos hasta adquirir experiencia con el sistema (ver Figura 10). Es una combinación delModelo de Cascada y Modelo Evolutivo.Reduce el rehacer trabajo durante el proceso de desarrollo y da oportunidad para retrasar lasdecisiones hasta tener experiencia en el sistema.Durante el desarrollo de cada incremento se puede utilizar el modelo de cascada o evolutivo,dependiendo del conocimiento que se tenga sobre los requisitos a implementar. Si se tiene unbuen conocimiento, se puede optar por cascada, si es dudoso, evolutivo.

Figura 9: Modelo de desarrollo iterativo incremental.

13

Page 14: Portafolio de evidencia asd

Entre las ventajas del modelo incremental se encuentran:•Los clientes no esperan hasta el fin del desarrollo para utilizar el sistema. Puedenempezar a usarlo desde el primer incremento.•Los clientes pueden aclarar los requisitos que no tengan claros conforme ven lasentregas del sistema.•Se disminuye el riesgo de fracaso de todo el proyecto, ya que se puede distribuir encada incremento.•Las partes más importantes del sistema son entregadas primero, por lo cual serealizan más pruebas en estos módulos y se disminuye el riesgo de fallos.Algunas de las desventajas identificadas para este modelo son:•Cada incremento debe ser pequeño para limitar el riesgo (menos de 20.000 líneas).•Cada incremento debe aumentar la funcionalidad.•Es difícil establecer las correspondencias de los requisitos contra los incrementos.•Es difícil detectar las unidades o servicios genéricos para todo el sistema.•Desarrollo en espiralEl modelo de desarrollo en espiral (ver Figura 11) es actualmente uno de los másconocidos y fue propuesto por Boehm [7]. El ciclo de desarrollo se representa comouna espiral, en lugar de una serie de actividades sucesivas con retrospectiva de unaactividad a otra.Cada ciclo de desarrollo se divide en cuatro fases:•Definición de objetivos: Se definen los objetivos. Se definen las restricciones delproceso y del producto. Se realiza un diseño detallado del plan administrativo. Seidentifican los riesgos y se elaboran estrategias alternativas dependiendo de estos.•Evaluación y reducción de riesgos: Se realiza un análisis detallado de cada riesgoidentificado. Pueden desarrollarse prototipos para disminuir el riesgo de requisitosdudosos. Se llevan a cabo los pasos para reducir los riesgos.•Desarrollo y validación: Se escoge el modelo de desarrollo después de laevaluación del riesgo. El modelo que se utilizará (cascada, sistemas formales,evolutivo, etc.) depende del riesgo identificado para esa fase.•Planificación: Se determina si continuar con otro ciclo. Se planea la siguiente fasedel proyecto.Este modelo a diferencia de los otros toma en consideración explícitamente el riesgo, estaes una actividad importante en la administración del proyecto.El ciclo de vida inicia con la definición de los objetivos. De acuerdo a lasrestricciones se determinan distintas alternativas. Se identifican los riesgos alsopesar los objetivos contra las alternativas. Se evalúan los riesgos con actividadescomo análisis detallado, simulación, prototipos, etc. Se desarrolla un poco elsistema. Se planifica la siguiente fase.

14

Page 15: Portafolio de evidencia asd

Figura 10: Modelo de desarrollo en Espiral¿Cuál es el modelo de proceso más adecuado?Cada proyecto de software requiere de una forma de particular deabordar el problema. Las propuestas comerciales y académicas actualespromueven procesos iterativos, donde en cada iteración puede utilizarseuno u otro modelo de proceso, considerando un conjunto de criterios (Porejemplo: grado de definición de requisitos, tamaño del proyecto, riesgosidentificados, entre otros).En la Tabla 1 se expone un cuadro comparativo de acuerdo con algunoscriterios básicos para la selección de un modelo de proceso [10], lamedida utilizada indica el nivel de efectividad del modelo de proceso deacuerdo al criterio (Por ejemplo: El modelo Cascada responde con unnivel de efectividad Bajo cuando los Requisitos y arquitectura no estánpredefinidos ):

15

Page 16: Portafolio de evidencia asd

Modelo de procesoFunciona con requisitos y

arquitectura no predefinidosProduce software altamente fiable Gestión de riesgos Permite correcciones sobre la marcha

Visión del progreso por elCliente y el Jefe del proyecto

Codificar y corregir

Bajo Bajo Bajo Alto Medio

Cascada

Bajo Alto Bajo Bajo Bajo

Evolutivo

exploratorio

Medio o Alto Medio o Alto Medio Medio o Alto Medio o Alto

Evolutivo

prototipado

Alto Medio Medio Alto Alto

Desarrollo formal de sistemas

Bajo Alto Bajo a Medio Bajo Bajo

Desarrollo orientado a reutilización

Medio Bajo a Alto Bajo a Medio Alto Alto

Incremental

Bajo Alto Medio Bajo Bajo

Espiral

Alto Alto Alto Medio Medio

16

Page 17: Portafolio de evidencia asd

Metodologías para desarrollo de softwareUn proceso de software detallado y completo suele denominarse “Metodología”. Las metodologíasse basan en una combinación de los modelos de proceso genéricos (cascada, evolutivo,incremental, etc.). Adicionalmente una metodología debería definir con precisión los artefactos,roles y actividades involucrados, junto con prácticas y técnicas recomendadas, guías deadaptación de la metodología al proyecto, guías para uso de herramientas de apoyo, etc.Habitualmente se utiliza el término “método” para referirse a técnicas, notaciones y guíasasociadas, que son aplicables a una (o algunas) actividades del proceso de desarrollo, porejemplo, suele hablarse de métodos de análisis y/o diseño.La comparación y/o clasificación de metodologías no es una tarea sencilla debido a la diversidadde propuestas y diferencias en el grado de detalle, información disponible y alcance de cada unade ellas. A grandes rasgos, si tomamos como criterio las notaciones utilizadas para especificarartefactos producidos en actividades de análisis y diseño, podemos clasificar las metodologías endos grupos: Metodologías Estructuradas y Metodologías Orientadas a Objetos. Por otra parte,considerando su filosofía de desarrollo, aquellas metodologías con mayor énfasis en laplanificación y control del proyecto, en especificación precisa de requisitos y modelado, reciben elapelativo de Metodologías Tradicionales (o peyorativamente denominada Metodologías Pesadas,o Peso Pesado). Otras metodologías, denominadas Metodologías Ágiles, están más orientadas ala generación de código con ciclos muy cortos de desarrollo, se dirigen a equipos de desarrollopequeños, hacen especial hincapié en aspectos humanos asociados al trabajo en equipo einvolucran activamente al cliente en el proceso. A continuación se revisan brevemente cada una deestas categorías de metodologías.Metodologías estructuradasLos métodos estructurados comenzaron a desarrollarse a fines de los 70’s con la ProgramaciónEstructurada, luego a mediados de los 70’s aparecieron técnicas para el Diseño (por ejemplo: eldiagrama de Estructura) primero y posteriormente para el Análisis (por ejemplo: Diagramas deFlujo de Datos). Estas metodologías son particularmente apropiadas en proyectos que utilizanpara la implementación lenguajes de 3ra y 4ta generación.Ejemplos de metodologías estructuradas de ámbito gubernamental: MERISE[1] (Francia),MÉTRICA[2] (España), SSADM[3] (Reino Unido). Ejemplos de propuestas de métodosestructurados en el ámbito académico: Gane & Sarson[4], Ward & Mellor[5], Yourdon & DeMarco[6] eInformation Engineering[7].Metodologías orientadas a objetosSu historia va unida a la evolución de los lenguajes de programación orientada a objeto, los másrepresentativos: a fines de los 60’s SIMULA, a fines de los 70’s Smalltalk-80, la primera versión deC++ por Bjarne Stroustrup en 1981 y actualmente Java[8] o C# de Microsoft. A fines de los 80’scomenzaron a consolidarse algunos métodos Orientadas a Objeto.En 1995 Booch y Rumbaugh proponen el Método Unificado con la ambiciosa idea de conseguiruna unificación de sus métodos y notaciones, que posteriormente se reorienta a un objetivo másmodesto, para

[1] http://perso.club-internet.fr/brouardf/SGBDRmerise.htm (7.5.2002)[2] http://www.map.es/csi/metrica3/ (7.5.2003)[3] http://www.comp.glam.ac.uk/pages/staff/tdhutchings/chapter4.html (7.5.2003)[4] http://portal.newman.wa.edu.au/technology/12infsys/html/dfdnotes.doc (29.8.2003)[5] http://www.yourdon.com/books/coolbooks/notes/wardmellor.html (29.8.2003)[6] http://wombat.doc.ic.ac.uk/foldoc/foldoc.cgi?Yourdon%2FDemarco (29.8.2003)[7] http://gantthead.com/Gantthead/process/processMain/1,1289,2-12009-2,00.html (29.8.2003)[8] http://java.sun.com/ (7.5.2003) 17

Page 18: Portafolio de evidencia asd

dar lugar al Unified Modeling Language (UML), la notación OO más popular en laactualidad.Algunos métodos OO con notaciones predecesoras de UML son: OOAD (Booch),OOSE (Jacobson), Coad & Yourdon, Shaler & Mellor y OMT (Rumbaugh).Algunas metodologías orientadas a objetos que utilizan la notación UML son:Rational Unified Process (RUP), OPEN, MÉTRICA (que también soporta la notaciónestructurada).Metodologías tradicionales (no ágiles)Las metodologías no ágiles son aquellas que están guiadas por una fuerteplanificación durante todo el proceso de desarrollo; llamadas también metodologíastradicionales o clásicas, donde se realiza una intensa etapa de análisis y diseño antesde la construcción del sistema.Todas las propuestas metodológicas antes indicadas pueden considerarse comometodologías tradicionales. Aunque en el caso particular de RUP, por el especialénfasis que presenta en cuanto a su adaptación a las condiciones del proyecto(mediante su configuración previa a aplicarse), realizando una configuraciónadecuada, podría considerarse Ágil.Metodologías ágilesUn proceso es ágil cuando el desarrollo de software es incremental (entregaspequeñas de software, con ciclos rápidos), cooperativo (cliente y desarrolladorestrabajan juntos constantemente con una cercana comunicación), sencillo (el métodoen sí mismo es fácil de aprender y modificar, bien documentado), y adaptable(permite realizar cambios de último momento) [11].Entre las metodologías ágiles identificadas en [11]:Extreme Programming [6].Scrum ([12], [13]).Familia de Metodologías Crystal [14].Feature Driven Development [15].Proceso Unificado Rational, una configuración ágil ([16]).Dynamic Systems Development Method [17].Adaptive Software Development [18].Open Source Software Development [19].

http://www.uml.org/ (7.5.2003)http://www.rational.com/products/rup/index.jsp (7.5.2003)http://www.open.org.au/ (17.9.2003)

18

Page 19: Portafolio de evidencia asd

Referencias

[1] Pressman, R, Ingeniería del Software: Un enfoque práctico, McGraw Hill 1997.[2] Naur P., Randell B., Software Engineering: A Report on a Conference Sponsoredby the NATO Scienc, 1969.[3] Jacaboson, I., Booch, G., Rumbaugh J., El Proceso Unificado de Desarrollo deSoftware, Addison Wesley 2000.[4] Sommerville, I., Ingeniería de Software, Pearson Educación, 2002.[5] Letelier, P., Proyecto Docente e Investigador, DSIC, 2003.[6] Beck, K., Una explicación de la Programación Extrema. Aceptar el cambio,Pearson Educación, 2000.[7] Boehm, B. W., A Spiral Model of Software Develpment and Enhancement, IEEEComputer ,1988.[8] Royce, W., Managing the developmento of large software systems: concepts andtechnique, IEEE Westcon, 1970.[9] Mills, H., O´Neill, D., The Management of Software Engineering, IBM Systems,1980.[10] Laboratorio Ing. Soft., Ingeniería de software 2, Departamento de Informática,2002.[11] Abrahamsson, P., Salo, O., Ronkainen, J., Agile Software DevelopmentMethods. Review and Analysis, VTT, 2002.[12] Schwaber, K., Scrum Development Process. Workshop on Business ObjectDesign and Implementation, OOPSLA´95, 1995.[13] Schwaber, K., Beedle, M., Agile Software Development With Scrum, PrenticeHall, 2002.[14] Cockburn, A., Agile Software Development, Addison Wesley, 2002.[15] Palmer, S. R., Felsing, J. M., A Practical Guide to Feature Driven Development,Prentice Hall, 2002.[16] Kruchten, P., A Rational Development Process, Crosstalk, 1996.[17] Stapleton, J., Dynamic Systems Development Method - The Method in Practice,Addison Wesley, 1997.[18] Highsmith, J., Adaptive Software Development: A Collaborative Approach,Dorset House, 2000.[19] O´Reilly, T., Lessons from Open Source Software Development, ACM, 1999.

19

Page 20: Portafolio de evidencia asd

REPORTE DE LECTURA PREGUNTAS FRECUENTESDE INGENIERÍA DEL SOFTWARE

El software no son sólo programas, sino todos los documentos asociados yla configuración de datos que se necesitan para hacer que estos programasoperen de manera correcta.Existen dos tipos de productos que son productos genéricos y productospersonalizados, los productos genéricos Son sistemas aislados producidospor una organización de desarrollo y que se venden al mercado abierto acualquier cliente que le sea posible comprarlos. Y los productospersonalizados son sistemas requeridos por un cliente en particular, uncontratista de software desarrolla el software especialmente para esecliente.La ingeniería de software es una disciplina de la ingeniería que comprendetodos los aspectos de la producción de software desde las etapas inícialesde la especificación del sistema, hasta el mantenimiento de éste despuésde que se utiliza.Los ingenieros hacen que las cosas funcionen. Aplican teorías. Métodos yherramientas donde sean convenientes, pero las utilizan de Forma selectivay siempre tratando de descubrir soluciones a los problemas.La ingeniería del software no sólo comprende los procesos técnicos deldesarrollo de software sino también con actividades tales como la gestiónde proyectos de software y el desarrollo de herramientas, métodos yteorías de apoyo a la producción de software.Esencialmente, la ciencia de la computación se refiere a las teorías ymétodos subyacentes a las computadoras y los sistemas de software. Laingeniería de sistemas se refiere a todos los aspectos del desarrollo y de laevolución de sistemas complejos donde el software desempeña un papelprincipal. Los ingenieros de sistemas están involucrados en la especificacióndel sistema, en la definición de su arquitectura y en la integración de lasdiferentes partes para crear el sistema final.Un proceso del software es un conjunto de actividades y resultadosasociados que producen un producto de software, existen cuatroactividades fundamentales de procesos: 20

Page 21: Portafolio de evidencia asd

1. Especificación del software donde los clientes e ingenieros definen elsoftware a producir y las restricciones sobre su operación.2. Desarrollo del software donde el software se diseña y programa.3. Validación del software donde el software se válida para asegurar quees lo que el cliente requiere.4. Evolución del software donde el software se modifica para adaptarlo alos cambios requeridos por el cliente y el mercado.Un modelo de procesos del software es una descripción simplificada yaque estos modelos pueden incluir actividades que son parte de losprocesos y productos de software y el papel de las personas involucra dasen la ingeniería del software.Un método de ingeniería del software es un enfoque estructurado para eldesarrollo de software cuyo propósito es facilitar la producción desoftware de alta calidad de una forma costeable.CASE (Ingeniería del Software Asistida por Computadora) comprende unamplio abanico de diferentes tipos de programas que se utilizan paraayudar a las actividades del proceso del software, como el análisis derequerimientos. El modelado de sistemas, la depuración y las pruebas.En el siglo XXI, la ingeniería del software afronta tres retos fundamentales:1.- El reto de la hetero8eneidad. Cada vez más. se requiere que lossistemas operen como sistemas distribuidos en redes que incluyendiferentes tipos de computadoras y con diferentes clases de sistemas desoporte.2.- El reto de la entre8a. Muchas técnicas tradicionales de ingeniería delsoftware consumen tiempo. El tiempo que éstas consumen es paraproducir un software de calidad.3.- El reto de la confianza. Puesto que el software tiene relación con todoslos aspectos de nuestra vida. Es esencial que podamos confiar en él. Estoes especialmente importante en sistemas remotos de software a los quese accede a tal ves de páginas web o de interfaces de servicios web.

21

Page 22: Portafolio de evidencia asd

PREGUNTAS MAS FRECUENTES DEINGENIERIA DEL SOFTWARE.

EQUIPO 1.JESUS ISIDRO GONZALEZ E.

VICTOR HUGO IBARRA ORTIZ.CD. OBREGON, SON. A 16 DE

MAYO DE 2013.22

Page 23: Portafolio de evidencia asd

¿Qué es un Software?

El software no son sólo programas, sinotodos los documentos asociados y laconfiguración de datos que se necesitanpara hacer que estos programas operende manera correcta. Por lo general, unsistema de software consiste en diversosprogramas independientes, archivos deconfiguración que se utilizan para ejecutarestos programas, un sistema dedocumentación que describe la estructuradel sistema, la documentación para elusuario que explica cómo utilizar elsistema y sitios web que permitan a losusuarios descargar la información deproductos recientes.

23

Page 24: Portafolio de evidencia asd

Tipos de productos desoftware.

Existen dos productos:1. Productos genéricos. Son sistemas aisladosproducidos por una organización de desarrollo yque se venden al mercado abierto a cualquiercliente que le sea posible comprarlos. Ejemplos deeste tipo de producto son el software para Pc´stales como bases de datos, procesadores de texto,paquetes de dibujo y herramientas de gestión deproyectos.2. Productos personalizados (o hechos a medida).Son sistemas requeridos por un cliente enparticular. Un contratista de software desarrollael software especialmente para ese cliente.Ejemplos de este tipo de software son lossistemas de control para instrumentoselectrónicos, sistemas desarrollados para llevar acabo procesos de negocios específicos y sistemasde control del tráfico aéreo.

24

Page 25: Portafolio de evidencia asd

¿Qué es la ingeniería delsoftware?

Es una disciplina de la ingenieríaque comprende todos los aspectosde la producción de software desdelas etapas iniciales de laespecificación del sistema, hasta elmantenimiento de éste después deque se utiliza.

25

Page 26: Portafolio de evidencia asd

Disciplina de laingeniería

Los ingenieros hacen que las cosasfuncionen. Aplican teorías. Métodos yherramientas donde sean convenientes,pero las utilizan de Forma selectiva ysiempre tratando de descubrirsoluciones a los problemas, aun cuandono existan teorías y métodos aplicablespara resolverlos. Los ingenieros tambiénsaben que deben trabajar conrestricciones financieras yorganizacionales. por lo que buscansoluciones tomando en cuenta estasrestricciones.

26

Page 27: Portafolio de evidencia asd

Todos los aspectos de producción desoftware

La ingeniería del software nosólo comprende los procesostécnicos del desarrollo desoftware sino también conactividades tales como lagestión de proyectos desoftware y el desarrollo deherramientas, métodos yteorías de apoyo a laproducción de software.

27

Page 28: Portafolio de evidencia asd

¿Cuál es la diferencia entre ingeniería delsoftware y ciencia

de la computación?

Esencialmente, la ciencia de lacomputación se refiere a las teorías ymétodos subyacentes alascomputadoras y los sistemas desoftware, mientras que la ingenieríadel software se refiere a losproblemas prácticos de producirsoftware. Los ingenieros de softwarerequieren ciertos conocimientos deciencia de la computación, de lamisma forma que los ingenieros eléc-tricos requieren conocimientos defísica.

28

Page 29: Portafolio de evidencia asd

¿Cuál es la diferencia entreingeniería del software e ingeniería

de sistemas?

La ingeniería de sistemas se refiere a todoslos aspectos del desarrollo y de la evoluciónde sistemas complejos donde el softwaredesempeña un papel principal. Por lo tanto,la ingeniería de sistemas comprende eldesarrollo de hardware, políticas y procesosde diseño y distribución de sistemas, asícomo la ingeniería del software. Losingenieros de sistemas están involucradosen la especificación del sistema, en ladefinición de su arquitectura y en laintegración de las diferentes partes paracrear el sistema final. Están menosrelacionados con la ingeniería de loscomponentes del sistema (hardware,software, etc.).

29

Page 30: Portafolio de evidencia asd

¿Qué es un proceso delsoftware?

Un proceso del software es unconjunto de actividades y resultadosasociados que producen un productode software. Estas actividades sonllevadas a cabo por los ingenieros desoftware. Existen cuatro actividadesfundamentales de procesos (incluidasmás adelante en este libro) que soncomunes para todos los procesos delsoftware.

30

Page 31: Portafolio de evidencia asd

Actividades

1. Especificación del software donde losclientes e ingenieros definen el software aproducir y las restricciones sobre suoperación.2. Desarrollo del software donde el softwarese diseña y programa.3. Validación del software donde el softwarese valida para asegurar que es lo que elcliente requiere.4. Evolución del software donde el softwarese modifica para adaptarlo a los cambiosrequeridos por el cliente y el mercado.

31

Page 32: Portafolio de evidencia asd

¿Qué es un modelo de procesosdel software?

Un modelo de procesos del softwarees una descripción simplificada de unproceso del software que presentauna visión de ese proceso. Estosmodelos pueden incluir actividadesque son parte de los procesos yproductos de software y el papel delas personas involucra das en laingeniería del software.

32

Page 33: Portafolio de evidencia asd

¿Cuáles son los costos de laingeniería del software?

No existe una respuesta sencilla a esta preguntaya que la distribución de costos a través de lasdiferentes actividades en el proceso delsoftware depende del proceso utilizado y deltipo de software que se vaya a desarrollar. Porejemplo, el software de tiempo realnormalmente requiere una validación y pruebasmás extensas que los sistemas basados en web.Sin embargo, cada uno de los diferentesenfoques genéricos al desarrollo del softwaretiene un perfil de distribución de costosdiferente a través de las actividades del procesodel software. Si se considera que el costo totaldel desarrollo de un sistema de softwarecomplejo es de 100 unidades de costo, la Figura1.2 muestra cómo se gastan éstas en lasdiferentes actividades del proceso.

33

Page 34: Portafolio de evidencia asd

34

Page 35: Portafolio de evidencia asd

¿Qué son los métodos dela ingeniería del software?

Un método de ingeniería del software es un enfoqueestructurado para el desarrollo de software cuyopropósito es facilitar la producción de software de altacalidad de una forma costeable. Métodos como AnálisisEstructurado (DeMarco, 1978) y JSD (Jackson, 1983)fueron los primeros desarrollados en los años 70. Estosmétodos intentaron identificar los componentesfuncionales básicos de un sistema, de tal forma que losmétodos orientados a funciones aún se utilizanampliamente. En los años 80 y 90. estos métodos orientados a funciones fueron complementados por métodosorientados a objetos. como los propuestos por Booch(1994) y Rumbaugh (Rumbaugh el al., 1991). Estosdiferentes enfoques se han integrado en un solo enfoqueunificado basado en el Lenguaje de Modelado Unificado(UML) (Booch el al., 1999; Rumbaugh el al., I999a;Rumbaugh el al., 1999b).

35

Page 36: Portafolio de evidencia asd

¿Qué es CASE?

CASE (Ingeniería del Software Asistida porComputadora) comprende un amplio abanico dediferentes tipos de programas que se utilizan paraayudar a las actividades del proceso del software,como el análisis de requerimientos. el modelado desistemas, la depuración y las pruebas. En la actualidad,todos los métodos vienen con tecnología CASEasociada, como los editores para las notacionesutilizadas en el método, módulos de análisis queverifican el modelo del sistema según las reglas delmétodo y generadores de informes que ayudan a crearla documentación del sistema. Las herramientas CASEtambién incluyen un generador de código queautomáticamente genera código fuente a partir delmodelo del sistema y de algunas guías de procesospara los ingenieros de software.

36

Page 37: Portafolio de evidencia asd

¿Cuáles son losatributos de un buen

software?Así como los servicios que proveen, losproductos de software tienen un ciertonúmero de atributos asociados quereflejan la calidad de ese software. Estosatribulas no están directamenteasociados con lo que el software hace.Más bien, reflejan su comportamientodurante su ejecución y en la estructura yorganización del programa fuente y en ladocumentación asociada. Ejemplos deestos atribulas (algunas veces llamadosatribulas no funcionales) son el tiempode respuesta del software a unapregunta del usuario y la comprensióndel programa fuente.

37

Page 38: Portafolio de evidencia asd

Esto se generalizaen el conjunto de atributos que se muestra en la Figura

1.5, elcual tiene las características esenciales

de un sistema de software bien diseñado.

38

Page 39: Portafolio de evidencia asd

¿Cuáles son los retos fundamentalesque afronta la ingeniería

del software?

En el siglo XXI, la ingeniería delsoftware afronta tres retosfundamentales:1. El reto de la hetero8eneidad. Cada vez más.se requiere que los sistemas operen comosistemas distribuidos en redes que incluyendiferentes tipos de computadoras y condiferentes clases de sistemas de soporte. Amenudo es necesario integrar software nuevocon sistemas heredados más viejos escritos endiferentes lenguajes de programación. El retode la heterogeneidad es desarrollar técnicaspara construir software confiable que sea losuficientemente flexible para adecuarse a estaheterogeneidad.

39

Page 40: Portafolio de evidencia asd

2. El reto de la entre8a. Muchas técnicastradicionales de ingeniería del softwareconsumen tiempo. El tiempo que éstasconsumen es para producir un softwarede calidad. Sin embargo. los negocios dehoy en día deben tener una grancapacidad de respuesta y cambiar conmucha rapidez. Su software de soportetambién debe cambiar con la mismarapidez. El reto de la entrega es reducirlos tiempos de entrega para sistemasgrandes y complejos sin comprometer lacalidad del sistema.

40

Page 41: Portafolio de evidencia asd

3. El reto de la confianza. Puestoque el software tiene relación contodos los aspectos de nuestra vida.es esencial que podamos confiar enél. Esto es especialmente impor-tante en sistemas remotos desoftware a los que se accede atalvés de páginas web o deinterfaces de servicios web. El retode la confianza es desarrollartécnicas que de muestren que losusuarios pueden confiar en elsoftware.

41

Page 42: Portafolio de evidencia asd

REPORTE DE LECTURA EQUIPO # 2 INGENIERÍA DELSOFTWARE ASISTIDA POR COMPUTADORA

Ingeniería del Software Asistida por Computadora (CASE) es el nombre que se le da alsoftware que se utiliza para ayudar a las actividades del proceso del software como laingeniería de requerimientos, el diseño, el desarrollo de programas y las pruebas.Proporciona ayuda al proceso del software automatizando algunas de sus actividades.Así como proporcionando información acerca del software en desarrollo. Algunosejemplos de las actividades de CASE son: El desarrollo modelo de gráficos de sistemas,comprensión del diseño, generación de interface de usuarios, la depuración deprogramas por medio de la provisión de la información proporcionada, la conversiónautomática de programas de una versión anterior de un lenguaje de programación. Latecnología CASE está disponible para la mayoría de las actividades rutinarias en elproceso del software. Esto permite algunas mejoras en la calidad y productividad delsoftware, las mejoras por la utilización de CASE están limitadas por dos factores:1.- Esencialmente la ingeniería del software es una actividad de diseño que se basa enla creatividad. Los sistemas CASE automatizan las actividades rutinarias2.- En la mayoría de las organizaciones la ingeniería del software es una actividad deequipo y los ingenieros invierten mucho tiempo interactuando con los otrosmiembros del equipo.Actualmente, la tecnología CASE está madura y hay herramientas disponibles y bancosde trabajo de un amplio rango de proveedores. Sin embargo, más que centrarse enalguna herramienta específica. Los procesos del software son las actividadesrelacionadas con la producción de un sistema software. Todos los procesos delsoftware incluyen la especificación el diseño, la implementación, la validación y laevolución del software. Los modelos genéricos del proceso describen la organizaciónde los procesos del software, los modelos de Iteración de procesos presentan elproceso del software como un ciclo de actividades, la ingeniería de requerimientos esel proceso de desarrollar una especificación del software, los procesos de diseño eImplementación comprenden la transformación de la especificación de losrequerimientos en un sistema software ejecutable. El Proceso Unificado de Racionales un modelo del proceso moderno y genérico que se organiza en fases (Inicio,elaboración, construcción y transición), pero que separa las actividades(requerimientos, análisis y diseño, etc.) de estas fases. La tecnología CASE proporcionaayuda automatizada a los procesos del software, las herramientas CASE ayudan a lasactividades Individuales del proceso; los bancos de trabajo ayudan a un conjunto deactividades relacionadas; los entornos ayudan a todas o a la mayoría de lasactividades del proceso del software, la validación del software es el proceso deverificar que el sistema se ajusta a su especificación y que satisface las necesidadesreales de los usuarios del sistema, la evolución del software se interesa en modificarlos sistemas software existentes para cumplir los nuevos requerimientos. 42

Page 43: Portafolio de evidencia asd

Ingeniería desoftwareasistida porcomputadora

Edgar Javier Urquijo RascónOscar Fermín Vega Cota

43

Page 44: Portafolio de evidencia asd

ÍNDICE

PRIMERA PARTE (EDGAR)SEGUNDA PARTE (OSCAR)TERCERA PARTE (EDGAR)

44

Page 45: Portafolio de evidencia asd

ConceptoIngeniería del Software Asistida porComputadora (CASE) es el nombreque se le da al software que se utilizapara ayudar a las actividades delproceso del software como laingeniería de requerimientos, eldiseño. el desarrollo de programas ylas pruebas. Por lo tanto, lasherramientas CASE incluyen editoresde diseño. diccionarios de datos,compiladores, depuradores,herramientas de construcción desistemas. etcétera.

45

Page 46: Portafolio de evidencia asd

La tecnología CASE proporciona ayuda al procesodel software automatizando algunas de susactividades. así como proporcionando informaciónacerca del software en desarrollo. Algunos ejemplosde las actividades que se pueden automatizarutilizando CASE son:

l. El desarrollo de modelos gráficos del sistema como partede la especificación de requerimientos o del diseño desoftware.2. La comprensión del diseño utilizando un diccionario dedatos que tiene informaciónsobre las entidades y relaciones del diseño.3. La generación de interfaces de usuario a partir de ladescripción gráfica de la interfazque es elaborada de forma interactiva por el usuario.4. La depuración de programas por medio de la provisiónde la información proporcionadapor los programas en ejecución.5. La conversión automática de programas de una versiónanterior de una lenguaje deprogramación. como COBOL. a una versión más reciente.

46

Page 47: Portafolio de evidencia asd

La tecnología CASE está disponible para íamayoría de las actividades rutinarias en elproceso del software. Esto permite algunasmejoras en la calidad y productividad delsoftware, aunque éstas sean menores quelali predichas por los primeros partidarios deCASE. Éstos sugirieron que se tendría unamejora mayor si se utilizamn entornos CASEintegrados. En realidad. Las mejoras realesson del 40% (Huff, 1992). Aunque esto essignificante. las predicciones que sehicieron cuando se introdujeron lasherramientas CASE en los años 80 y 90fueron que el uso de la tecnología CASEgeneraría entonces ahorros en los costos delproceso del software.

47

Page 48: Portafolio de evidencia asd

Las mejoras por la utilización deCASE están limitadas por dosfactores:

1. Esencialmente. la ingeniería delsoftware es una actividad de diseñoque se basa en la creatividad. Lossistemas CASE automatizan lasactividades rutinarias. pero losintentos de utilizar la inteligenciaartificial para proporcionar ayuda aldiseño no han tenido éxito.2. En la mayoría de lasorganizaciones. la ingeniería delsoftware es una actividad de equipo. ylos ingenieros invierten mucho tiempointeractuando con los otros miembrosdel equipo. La tecnología CASE noproporciona mucha ayuda para esto.

48

Page 49: Portafolio de evidencia asd

Actualmente, la tecnología CASEestá madura y hay herramientasdisponibles y bancos detrabajo de un amplio rango deproveedores. Sin embargo, más quecentrarse en alguna herramientaespecífica. aquí se presenta unavisión general, con algunoscomentarios de apoyo específico enotros capítulos. En la página web seincluyen enlaces a otro material deCASE y a proveedores deherramientas CASE.

49

Page 50: Portafolio de evidencia asd

50

Page 51: Portafolio de evidencia asd

Puntos clave Los procesos del software son las actividades relacionadas con la

producción de un sistema software. Los modelos del proceso delsoftware son representantes abstractas de estos procesos

Todos los procesos del software incluyen la especificación. eldiseño, la implementación. la validación y la evolución delsoftware.

Los modelos genéricos del proceso describen la organización delos procesos del software. Ejemplos de estos modelos son elmodelo en cascada, el desarrollo evolutivo y la ingeniería delsoftware basada en componentes.

Los modelos de Iteración de procesos presentan el proceso delsoftware como un ciclo de actividades. La ventaja de esteenfoque es que evita compromisos prematuros con unaespecificación o diseño. Ejemplos de este tipo de modelos son eldesarrollo Incremental y el modelo en espiral.

La ingeniería de requerimientos es el proceso de desarrollar unaespecificación del software. Las especificaciones pretendencomunicar las necesidades del sistema del cliente a losdesarrolladores del sistema.

Los procesos de diseño e Implementación comprenden latransformación de la especificación de los requerimientos en unsistema software ejecutable. Los métodos sistemáticos de diseñose pueden utilizar como parte de esta transformación.

51

Page 52: Portafolio de evidencia asd

la validación del software es el proceso de verificar que elsistema se ajusta a su especificación y que satisface lasnecesidades reales de los usuarios del sistema.

la evolución del software se interesa en modificar los sistemassoftware existentes para cumplir los nuevos requerimientos.Esto se está convirtiendo en el enfoque normal para eldesarrollo de sistemas de pequeño y mediano tamaño.

• El Proceso Unificado de Racional es un modelo del procesomoderno y genérico que se organiza en fases (Inicio,elaboración, construcción y transición), pero que separa lasactividades (requerimientos, análisis y diseño, etc.) de estasfases.

• La tecnología CASE proporciona ayuda automatizada a losprocesos del software. las herramientas CASE ayudan a lasactividades Individuales del proceso; los bancos de trabajoayudan a un conjunto de actividades relacionadas; los entornosayudan a todas o a la mayoría de las actividades del proceso delsoftware.

52

Page 53: Portafolio de evidencia asd

•INVESTIGACIÓN DE CLASE MODELO RUP

¿Qué es RUP?Es un proceso de ingeniería de software, que hace una propuesta orientada pordisciplinas para lograr las tareas y responsabilidades de una organización quedesarrolla software.Su meta principal es asegurar la producción de software de alta calidad que cumplacon las necesidades de los usuarios, con una planeación y presupuesto predecible.¿Para quién es RUP?Diseñado para:–Profesionales en el desarrollo de software.–Interesados en productos de software.–Profesionales en la ingeniería y administración de procesos de software.¿Por qué usar RUP?–Provee un entorno de proceso de desarrollo configurable, basado enestándares.–Permite tener claro y accesible el proceso de desarrollo que se sigue.–Permite ser configurado a las necesidades de la organización y del proyecto.–Provee a cada participante con la parte del proceso que le competedirectamente, filtrando el resto.Características•Dirigido por Casos de Uso: –Los casos de uso son los artefactos primarios paraestablecer el comportamiento deseado del sistema•Centrado en la Arquitectura: –La arquitectura es utilizada para conceptualizar,construir, administrar y evolucionar el sistema en desarrollo•Iterativo e Incremental:–Maneja una serie de entregas ejecutables–Integra continuamente la arquitectura para producir nuevas versiones mejoradas•Conceptualmente amplio y diverso•Enfoque orientado a objetos•En evolución continua•Adaptable•Repetible•Permite mediciones:–Estimación de costos y tiempo, nivel de avance, etc.

53

Page 54: Portafolio de evidencia asd

INVESTIGACIÓN DE CLASE DE LAS 4 FASEDEL MODELO RUP

4 FASES SECUENCIALES

•INICIOSe logra un acuerdo todos los interesados teniendo en cuenta elciclo de vida para el proyecto generando el cuerpo del proyecto:Caso de negocios, Síntesis de arquitectura posible, Define el alcancedel proyecto.

•ELABORACIONEstablecimiento de la estructura base para la arquitectura delsistema, proporciona el diseño del mismo y el desarrollo de lasiguiente fase Plan del proyecto, Especificación de características,Arquitectura base.

•CONSTRUCCIONConstruir el producto, completa el desarrollo del sistema basado enla estructura base de la arquitectura.

•TRANSICIONTransición del producto a la comunidad del usuario, en si garantizaque el software esté listo para entregar al usuario..

54

Page 55: Portafolio de evidencia asd

•INVESTIGACIÓN DE CLASE MÉTRICA-CALIDAD

Son las que están relacionadas con el desarrollo del software comofuncionalidad, complejidad, eficiencia.Métricas de Calidad.

Son todas las métricas de software que definen de una u otra formala calidad del software como: Exactitud, Estructuración omodularidad, Pruebas, Mantenimiento, Reusabilidad, Cohesión delmódulo, Acoplamiento del módulo, etc. Estas son los puntos críticosen el diseño, codificación, pruebas y mantenimiento. Proporcionanuna indicación de cómo se ajusta el software a los requisitosimplícitos y explícitos del cliente. Se puede medir la calidad a lolargo del proceso de ingeniería del software y una vez que el softwarese ha distribuido al cliente y a los usuarios.Corrección:Es el grado con que el software realiza la función requerida.Facilidad de mantenimiento:Es la facilidad con que se puede corregir un programa si seencuentra un error o de realizar algún cambio.Tiempo medio entre cambios:Tiempo que lleva analizar el cambio requerido.Integridad:Mide la habilidad de un sistema para resistir ataques, en programasde datos y en documentos.Amenaza:Es la probabilidad de que un ataque de un tipo determinado ocurraen un tiempo determinado.Seguridad:Es la probabilidad de que se pueda repeler el ataque de undeterminado tipo.Facilidad de uso:Cuanto es amigable con el usuario. 55

Page 56: Portafolio de evidencia asd

FASE DE GESTION DE PLANEACION

*PLANIFICACIONEl propósito principal de la planificación es establecer unconjunto detallado de directrices que permite al equipode trabajo saber exactamente que tiene que hacercuando tiene que hacerse y que recursos tienen queestar disponibles

*CALENDARIZACION DE PROYECTOSEs una actividad que distribuye estimaciones de esfuerzoa través de la duración planificada del proyecto paraasignar el esfuerzo a tareas específicas Ing. De software

*GESTION DE RIESGOEs una serie de pasos que ayudan a comprender ymanejar la incertidumbre que implica el desarrollo detodo proyecto.

56

Page 57: Portafolio de evidencia asd

FRAMEWORK(Marco de trabajo) define, en términos generales, un conjuntoestandarizado de conceptos, prácticas y criterios para enfocar untipo de problemática particular que sirve como referencia, paraenfrentar y resolver nuevos problemas de índole similar.En el desarrollo de software, un framework o infraestructuradigital, es una estructura conceptual y tecnológica de soportedefinido, normalmente con artefactos o módulos desoftware concretos, que puede servir de base para la organizacióny desarrollo de software. Típicamente, puede incluir soportede programas, bibliotecas, y un lenguaje interpretado, entre otrasherramientas, para así ayudar a desarrollar y unir los diferentescomponentes de un proyecto.Representa una arquitectura de software que modela las relacionesgenerales de las entidades del dominio, y provee una estructura yuna especial metodología de trabajo, la cual extiende o utiliza lasaplicaciones del dominio.Son diseñados con la intención de facilitar el desarrollode software, permitiendo a los diseñadores y programadores pasarmás tiempo identificando requerimientos de software que tratandocon los tediosos detalles de bajo nivel de proveer un sistemafuncional. Por ejemplo, un equipo que usa Apache Struts paradesarrollar un sitio web de un banco, puede enfocarse en cómo losretiros de ahorros van a funcionar en lugar de preocuparse decómo se controla la navegación entre las páginas en una formalibre de errores. Sin embargo, hay quejas comunes acerca de queel uso de frameworks añade código innecesario y que lapreponderancia de frameworks competitivos y complementariossignifica que el tiempo que se pasaba programando y diseñandoahora se gasta en aprender a usar los frameworks.Fuera de las aplicaciones en la informática, puede ser consideradocomo el conjunto de procesos y tecnologías usados para resolverun problema complejo. Es el esqueleto sobre el cual varios objetosson integrados para facilitar una solución dada.

57

Page 58: Portafolio de evidencia asd

UML- LENGUAJE UNIFICADO DEMODELADO

es el lenguaje de modelado de sistemas de software másconocido y utilizado en la actualidad; está respaldado porel OMG (Object Management Group). Es un lenguaje gráfico paravisualizar, especificar, construir y documentar un sistema. UMLofrece un estándar para describir un "plano" del sistema(modelo), incluyendo aspectos conceptuales tales como procesosde negocio, funciones del sistema, y aspectos concretos comoexpresiones de lenguajes de programación, esquemas de basesde datos y compuestos reciclados.

Es importante remarcar que UML es un "lenguaje de modelado"para especificar o para describir métodos o procesos. Se utilizapara definir un sistema, para detallar los artefactos en el sistemay para documentar y construir. En otras palabras, es el lenguajeen el que está descrito el modelo.Se puede aplicar en el desarrollo de software gran variedad deformas para dar soporte a una metodología de desarrollo desoftware (tal como el Proceso Unificado Racional o RUP), pero noespecifica en sí mismo qué metodología o proceso usar.UML no puede compararse con la programación estructurada,pues UML significa Lenguaje Unificado de Modelado, no esprogramación, solo se diagrama la realidad de una utilización enun requerimiento. Mientras que, programación estructurada, esuna forma de programar como lo es la orientación a objetos, sinembargo, la programación orientada a objetos viene siendo uncomplemento perfecto de UML, pero no por eso se toma UMLsólo para lenguajes orientados a objetos.UML cuenta con varios tipos de diagramas, los cuales muestrandiferentes aspectos de las entidades representadas.

58

Page 59: Portafolio de evidencia asd

MICROSOFT PROJECT, INTELIGENCIAARTIFICIAL, LENGUAJE COBOL

Microsoft Project

Es un software de administración de proyectos diseñado,desarrollado y comercializado por Microsoft para asistir aadministradores de proyectos en el desarrollo de planes,asignación de recursos a tareas, dar seguimiento alprogreso, administrar presupuesto y analizar cargas detrabajo.El software Microsoft Office Project en todas sus versiones(la versión 2013 es la más reciente a febrero de 2013) esútil para la gestión de proyectos, aplicando procedimientosdescritos en el PMBoK (Project Management Body ofKnowledge) del Project Management Institute.La aplicación crea calendarización de rutas críticas,además de cadenas críticas y metodología de eventos encadena disponibles como add-ons de terceros. Loscalendarios pueden ser resource leveled, y las gráficasvisualizadas en una Gráfica de Gantt. Adicionalmente,Project puede reconocer diferentes clases de usuarios, loscuales pueden contar con distintos niveles de acceso aproyectos, vistas y otros datos. Los objetospersonalizables como calendarios, vistas, tablas, filtros ycampos, son almacenados en un servidor que comparte lainformación con todos los usuarios.Microsoft Project y Project Server son piezas angularesdel Microsoft Office Enterprise Project Management(EPM).

59

Page 60: Portafolio de evidencia asd

INTELIGENCIA ARTIFICIALLa capacidad de razonar de un agente no vivo.1 23 JohnMcCarthy, acuñó el término en 1956, la definió: "Es laciencia e ingenio de hacer máquinas inteligentes,especialmente programas de cómputo inteligentes."4 .•Búsqueda del estado requerido en el conjunto de losestados producidos por las acciones posibles.•Algoritmos genéticos (análogo al proceso de evolución delas cadenas de ADN).•Redes neuronales artificiales (análogo al funcionamientofísico del cerebro de animales y humanos).•Razonamiento mediante una lógica formal análogo alpensamiento abstracto humano.También existen distintos tipos de percepciones yacciones, pueden ser obtenidas y producidas,respectivamente por sensores físicos y sensoresmecánicos en máquinas, pulsos eléctricos u ópticos encomputadoras, tanto como por entradas y salidas de bitsde un software y su entorno software.Varios ejemplos se encuentran en el área de control desistemas, planificación automática, la habilidad deresponder a diagnósticos y a consultas de losconsumidores, reconocimiento deescritura, reconocimiento del habla y reconocimiento depatrones. Los sistemas de IA actualmente son parte de larutina en campos como economía, medicina, ingeniería yla milicia, y se ha usado en gran variedad de aplicacionesde software, juegos de estrategia como ajedrez decomputador y otros videojuegos.

60

Page 61: Portafolio de evidencia asd

LENGUAJE COBOL

El lenguaje COBOL (acrónimo de COmmon Business-Oriented Language, Lenguaje Común Orientado a Negocios) fue creado en elaño 1959 con el objetivo de crear un lenguaje de programación universal quepudiera ser usado en cualquier ordenador, ya que en los años 1960 existíannumerosos modelos de ordenadores incompatibles entre sí, y que estuvieraorientado principalmente a los negocios, es decir, a la llamada informática degestión.•COBOL fue dotado de unas excelentes capacidades de auto documentación•Una buena gestión de archivos y una excelente gestión de los tipos de datospara la época, a través de la conocida sentencia PICTURE para la definiciónde campos estructurados. Para evitar errores de redondeo en los cálculosque se producen al convertir los números a binario y que son inaceptables entemas comerciales, COBOL puede emplear y emplea por defecto númerosen base diez. Para facilitar la creación de programas en COBOL, la sintaxisdel mismo fue creada de forma que fuese parecida al idioma inglés, evitandoel uso de símbolos que se impusieron en lenguajes de programaciónposteriores.Pese a esto, a comienzos de los ochenta se fue quedando anticuadorespecto a los nuevos paradigmas de programación y a los lenguajes que losimplementaban. En la revisión de 1985 se solucionó, incorporando a COBOLvariables locales, recursividad, reserva de memoria dinámica y programaciónestructurada.En la revisión de 2002 se le añadió orientación a objetos, aunque desde larevisión de 1974 se podía crear un entorno de trabajo similar a la orientacióna objetos, y un método de generación de pantallas gráficas estandarizado.Antes de la inclusión de las nuevas características en el estándar oficial,muchos fabricantes de compiladores las añadían de forma no estándar. En laactualidad este proceso se está viendo con la integración de COBOL conInternet. Existen varios compiladores que permiten emplear COBOLcomo lenguaje de scripting y de servicio web. También existen compiladoresque permiten generar código COBOL para la plataforma .NET y EJB

61

Page 62: Portafolio de evidencia asd

REQUISITOS PRO IBM

IBM Rational RequisitePro es una herramienta de gestiónde requisitos y casos prácticos para los equipos deproyecto. Los equipos pueden crear y compartir susrequisitos mediante métodos conocidos basados endocumentos, al tiempo que utilizan funciones de la base dedatos como la rastreabilidad y el análisis de impacto. Deesta manera se mejora la gestión de requisitos ycomunicación, se aumenta la calidad y se acelera el tiempode comercialización.Rational Requisite Pro es una herramienta fácil de utilizarque le ayuda a:•Evitar tareas de remodelación y duplicaciones graciasa la integración avanzada en tiempo real con MicrosoftWord.•Gestionar la complejidad con vistas de rastreabilidaddetalladas que muestran relaciones padre-hijo.•Mejorar la colaboración de equipos distribuidosgeográficamente a través de una interfaz web escalabletotalmente funcional e hilos de debate.•Capturar y analizar información de requisitos conpersonalización y filtrado detallado de atributos.•Aumentar la productividad haciendo un seguimiento delos cambios mediante comparaciones de las versiones delproyecto con líneas base de proyecto basadas en XML•Ajustar los objetivos empresariales con los productosfinales del proyecto mediante la integración con variasherramientas en la plataforma de desarrollo y distribuciónde software de IBM Rational

62

Page 63: Portafolio de evidencia asd

SECOND LIFE

Es un metaverso lanzado el 23 de junio de 2003, desarrollado por LindenLab, al que se puede acceder gratuitamente Internet. Sus usuarios,conocidos como "residentes", pueden acceder a SL mediante el uso de unode los múltiples programas de interfaz llamados viewers (visores), los cualesles permiten interactuar entre ellos mediante un ávatar.4 Los residentespueden así explorar el mundo virtual, interactuar con otros residentes,establecer relaciones sociales, participar en diversas actividades tantoindividuales como en grupo y crear y comerciar propiedad virtual y serviciosentre ellos. SL está reservado para mayores de 18 años.Para acceder al programa es requisito imprescindible crear una cuenta, lacual da acceso al mundo y al ávatar individual. Los avatares son caracterestridimensionales personalizables lo que le da a los usuarios la capacidad deconvertirse el personaje que deseen y "disfrutar" (como el mismo nombre delprograma indica) de una segunda vida.Su segundo atractivo más importante es la posibilidad de crear objetos eintercambiar diversidad de productos virtuales a través de un mercadoabierto que tiene como moneda local el Linden Dólar (L$). En el mismoprograma se incluye una herramienta de creación en 2D basada en simplesfiguras geométricas (conocidos como prims o primitivas) y que permite a losresidentes la construcción de objetos virtuales. Estos elementos puedenusarse en combinación con el lenguaje de programación LSL o LindenScripting Language a fin de añadir funcionalidad a los objetos. Objetos máscomplejos, como sculpties o complejos prims tridimensionales, texturas pararopas u objetos, animaciones o gestos pueden ser creados externamente eimportados a SL. Los Términos de Servicio de SL (conocidos por suabreviatura inglesa: TOS) aseguraban, hasta recientes cambios, la retenciónde los derechos de autor por parte de los creadores de los objetos, mientrasque Linden Labs proveía simples funciones de gestión de derechosdigitales en sus servidores y su acceso. Los recientes cambios producidos enel TOS han eliminado gran parte de los derechos de los creadores, alestablecerse Linden Labs como propietario de todo el software presente ensus servidores, eliminando el derecho de los creadores, al ser un entornocerrado.

63

Page 64: Portafolio de evidencia asd

Para concluir en este curso se cumplieron todos lostemas como ¿Qué es ingeniería de software? Unsistema informático está compuesto por hardwarey software. Entre otros puntos como los costos dela ingeniería de software.Entre otros puntos como stak holders, requisitosde IBM, la clasificación de modelos de RUP, ya queesto sirve para un mejor proyecto porque sesiguen varios pasos para un mejor proceso deingeniería de software.

64