2010-01-24 16 views
5

En términos de diseño de software, ¿qué significa realmente "Inconsistency" e "Incompleteness"?Terminología de Ingeniería de Software - ¿Qué significa "Inconsistencia" e "Incompleteness" realmente significa

E.g. - Creación de especificaciones

El uso de métodos formales de ingeniería de software se dice que es menos "inconsistente" e "incompleto" que otros métodos menos formales como el diseño orientado a objetos al crear especificaciones.

+4

Pueden significar muchas cosas. ¿Puedes proporcionar ejemplos de uso que no encuentres claro? – jfawcett

+0

significan no consistente y no completo –

+0

@jfawcett Agregué un ejemplo – Julian

Respuesta

3

Inconsistencia e incompletitud son términos originalmente de lógica formal, donde se usan para describir sistemas lógicos.

Las definiciones completas dependen del contexto exacto, pero inconsistency significa algo así como "para algunas X, puedes probar tanto X como! X", y incompleteness significa algo así como "para algunas X, no puedes probar X ¡y no puedes probar! X ".

Entonces, para las especificaciones, entiendo "inconsistente" significa algo como "no se puede implementar, porque es contradictorio de alguna manera" e "incompleto" significa "no especificado": para algunas entradas, el los resultados no están claramente definidos ".

1

En los sistemas de bases de datos, una transacción consistente es aquella que no infringe ninguna restricción de integridad durante su ejecución. Si una transacción deja la base de datos en un estado ilegal, se cancela y se informa un error.

En los algoritmos, la noción de integridad se refiere a la capacidad del algoritmo para encontrar una solución, si existe, y si no, informa que no hay solución posible.

En teoría de complejidad computacional, un problema P es completo para una clase de complejidad C, bajo un tipo de reducción dado, si P está en C, y cada problema en C se reduce a P usando esa reducción. Por ejemplo, cada problema en la clase NP-complete está completo para la clase NP, bajo reducción de tiempo polinomial, muchos uno.

En las pruebas de software, la integridad tiene como objetivo la verificación funcional del gráfico de llamadas (entre el elemento de software) y el gráfico de control (dentro de cada elemento de software). El concepto de integridad se encuentra en la teoría de la base de conocimiento.

Podría seguir y seguir con tales definiciones ... ¿tal vez hacer la pregunta menos vaga?

Y si tuviera un mal día, me gustaría enlazar a "Goedels teoremas de incompletitud", ya que sería definitivamente ser en el tema;)

4

El título de la pregunta indica eng software. pero el cuerpo especifica el diseño del software. Estos dos términos no son equivalentes.

En cuanto a la incoherencia e incompletitud, hay muchas áreas en las que se aplican. Sólo para nombrar unos pocos de ellos:

incompletitud:

  • de código lo que hace que no sea bien formado o sintácticamente completa, por lo que no compilables, interpretable, ejecutable
  • de aplicación - un algoritmo puede haber incompletas, que no manejan los casos posibles adecuadamente
  • de funcionalidad - un software no incluye todas las características solicitadas por un cliente o previstas en un equipo

Incon consistencia

  • de convenciones y codificación estilo
  • del diseño en la aplicación - Interfaz de funciones, clases y algoritmos diseñados de manera inconsistente (es decir,ordenar por vector espera que el vector pase, ordenar por lista acepta dos iteradores)
  • del diseño de la interfaz de usuario en términos de interacciones - en un diálogo se supone que el usuario debe presionar ENTER para aceptar pero en otro cuadro de diálogo se muestra el botón Aceptar para este acción
  • del aspecto de la interfaz gráfica de usuario: varias ventanas tienen un aspecto completamente diferente; o interfaz de línea de comandos - una opción se da como valor -v pero otro como --V = valor
  • de licencias - imaginar producto de Visual Studio tiene una licencia BSD, pero .NET Framework en GPL :-)
+1

Bien manchado en SE y SD. –

+0

+1 para mostrar todas las diferentes formas en que se aplica este término. Aunque solo por claridad: mientras Software Design no es equivalente a Software Eng .; es un subconjunto de eso. – LWoodyiii

+0

@LWoodyiii ¡Gracias! Sí, de hecho, tienes razón. – mloskot

0

pueden significar muchas cosas, sólo voy a tirar algunos ejemplos aquí:

inconsistencia:

  • Tener una clase abstracta que fue heredado por varias clases pero con implementaciones inconsistentes/contradictorios
  • Uso de diferentes patrones de diseño en varias implementaciones/modelos similares

Incompletitud:

  • No tener manejo de excepciones holística, únicos obvias se implementan
  • no cubrir el alcance entero de funcionalidades requeridas de usuario/características

Las listas de seguir y seguir ...

0

Es posible, de acuerdo con el contexto, que Formal Methods se refiere a técnicas matemáticas para probar la exactitud de los programas. En ese contexto, el uso de pruebas matemáticas garantizaría que las especificaciones no sean inconsistentes (sin contradicciones lógicas) o incomplete (hay una prueba formal de la validez de la especificación).

0

En el contexto del ejemplo que proporcionó, simplemente significa que la imposición de un proceso formal, uno que tenga un enfoque documentado de principio a fin, una metodología, un conjunto de entregables, roles definidos y responsabilidades, producirá un producto mejor que un enfoque ad-hoc para el mismo problema. En otras palabras, los sistemas formales que describen un proceso completo de ingeniería de software usado de manera consistente y aplicada a lo largo de la vida útil de ese proyecto producirán mejores resultados que los sistemas que no proporcionan este marco de soporte.

Es lo mismo que construir una casa.Sí, puedes salir corriendo y comenzar a clavar tablas juntas y podrías construir algo en lo que puedas vivir, pero si en cambio estudias arquitectura, materiales de construcción y técnicas, defines un flujo de trabajo, etc., terminarás con una mejor casa Incluso mejor que eso, sin embargo, podrás construir esa misma casa, o una similar, nuevamente con una probabilidad significativamente mayor de éxito.

1

Un significado de consistencia e integridad (y sus respectivas negaciones) en el contexto de los sistemas formales es el siguiente. A grandes rasgos, un sistema es coherente si no es posible derivar una contradicción de él. Un sistema está completo si es posible generar todas las verdades sobre el modelo subyacente. Lo ideal es llegar a un conjunto razonable de axiomas que sea capaz de "capturar" todas y solo las verdades sobre un dominio determinado.

Cuestiones relacionadas