You are on page 1of 7

Diseo del software El diseo es definido como "El proceso de definir la arquitectura, la componentes, interfaces, y las otras caractersticas

de un sistema o componente" como "El resultado de [eso] se procesa." Visto como un proceso, el diseo de software es la actividad de ciclo de vida de ingeniera de software en la que los requerimientos de software son analizados para causar una descripcin de la estructura interna del software que servir como base para su construccin. Ms precisamente, un diseo de software (el resultado) debe describir la arquitectura de software - es decir cmo el software est en estado de descomposicin y organizado en los componentes - y las interfaces entre esos componentes. Tambin debe describir los componentes en un nivel del detalle que permiten su construccin.

El diseo de software tiene un papel importante en el desarrollo de software, ya que permite que ingenieros de software produzcan modelos distintos que moldean una clase de plano de la solucin a ser implementado. Podemos analizar y valorar a estos modelos para determinar cual de estos permitir o no, cumplir con una gama de requerimientos

Tambin podemos revisar y valorar las soluciones alternativas y los intercambios. Definitivamente, se puede usar los modelos para planear las actividades de desarrollo siguientes, adems de usarlos como entrada y punto de partida de la construccin y hacer pruebas. Diseo arquitectnico del software (algunas veces llamado el diseo de alto nivel): describir las estructura y organizacin del software de alto nivel e identificar los componentes que lo forman. Diseo detallado del software: describe cada componente lo suficientemente para tener en cuenta su construccin. La descripcin de las reas de conocimiento del diseo de software est relacionada especficamente a requerimientos de software, a la construccin de software, a la administracin de ingeniera de software, la calidad de software, y las disciplinas relacionadas a la ingeniera de software. PROGRAMACIN ESTRUCTURADA

La programacin estructurada es una teora de programacin que consiste en construir programas de fcil comprensin, es especialmente til, cuando se necesitan realizar correcciones o modificaciones despus de haber concluido un programa o aplicacin. Al utilizar la programacin estructurada, es mucho ms sencillo entender la codificacin del programa, que se habr hecho en diferentes secciones.

Se basa en una metodologa de desarrollo de programas llamada refinamiento sucesivos: Se plantea una operacin como un todo y se divide en segmentos ms sencillos o de menor complejidad, una vez terminado todos los segmentos del programa, se procede a unificar las aplicaciones realizadas por el grupo de programadores. Si se ha utilizado adecuadamente la programacin estructurada, esta integracin debe ser sencilla y no presentar problemas al integrar la misma, y de presentar algn problema, ser rpidamente detectable para su correccin.

La representacin grafica de la programacin estructurada se realiza a travs de diagramas de flujo, el cual representa el programa con sus entradas, procesos y salidas.

La programacin estructurada propone segregar los procesos en estructuras lo ms simple posibles, las cuales se conocen como secuencia, seleccin e interaccin, que estn disponibles en todos los lenguajes modernos de programacin imperativa en forma de sentencias, combinando esquemas sencillos se pueden llegar a construir sistemas amplios y complejos pero de fcil entendimiento.

La programacin estructurada es un mtodo disciplinado de escribir programas que sean claros, que se demuestre que sean correctos y fciles de modificar.

La programacin estructurada consiste en dividir los programas en mdulos y se basa en el desarrollo de programas que van de lo general a lo particular, es decir, del conjunto al elemento, es decier de un todo a lo especfico.

Para la solucin de un problema en particular, se inicia considerando las funciones que tiene que cumplir el programa en general y despus se va desmembrando estas funciones en subfunciones ms pequeas hasta llegar al caso ltimo o ms particular y que ya no se pueda subdividir en casos ms pequeos. Una vez que ya se tiene el programa desmembrado en de lo general a lo particular, se empieza a programar estas funciones pequeas, particulares o mdulos, de esta manera, siempre podremos construir nuevos mdulos o unidades insertando el nombre del mdulo donde corresponda y desarrollndolo a parte.

