You are on page 1of 8

Introduccin

A travs de la historia de la ingeniera del software ha evolucionado un conjunto de conceptos fundamentales de diseo de software, aunque el grado de inters en cada concepto ha variado con los aos, han pasado la prueba del tiempo ofreciendo cada uno al ingeniero de software fundamentos sobre el cual pueden aplicarse mtodos de diseo ms elaborados. El diseo de Software juega un papel importante en el desarrollo de software lo cual permite al ingeniero de software producir varios modelos del sistema o producto de que se va a construir el mismo que forman una especie de plan de la solucin de la aplicacin. Estos modelos puede evaluarse en relacin con su calidad y mejorarse antes de generar cdigo, de realizar pruebas y de que los usuarios finales se vean involucrados a gran escala. El diseo es el sitio en el que se establece la calidad del software. Diseo es definido como: "El proceso de definicin de la arquitectura, componentes, interfaces y otras caractersticas de un sistema o componente que resulta de este proceso" [IEEE610.12-90]. Palabras Claves Definicin de Documentos de Software (IEEE) SQAP: Software Quality Assurance Plan IEEE 730 SCMP: Software Configuration Management Plan IEEE 828 STD: Software Test Documentation IEEE 829 SRS: Software Requirements Specification IEEE 830 SVVP: Software Validation & Verification Plan IEEE 1012 SDD: Software Design Description IEEE 1016 SPMP: Software Project Management Plan IEEE 1058

Fundamentos del Diseo de Software

Conceptos generales de diseo.

El software no es el nico campo donde el diseo se encuentra inmiscuido. En general podemos ver el diseo como una forma para resolucin de problemas. El problema sin solucin definitiva es interesante en trminos de comprensin del diseo. Un numero de otras nociones y conceptos son tambin de inters en la comprensin del diseo en su sentido general, objetivos, limitaciones, alternativas, representaciones y soluciones

Contexto del diseo de software.

El diseo del software se encuentra en el ncleo tcnico de la respectiva ingeniera y se aplica de manera independiente al modelo de software que se utilice. Una vez que se analizan y especifican los requisitos, el diseo del software es la ltima accin de la ingeniera correspondiente dentro de la actividad del modelado, la cual establece una plataforma para la construccin (generacin de cdigo y prueba). "El milagro ms comn de la ingeniera de software es la transicin del anlisis al diseo y del diseo al cdigo" Richard Due

Proceso del Diseo de Software. Diseo Arquitectnico.

El diseo arquitectnico puede representarse al usar uno o ms de muchos modelos diferentes. Los modelos estructurales representan la arquitectura como una coleccin organizada de componentes del programa. Los modelos del marco de trabajo repetible incrementan el grado de abstraccin del diseo al intentar identificar marcos de trabajo repetibles del diseo arquitectnico que se encuentran en tipos de aplicaciones similares. El diseo de la arquitectura de software se describe cmo se descompone y como estn organizados los componentes en el software. [IEEEP1471-00]

Diseo Detallado.

El diseo detallado se describe el comportamiento especfico de estos componentes.


Tcnicas Permitidas. Abstraccin

Abstraccin es el proceso o el resultado de la generalizacin de la reduccin del contenido de la informacin de un concepto o un fenmeno observable, por lo general, con el fin de conservar nicamente la informacin que es relevante para un propsito en particular. Cuando se considera una solucin modular a cualquier problema se pueden exponer muchos grados de abstraccin.

Fuente: http://www.monografias.com/trabajos73/diseno-software/diseno-software.shtml

http://www.ieee.org.ar/downloads/2006-montilva-productos.pdf http://laboratorios.fi.uba.ar/lsi/scalone-tesis-maestria-ingenieria-en-calidad.pdf http://www.ieee.org.ar/downloads/2006-montilva-productos.pdf

01/11/011 http://iidia.com.ar/rgm/comunicaciones/c-icie99-ingenieriasoftwareeducativo.pdf

