¿Cómo se hace el software?

El software es simplemente un conjunto de instrucciones para una computadora. Y todas las computadoras son idiotas totales. No son inteligentes No pueden pensar por sí mismos, solo pueden hacer lo que les decimos, ni más ni menos. Pero pueden hacerlo increíblemente rápido. Eso significa que cuando escribimos un programa, tiene que ser increíblemente detallado.

Cuando le enseñas a un niño de 6 años cómo atar sus zapatos, toma algo de tiempo, pero una vez que lo consiga, podrá hacerlo una y otra vez por el resto de su vida y nunca tendrás que enseñarle eso de nuevo. Una computadora no es tan inteligente. Tenemos que decirle cómo hacer la misma tarea más simple una y otra vez.

Ahora, las computadoras son tan rápidas que pueden hacer muchas cosas por nosotros, pero eso significa que tenemos que darles muchas direcciones. Y esas direcciones se vuelven increíblemente complicadas muy rápidamente. Especialmente cuando hay muchas personas que intentan contribuir al mismo conjunto de instrucciones. Entonces, al final del día, el problema que REALMENTE terminamos abordando es cómo podemos trabajar todos juntos, lidiar con la complejidad de nuestra propia programación y asegurarnos de que produzcamos algo que realmente funcione.

Hay muchas maneras de hacer esto, y varía ampliamente, con diferentes grados de éxito. Desafortunadamente, no existe una medida objetiva de una mejor manera de hacer las cosas, por lo que el estado del arte parece serpentear significativamente, con muchos desvíos y regresiones.

Dicho esto, la forma más sencilla de hacer software es que una persona se siente y escriba las instrucciones para lo que quiere que se haga. Esto funciona muy bien para programas pequeños, pero se desmorona por completo para programas grandes que le gustaría ver pronto. Para esos programas grandes, querrás un equipo, y es vital que coordines a ese equipo para gestionar tu complejidad.

Ahora, hay una variedad de ‘metodologías’, y hay muchas personas a las que les gustaría ofrecerle su marca particular de aceite de serpiente envuelto en lazos y cintas. Esto es lo que intento hacer y por qué:

1) Tienes que entender lo que estás tratando de hacer.

Las comunicaciones dentro del equipo son clave. Todos deben estar en la misma página sobre los objetivos del programa. Y lo primero que tienes que entender y acordar es el objetivo final. La forma más conocida de hacerlo es escribirlo. Escriba exactamente lo que el programa debe y no debe hacer. Sí, esto puede parecer doloroso y obvio, pero alguien en el equipo necesitará leerlo para ponerse al día. El resultado aquí normalmente se denomina Documento de requisitos del producto (PRD).

2) Divide y vencerás

Tienes que dividir el problema para que varias partes del equipo puedan salir y abordar sus partes respectivas y lograr que las personas trabajen en paralelo. Esta descomposición del problema puede parecer realmente sencilla, pero está llena de desafíos. Desea dividir el programa de tal manera que la estructura y las divisiones resultantes creen la menor cantidad de complejidad. Si hace esto mal y crea complejidad adicional, tendrá más errores y tomará más tiempo para hacer las cosas. Por lo tanto, buscamos subsistemas en gran medida autónomos que tengan un límite muy claro. Anotamos cómo todos nuestros subsistemas funcionan juntos. Esto produce una especificación de arquitectura de software.

Ahora recurrimos, dividiendo cada subsistema en posiblemente más subsistemas, hasta el punto en que cada subsistema atómico es claramente manejable. Somos muy explícitos acerca de cuáles son los límites de cada subsistema, y ​​los escribimos. Estas son las interfaces entre módulos. Para cada subsistema, escribimos una especificación funcional que documenta esta interfaz, más cómo debe comportarse el subsistema.

Una vez que hayamos acordado eso, anotamos cómo deberían funcionar los componentes internos del subsistema. ¿Qué estructuras de datos se utilizarán? ¿Qué algoritmos son necesarios? Esto se convierte en una especificación de diseño.

Ahora, el tiempo siempre es un problema, por lo que también escribimos un horario, tratando de averiguar cuánto tiempo tomará y quién debe hacer qué.

3) Codifícalo

Y luego, codificamos. Bien hecho, el proceso de especificación lleva tanto tiempo como la codificación y depuración. Hecho incorrectamente, el proceso de especificación lleva muy poco tiempo y la depuración lleva más tiempo que la codificación. Y la mayoría de la gente lo hace mal.

Según Wikipedia, un software se define como “software de computadora, o simplemente software es cualquier conjunto de instrucciones legibles por máquina que dirige al procesador de una computadora a realizar operaciones específicas”.

Para obtener una explicación detallada del software, lea este artículo de Wikipedia.

¿Cómo se crea un software?

