¿Qué software es necesario para aprender ingeniería de software desde básico?

En mi opinión, la ingeniería de software tiene dos partes: desarrollo de software y diseño de software. La respuesta dada por Binu Francis es correcta cuando se trata de aprender a codificar, que hay muchos recursos en línea (más de lo que enumeró, sin embargo). Pero esa es solo la mitad de la respuesta.

Creo firmemente que una vez que sepas cómo codificar, cambiar de idioma (en la mayoría de los casos) es cuestión de sintaxis. Por ejemplo, pude aprender PHP bastante rápido, debido a mi experiencia con C ++ y Visual Basic. Una vez que entendí los conceptos de un bucle, si / de lo contrario ramificación, funciones, objetos, etc., pude transferir mi conocimiento.

Pero la ingeniería SW es ​​más. No solo necesita saber cómo hacer algo, sino cuándo . Debe poder diseñar un módulo o programa para que funcione de manera eficiente dentro del marco de su sistema. Para esto, recomendaría encontrar un mentor; alguien que pueda guiarte y enseñarte el oficio.

Si bien no he tenido la oportunidad de hacerlo, entiendo que contribuir a un proyecto de código abierto puede ser una excelente manera de criticar su código. Aprenda de sus errores, preferiblemente haciendo que las personas (constructivamente) se los señalen antes de que causen problemas.

Y sigue codificando. Cuanto más familiarizado esté con el desarrollo de SW, más aprenderá. Entonces, aunque no conozco un paquete de software mágico que lo lleve a un ingeniero de SW, el objetivo es alcanzable, y creo que vale la pena.

Según el modelo de desarrollo de software del ciclo de vida en cascada, existen aproximadamente cinco fases:

  1. Recopilación de requisitos
  2. Diseño
  3. Implementación
  4. Pruebas
  5. Operación y mantenimiento

Veamos los softwares utilizados en cada fase uno por uno.

  1. Recopilación de requisitos: en esta fase buscamos el conocimiento del cliente y recopilamos datos para realizar las SRS (Especificaciones de requisitos de software). SRS es un documento legal vinculante entre el cliente y el equipo de desarrollo. En esta fase, necesitará software para la generación de documentos SRS, cualquier software de procesamiento de texto estaría bien y algún tipo de sistema de control de versiones como git, svn, etc.
  2. Fase de diseño: en esta fase procesamos el SRS para crear SDD (Descripción del diseño de software). SDD es preparado por el equipo de diseño como una forma de instrucción para el equipo de codificación. SDD proporciona una visión general del sistema utilizando diagramas como diagramas de casos de uso, diagramas de er, diagramas de actividad, diagramas de clases, diagramas de gráficos de estado, etc. Utilizamos UML (lenguaje de modelado unificado) para generar estos diagramas. Puede utilizar cualquier software UML, como Rational Rose de IBM.
  3. Fase de implementación: esta es la fase de codificación. En esta fase desarrollamos el sistema usando SDD. Necesitará herramientas como editor para escribir códigos, compiladores para convertirlos en códigos de máquina y simuladores para ejecutarlos o, como alternativa, puede usar IDE (Integrated Development Environment) que proporciona un entorno para realizar las actividades mencionadas anteriormente en el lugar. Esta fase tiene el mayor requisito para VCS (Sistema de control de versiones).
  4. Fase de prueba: en esta fase probamos el producto desarrollado para encontrar y corregir errores. Esto siempre lo hace un equipo de prueba separado. Las herramientas de prueba y depuración se utilizan en esta fase.
  5. Fase de operación y mantenimiento: esta fase comienza después de la implementación del producto. En esta fase, brindamos soporte al cliente e intentamos ayudarlo con el buen funcionamiento del producto. Se necesita un software de registro remoto como Team Viewer para proporcionar soporte fuera del sitio.

Esto ni siquiera es la punta de un iceberg, el desarrollo de software es tan complejo y ambiguo que se necesitaría más que una respuesta para comprender las diversas herramientas que se utilizan en él. Acabo de proporcionar algo para comenzar y para obtener más información, consulte a su amigo Google.

Aquí ya hay muchas respuestas excelentes, así que solo agregaría un par de cosas en la parte superior. Trate de obtener una comprensión básica de la programación y el desarrollo desde el punto de vista abstracto, es decir, desde la perspectiva de la informática. Es decir, comprender cosas como algoritmos (muy, muy importantes), arquitectura de bases de datos, comprender diferentes tipos de programación como orientada a objetos versus funcional, comprender la gestión de memoria y la arquitectura de la máquina física, comprender su plataforma, comprender un poco las redes, el desarrollo ágil , prácticas actuales, etc.

Puede que no use todos estos en su trabajo diario, o puede que nunca use algunos de estos, pero tener una comprensión firme del desarrollo a través de sus abstracciones centrales junto con escribir código constantemente lo convertirá en un mejor desarrollador, y en algunos casos El conocimiento anterior puede ponerlo por encima del resto (¡algoritmos!).

Te sorprenderá mi respuesta, así que así es como funciona.

TODO LO QUE NECESITA ES UNA COMPUTADORA CON CONEXIÓN A INTERNET.

Bueno, para no sonar cursi. Pero si buscas en Internet, encontrarás sitios web como HackerRank

HackerEarth: desafíos de programación y trabajos de desarrollador

Estos tienen compiladores en línea para cualquier idioma que pueda desear. Puede comenzar desde algo tan fácil como “Hello World” y subir a un nivel en el que compita con campeones nacionales de codificación y obtenga un sofisticado trabajo de software.

Sabes qué hacer a continuación.