libro: http://www.unach.edu.ec/Virtualizacion/Ing_Software/CAP%C3%8DTULO_2.htm

Ingeniera de software es el rea de la ingeniera que ofrece mtodos y tcnicas para desarrollar y mantener software. Esta ingeniera trata con reas muy diversas de la informtica y de las ciencias de la computacin, tales como construccin de compiladores, sistemas operativos, o desarrollos Intranet/Internet, abordando todas las fases del ciclo de vida del desarrollo de cualquier tipo de sistemas de informacin y aplicables a infinidad de reas: negocios, investigacin cientfica, medicina, produccin, logstica, banca, control de trfico, meteorologa, derecho, Internet, Intranet, etc. Una definicin precisa an no ha sido contemplada en los diccionarios, sin embargo se pueden citar las enunciadas por algunos de los ms prestigiosos autores:

Ingeniera de software es el estudio de los principios y metodologas para el desarrollo y mantenimiento de sistemas software (Zelkovitz, 1978) Ingeniera de software es la aplicacin prctica del conocimiento cientfico al diseo y construccin de programas de computadora y a la documentacin asociada requerida para desarrollar, operar y mantenerlos. Se conoce tambin como desarrollo de software o produccin de software (Bohem, 1976). Ingeniera de software trata del establecimiento de los principios y mtodos de la ingeniera a fin de obtener software de modo rentable, que sea fiable y trabaje en mquinas reales (Bauer, 1972). Es la aplicacin de un enfoque sistemtico, disciplinado y cuantificable al desarrollo, operacin y mantenimiento del software; es decir, la aplicacin de la ingeniera al software (IEEE, 1993).

En el 2004, en los Estados Unidos, la Oficina de Estadsticas del Trabajo (U. S. Bureau of Labor Statistics) cont 760.840 ingenieros de software de computadora.1 El trmino "ingeniero de software", sin embargo, se utiliza en forma genrica en el ambiente empresarial, y no todos los ingenieros de software poseen realmente ttulos de ingeniera de universidades reconocidas. Algunos autores consideran que "desarrollo de software" es un trmino ms apropiado que "ingeniera de software" para el proceso de crear software. Personas como Pete McBreen (autor de "Software Craftmanship") cree que el trmino IS implica niveles de rigor y prueba de procesos que no son apropiados para todo tipo de desarrollo de software. Indistintamente se utilizan los trminos "ingeniera de software" o "ingeniera del software". En Hispanoamrica el trmino usado normalmente es el primero de ellos. La creacin del software es un proceso intrnsecamente creativo y la ingeniera del software trata de sistematizar este proceso con el fin de acotar el riesgo del fracaso en la consecucin del objetivo creativo por medio de diversas tcnicas que se han demostrado adecuadas en base a la experiencia previa. La IS se puede considerar como la ingeniera aplicada al software, esto es, por medios sistematizados y con herramientas preestablecidas, la aplicacin de ellos de la forma ms eficiente para la obtencin de resultados ptimos; objetivos que siempre busca la ingeniera. No es slo de la resolucin de problemas, sino ms bien teniendo en cuenta las diferentes soluciones, elegir la ms apropiada.

Contenido
[ocultar]

1 Implicaciones socioeconmicas o 1.1 Econmicamente o 1.2 Socialmente 2 Metodologa o 2.1 Etapas del proceso 2.1.1 Anlisis de requerimientos 2.1.2 Especificacin 2.1.3 Arquitectura 2.1.4 Programacin 2.1.5 Prueba 2.1.6 Documentacin 2.1.7 Mantenimiento 3 Modelos de desarrollo de software o 3.1 Naturaleza de la IS 3.1.1 Matemticas 3.1.2 Creacin 3.1.3 Gestin de Proyectos 3.1.4 Arte 4 Responsabilidad 5 Educacin tica o 5.1 Organizaciones 6 Vase tambin 7 Referencias 8 Bibliografa

9 Enlaces externos