Bueno, en pasos simples el proceso es como se indica a continuación.

  1. Un lenguaje de programación es un lenguaje formal construido diseñado para comunicar instrucciones a una máquina, particularmente a una computadora.
  2. Un conjunto de instrucciones está escrito en un lenguaje de programación para convertirse en instrucciones legibles por máquina (código de máquina) que una computadora lee y entiende. (Se llama compilación / interpretación)
  3. Luego, este fragmento de código de máquina se transfiere a una ubicación particular en el almacenamiento de la computadora para que se llame con frecuencia según sea necesario.

El software generalmente se diseña y crea (también conocido como codificado / escrito / programado) en entornos de desarrollo integrado (IDE) como Eclipse, IntelliJ y Microsoft Visual Studio (habrá una larga y larga lista para nombrar todos los IDE) que pueden simplificar el proceso y compilar (proceso de convertir instrucciones de lenguaje de computadora a código de máquina) el software (si corresponde).

El software generalmente se crea sobre el software existente y la interfaz de programación de aplicaciones (API) que proporciona el software subyacente como GTK +, JavaBeans o Swing. Cuando se diseña un programa, se basa en la API. Sin estas API, el programador necesita escribir estas API él mismo. Las empresas como Oracle y Microsoft proporcionan sus propias API para que muchas aplicaciones se escriban utilizando sus bibliotecas de software que generalmente tienen numerosas API en ellas.

Referencia:

  1. Software
  2. Cómo desarrollar software
  3. Cómo se hace el software: un recorrido por la fábrica de salchichas

El software es como un edificio. Veamos como son similares

  • Bloques de construcción: al igual que un edificio está hecho de ladrillos, cemento y acero, un software está compuesto de módulos. Estos módulos pueden ser bibliotecas externas o fragmentos de código que los programadores escriben ellos mismos.
  • Al igual que un gran edificio se completa con la ayuda de mano de obra, un equipo de programadores, diseñadores y probadores desarrolla un software, cada uno especializado en su propia área.
  • Al igual que contrataría a un pintor para que el edificio se vea presentable, los ingenieros de UI / UX trabajan para que el software sea presentable para los usuarios finales.
  • A menudo, un software se basa en los requisitos especificados por un cliente / cliente como es el caso de un edificio.
  • Al igual que un arquitecto desarrolla un plan de construcción antes de que comience el trabajo en el terreno, se finaliza un diseño de software antes de que comience la programación real.

A estas alturas ya tiene una idea básica sobre cómo va el proceso de creación de software.

Cada una de estas declaraciones es una subestimación de la cantidad de tiempo y dedicación requerida, si va a construir un buen software.
Y ni siquiera me hagas empezar a definir un buen software.

Un software se crea escribiendo algunas líneas en un lenguaje codificado llamado lenguaje de programación donde el código crea una GUI donde un usuario puede interactuar y un back-end donde se puede realizar el procesamiento.

More Interesting

¿Es posible cambiar mi perfil a redes después de 7 años de experiencia como desarrollador / soporte de software?

¿Los científicos de datos cobran más que los desarrolladores?

¿El principio YAGNI es realmente bueno para el desarrollo de software?

Tengo menos de 18 años y quiero una cuenta de desarrollador de Apple. ¿Mis padres tendrían que inscribirse en el programa para desarrolladores de Apple y luego publicar mis aplicaciones?

¿Necesita saber qué se enseña en una licenciatura en ciencias de la computación para ser un ingeniero de software que hace software para tecnologías relacionadas con Windows o Microsoft?

¿Cuál es la mejor fuente en línea para reclutar / contratar ingenieros / desarrolladores de software?

¿Puedo aprender todo lo que necesito para mi carrera de ingeniería de software en 4 años de universidad (durante el tiempo libre) y no estudiar más después de conseguir un trabajo?

¿Una sólida base de circuitos digitales y electrónica hace una diferencia real si va a trabajar como desarrollador de software?

Si está trabajando en la versión 2 de una biblioteca, ¿su rama maestra debería apuntar a la versión de producción más reciente de 1.xx o 2.0.0?

¿Cuál tiene un futuro mejor por delante, un desarrollador web o un desarrollador de software?

¿Hay alguna forma de obtener experiencia práctica como ingeniero / desarrollador de software - DESDE CASA? (debido a mi situación inusual)

¿Alguna vez encontraré un trabajo como ingeniero de software, programador, desarrollador o ingeniero informático?

Soy un desarrollador de software aspirante! ¿Cuáles son las cosas que te tomaron un tiempo en resolver pero que son fundamentales para el éxito de un programador?

¿Puedo convertirme en desarrollador de software si me siento muy incómodo cuando la gente lee y critica mi código fuente?

¿Es Sabre una buena compañía para realizar prácticas como desarrollador de software?