la modificacin de los mdulos es ms fcil y se pueden referenciar cuantas veces se requiera, con lo que se ahorra tiempo en la programacin, un programa tiene un diseo estructurado si cumple las dos siguientes condiciones:

El teorema de Estructura. Est debidamente documentado El teorema de Estructura dice que un programa cumple el teorema de estructura si y slo () si es propio y contiene nicamente las tres estructuras bsicas de control que son la secuencial, la alternativa y la repetitiva, un programa es propio si y slo si cumple: que tenga un solo punto de entrada y un solo punto de salida y que entre dos puntos de control del programa exista al menos un camino.

La programacin estructurada es un estilo con el cual l se busca que el programador elabore programas sencillos y fciles de entender, la programacin estructurada hace uso de tres estructuras bsicas de control que son: Estructura Secuencial, Estructura Selectiva y la Estructura Repetitiva ( Iterativa)

La programacin estructurada se basa un teorema fundamental, el cual afirma que cualquier programa, no importa el tipo de trabajo que ejecute, puede ser elaborado utilizando nicamente las tres estructuras bsicas.

1. Estructura Secuencial: Indica que las instrucciones de un programa se ejecutan una despus de la otra, en el mismo orden en el cual aparecen en el programa. Se representa grficamente como una caja despus de otra, ambas con una sola entrada y una nica salida.

Las cajas A y B pueden ser definidas para ejecutar desde una simple instruccin hasta un mdulo o programa completo, siempre y cuando stos tambin sean programas apropiados.

2. Estructura Selectiva: Tambin conocida como la estructura si verdadero - falso, plantea la


seleccin entre dos alternativas con base en el resultado de la evaluacin de una condicin; equivale a la instruccin IF de todos los lenguajes de programacin y se representa grficamente de la siguiente manera:

En el diagrama de flujo anterior, C es una condicin que se evala; A es la accin que se ejecuta cuando la evaluacin de esta condicin resulta verdadera y B es la accin ejecutada cuando el resultado de la evaluacin indica falso. La estructura tambin tiene una sola entrada y una sola salida; y las funciones A y B tambin pueden ser cualquier estructura bsica o conjunto de estructuras. Estructura Repetitiva (Iterativa): Tambin llamada la estructura hacer mientras - que, corresponde a la ejecucin repetida de una instruccin mientras que se cumple una determinada condicin. El diagrama de flujo para esta estructura es el siguiente:

Aqu el bloque A se ejecuta repetidamente mientras que la condicin C se cumpla o sea cierta. Tambin tiene una sola entrada y una sola salida; igualmente A puede ser cualquier estructura bsica o conjunto de estructuras.

La programacin modular

es un paradigma de programacin que consiste en dividir un programa en mdulos o subprogramas con el fin de hacerlo ms legible y manejable. Se presenta histricamente como una evolucin de la programacin estructurada para solucionar problemas de programacin ms grandes y complejos de lo que sta puede resolver. Al aplicar la programacin modular, un problema complejo debe ser dividido en varios subproblemas ms simples, y estos a su vez en otros subproblemas ms simples. Esto debe hacerse hasta obtener sus problemas lo suficientemente simples como para poder ser resueltos fcilmente con algn lenguaje de programacin. sta tcnica se llama refinamiento sucesivo, divide y vencers anlisis descendente (Top-Down). Un mdulo es cada una de las partes de un programa que resuelve uno de los su problemas en que se divide el problema complejo original. Cada uno de estos mdulos tiene una tarea bien definida y algunos necesitan de otros para poder operar. En caso de que un mdulo necesite de otro, puede comunicarse con ste mediante una interfaz de comunicacin que tambin debe estar bien definida. Uno de los problemas habituales del programador ocurre cuando los programas alcanzan un tamao considerable en cuanto a lnea de cdigo. El problema se puede volver tan complejo que fuera inabordable. Para mitigar este problema apareci la programacin modular. En ella el programa se divide en mdulos de tamao manejable. Cada mdulo realiza una funcin muy concreta y se pueden programar de forma independiente. Se basa en concentrar los esfuerzos en resolver problemas sencillos y una vez resueltos, el conjunto de esos problemas soluciona el problema original. En definitiva la programacin modular implementa el paradigma divide y vencers, tan importante en la programacin. El programa se descompone en mdulos. Los mdulos se puede entender que son pequeos programas. Reciben datos y a partir de ellos realizan un clculo o una determinada tarea. Una vez el mdulo es probado y validado se puede utilizar las veces que haga falta en el programa sin necesidad de tener que volver a programar. En C los mdulos se llaman funciones

