El software: naturaleza y calidad
Enviado por Emmanuel de Jesús Velásquez Martínez • 8 de Abril de 2019 • Ensayo • 11.842 Palabras (48 Páginas) • 124 Visitas
Capítulo 2
El software: naturaleza y calidad.
El objetivo de cada actividad de ingeniería es construir algo, un artefacto o un producto; de modo que el ingeniero civil construye un puente, el ingeniero aeroespacial un avión, el ingeniero electrónico un circuito. El producto de ingeniería de software es un sistema de software: no es tan tangible como los otros, pero sin embargo es un artefacto capaz de responder a una función de uso específica.
La característica que quizás más distingue al software de otros productos es el hecho de que es "dúctil": es decir, es posible modificar el producto en lugar de modificar el proyecto muy fácilmente y esto lo hace sustancialmente diferente de otros productos, como automóviles u hornos.
Esta peculiaridad del software es a menudo mal utilizada. Aunque es posible modificar un puente o un avión para satisfacer nuevas necesidades (por ejemplo, ajustar el puente al flujo de tráfico en aumento o permitir que un avión transporte más mercancías) este cambio nunca se realiza a la ligera, y ciertamente no se intenta sin reelaborar primero el proyecto y verificar el impacto del cambio en profundidad. En contraste, a los ingenieros de software a menudo se les exige hacer cambios sustanciales. La ductilidad del software lleva a pensar que hacer cambios es trivial, pero en la práctica no lo es. Es fácil cambiar el código a través de un editor de texto, pero no es fácil asegurarse de que el software cumpla con las necesidades para las que se requirió un cambio. Por lo tanto, es bueno que el software se trate a la par con otros productos de ingeniería: un cambio en el software debe verse como un cambio en el proyecto en lugar de en el código. Una propiedad como la ductilidad se puede explotar ventajosamente, pero debe hacerse con disciplina.
Otra característica del software es que su creación es intensiva en humanos, es decir, requiere una gran intensidad de trabajo; En esencia, requiere una "ingeniería" en lugar de una actividad de "fabricación". En la mayoría de las otras disciplinas, el proceso de fabricación determina el costo final del producto; Además, el proceso de producción debe gestionarse de manera precisa, de modo que no se introduzcan defectos no deseados en el producto. Las mismas consideraciones se aplican a los productos de hardware, mientras que, para el software, la fabricación se reduce a un proceso de duplicación trivial. El proceso de producción del software consiste esencialmente en el diseño y la implementación, no en la fabricación. Este proceso debe cumplir con los criterios apropiados que aseguran la producción de software de alta calidad. Es deseable que un producto cumpla ciertas necesidades y cumpla con los estándares de aceptación que prescriben las cualidades que debe poseer. Por ejemplo, la funcionalidad de un puente es facilitar la conexión de un lugar a otro; Una de las cualidades esperadas es que esto no se colapsa en presencia de vientos muy fuertes o cuando es atravesado por una fila de camiones.
En las disciplinas de la ingeniería tradicional, el ingeniero tiene herramientas para describir las cualidades del producto de una manera distinta del diseño del producto en sí. En ingeniería de software, esta distinción no es tan clara: las cualidades de un producto de software a menudo se mezclan en especificaciones, junto con las cualidades intrínsecas del proyecto.
En este capítulo examinaremos las cualidades relevantes de los productos de software y los procesos de producción de software. Estas cualidades se convertirán en nuestros objetivos a perseguir en la práctica de la ingeniería de software. En el siguiente capítulo presentaremos los principios de ingeniería de software aplicables para lograr estos objetivos. También es importante verificar y medir la presencia de la calidad: estos temas se presentan en la Sección 2.4 y se analizan en el Capítulo 6.
2.1 Clasificación de las cualidades del software.
Hay muchas cualidades deseables para el software; Algunos se aplican tanto al producto como al proceso utilizado para su desarrollo.
El usuario requiere que el producto de software sea confiable, eficiente y fácil de usar. El fabricante de software desea que sea verificable, mantenible, portátil y extensible.
El gerente de un proyecto de software desea que el proceso de desarrollo sea productivo, predecible y fácil de controlar. En esta sección analizaremos dos clasificaciones diferentes de cualidades relacionadas con el software: cualidades internas y cualidades externas, por un lado, y calidad del producto y calidad del proceso, por el otro.
2.1.1 Cualidades internas y externas
Podemos dividir la calidad del software en dos categorías: interna y externa. Las cualidades externas son visibles para los usuarios del sistema, mientras que las cualidades internas afectan a los desarrolladores.
En general, los usuarios de software solo están interesados en cualidades externas, pero son cualidades internas, que en gran medida tienen que ver con la estructura del software, para ayudar a los desarrolladores a lograr cualidades externas. Por ejemplo, la calidad interna de verificabilidad es necesaria para obtener la calidad externa de confiabilidad. En muchos casos, sin embargo, las cualidades están estrechamente relacionadas entre sí y la distinción entre cualidades internas y externas no está tan marcada.
2.1.2 Calidad del proceso y calidad del producto.
Se utiliza un proceso para hacer un producto de software. Es posible atribuir ciertas cualidades a un proceso, incluso si las cualidades del proceso a menudo se correlacionan con las del producto. Por ejemplo, la confiabilidad de un producto aumenta si el proceso relacionado requiere una planificación cuidadosa de los datos de prueba antes de que se lleve a cabo una actividad de diseño y desarrollo del sistema. Al abordar la calidad del software, es bueno tratar de distinguir entre la calidad del proceso y la calidad del producto.
El término producto generalmente se refiere a lo que finalmente se entrega al cliente. Aunque esta es una definición aceptable desde el punto de vista del cliente, no es correcta para el desarrollador, ya que el desarrollador produce una serie de productos intermedios durante el proceso de desarrollo. El producto que realmente es visible para el cliente es el código ejecutable y los manuales de usuario, pero el desarrollador produce una gran cantidad de otros artefactos, como documentos de especificación y especificación del proyecto, datos de prueba, etc. Utilizaremos el término artefacto para denotar estos productos intermedios y para distinguirlos del producto final entregado al cliente. Estos productos intermedios a menudo están sujetos a los mismos requisitos de calidad que el producto final. Como hay muchos productos intermedios, es posible que diferentes subconjuntos de estos puedan ponerse a disposición de diferentes clientes.
...