¿Cuáles son los conceptos básicos de ingeniería de software?

Eso es como preguntar cuáles son los conceptos básicos de la medicina. Si usamos eso como modelo, entonces aparece una lista de artículos y sublistas. El orden en que uno aprende cosas es un poco complicado.

  1. Ordenadores
    1. Arquitectura física
    2. Direccionamiento de memoria (virtual vs real)
    3. Lenguaje ensamblador
    4. Redes
    5. Almacenamiento
  2. Lenguaje de ordenador
    1. El lenguaje informático “C”
    2. Programación de procedimientos usando C
    3. Programación Orientada a Objetos usando C ++, Java, C #, Python, etc.
    4. Programación funcional con Haskell, etc.
  3. Estructuras de datos y algoritmos (este es un tema enorme)
  4. Sistemas operativos
    1. Anacronismos (como llegamos aquí)
    2. Arquitectura
    3. Conductores
  5. Aplicaciones
    1. Marcos
    2. Arquitectura
    3. Cliente-servidor vs peer to peer
    4. Arquitectura de bases de datos y datos
    5. Programación científica
    6. Programación en tiempo real
    7. Programación incrustada
    8. Aplicaciones multiproceso y paralelas
    9. Aplicaciones WWW
    10. Aplicaciones móviles
  6. Comunicaciones
    1. Pilas de protocolo
    2. Programación de socket
    3. HTTP
  7. Desarrollando aplicaciones
  8. Gerencia de Ingeniería de Software

Bueno, lo que haya pedido no es posible responder aquí, pero sí, puedo darle una idea de los conceptos de ingeniería de software …

En primer lugar, debe pasar por los conceptos de SDLC (Ciclo de vida del desarrollo de software). Son MODELO DE CASCADA, MODELO ESPIRAL, MODELO DE PROTOTIPO y algunos más.

Luego, debe aprender la preparación de documentos SRS (Especificación de requisitos de software) después de la ingeniería de requisitos. Ingeniería de requisitos se centra en la obtención, análisis, documentación, revisiones, etc.

Ahora puedes diseñar tu software. Los diferentes enfoques que puede seguir son Diseño orientado a funciones, Diseño orientado a objetos, Diseño de arriba hacia abajo, Diseño de abajo hacia arriba, etc. Implemente estos con Diagramas de flujo y Pseudocódigos .

Ahora puedes hacer codificación seguido de pruebas

Las pruebas vuelven a ser de diferentes tipos dependiendo de lo que se adapte a sus necesidades y entorno. Algunas son pruebas de caja negra, pruebas de caja blanca, pruebas de unidad, pruebas de sistema, pruebas de integración, pruebas de aceptación

Por fin tienes que aprender Mantenimiento de tu software. La reingeniería y la ingeniería inversa son técnicas útiles …

Una vez más confieso que no le estoy dando ninguna definición, solo una descripción general de los conceptos que debe aprender. Para su definición y detalles, le sugiero un enfoque integrado para la ingeniería de software por Pankaj Jalote

  1. Los errores son una realidad, ¡acostúmbrate!
  2. ¡Cualquiera que diga haber dominado completamente y / o comprender completamente SE está lleno de !
  3. No existen leyes de SE, solo recomendaciones hechas a un alto costo personal y organizacional para el recomendante, y estas recomendaciones nunca tienen sentido fuera del contexto del recomendante.
  1. Corolario: ¡No hay caballeros blancos! ¡Merlín es un mito!

Puedes referir este libro. Proporciona todos los conceptos básicos sobre ingeniería de software. También proporciona un escenario sobre cómo se llevan a cabo todas las etapas de la ingeniería de software.

Ingeniería de software: el enfoque de un profesional por Roger Pressman

Fuente de la imagen: Google

Bueno, es un trabajo difícil definir básico, ya que su definición varía según la perspectiva de las personas.
Desde mi perspectiva para convertirse en un buen software, necesita la habilidad de resolver problemas a través del pensamiento lógico . Por pensamiento lógico me refiero a definir un problema y luego dividir el problema en partes más pequeñas. Esto reducirá la complejidad del problema. Luego intente encontrar un algoritmo o una solución lógica para resolver cada parte individual del problema. Y combinando todas estas soluciones de problemas juntas, obtienes una solución para el problema dado. Ahora piense en las formas de mejorar su solución.

Ahora, para desarrollar el pensamiento lógico, debe tener una buena comprensión de los algoritmos y las matemáticas.

También el dominio completo sobre un lenguaje de programación también es una parte importante para convertirse en un buen programador. Si puede dominar 2 o más lenguajes de programación, será genial, pero al menos intente dominar completamente 1 lenguaje. Por dominio quiero decir comprensión completa sobre cómo implementar las características de ese lenguaje cuando está resolviendo un problema, conocimiento sobre las funciones incorporadas de la biblioteca y los archivos de encabezado que pueden reducir su costo. Además, al mismo tiempo, será imposible aprender todas las bibliotecas y encabezados, pero primero trate de aprender los encabezados más utilizados y luego aprenda el resto según sea necesario.

Si eres completamente nuevo en este campo, entonces mi consejo será elegir C y C ++.

Un buen lugar para comenzar es el “C2 Wiki”:
Portada

Está un poco desorganizado después de años de actualizaciones activas y discusiones, por lo que estoy tratando de mover algunas de las discusiones aquí.

SDLC junto con diseño de bajo y alto nivel.
Pruebas seguidas de gestión de recursos.

More Interesting

¿Qué se siente al no poder desempeñarse como ingeniero de software en Google?

¿Cómo es el día típico de un ingeniero de software?

¿Por qué los desarrolladores de juegos ganan tan poco dinero en comparación con los ingenieros de software?

Soy un graduado reciente. Tengo un mes hasta que empiece a solicitar un trabajo como ingeniero de software. ¿Qué debería estar haciendo?

¿Es factible la automatización industrial con Android?

¿Debo rechazar una oferta de ingeniero de software senior que paga bien ($ 170k) y tiene buenos horarios porque siento que el equipo es solo promedio?

Cómo hacer que mi equipo compre en las guías de estilo de proyecto / programación

¿Quora es un buen lugar para trabajar para una ingeniera de software?

Cómo hablar con la gente del lado del cliente como ingeniero de software

¿El trabajo diario de un ingeniero de software es principalmente "copiar, pegar, modificar" en grandes empresas tecnológicas como Google?

¿Los ingenieros de software de las principales compañías tecnológicas como Google, Facebook, Microsoft, Apple, Amazon y Quora hacen preguntas técnicas / de programación relacionadas con su trabajo en un espacio como Stack Overflow?

¿Todavía se le puede llamar ingeniero de software si solo conoce Ruby on Rails como el idioma del lado del servidor?

¿Por qué es difícil realizar ingeniería inversa en un software?

¿Cuáles son las habilidades no convencionales para el ingeniero de software?

¿Qué tan común es la rivalidad entre los ingenieros de software en las principales compañías de software?