ESTIMACIN DE COSTOS

INTRODUCCION

Todo proyecto de ingeniera de software debe partir con un buen plan, pero lamentablemente, la planificacin es una tarea nada trivial. Uno de los aspectos que dificultan la labor de administradores y jefes de proyecto en torno a la planificacin es la difcil tarea de realizar una estimacin de costos y plazos realista.

La estimacin es ms arte que ciencia; tambin es parte de la etapa de la planificacin y algunas actividades de la ingeniera. La diferencia en la estimacin de costos entre ingeniera de software y otras disciplinas es que en ingeniera de software lo principal para las personas es el costo; y en otras disciplinas el costo de las cosas materiales depende de la actividad.

Existen tcnicas para la estimacin de costos, pero para ello se requiere experiencia, acceso a una buena informacin histrica y coraje para confiar en medidas cuantitativas cuando todo lo que existe son datos cualitativos.

El manejador de costo principal para un proyecto de desarrollo de software es sin duda el tamao del producto. La medida del tamao debe ser tal que est en relacin directa con el esfuerzo de desarrollo, por lo que las mtricas de tamao tratan de considerar todos los aspectos que influyen en el costo, como tecnologa, tipos de recursos y complejidad.

MTRICAS PARA LA PRODUCTIVIDAD Y CALIDAD DEL SOFTWARE

La medicin es esencial para cualquier disciplina de ingeniera y la ingeniera de software no es una excepcin.

Las mtricas de software se refieren aun amplio rango de medidas para el software de computadoras dentro del contexto de la planificacin del proyecto de software, las mtricas de calidad pueden ser aplicadas a organizaciones, procesos y productos los cuales directamente afectan a la estimacin de costos.

Las mediciones en el mundo fsico pueden ser catalogadas en dos campos: medidas directas (por ej. La longitud de un tornillo), y medidas indirectas (por ej. Calidad de tornillos producidos, medida por la cuenta de los tornillos rechazados). Las mtricas de software pueden ser catalogadas de forma parecida.

Se puede clasificar en:

Mtricas de productividad, se centran en el rendimiento del proceso de la ingeniera de software.

Mtricas de Calidad, proporcionan una indicacin de cmo se ajusta el software, a los requerimientos implcitos y explcitos del cliente.

Mtricas Tcnicas, se centran en el carcter del software mas que en el proceso, a travs del cual el software a sido desarrollado.

Mtricas Orientadas al tamao, son utilizadas para obtener medidas directas del resultado y la calidad de la ingeniera del software.

Mtricas Orientadas a la Funcin, son medidas indirectas del software y del proceso por el cual se desarrollar; se centran en la funcionalidad o utilidad del programa (Puntos de Funcin)

Mtricas Orientadas a la persona, consiguen informacin sobre la forma en que la gente desarrolla software de computadora y sobre el punto de vista humano de la efectividad de las herramientas y mtodos.

ESTIMACION DEL PROYECTO DE SOFTWARE

Para realizar estimaciones seguras de coste y esfuerzo surge un numero de posible de opciones como:

Retrasar la estimacin mas adelante en el proyecto (obviamente se puede hacer una estimacin cien por ciento fiable despus de completar el proyecto)

Utilizar "tcnicas de descomposicin " relativamente simples para generar las estimaciones del proyecto de software (por ej. Estimacin LDC y PF)

