¿Cómo se hace el software del mundo real como Adobe Photoshop, MS Office, etc.?

Déjame responderlo en dos etapas.

  1. ¿Conocer solo lenguajes de programación como C o C ++ es suficiente o también se requieren otros conocimientos?

    De ningún modo. Para construir un software como estos, necesita conocimientos más allá de los lenguajes de programación. Por ejemplo, consideremos que está trabajando en un navegador web como Firefox. Necesitaría conocimientos sobre redes, sockets, protocolos, analizadores, medidas de seguridad, métodos de representación y muchos otros factores. Cada una de estas cosas son pequeños campos de investigación en sí mismos en los que las personas han pasado años trabajando. Esta es una de las razones por las cuales las personas generalmente no construyen estas cosas por sí mismas, sino que un grupo lo hace. Aún así, uno puede construir uno solo dependiendo de otras tecnologías preparadas para el soporte. Por ejemplo, puede crear un navegador en aproximadamente una hora si utiliza Qt y WebKit.

    Entonces, ¿cómo se hacen estas cosas con tantas cosas para trabajar? Llegando a la parte 2.

  2. ¿Cómo se hacen?
    La respuesta de dos palabras sería Software-Engineering y Project-Management.

    Explicar esto en detalle tomaría algunos libros por sí mismos, pero podemos echar un vistazo al esqueleto de la obra.

    1. Definición de requisitos
      Cada software está hecho para cumplir algunos requisitos, estos requisitos se anotan rápidamente y se agrupan en muchos grupos diferentes, como los requisitos del usuario, los requisitos del sistema, la seguridad, etc.
    2. Planificación
      Ahora se elabora un plan detallado sobre cómo se debe lograr cada una de estas cosas en el software. Cómo deberían funcionar los emoticones, cómo debería funcionar el inicio de sesión con contraseña, qué datos deberían almacenarse para hacer estas cosas, etc.
    3. Arquitectura y Diseño
      Según el plan, se diseña y documenta una arquitectura de software con todos los detalles necesarios. Esto se convertirá en la base para la implementación técnica del software.
    4. Planificación de proyectos
      Se elabora un cronograma detallado y un plan de operación para asignar y finalizar puntualmente el trabajo en cada etapa a tiempo. Todo el trabajo se corta en etapas y cada etapa proporciona un hito individual. También se elaboran planes para cosas como revisión de código, control de versiones, copia de seguridad, etc.
    5. Desarrollo
      Las tareas de codificación reales se seleccionan y asignan específicamente a los codificadores que trabajan en él y envían el cambio al sistema de control de versiones donde se revisa y corrige y se recomiendan nuevos cambios.
    6. Pruebas
      El software desarrollado se prueba y se encuentran e informan errores.
    7. Lanzamiento
      La aplicación completa lista para el mercado se lanza para su uso.
  3. Si bien este es el camino principal de producción, uno puede encontrar esto demasiado rígido en el mundo de desarrollo acelerado de hoy en día, donde las nuevas empresas y las empresas quieren sacar las cosas rápido y perfecto. Se utiliza un nuevo sistema llamado método de desarrollo de software ágil para obtener resultados rápidos.

    Otros, como el software de código abierto, utilizan su propio método Build-As-You-Go basado en la comunidad, donde el desarrollo se realiza a medida que la comunidad recibe más contribuciones.

No, conocer lenguajes como C / C ++ no será suficiente. En realidad, debe ser más exhaustivo con otros conceptos como el manejo de datos, el enfoque algorítmico, las interfaces, etc. Los lenguajes de programación simplemente le darán una manera de escribir un programa, pero los conceptos determinan la lógica real del programa. Yo recomendaría que comience desde cosas más pequeñas. Intente crear un editor de texto básico o una aplicación de pintura en Java con una interfaz de usuario decente y luego podrá visualizar las cosas de una mejor manera.

More Interesting

¿Vale la pena aprender C #? Actualmente estoy inmerso en un proyecto que gira en torno a Java, Android SDK y NoSQL. Soy un estudiante universitario. Tengo una buena formación en muchos lenguajes de programación. ¿Vale la pena agregar C # a la caja de herramientas?

¿Qué piensan los ingenieros de software que tienen títulos reales de CS / EE / Math de desarrolladores que son autodidactas y / o no tienen un título de CS / EE / Math?

¿Nuestra capacidad para estimar de manera confiable un proyecto está relacionada con la cantidad de trabajo repetitivo y bien entendido involucrado?

¿Dónde puedo encontrar información sobre la cantidad de ingenieros de software empleados a lo largo del tiempo en todo el mundo?

¿Cuál es la especificación más importante de la computadora portátil?

¿Por qué las mujeres en el desarrollo de software tienden a abandonar el campo?

¿Cuál será la situación para los ingenieros de software para 2020, 2025, 2040? ¿La demanda aumentará o la IA escribirá mejor código que los humanos?

¿Cómo se llama un negocio si ofrece software y desarrollo web para empresas comerciales?

Soy SGT de comunicaciones de las fuerzas especiales y también soy ingeniero de software. ¿Qué futuro camino profesional me permitiría fusionar habilidades de ambos caminos?

¿Alguien puede pensar en un software que no ha sido creado, pero que puede cambiar el mundo en los próximos 10 años?

¿Qué tiene de malo ser desarrollador y propietario del producto en el mismo proyecto?

¿Inicio (al menos desde el punto de vista de la administración) o MNC? ¿Cuál elegir?

¿Cómo puede alguien hacer que la carrera salte de ser ingeniero de software a convertirse en ingeniero financiero para una institución financiera?

¿Cómo llegaste a una posición que combina la programación con las personas? Hago programación para el trabajo, pero me gustaría más interacción con las personas.

¿Cuáles son las señales de que su software heredado necesita ser reemplazado / actualizado?