Proceso de Desarrollo de Software

26
Proceso de desarrollo de software Un proceso, se define como una serie de operaciones usadas en la creación de un producto. Un proceso de software se puede definir de las siguientes formas: Un proceso de software define el conjunto de tareas, que tienen que ser realizadas para producir un producto de software de alta calidad. En otras palabras, este es el enfoque que se toma para el desarrollo del software. Es el proceso que se sigue para construir el producto de software desde la concepción de una idea, hasta la entrega y el retiro final del sistema. Las características de un proceso de software se resumen a continuación: Comprensión: Este requiere claridad y declaración de la naturaleza explicita de la definición del proceso. Visibilidad: Se refiere a la capacidad de observar la salida de arias actividades del proceso, de manera que se mida el proceso del progreso. Confiabilidad: Se refiere a la capacidad del proceso para evadir errores o detectar errores y manejarlos antes de que estos avancen en el producto. Robustez: Se refiere a la capacidad del proceso de no detenerse a pesar de problemas inesperados. Facilidad de mantenimiento: Se refiere a la cantidad de modificaciones que pueden hacerse al sistema de software sin introducir errores. Facilidad de verificación: Un proceso es verificable si sus propiedades pueden ser fácilmente verificadas. Rapidez: Se refiere a la agilidad y rapidez del proceso para ser capaz de entregar un producto final a partir de las especificaciones.

description

Es el proceso que se sigue para construir el producto de software desde la concepción de una idea, hasta la entrega y el retiro final del sistema.

Transcript of Proceso de Desarrollo de Software

Proceso de desarrollo de softwareUn proceso, se define como una serie de operaciones usadas en la creacin de un producto. Un proceso de software se puede definir de las siguientes formas:Un proceso de software define el conjunto de tareas, que tienen que ser realizadas para producir un producto de software de alta calidad. En otras palabras, este es el enfoque que se toma para el desarrollo del software.Es el proceso que se sigue para construir el producto de software desde la concepcin de una idea, hasta la entrega y el retiro final del sistema.

Las caractersticas de un proceso de software se resumen a continuacin: Comprensin: Este requiere claridad y declaracin de la naturaleza explicita de la definicin del proceso. Visibilidad: Se refiere a la capacidad de observar la salida de arias actividades del proceso, de manera que se mida el proceso del progreso. Confiabilidad: Se refiere a la capacidad del proceso para evadir errores o detectar errores y manejarlos antes de que estos avancen en el producto. Robustez: Se refiere a la capacidad del proceso de no detenerse a pesar de problemas inesperados. Facilidad de mantenimiento: Se refiere a la cantidad de modificaciones que pueden hacerse al sistema de software sin introducir errores. Facilidad de verificacin: Un proceso es verificable si sus propiedades pueden ser fcilmente verificadas. Rapidez: Se refiere a la agilidad y rapidez del proceso para ser capaz de entregar un producto final a partir de las especificaciones. Facilidad de soporte: Se refiere a la posibilidad de que las actividades del proceso sean soportadas por un conjunto de herramientas automatizadas. Facilidad de aceptacin: Se refiere a la capacidad del proceso a ser aceptado y usado por el equipo de ingenieros. Facilidad de adaptacin: Se refiere a la capacidad del proceso a ser modificado para satisfacer las necesidades de cambio en el ambiente de desarrollo.

Despus de haber discutido las caractersticas del proceso de desarrollo de software, se presenta a continuacin las diferentes fases del proceso de desarrollo de software. Fase de definicin esta fase se concentra principalmente en que tiene que ser completado por el proceso de software. Fase de desarrollo esta fase enfoca en el cmo los requerimientos de un sistema y el software sern completados. Fase de mantenimiento esta fase se enfoca en cambio, el mantenimiento incluye la correccin de errores y la adaptacin, conforme evoluciona el entorno del software.