Desarrollar un modelo emprico para el coste y el esfuerzo de software.

Adquirir una o ms herramientas automticas de estimacin.

Desdichadamente la primera opcin, aunque atractiva no es practica, porque las estimaciones del coste deben ser proporcionadas de antemano. Las tres opciones restantes son aproximaciones viables para la estimacin del proyecto de software. Las tcnicas de descomposicin utilizan una aproximacin de "divide y vencers " para la estimacin del proyecto de software. Los modelos de estimacin empricos pueden utilizarse para completar las tcnicas de descomposicin y ofrecer una aproximacin de la estimacin potencialmente evaluable por ella misma. Las herramientas automticas de estimacin implementan una o mas tcnicas de descomposicin o modelos empricos.

MODELOS DE ESTIMACIN EMPRICA

Un modelo de estimacin para el software por computadora utiliza formulas derivadas empricamente para predecir los datos.

Los datos empricos que soportan la mayora de los modelos se obtienen de una muestra limitada de proyectos. Tomando en cuenta los recursos se tienen los modelos recursos y consisten en una o ms ecuaciones obtenidas empricamente que predicen el esfuerzo (personas-mes), la duracin del proyecto (meses cronolgicos) o otros datos pertinentes al proyecto. Segn Basili describe cuatro modelos de recurso: modelos simple-variable estticos (ej. COCOMO), modelos multi-variables estticos, modelos multi-dinmicos variables y modelos tericos.

3.1.1 MODELO COCOMO Barry Boehm en su libro "economa de la ingeniera de software" detalla un modelo amplio de estimacin de costos llamado COCOMO (Constructive Cost Model). La palabra "constructive" se

refiere a el hecho que el modelo ayuda a un estimador a comprender mejor la complejidad del software; este modelo es un ejemplo de variable simple esttico y es usado por miles de administradores de proyecto de software . COCOMO ayuda a estimar el esfuerzo, tiempo, gente y costos (ya sea estos de desarrollo, equipamiento y mantenimiento). El modelo provee tres "niveles" de aplicacin: bsico, intermedio y avanzado, basados en los factores considerados por el modelo. Bsico, es un modelo esttico simplemente evaluado que calcula el esfuerzo (y costo) del desarrollo del software como funcin del programa expresado en lneas de cdigo (LDC estimados). Intermedio, calcula el esfuerzo del desarrollo del software como funcin del tamao del programa y un conjunto de "guas de costo" que incluye una evaluacin subjetiva del producto, hardware, personal y de los atributos del proyecto. Avanzado, incorpora todas las caractersticas de la versin intermedia con una evaluacin del impacto de las vas de costo en cada fase (anlisis, diseo, etc) del proceso de la ingeniera de software. El modelo bsico se extiende para considerar un conjunto de atributos de guas de costo que pueden agruparse en cuatro categoras principales: Producto ( por ej. Requerimientos de software, confiabilidad, tamao de la base de datos, y complejidad del producto). Computadora (por ej. Restricciones en el tiempo de ejecucin y almacenamiento). Personal (por ej. Capacidad de anlisis, experiencia en aplicaciones tanto en lenguajes de programacin y capacidad del programador) Proyecto (por ej. Uso de practicas modernas de programacin, uso de herramientas de software y requerimiento de un plan de desarrollo). En cada nivel de aplicacin estn definidos para tres tipos de proyectos de software: Modo orgnico, proyectos de software relativamente pequeos y sencillos en los que pequeos equipos con buena experiencia en la aplicacin trabajan en un conjunto de requerimiento poco rgidos. Modo semi-acoplado(semi-detached), un proyecto de software intermedio en tamao y complejidad en el cual equipos con distintos niveles de experiencia debe satisfacer requerimientos poco y medio rgidos Modo acoplado(detached), un proyecto de software que debe ser desarrollado dentro un conjunto estricto de hardware, software y de restricciones operativas.

You might also like