ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

¿Qué Es El Diseño De Software?

Aabp12317 de Octubre de 2014

11.428 Palabras (46 Páginas)174 Visitas

Página 1 de 46

¿Qué es el Diseño de Software?

Por Jack W. Reeves

Técnicas orientadas a objetos y C ++ en particular, parecen estar tomando el mundo del software por la tormenta. Numerosos artículos y libros han aparecido describir cómo aplicar las nuevas técnicas. En general, las cuestiones de si las técnicas OO son sólo exageraciones han sido reemplazadas por las preguntas de cómo obtener los beneficios con la menor cantidad de dolor. Técnicas orientadas a objetos han estado alrededor por algún tiempo, pero esta popularidad explosión parece un poco inusual. ¿Por qué el repentino interés? Se han ofrecido todo tipo de explicaciones. En verdad, probablemente no hay una única razón. Probablemente, una combinación de factores, finalmente ha alcanzado la masa crítica y las cosas están despegando. Sin embargo, parece que C ++ en sí es un factor importante en esta última fase de la revolución del software. Una vez más, es probable que haya un número de razones por qué, pero quiero sugerir una respuesta desde una perspectiva ligeramente diferente: C ++ ha hecho popular porque hace más fácil el diseño de software y el programa al mismo tiempo.

Si ese comentario parece un poco inusual, es deliberado. Lo que quiero hacer en este artículo es echar un vistazo a la relación entre la programación y diseño de software. Durante casi 10 años he sentido que la industria del software en conjunto pierde un punto sutil acerca de la diferencia entre el desarrollo de un diseño de software y lo que es un diseño de software es en realidad. Creo que hay una profunda lección en la creciente popularidad de C ++ sobre lo que podemos hacer para ser mejores ingenieros de software, aunque sólo lo vemos. Esta lección es que la programación no se trata de la construcción de software; programación es sobre el diseño de software.

Hace años yo estaba asistiendo a un seminario en el que surgió la pregunta de si el desarrollo de software es una disciplina de ingeniería o no. Aunque no recuerdo la discusión resultante, que sí recuerdo cómo catalizó mi propio pensamiento de que la industria del software ha creado algunos paralelismos falsos con la ingeniería de hardware, mientras que faltan algunos paralelismos perfectamente válidas. En esencia, llegué a la conclusión de que no somos ingenieros de software, porque no nos damos cuenta lo que es un diseño de software es en realidad. Estoy aún más convencido de que hoy en día.

El objetivo final de cualquier actividad de ingeniería es la de algún tipo de documentación. Cuando un esfuerzo de diseño está completo, la documentación de diseño es entregado al equipo de fabricación. Este es un grupo completamente diferente con completamente diferentes habilidades del equipo de diseño. Si los documentos de diseño representan verdaderamente un diseño completo, el equipo de fabricación puede proceder a construir el producto. De hecho, se puede proceder a construir una gran cantidad de producto, todo ello sin ninguna intervención adicional de los diseñadores. Después de revisar el ciclo de vida de desarrollo de software como lo entendí, llegué a la conclusión de que la única documentación de software que en realidad parece satisfacer los criterios de un diseño de ingeniería es los listados de código fuente.

Probablemente hay suficientes argumentos a favor y en contra de esta premisa para llenar numerosos artículos. Este artículo se supone que el código fuente final es el diseño de software real y luego se examinan algunas de las consecuencias de esa suposición. Puede que no sea capaz de demostrar que este punto de vista es correcto, pero espero que no se muestra a explicar algunos de los hechos observados de la industria del software, incluyendo la popularidad de C ++.

No es una de las consecuencias de considerar el código como diseño de software que abruma por completo todos los demás. Es tan importante y tan obvio que es un punto ciego total para la mayoría de las organizaciones de software. Este es el hecho de que el software es barato de construir. No califican como de bajo costo; que es tan barato que es casi gratis. Si el código fuente es un diseño de software, software, entonces en realidad la construcción se realiza por los compiladores y enlazadores. A menudo nos referimos al proceso de compilación y enlazado de un sistema completo de software como "hacer una build". La inversión de capital en equipos de construcción de software es bajo todo lo que realmente se necesita es una computadora, un editor, un compilador y un enlazador. Una vez que el entorno de compilación está disponible, entonces realmente hacer una compilación de software sólo se necesita un poco de tiempo. Compilar un programa 50000 línea C ++ puede parecer una eternidad, pero ¿cuánto tiempo se tarda en construir un sistema de hardware que tenía un diseño de la misma complejidad que 50.000 líneas de C ++.