[editar] Implicaciones socioeconmicas


La ingeniera de software afecta a la economa y las sociedades de variadas formas.

[editar] Econmicamente
En los Estados Unidos, el software contribuy a una octava parte de todo el incremento del PIB durante la dcada de 1990 (alrededor de 90,000 millones de dlares por ao), y un noveno de todo el crecimiento de productividad durante los ltimos aos de la dcada (alrededor de 33.000 millones de dlares estadounidenses por ao). La ingeniera de software contribuy a US$ 1 billn de crecimiento econmico y productividad en esa dcada. Alrededor del globo, el software contribuye al crecimiento econmico en formas similares, aunque es difcil de encontrar estadsticas fiables. [cita requerida] Adems, con la industria del lenguaje est hallando cada vez ms campos de aplicacin a escala global.

[editar] Socialmente
La ingeniera de software cambia la cultura del mundo debido al extendido uso de la computadora. El correo electrnico (E-mail), la WWW y la mensajera instantnea permiten a la gente interactuar en nuevas formas. El software baja el costo y mejora la calidad de los servicios de salud, los departamentos de bomberos, las dependencias gubernamentales y otros servicios sociales. Los proyectos exitosos donde se han usado mtodos de ingeniera de software incluyen a GNU/Linux, el software del transbordador espacial, los cajeros automticos y muchos otros.

[editar] Metodologa
Un objetivo de dcadas ha sido el encontrar procesos y metodologas, que sean sistemticas, predecibles y repetibles, a fin de mejorar la productividad en el desarrollo y la calidad del producto software.

[editar] Etapas del proceso


La ingeniera de software requiere llevar a cabo numerosas tareas, dentro de etapas como las siguientes: [editar] Anlisis de requerimientos Extraer los requisitos y requerimientos de un producto de software es la primera etapa para crearlo. Mientras que los clientes piensan que ellos saben lo que el software tiene que hacer, se requiere de habilidad y experiencia en la ingeniera de software para reconocer requerimientos incompletos, ambiguos o contradictorios. El resultado del anlisis de requerimientos con el cliente se plasma en el documento ERS, Especificacin de Requerimientos del Sistema, cuya estructura puede venir definida por varios estndares, tales como CMMI. Asimismo, se define un diagrama de Entidad/Relacin, en el que se plasman las principales entidades que participarn en el desarrollo del software. La captura, anlisis y especificacin de requerimientos (incluso pruebas de ellos), es una parte crucial; de esta etapa depende en gran medida el logro de los objetivos finales. Se han ideado modelos y diversos procesos de trabajo para estos fines. Aunque an no est formalizada, ya se habla de la Ingeniera de requerimientos, por

ejemplo en dos captulos del libro de Sommerville "Ingeniera del software" titulados "Requerimientos del software" y "Procesos de la Ingeniera de Requerimientos". La IEEE Std. 830-1998 normaliza la creacin de las especificaciones de requerimientos de software (Software Requirements Specification). [editar] Especificacin La especificacin de requisitos describe el comportamiento esperado en el software una vez desarrollado. Gran parte del xito de un proyecto de software radicar en la identificacin de las necesidades del negocio (definidas por la alta direccin), as como la interaccin con los usuarios funcionales para la recoleccin, clasificacin, identificacin, priorizacin y especificacin de los requisitos del software. Entre las tcnicas utilizadas para la especificacin de requisitos se encuentran:

Caso de uso, Historias de usuario,