FUNDAMENTOS DEL ENFOQUE ORIENTADO A OBJETOS.Fundamentos del Enfoque orientado a Objetos. El Enfoque Orientado a Objeto se basa en cuatro principios que constituyen la base de todo desarrollo orientado a objetos. Estos principios son: la Abstraccin, el Encapsulamiento, la Modularidad y la Herencia.La orientacin a objetos ofrece una solucin que ayuda a los desarrolladores a hacer corresponder el mundo real tan cerca como sea posible al dominio de la solucin. Cabe mencionar que existen muchas metodologas que permiten soluciones para problemas complejos. En la orientada a objetos se basa en modelar el mundo real y ha ganado importancia significativa en los ltimos tiempos. En la orientacin a objetos se trabaja con objetos en el sistema que interactan unos con otros a travs de mensajes. La orientacin a objetos proporciona los recursos para ocuparse de los objetos de un sistema complejo. El anlisis y diseo de un sistema desde una perspectiva orientada a objetos forma el ncleo de un sistema.

Fundamento 1: Abstraccin Es el principio de ignorar aquellos aspectos de un fenmeno observado que no son relevantes, con el objetivo de concentrarse en aquellos que s lo son. Una abstraccin denota las caractersticas esenciales de un objeto (datos y operaciones), que lo distingue de otras clases de objetos. Decidir el conjunto correcto de abstracciones de un determinado dominio, es el problema central del diseo orientado a objetos. Los mecanismos de abstraccin son usados en el EOO para extraer y definir del medio a modelar, sus caractersticas y su comportamiento. Dentro del EOO son muy usados mecanismos de abstraccin: la Generalizacin, la Agregacin y la clasificacin. Lageneralizacines el mecanismo de abstraccin mediante el cual un conjunto de clases de objetos son agrupados en una clase de nivel superior (Superclase), donde las semejanzas de las clases constituyentes (Subclases) son enfatizadas, y las diferencias entre ellas son ignoradas. En consecuencia, a travs de la generalizacin, la superclase almacena datos generales de las subclases, y las subclases almacenan slo datos particulares. La especializacin es lo contrario de la generalizacin. Por ejemplo; La clase Mdico es una especializacin de la clase Persona, y a su vez, la clase Pediatra es una especializacin de la superclase Mdico. Laagregacines el mecanismo de abstraccin por el cual una clase de objeto es definida a partir de sus partes (otras clases de objetos). Mediante agregacin se puede definir por ejemplo un computador, por descomponerse en: la CPU, la ULA, la memoria y los dispositivos perifricos. El contrario de agregacin es la descomposicin. Laclasificacinconsiste en la definicin de una clase a partir de un conjunto de objetos que tienen un comportamiento similar. La ejemplificacin es lo contrario a la clasificacin, y corresponde a la instanciacin de una clase, usando el ejemplo de un objeto en particular.Fundamento 2: EncapsulamientoEs la propiedad del EOO que permite ocultar al mundo exterior la representacin interna del objeto. Esto quiere decir que el objeto puede ser utilizado, pero los datos esenciales del mismo no son conocidos fuera de l. La idea central del encapsulamiento es esconder los detalles y mostrar lo relevante. Permite el ocultamiento de la informacin separando el aspecto correspondiente a la especificacin de la implementacin; de esta forma, distingue el "qu hacer" del "cmo hacer". La especificacin es visible al usuario, mientras que la implementacin se le oculta. El encapsulamiento en un sistema orientado a objeto se representa en cada clase u objeto, definiendo sus atributos y mtodos con los siguientesmodos de acceso: Pblico (+): Atributos o Mtodos que son accesibles fuera de la clase. Pueden ser llamados por cualquier clase, aun si no est relacionada con ella. Privado (-): Atributos o Mtodos que solo son accesibles dentro de la implementacin de la clase. Protegido (#): Atributos o Mtodos que son accesibles para la propia clase y sus clases hijas (subclases). Los atributos y los mtodos que son pblicos constituyen la interfaz de la clase, es decir, lo que el mundo exterior conoce de la misma. Normalmente lo usual es que se oculten los atributos de la clase y solo sean visibles los mtodos, incluyendo entonces algunos de consulta para ver los valores de los atributos. El mtodo constructor (Nuevo,New) siempre es Pblico.

Fundamento 3: ModularidadEs la propiedad que permite tener independencia entre las diferentes partes de un sistema. La modularidad consiste en dividir un programa en mdulos o partes, que pueden ser compilados separadamente, pero que tienen conexiones con otros mdulos. En un mismo mdulo se suele colocar clases y objetos que guarden una estrecha relacin. El sentido de modularidad est muy relacionado con el ocultamiento de informacin.

Fundamento 4: HerenciaEs el proceso mediante el cual un objeto de una clase adquiere propiedades definidas en otra clase que lo preceda en una jerarqua de clasificaciones.Permite la definicin de un nuevo objeto a partir de otros, agregando las diferencias entre ellos (Programacin Diferencial), evitando repeticin de cdigo y permitiendo la reusabilidad.Las clases heredan los datos y mtodos de la superclase. Un mtodo heredado puede ser sustituido por uno propio si ambos tienen el mismo nombre. La herencia puede ser simple (cada clase tiene slo una superclase) o mltiple (cada clase puede tener asociada varias superclases). La clase Docente y la clase Estudiante heredan las propiedades de la clase Persona (superclase, herencia simple). La clase Preparador (subclase) hereda propiedades de la clase Docente y de la clase Estudiante (herencia mltiple).

Fundamento 5: Polimorfismo Es una propiedad del EOO que permite que un mtodo tenga mltiples implementaciones, que se seleccionan en base al tipo objeto indicado al solicitar la ejecucin del mtodo. El polimorfismo operacional o Sobrecarga operacional permite aplicar operaciones con igual nombre a diferentes clases o estn relacionados en trminos de inclusin. En este tipo de polimorfismo, los mtodos son interpretados en el contexto del objeto particular, ya que los mtodos con nombres comunes son implementados de diferente manera dependiendo de cada clase.Por ejemplo, el rea de un cuadrado, rectngulo y crculo, son calculados de manera distinta; sin embargo, en sus clases respectivas puede existir la implementacin del rea bajo el nombre comn rea. En la prctica y dependiendo del objeto que llame al mtodo, se usar el cdigo correspondiente.Ejemplos: Superclase:Clase AnimalSubclases: Clases Mamfero, Ave, Pez. Se puede definir un mtodo Comer en cada subclase, cuya implementacin cambia de acuerdo a la clase invocada, sin embargo el nombre del mtodo es el mismo. Mamifero.Comer Ave.Comer Pez.Comer Otro ejemplo de polimorfismo es el operador +. Este operador tiene dos funciones diferentes de acuerdo al tipo de dato de los operandos a los que se aplica. Si los dos elementos son numricos, el operador + significa suma algebraica de los mismos, en cambio si por lo menos uno de los operandos es un String o Carcter, el operador es la concatenacin de cadenas de caracteres.

Caractersticas del Enfoque Orientado a Objetos.Las caractersticas siguientes son las ms importantes: Abstraccin: Denota las caractersticas esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cmo se implementan estas caractersticas. Los procesos, las funciones o los mtodos pueden tambin ser abstrados y cuando lo estn, una variedad de tcnicas son requeridas para ampliar una abstraccin. El proceso de abstraccin permite seleccionar las caractersticas relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstraccin es clave en el proceso de anlisis y diseo orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar. Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstraccin. Esto permite aumentar lacohesinde los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultacin, principalmente porque se suelen emplear conjuntamente. Modularidad: Se denomina Modularidad a la propiedad que permite subdividir una aplicacin en partes ms pequeas (llamadas mdulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicacin en s y de las restantes partes. Estos mdulos se pueden compilar por separado, pero tienen conexiones con otros mdulos. Al igual que la encapsulacin, los lenguajes soportan la Modularidad de diversas formas. Principio de ocultacin: Cada objeto est aislado del exterior, es un mdulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especfica cmo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificacin por quien no tenga derecho a acceder a ellas, solamente los propios mtodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstraccin. La aplicacin entera se reduce a un agregado orompecabezasde objetos. Polimorfismo: Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizar el comportamiento correspondiente al objeto que se est usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocacin de un comportamiento en una referencia producir el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecucin", esta ltima caracterstica se llama asignacin tarda o asignacin dinmica. Algunos lenguajes proporcionan medios ms estticos (en "tiempo de compilacin") de polimorfismo, tales como las plantillas y la sobrecarga de operadoresde C++. Herencia: Las clases no estn aisladas, sino que se relacionan entre s, formando una jerarqua de clasificacin. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en rboles o enrejados que reflejan un comportamiento comn. Cuando un objeto hereda de ms de una clase se dice que hay herencia mltiple. Recoleccin de basura: La recoleccin de basura o garbage collector es la tcnica por la cual el entorno de objetos se encarga de destruir automticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignacin o liberacin de memoria, ya que el entorno la asignar al crear un nuevo objeto y la liberar cuando nadie lo est usando. En la mayora de los lenguajes hbridos que se extendieron para soportar el Paradigma de Programacin Orientada a Objetos como C++ uObject Pascal, esta caracterstica no existe y la memoria debe desasignarse manualmente.

Caractersticas Modelado del mundo real Datos Abstractos Abstraccin de datos Encapsulamiento Ocultamiento de la informacin Clase Objeto Interfaz e Implementacin Mtodos Mensajes Herencia Agregacin Polimorfismo Tipo Rol Paquete

Componentes fundamentales del Enfoque Orientado a Objetos. Clase:Definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciacin es la lectura de estas definiciones y la creacin de un objeto a partir de ellas. Herencia:(Por ejemplo, herencia de la clase C a la clase D) Es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos mtodos y variables pblicas declaradas en C. Los componentes registrados como "privados" (prvate) tambin se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y slo pueden ser accedidos a travs de otros mtodos pblicos. Esto es as para mantener hegemnico el ideal de OOP. Objeto:Entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (mtodos) los mismos que consecuentemente reaccionan a eventos. Se corresponde con los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase. Mtodo:Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecucin se desencadena tras la recepcin de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un mtodo puede producir un cambio en las propiedades del objeto, o la generacin de un "evento" con un nuevo mensaje para otro objeto del sistema. Evento:Es un suceso en el sistema (tal como una interaccin del usuario con la mquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. Tambin se puede definir como evento, a la reaccin que puede desencadenar un objeto, es decir la accin que genera. Mensaje:Una comunicacin dirigida a un objeto, que le ordena que ejecute uno de sus mtodos con ciertos parmetros asociados al evento que lo gener. Propiedad o atributo:Contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus caractersticas predeterminadas, y cuyo valor puede ser alterado por la ejecucin de algn mtodo. Estado interno:Es una variable que se declara privada, que puede ser nicamente accedida y alterada por un mtodo del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase. Componentes de un objeto:Atributos, identidad, relaciones y mtodos. Identificacin de un objeto:Un objeto se representa por medio de una tabla o entidad que est compuesta por sus atributos y funciones correspondientes. Desarrollo de componentesEs un hecho que los negocios buscan ellos mismos ser incrementalmente dependientes de las rpidas interacciones electrnicas (a travs de clientes, asociados, empleados y proveedores). Como el campo tecnolgico se vuelve complejo, se vuelve progresivamente difcil manejar y procesar la informacin. El desarrollo orientado a componentes soluciona estos problemas a travs del uso de componentes interrelacionados dentro de los procesos de negocios.

Desarrollo de componentesEs una unidad auto contenida que encapsula el estado y el comportamiento de varios clasificadores. Tambin se podra decir que es un tipo clasificador con la diferencia de que no tiene caractersticas propias, pero contiene las clases que definen las caractersticas. Un componente proporciona una vista encapsulada de la funcionalidad definida por las clases contenidas. Un componente es una parte fsica del sistema. Cada componente tiene un nombre, el cual puede ser un nombre simple o un nombre de ruta.

Tipos de componentes y caractersticas

Componentes de despliegue o distribucin (Deployment)Estos componentes se usan para formar un sistema ejecutable. Un ejemplo de tal componente es la librera de enlace dinmico y los archivos ejecutables. Otros ejemplos son los componentes COM+, Enterprise Java Beans, componentes CORBA y objetos de base de datos.

Componentes de Producto de TrabajoEstos componentes son parte del proceso de desarrollo que es esencial para el sistema. Algunos ejemplos de componentes de producto de trabajo son los archivos fuente, archivos de datos y tablas. Ellos son los archivos fuente y archivos de datos que se usan para crear los componentes de distribucin como Agente Analizado. Java y AnalizadorDatos.txt.

Componentes de EjecucinEstos componentes son el resultado de un sistema que se est ejecutando. Cuando un DLL es instanciado como un componente COM+, es un ejemplo de un componente de ejecucin.

Caractersticas

La caracterstica fundamental de un componente es la habilidad de definir interfaces. Es una unidad ejecutable que puede ser implantada independientemente. Puede ser sujeto de composicin por terceras partes, es decir, una compaa o un desarrollador puede llegar y tomar el componente y agregarlo a lo que est haciendo, o sea hara una composicin de componentes. Un componente no tiene estado. Se puede tomar a los componentes de software como una analoga a los componentes electrnicos.

Tipos de ComponentesLos componentes integrados: forman conjuntos ms complejos a partir de la unin de componentes discretos.Integrados: forman conjuntos ms complejos, como por ejemplo un amplificador operacional o una puerta lgica, que pueden contener desde unos pocos componentes discretos hasta millones de ellos. Son los denominados circuitos integrados.Los activos: generan una excitacin elctrica, son los generadores elctricos y ciertos componentes semiconductores (microprocesador)Activos: proporcionan excitacin elctrica, ganancia o control (ver listado).Los pasivos: se encargan de la conexin de los componentes activos, no necesitan una fuente de energa para su correcto funcionamiento (Condensador)Pasivos: son los encargados de la conexin entre los diferentes componentes activos, asegurando la transmisin de las seales elctricas o modificando su nivel (ver listado).Los electromagnticos: aprovecha propiedades electromagnticas de los materiales (transformadores, inductores).Electromagnticos: aquellos que aprovechan las propiedades electromagnticas de los materiales (fundamentalmente transformadores e inductores).Los electoacsticos: son capaces de transformar energa, acstica en elctrica y al revs (micrfonos, auriculares)Electroacsticos: transforman la energa acstica en elctrica y viceversa (micrfonos, altavoces, bocinas, auriculares,Osoptoelectrnicos: Transforman energa, luminosa en elctrica y al revs (diodos LED).Optoelectrnicos: transforman la energa luminosa en elctrica y viceversa (diodos LED, clulas fotoelctricas, etc.).Los componentes discretos estn encapsulados uno a uno (como los transistores o los diodos), mientras que los componentes integrados forman conjuntos ms complejos a partir de la unin de componentes discretos.Otros tipos de componentes son los activos (generan una excitacin elctrica), los pasivos (se encargan de la conexin de los componentes activos), los electromagnticos (transformadores, inductores), los electroacsticos (micrfonos, auriculares) y los optoelectrnicos (diodos LED).Discretos: son aquellos que estn encapsulados uno a uno, como es el caso de los resistores, condensadores, diodos, transistores, etc.Los componentes semiconductores, por ltimo, son aquellos fabricados con materiales semiconductores (que conducen o aslan la electricidad segn la temperatura del ambiente) como el silicio.En el caso de los circuitos electrnicos, es importante distinguir entre los componentes (dispositivos fsicos) y los elementos (abstracciones o modelos). En otras circunstancias, componentes y elementos pueden utilizarse como sinnimos.Caractersticas de componentes Ser reutilizable. Ser intercambiable. Poseer interfaces definidas. Ser cohesivosCompletamente documentadosProbadoRobusta - con control de entrada y validez globalCapaz de pasar de nuevo los mensajes de error apropiados o cdigos de retornoDiseado con la conciencia de que va a servir para usos no previstos

Caractersticas del ComponenteDescripcin

EstandarizadoLa estandarizacin de componente significa que un componente usado en un proceso CBSE tiene que ajustarse a algn modelo estandarizado de componentes. Este modelo puede definir interfaces de componentes, metadatos de componentes, documentacin, composicin y despliegue.

IndependienteUn componente debera ser independiente, debera ser posible componerlo y desplegarlo sin tener que utilizar otros componentes especficos. En las situaciones en las que el componente necesita servicios proporcionados externamente, stos deberan hacerse explcitos en una especificacin de interfaz del tipo requiere.

Componible Para que un componente sea componible, todas las interacciones externas deben tener lugar a travs de interfaces definidas pblicamente. Adems debe proporcionar acceso externo a la intromisin sobre s mismo, como por ejemplo a sus mtodos y atributos.

DesplegablePara ser desplegable, un componente debe ser independiente y debe ser capaz de funcionar como una entidad autnoma o sobre una plataforma de componentes que implemente el modelo de componente. Esto normalmente significa que el componente es binario y que no tiene que compilarse ante de ser desplegado.

DocumentadoLos componentes tienen que estar completamente documentados para que los usuarios potenciales puedan decidir si los componentes satisface o no sus necesidades. La sintaxis e, idealmente, la semntica de todas las interfaces de componentes tienen que ser especificadas.

Estndares en el proceso de desarrollo de softwareEstndares en el proceso de desarrollo de softwarePara promover un nivel mayor en el rea de ingeniera de software tenemos un conjunto de reglas que ya han usado otros como normas a seguir para que la programacin sea ms fcil y eficiente para todos.

El estndar internacional que regula el mtodo de seleccin, implementacin y monitoreo del ciclo de vida del software es ISO 12207.Durante dcadas se ha perseguido la meta de encontrar procesos reproducibles y predecibles que mejoren la productividad y la calidad. Algunas de estas soluciones intentan sistematizar o formalizar la aparentemente desorganizada tarea de desarrollar software.

Otros aplican tcnicas de gestin de proyectos para la creacin del software. Sin una gestin del proyecto, los proyectos de software corren el riesgo de demorarse o consumir un presupuesto mayor que el planeado. Dada la cantidad de proyectos de software que no cumplen sus metas en trminos de funcionalidad, costes o tiempo de entrega, una gestin de proyectos efectiva es algo que a menudo falta. Planificacin.

La importante tarea a la hora de crear un producto de software es obtener los requisitos o el anlisis de los requisitos. Los clientes suelen tener una idea ms bien abstracta del resultado final, pero no sobre las funciones que debera cumplir el software.

Una vez que se hayan recopilado los requisitos del cliente, se debe realizar un anlisis del mbito del desarrollo. Este documento se conoce como especificacin funcional. Implementacin, pruebas y documentacin. La implementacin es parte del proceso en el que los ingenieros de software programan el cdigo para el proyecto.

Las pruebas de software son parte esencial del proceso de desarrollo del software. Esta parte del proceso tiene la funcin de detectar los errores de software lo antes posible. La documentacin del diseo interno del software con el objetivo de facilitar su mejora y su mantenimiento se realiza a lo largo del proyecto. Esto puede incluir la documentacin de un API, tanto interior como exterior.Codificar y corregir.Este es el modelo bsico utilizado en los inicios del desarrollo de software. Contiene dos pasos: Escribir cdigo. Corregir problemas en el cdigo.Se trata de primero implementar algo de cdigo y luego pensar acerca de requisitos, diseo, validacin, y mantenimiento.Este modelo tiene tres problemas principales: Despus de un nmero de correcciones, el cdigo puede tener una muy mala estructura, hace que los arreglos sean muy costosos. Frecuentemente, an el software bien diseado, no se ajusta a las necesidades del usuario, por lo que es rechazado o su reconstruccin es muy cara.El cdigo es difcil de reparar por su pobre preparacin para probar y modificar.

Modelo en cascada.El primer modelo de desarrollo de software que se public se deriv de otros procesos de ingeniera. ste toma las actividades fundamentales del proceso de especificacin, desarrollo, validacin y evolucin y las representa como fases separadas del proceso.

Desarrollo evolutivo.La idea detrs de este modelo es el desarrollo de una implantacin del sistema inicial, exponerla a los comentarios del usuario, refinarla en N versiones hasta que se desarrolle el sistema adecuado. En la Figura se observa cmo las actividades concurrentes: especificacin, desarrollo y validacin, se realizan durante el desarrollo de las versiones hasta llegar al producto final. Una ventaja de este modelo es que se obtiene una rpida realimentacin del usuario, ya que las actividades de especificacin, desarrollo y pruebas se ejecutan en cadainteraccin.

Existen dos tipos de desarrollo evolutivo: Desarrollo Exploratorio: Enfoque utilizando prototipos

Desde una perspectiva de ingeniera y administracin se identifican los siguientes problemas:

Proceso no Visible:Los administradores necesitan entregas para medir el progreso. Si el sistema se necesita desarrollar rpido, no es efectivo producir documentos que reflejen cada versin del sistema. Sistemas pobremente estructurados:Los cambios continuos pueden ser perjudiciales para la estructura del software haciendo costoso el mantenimiento. Se requieren tcnicas y herramientas:Para el rpido desarrollo se necesitan herramientas que pueden ser incompatibles con otras o que poca gente sabe utilizar.

Este modelo es efectivo en proyectos pequeos (menos de 100.000 lneas de cdigo) o medianos (hasta 500.000 lneas de cdigo) con poco tiempo para su desarrollo y sin generar documentacin para cada versin.Para proyectos largos es mejor combinar lo mejor del modelo de cascada y evolutivo: se puede hacer un prototipo global del sistema y posteriormente reimplementarlo con un acercamiento ms estructurado. Los subsistemas con requisitos bien definidos y estables se pueden programar utilizando cascada y la interfaz de usuario se puede especificar utilizando un enfoque exploratorio.

Desarrollo formal de sistemas.Este modelo se basa en transformaciones formales de los requisitos hasta llegar a un programa ejecutable. Se distinguen dos fases globales: especificacin (incluyendo validacin) y transformacin. Las caractersticas principales de este paradigma son:

la especificacin es formal y ejecutable constituye el primer prototipo del sistema), la especificacin es validada mediante prototipacin. Posteriormente, a travs de transformaciones formales la especificacin se convierte en la implementacin del sistema, en el ltimo paso de transformacin se obtiene una implementacin en un lenguaje de programacin determinado.

El mantenimiento se realiza sobre la especificacin (no sobre el cdigo fuente), la documentacin es generada automticamente y el mantenimiento es realizado por repeticin del proceso (no mediante parches sobre la implementacin).Observaciones sobre el desarrollo formal de sistemas: Permite demostrar la correccin del sistema durante el proceso de transformacin. As, las pruebas que verifican la correspondencia con la especificacin no son necesarias. Es atractivo sobre todo para sistemas donde hay requisitos de seguridad y confiabilidad importantes. Requiere desarrolladores especializados y experimentados en este proceso para llevarse a cabo.

Desarrollo basado en reutilizacin.Como su nombre lo indica, es un modelo fuertemente orientado a la reutilizacin. Este modelo consta de 4 fases ilustradas en la Figura 9. A continuacin se describe cada fase:1.Anlisis de componentes:Se determina qu componentes pueden ser utilizados para el sistema en cuestin. Casi siempre hay que hacer ajustes para adecuarlos.2.Modificacin de requisitos:Se adaptan (en lo posible) los requisitos para concordar con los componentes de la etapa anterior. Si no se puede realizar modificaciones en los requisitos, hay que seguir buscando componentes ms adecuados (fase 1).3.Diseo del sistema con reutilizacin:Se disea o reutiliza el marco de trabajo para el sistema. Se debe tener en cuenta los componentes localizados en la fase 2 para disear o determinar este marco.4.Desarrollo e integracin:El software que no puede comprarse, se desarrolla. Se integran los componentes y subsistemas. La integracin es parte del desarrollo en lugar de una actividad separada.Ventajas de este modelo: Disminuye el costo y esfuerzo de desarrollo. Reduce el tiempo de entrega. Disminuye los riesgos durante el desarrollo.Desventajas de este modelo: Los compromisos en los requisitos son inevitables, por lo cual puede que el software no cumpla las expectativas del cliente. Las actualizaciones de los componentes adquiridos no estn en manos de los desarrolladores del sistema.Procesos iterativos:A continuacin se expondrn dos enfoques hbridos, especialmente diseados para el soporte de las iteraciones: Desarrollo Incremental. Desarrollo en Espiral.

Desarrollo incremental.Sugiri el enfoque incremental de desarrollo como una forma de reducir la repeticin del trabajo en el proceso de desarrollo y dar oportunidad de retrasar la toma de decisiones en los requisitos hasta adquirir experiencia con el sistema Es una combinacin del Modelo de Cascada y Modelo Evolutivo. Reduce el rehacer trabajo durante el proceso de desarrollo y da oportunidad para retrasar las decisiones 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 un buen conocimiento, se puede optar por cascada, si es dudoso, evolutivo.

Desarrollo en espiral.El modelo de desarrollo en espiral. Es actualmente uno de los ms conocidos y fue propuesto por Boehm .El ciclo de desarrollo se representa como una espiral, en lugar de una serie de actividades sucesivas con retrospectiva de una actividad a otra.

Estndares en el proceso de desarrollo de softwareISOEs el organismo encargado de promover el desarrollo de normas internacionales de fabricacin, comercio y comunicacin para todas las ramas industriales a excepcin de la elctrica y la electrnica. Su funcin principal es la de buscar la estandarizacin de normas de productos y seguridad para las empresas u organizaciones a nivel internacional.Estndares ISO existentes:ISO 9001, 90003, 90042,ISO/IEC 12207,ISO/IEC 15504 (SPICE)Algunos estndares existentes:Estndares para datosEstndares de codificacinEstndares estructuralesEstndares de documentacinEstndares de proceso softwareEstndares para otras actividades

Ejemplos de estndares en ingeniera del software

IEEE Standards Collection Software Engineering 1998 EditionIEEE Std. 610.12-1990, Glossary of Software Engineering TerminologyIEEE Std. 829-1983, Standard for Software Test DocumentationIEEE Std. 830-1993, Recommended Practice for Software Requirements Specifications.IEEE Std. 990-1987, Recommended Practice for Ada as a Program Design Language.IEEE Std. 1045-1992, Standard for Software Productivity MetricsIEEE Std. 1062-1987, Recommended Practice for Software AcquisitionIEEE Std. 1063- 1987, Standard for Software User DocumentationIEEE Std. 1219-1992, Standard for Software Maintenance

Documentacin y ArtefactosLa documentacin no es ms que la debilidad ms frecuente en productos e instalaciones informticos. Cabe mencionar que los actores que intervienen en el ciclo de vida del software desempean diversos roles. Arquitectos, diseadores, analistas, programadores, implementadores, administradores o auditores son quienes explicitan distintos aspectos de los productos y procesos.Un artefacto es una pieza de informacin que es producida o utilizada por procesos. Los artefactos son los elementos son los elementos tangibles de un proyecto, elementos que el proyecto produce o usa mientras se trabaja en busca del producto final. stos, pueden tomar varias formas y formatos, como por ejemplo:Un documento, tal como la visin o la lista de riesgos.Un modelo, por ejemplo un diagrama de casos de uso o el modelo de diseo.Un elemento dentro de un modelo, tal como una clase, un caso de uso o un subsistema.Ejecutables, por ejemplo el ejecutable del prototipo.Cdigo fuente.

Las actividades tienen artefactos como entrada y salida. Los roles usan artefactos para ejecutar actividades y producen artefactos durante la ejecucin de sus actividades. Los artefactos son la responsabilidad sencilla del rol, creando responsabilidades fciles de identificar y entender, promoviendo la idea de que cada pieza de informacin producida en un proceso de desarrollo requiere un conjunto apropiado de habilidades. Aunque un rol puede ser el propietario de un artefacto, otros roles pueden hacer uso de ste, incluso podran actualizar el artefacto si el rol que va a hacerlo, tiene permiso para hacerlo.En RUP se encuentran conjuntos de artefactos que agrupan artefactos relacionados con el modelo de negocio, los requerimientos, el anlisis y diseo, la implementacin, las pruebas, la configuracin y administracin de cambios, el ambiente de desarrollo, entre otros.