¿Cuáles son los principios más importantes de la ingeniería de software?

Estos son algunos de los principios básicos que creo y que he encontrado útiles.

  1. Al atacar un nuevo problema, aprenda cómo se ha resuelto antes . Casi cada nuevo problema es un viejo problema disfrazado. Comprender eso y revisar la técnica anterior puede acelerar y mejorar su solución. No podría creer cuántas veces he visto un problema complejo resuelto sin comprender la técnica anterior, convirtiendo todos los errores en la peor técnica anterior cometida en SU ​​primer intento. Pérdida de tiempo y energía, lo que resulta en un software de baja calidad.
  2. Si está escribiendo sus propios protocolos de seguridad / criptografía, lo está haciendo mal . Utilice protocolos criptográficos y de seguridad existentes y bien estudiados. Nadie lo hace bien la primera vez, y es muy probable que algo que hagas por tu cuenta tenga vulnerabilidades que no aparecerán hasta que sea demasiado tarde para solucionarlo.
  3. No seas inteligente. Para el desarrollo de software comercial, lo más importante es que el código se entienda, depure y mantenga fácilmente. Esto hace que sea menos probable que esté mal, y hace que sea menos probable que sea desechado por la siguiente persona que tiene que trabajar en ello.
  4. No optimice demasiado o modularice por adelantado . La optimización temprana complica el código y puede mejorar el tiempo de ejecución de una manera intrascendente. Obtenga un algoritmo claro y limpio y optimícelo más tarde. Del mismo modo, trabajar duro para hacer que el sistema sea modular y extensible es algo que debe hacerse con moderación. En cuatro de mis proyectos de varios años, pasé más de un año (cada uno) haciendo un modelo de complemento que podría ampliarse fácilmente. El único complemento que se escribió en cada caso fue el único ejemplo con el que comenzó mi equipo, pero complicamos significativamente el desarrollo y las pruebas al adoptar este enfoque. Espere hasta que lo necesite, o corre el riesgo de hacer las interfaces incorrectas y perder tiempo y energía. Finalmente, he visto varios ejemplos de personas que se van por la borda con OOP y encapsulación, complicando innecesariamente el código.
  5. Nunca lo ‘arreglarás más tarde ‘, así que hazlo bien . Otro error que he cometido muchas veces es arrojar algo junto con la intención de arreglarlo antes de enviarlo. Luego, surge un fuego tras otro, y el código se envía en una forma horrible. Escríbalo de la manera correcta la primera vez.
  6. Añadir registro sensible . Asegúrese de tener una forma de registrar / rastrear la ejecución de su código. Asegúrese de que el mecanismo sea liviano y tenga niveles de registro seleccionables (por ejemplo, informativo, advertencia, error) para permitirle controlar cuánto se registra.

Hay muchos más, pero estos son los más útiles para mí.

Cada Los desarrolladores profesionales de software tienen su propia forma de hacer las cosas, pero aquí hay algunos consejos que me han resultado útiles durante los últimos 7 años:

  1. Escriba las pruebas unitarias primero , o nunca se escribirán.
  2. Utilice siempre bibliotecas preparadas en lugar de intentar implementar las suyas propias.
  3. No comprima el código. Mejora el rendimiento pero reduce la legibilidad, que es más importante.
  4. Declarar variable antes de usar. Quieres saber de dónde viene.
  5. Documente el software antes de implementarlo. Hay otro momento para hacerlo.

Con el tiempo y con la práctica, algunos de estos se convertirán en una segunda naturaleza para usted, pero para empezar, escribir pruebas de unidades siempre aparece como un verdadero dolor.

  1. Los usuarios a menudo no saben qué los satisfará hasta que lo vean.
  2. Su suposición de lo que satisfará a sus usuarios es a menudo peor que la de ellos.
  3. Un buen programa que satisfaga los requisitos incorrectos no tiene valor.
  4. La mantenibilidad suele ser más importante que el rendimiento.
  5. La usabilidad suele ser más importante que cualquier otra cosa, excepto la corrección.
  6. Si lo que has hecho (requisitos, diseño, código) no tiene sentido para un compañero, hay algo mal.
  7. La autoevaluación suele ser una pérdida de tiempo.
  8. El aseguramiento de la calidad es una actividad de equipo que debe aplicarse en todas las etapas del ciclo de vida.
  9. Maximiza la reutilización.
  10. La gestión de riesgos debe ser una actividad continua.
  11. Un orden de magnitud de crecimiento en el tamaño de la aplicación o el tamaño del equipo siempre dará como resultado una colección completamente nueva de riesgos y problemas que deben abordarse.

More Interesting

¿Cuál es su opinión sobre la ingeniería electrónica?

¿Existe actualmente un medio de almacenamiento de energía seguro similar al reactor de arco de Tony Stark (Iron Man)? (Similar en tamaño y energía disponible). ¿Se está haciendo alguna investigación para crear tal medio de almacenamiento de energía?

¿Qué es PWR y BWR en ingeniería de plantas de energía?

La Ingeniería Química tiene más que ver con el Proceso y mucho menos con la Química. ¿Es verdad?

¿Cuál es la diferencia entre ingeniería eléctrica y electrónica?

¿Cuántos cangrejos se necesitarían para levantar y transportar un barco, como se mostró en Pirates of The Caribbean 3?

Un amigo y yo queremos establecer un club Rocket Science en nuestra escuela secundaria dentro de 1,5 años. Antes de enseñarnos a nosotros mismos, ¿en qué temas debemos centrarnos?

¿La ingeniería mecánica es mejor que la ingeniería mecánica?

¿Cuánto beneficia el conocimiento de la ingeniería eléctrica a alguien que hace negocios?

¿Debo estudiar ingeniería mecánica en Kalyani Government Engineering College o civil en IIEST Shibpur?

¿Cuáles son las formas en que un ingeniero electrónico puede conseguir un trabajo en el gobierno?

¿El movimiento de caza de la rueda del tren produce ese sonido 'tchjk tchjk' o las articulaciones que producen ese sonido?

¿Cuál es el futuro de la ingeniería industrial?

¿Cómo evitas el exceso de ingeniería?

¿Puedo obtener un diploma en ingeniería civil y cambiarme a ingeniería aeroespacial al hacer mi licenciatura?