Otra consecuencia de considerar el código fuente como el diseño de software es el hecho de que un diseño de software es relativamente fácil de crear, al menos en el sentido mecánico. Escritura (es decir, el diseño) un módulo de software típico de 50 a 100 líneas de código es por lo general sólo un par de días de esfuerzo (conseguirla totalmente depurado es otra historia, pero más sobre esto más adelante). Es tentador preguntarse si hay alguna otra disciplina de ingeniería que pueden producir diseños de tal complejidad como software en tan poco tiempo, pero primero tenemos que encontrar la manera de medir y comparar la complejidad. Sin embargo, es obvio que los diseños de software ponen muy grande con bastante rapidez.

Teniendo en cuenta que los diseños de software son relativamente fáciles de apagar, y esencialmente libre de construir, una revelación sorprendente es que los diseños de software tienden a ser muy grande y complejo. Esto puede parecer obvio, pero la magnitud del problema es a menudo ignorado. Los proyectos escolares a menudo terminan siendo varios miles de líneas de código. Hay productos de software con diseños de 10.000 líneas que se regalan por sus diseñadores. Hace tiempo que hemos pasado el punto donde el software simple es de mucho interés. Productos de software comerciales típicas tienen diseños que constan de cientos de miles de líneas. Muchos diseños de software dirigido a millones. Además, los diseños de software son casi siempre en constante evolución. Mientras que el diseño actual sólo puede ser unos pocos miles de líneas de código, muchas veces que en realidad puede haber sido escrito durante la vida del producto.

Aunque sin duda hay ejemplos de diseños de hardware que son sin duda tan complejo como diseños de software, tenga en cuenta dos hechos sobre el hardware moderno. Uno, los esfuerzos de ingeniería de hardware complejas no son siempre tan libre de errores como los críticos de software nos quieren hacer creer. Principales microprocesadores se han enviado con errores en su lógica, puentes colapsados, presas rotas, aviones caídos del cielo, y miles de automóviles y otros productos de consumo han sido retirados del mercado - todo dentro de la memoria reciente y todo el resultado de errores de diseño. En segundo lugar, complejos diseños de hardware tienen fases de construcción correspondientemente complejos y costosos. Como resultado, la capacidad de fabricar tales sistemas limita el número de empresas que producen diseños de hardware verdaderamente complejos. No existen tales limitaciones para el software. Hay cientos de empresas de software y miles de sistemas de software muy complejas en existencia. Tanto el número y la complejidad están creciendo diariamente. Esto significa que la industria del software no es probable para encontrar soluciones a sus problemas, tratando de emular a los desarrolladores de hardware. En todo caso, como los sistemas CAD y CAM han ayudado a los diseñadores de hardware para crear más y más complejos diseños, ingeniería de hardware se está volviendo más y más como el desarrollo de software.

El diseño de software es un ejercicio de gestión de la complejidad. Existe la complejidad dentro del propio diseño de software, dentro de la organización de software de la empresa, y dentro de la industria en su conjunto. El diseño de software es muy similar al diseño de sistemas. Se puede abarcar varias tecnologías ya menudo implica múltiples subdisciplinas. Las especificaciones del software tienden a ser fluida, y cambiar rápidamente y, a menudo, por lo general, mientras que el proceso de diseño está todavía en curso. Equipos de desarrollo de software también tienden a ser fluida, asimismo cambiando a menudo en el medio del proceso de diseño. En muchos sentidos, el software lleva más semejanza con los sistemas sociales u orgánicos complejos que a hardware. Todo esto hace que el diseño de software un proceso difícil y propenso a error. Nada de esto es un pensamiento original, pero casi 30 años después de que comenzó la revolución de la ingeniería de software, desarrollo de software sigue siendo visto como un arte indisciplinado en comparación con otras profesiones de ingeniería.

El consenso general es que cuando los ingenieros reales a superar con un diseño, sin importar su complejidad, que son bastante seguro de que funcionará. También son bastante seguro de que se puede construir utilizando técnicas de construcción aceptadas. Para que esto suceda, los ingenieros de hardware gastan una cantidad considerable de tiempo validar y refinar sus diseños. Considere la posibilidad de un diseño del puente, por ejemplo. Antes de que un diseño de este tipo es en realidad construida los ingenieros hacen análisis estructural; construyen modelos informáticos y simulaciones de ejecución; construyen

...

Descargar como (para miembros actualizados) txt (69 Kb)
Leer 45 páginas más »
Disponible sólo en Clubensayos.com