Siendo los primeros ms rigurosas y formales, los segundas ms giles e informales. [editar] Arquitectura La integracin de infraestructura, desarrollo de aplicaciones, bases de datos y herramientas gerenciales, requieren de capacidad y liderazgo para poder ser conceptualizados y proyectados a futuro, solucionando los problemas de hoy. El rol en el cual se delegan todas estas actividades es el del Arquitecto. El arquitecto de software es la persona que aade valor a los procesos de negocios gracias a su valioso aporte de soluciones tecnolgicas. La arquitectura de sistemas en general, es una actividad de planeacin, ya sea a nivel de infraestructura de red y hardware, o de software. La arquitectura de software consiste en el diseo de componentes de una aplicacin (entidades del negocio), generalmente utilizando patrones de arquitectura. El diseo arquitectnico debe permitir visualizar la interaccin entre las entidades del negocio y adems poder ser validado, por ejemplo por medio de diagramas de secuencia. Un diseo arquitectnico describe en general el cmo se construir una aplicacin de software. Para ello se documenta utilizando diagramas, por ejemplo:

Diagramas de clases Diagramas de base de datos Diagramas de despliegue plegados Diagramas de secuencia multidireccional

Siendo los dos primeros los mnimos necesarios para describir la arquitectura de un proyecto que iniciar a ser codificado. Depende del alcance del proyecto, complejidad y necesidades, el arquitecto elige qu diagramas elaborar. Entre las herramientas para disear arquitecturas de software se encuentran:

Enterprise Architect Microsoft Visio for Enterprise Architects

[editar] Programacin

Reducir un diseo a cdigo puede ser la parte ms obvia del trabajo de ingeniera de software, pero no necesariamente es la que demanda mayor trabajo y ni la ms complicada. La complejidad y la duracin de esta etapa est ntimamente relacionada al o a los lenguajes de programacin utilizados, as como al diseo previamente realizado. [editar] Prueba Consiste en comprobar que el software realice correctamente las tareas indicadas en la especificacin del problema. Una tcnica de prueba es probar por separado cada mdulo del software, y luego probarlo de forma integral, para as llegar al objetivo. Se considera una buena prctica el que las pruebas sean efectuadas por alguien distinto al desarrollador que la program, idealmente un rea de pruebas; sin perjuicio de lo anterior el programador debe hacer sus propias pruebas. En general hay dos grandes formas de organizar un rea de pruebas, la primera es que est compuesta por personal inexperto y que desconozca el tema de pruebas, de esta forma se evala que la documentacin entregada sea de calidad, que los procesos descritos son tan claros que cualquiera puede entenderlos y el software hace las cosas tal y como estn descritas. El segundo enfoque es tener un rea de pruebas conformada por programadores con experiencia, personas que saben sin mayores indicaciones en qu condiciones puede fallar una aplicacin y que pueden poner atencin en detalles que personal inexperto no considerara. [editar] Documentacin Todo lo concerniente a la documentacin del propio desarrollo del software y de la gestin del proyecto, pasando por modelaciones (UML),diagramas de casos de uso, pruebas, manuales de usuario, manuales tcnicos, etc; todo con el propsito de eventuales correcciones, usabilidad, mantenimiento futuro y ampliaciones al sistema. [editar] Mantenimiento Mantener y mejorar el software para enfrentar errores descubiertos y nuevos requisitos. Esto puede llevar ms tiempo incluso que el desarrollo inicial del software. Alrededor de 2/3 [cita requerida] de toda la ingeniera de software tiene que ver con dar mantenimiento. Una pequea parte de este trabajo consiste en arreglar errores, o bugs. La mayor parte consiste en extender el sistema para hacer nuevas cosas. De manera similar, alrededor de 2/3 de toda la ingeniera civil, arquitectura y trabajo de construccin es dar mantenimiento [cita requerida].

[editar] Modelos de desarrollo de software


La ingeniera de software tiene varios modelos, paradigmas o filosofas de desarrollo en los cuales se puede apoyar para la realizacin de software, de los cuales podemos destacar a stos por ser los ms utilizados y los ms completos:

Modelo en cascada o Clsico (modelo tradicional) Modelo de prototipos Modelo en espiral Desarrollo por etapas Desarrollo iterativo y creciente o Iterativo e Incremental RAD (Rapid Application Development) Desarrollo concurrente Proceso Unificado RUP (Proceso Unificado de Rational)

[editar] Naturaleza de la IS

La ingeniera de software tiene que ver con varios campos en diferentes formas: [editar] Matemticas Los programas tienen muchas propiedades matemticas. Por ejemplo la correccin y la complejidad de muchos algoritmos son conceptos matemticos que pueden ser rigurosamente probados. El uso de matemticas en la IS es llamado mtodos formales. [editar] Creacin Los programas son construidos en una secuencia de pasos. El hecho de definir propiamente y llevar a cabo estos pasos, como en una lnea de ensamblaje, es necesario para mejorar la productividad de los desarrolladores y la calidad final de los programas. Este punto de vista inspira los diferentes procesos y metodologas que encontramos en la IS. [editar] Gestin de Proyectos El software comercial (y mucho no comercial) requiere gestin de proyectos. Hay presupuestos y establecimiento de tiempos. Gente para liderar. Recursos (espacio de oficina, computadoras) por adquirir. Todo esto encaja apropiadamente con la visin de la Gestin de Proyectos. [editar] Arte Los programas contienen muchos elementos artsticos. Las interfaces de usuario, la codificacin, etc. Incluso la decisin para un nombre de una variable o una clase. Donald Knuth es famoso porque ha argumentado que la programacin es un arte.

[editar] Responsabilidad
La responsabilidad en la ingeniera del software es un concepto complejo, sobre todo porque al estar los sistemas informticos fuertemente caracterizados por su complejidad, es difcil apreciar sus consecuencias. En la ingeniera del software la responsabilidad ser compartida por un grupo grande de personas, que comprende desde el ingeniero de requisitos, hasta el arquitecto software, y contando con el diseador, o el encargado de realizar las pruebas. Por encima de todos ellos destaca el director del proyecto. El software demanda una clara distribucin de la responsabilidad entre los diferentes roles que se dan en el proceso de produccin. El ingeniero del software tiene una responsabilidad moral y legal limitada a las consecuencias directas.

[editar] Educacin tica


Fuente: http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software
IEEE (ledo i-e-cubo en Espaa e i-triple-e en latinoamrica) corresponde a las siglas de (Institute of Electrical and Electronics Engineers) en espaol Instituto de Ingenieros Elctricos y Electrnicos, una asociacin tcnico-profesional mundial dedicada a la estandarizacin, entre otras cosas. Con cerca de 400.000 miembros y voluntarios en 180 pases, es la mayor asociacin internacional sin nimo de lucro formada por profesionales de las nuevas tecnologas, como ingenieros elctricos, ingenieros en electrnica, cientficos de la computacin,

ingenieros en informtica, ingenieros en biomdica, ingenieros en telecomunicacin e ingenieros en Mecatrnica. Su creacin se remonta al ao 1884, contando entre sus fundadores a personalidades de la talla de Thomas Alva Edison, Alexander Graham Bell y Franklin Leonard Pope. En 1963 adopt el nombre de IEEE al fusionarse asociaciones como el AIEE (American Institute of Electrical Engineers) y el IRE (Institute of Radio Engineers). Segn el mismo IEEE, su trabajo es promover la creatividad, el desarrollo y la integracin, compartir y aplicar los avances en las tecnologas de la informacin, electrnica y ciencias en general para beneficio de la humanidad y de los mismos profesionales. Algunos de sus estndares son:

VHDL POSIX IEEE 1394 IEEE 488 IEEE 802 IEEE 802.11 IEEE 754

Mediante sus actividades de publicacin tcnica, conferencias y estndares basados en consenso, el IEEE produce ms del 30% de la literatura publicada en el mundo[cita requerida] sobre ingeniera elctrica, en computacin, telecomunicaciones y tecnologa de control, organiza ms de 1000 conferencias al ao en todo el mundo,[cita requerida] y posee cerca de 900 estndares activos, con otros 700 ms bajo desarrollo

Fuente: http://es.wikipedia.org/wiki/IEEE_Computer_Society

You might also like