jueves, 7 de julio de 2011

El futuro del Software Libre



El software libre tiene un gran futuro por delante. Hay cada vez más adeptos que apoyan este movimiento liberador del software. Hay infinidad de razones por las que el software libre tiene muchas ventajas sobre el software propietario.

Beneficios tecnológicos: El software libre ha demostrado a lo largo de los años ser seguro, estable y poderoso para aplicaciones con múltiples usuarios y registros. La curva del aprendizaje cada vez más se está aminorando, las nuevas aplicaciones y distribuciones con interfaz gráfica permiten a los usuarios novatos introducirse al mundo del software libre.

Beneficios económicos: El software libre es más barato y en la mayoría de los casos, no tienes que pagar ningún centavo. Las empresas, instituciones o usuarios no tienen que pagar grandes cantidades de dinero por las licencias.

Beneficios culturales: El software libre promueve la mezcla de culturas. El modelo de bazar que utiliza el software libre permite que desarrolladores de muchos países con diversas religiones, culturas y costumbres, puedan compartir sus conocimientos para un sólo fin.

Muchas empresas de software propietario han criticado la manera de como se desarrolla el software libre. Dicen, entre otras cosas, que cómo es posible que se confie en un software que no tiene ninguna garantía por parte del creador. Cuando en los contratos (licencias) de software propietario tampoco se hacen responsables por daños económicos, y de otros tipos por el uso de sus programas.

Los próximos retos del software libre.

1º Los estándares abiertos: La relación de los estándares abiertos con el software libre viene dada por la restricción a la competencia que suponen los estándares cerrados en el mundo de los sistemas de información. No se compite por la calidad o las prestaciones de una solución sino por ser propietario del estándar mayoritario para una determinada necesidad.

2º La dispersión: La libertad de elección que supone el software libre a la hora de colaborar causa que multitud de esfuerzos se repitan por millones de programadores.

Retos y oportunidades del Software Libre


El gran auge que el software libre ha adquirido en la actualidad y desde sus comienzos ha sido notorio y de gran importancia, así como el impacto que ha tenido en el ámbito académico, técnico, estratégico, legal, social, del voluntariado e institucional y en su proyección hacia el futuro.




Ámbito
Retos y Oportunidades
Académico
Las escuelas están comenzando a usar computadoras como herramienta educativa, a menudo se encuentran con un obstáculo que es el licenciamiento: si bien es posible conseguir (en virtud de acuerdos entre Ministerio de Educación y empresas productoras de software privado) licencias de algunos programas a bajo costo, las licencias de programas avanzados como servidores WWW, bases de datos, ofimática, procesamiento de imágenes, audio y video y muchos otros están fuera del poder adquisitivo de las escuelas.

Desde el punto de vista de la investigación, el software libre traslada los principios básicos del modelo científico de producción de conocimiento (libre difusión, revisión por parte de expertos, constante búsqueda de mejoras, reproductibilidad de los resultados) al mundo del desarrollo del software, que además se ha convertido en una herramienta esencial para la investigación en cualquier campo. Desde el punto de vista educativo, el software libre proporciona muchas ventajas (independencia del fabricante, facilidad de compartición del conocimiento, flexibilidad, etc.) que ya han sido identificadas por parte de muchas universidades.

Entre algunos retos destacados en Venezuela, en este ámbito podemos mencionar:
El Proyecto Canaima: Tiene como finalidad la incorporación de las TIC en el sector educativo del subsistema de Educación Primaria, a fin de que los estudiantes se familiaricen con el uso didáctico de las computadoras. En el marco de este proyecto surge la distribución del sistema operativo Canaima (basado en Debian), un proyecto socio-tecnológico abierto, construido de forma colaborativa, centrado en el desarrollo de herramientas y modelos productivos basados en las Tecnologías de Información Libres (TIL) de software y sistemas operativos.

Proyecto Nacional de Educación a Distancia, pensado para ofrecer oportunidades de inclusión a la educación superior a un amplio sector de la población del país. Según el Lic. David Paya Pinto en su artículo “Retos de las instituciones educativas ante los paradigmas de la web social y el software libre: caso Venezuela”; es el momento oportuno para que las instituciones educativas venezolanas, tanto públicas como privadas, conjuntamente con las latinoamericanas, asuman colaborativamente, el reto de integrar todas estas iniciativas y desarrollar un modelo de gestión de educación a distancia, abierta y participativa (EaDAP)
Técnico
Nadie puede dudar del gran éxito de Linux en la arena de los servidores y existen varios ejemplos al respecto: El servidor de páginas Web Apache, el servidor de correo electrónico SendMail y el de archivos e impresiones amigable con Windows, Samba. Todas estas aplicaciones ayudaron a que Linux tenga una importante participación en el mercado de los servidores, incluso superando a los equivalentes de Microsoft.

El software libre tiene que disponer de tecnologías que permitan simplificar el desarrollo de programas libres y mejorar la integración entre diferentes sistemas (como Mono o DotGNU). También tiene que continuar la evolución de las tecnologías de escritorio para facilitar el uso de los sistemas actuales (KDE, GNOME, Mozilla, OpenOffice). Además, se debe trabajar para consolidar los estándares (como OASIS) en el mundo del software libre con el fin de garantizar la interoperabilidad de todas las aplicaciones libres.
Estratégico
El estado venezolano viene trabajando intensamente en el tema de la utilización del software libre en todos los ámbitos estratégicos del país, con un marco legal que parte desde la constitución, pasando por leyes y decretos que lo sostienen, es tratado como un asunto importante y de alto nivel para el desarrollo de planes de gran importancia en el país, como son, los planes educativos, presupuesto nacional, desarrollo social, seguridad nacional, entre otros.

El uso intenso y prioritario de Software Libre por parte del Estado Venezolano, ha permitido por una parte la democratización del conocimiento, el acceso a toda la información que se produce en el país, a los sistemas del Estado y a las tecnologías de información y comunicación, y también ha promovido la competitividad de la Industria Nacional de Tecnologías de Información, impulsando su desarrollo y fortalecimiento, de manera que le permita al Estado formar una red de importancia estratégica para la generación y soporte de soluciones orientadas a promover la Independencia Tecnológica.
Legal
El marco legal en Venezuela es amplio en el sentido de propiciar la utilización de software libre pero acerca de cómo se ha de utilizar, licencias y derechos de autor es regido por las licencias principales y el marco que ha diseñado la Free Software Fundation, ahora bien, los retos en este sentido que tiene que afrontar el Software libre vienen dado por las iniciativas para extender el ámbito de lo patentable al software, constituyendo esto una gran amenaza para la industria del software en general y para el software libre en particular. En Europa por ejemplo las patentes de software todavía son objeto de debate y se está discutiendo legislar al respecto.
Social
Partiendo de la premisa en que el acceso a las nuevas tecnologías y a la misma red está reservado a unos pocos respecto a la población actual en el mundo e incluso, muchos de estos tienen el acceso limitado o no son capaces de sacarle partido, uno de los mayores retos en este ámbito es generalizar el uso de software libre más allá de los especialistas o usuarios expertos. Es imperativo trabajar para que el SL se convierta en una alternativa tanto para el hogar como a nivel empresarial, altamente confiable. 

Las metodologías usadas en el software libre pueden utilizarse además como fórmula para abordar ciertos problemas sociales. El modelo abierto de los procesos de prueba y mejora de las soluciones puede aplicarse a ámbitos como la sanidad. Este concepto, conocido como web social, se está desarrollando actualmente en el Centro para la Sociedad de la Información de Berkeley.
Voluntariado
Es preciso seguir encontrando vías para mantener y promover la colaboración y las aportaciones voluntarias al software libre. Se debe preservar el espíritu de colaboración del voluntariado (como en el caso del proyecto Debian) y el papel destacado que tiene éste ante la apuesta de empresas e instituciones. El voluntariado tiene un rol fundamental para garantizar la calidad de los desarrollos y también permite conservar el espíritu y la filosofía del movimiento.

En Venezuela existen iniciativas importantes de comunidades y grupos que se han formado alrededor de las universidades, de proyectos importantes como Mozilla Venezuela, Canaima, Ubuntu, de grupos de estudio, investigadores en el área, pequeñas y medianas empresas, etc. Lo cierto es que cada vez más gente se encuentra involucrado en la gran comunidad de software libre en Venezuela, el reto es hacer que esto se fortalezca y siga creciendo.
Institucional
Venezuela representa un reto interesante para el Software Libre. Es un país donde hay que romper tanto barreras políticas, como tecnológicas. Lo primordial, al igual que en otros ámbitos, es lograr la confianza y aceptación del Software Libre como una solución que realmente funciona, y no como una imposición del Estado o un capricho personal de un tercero.

Por otra parte, se hace necesaria, una adecuada lectura del decreto 3390, que indica el uso PRIORITARIO, más no exclusivo de aplicaciones de Software Libre en las instituciones públicas. También es fundamental la orientación, respecto a las implicaciones de la migración de plataformas de software privativo a software libre. Hay que entender que no es sólo cuestión de desearlo, sino que implica un complejo trabajo, que requiere de mucha atención.

En Venezuela se cuenta con un Plan Nacional de Migración a SL, el cual tiene sus desafíos orientados a la simplificación y optimización de la plataforma tecnológica del estado a todo nivel (hardware y software), es un desafío bastante complejo ya que se deben tener en cuenta muchos elementos, entre los cuales destaca lo critico que representa para el éxito de cualquier proyecto de migración, la aceptación y disposición de los usuarios para utilizar adecuadamente el nuevo ambiente y por otro lado que los cabezas de organización impulsen el proceso.

Migración a Software Libre

Hablamos de... Migración a Software Libre 

Consejos para realizar una migración exitosa

El proceso de migración no es una tarea sencilla. Su complejidad radica principalmente en la multitud de configuraciones que podemos encontrarnos a la hora de hacer la migración.

Cada empresa es un mundo, y la migración debe adaptarse no solamente a la base tecnológica que posea la empresa, sino a los usuarios y procesos de negocio de la misma. Es por esto que no existe una solución única para llevar a cabo el proceso, si bien, existen una serie de tareas que son aconsejables realizar durante una migración, la siguiente tabla contiene en una serie de consejos que revertirán directamente en el éxito de la migración.

Consejos de implantación
Facilitar el cambio
·        La formación de los empleados en el nuevo sistema es indispensable.
·    Realizar la migración progresivamente. Para ello podemos utilizar las aplicaciones puente disponible.
·    Los primeros cambios serán los que sean totalmente transparentes para los usuarios. Por lo tanto, los primeros cambios se realizarán en los servidores. Esto incluirán servidores web, de ficheros, DNS, DHCP, etc...
No entorpecer el normal funcionamiento de la Organización
·    Planificar las acciones de migración fuera del horario de trabajo de los empleados de la Organización.
·        Entre sesiones de migración dejar el sistema 100% funcional.
·   No acaparar a los empleados de la Organización más del tiempo mínimo necesario.
Consejos técnicos
·    Desarrollos web basados en estándares: Esto nos asegurará que puedan ser visualizados en cualquier navegador y cualquier plataforma. Hay herramientas como W3C Validator47 para comprobar la compatibilidad de las páginas web.
·   Evitar macros y scripts en documentos: Aparte de ser portadores de virus, se pueden usar para robar y corromper los documentos, dificultan la migración de documentos.
·       Uso de formatos abiertos y estándar: Se deben utilizar formatos estándar ya sean abiertos o no. Por ejemplo, en Microsoft Word utilizar siempre el formato word 97.
·       Usar protocolos abiertos y estándar: Hay mucha más probabilidades de encontrar aplicaciones libres si nuestros protocolos son abiertos o estándar.
·  Desarrollar aplicaciones en 3 capas: Al independizar la interfaz de la implementación de las funcionalidades podemos favorecer la migración.
·      Utilizar tecnologías multiplataforma: Utilizar aplicaciones, cuando sea posible, que estén desarrolladas en lenguajes que sean fácilmente portables. Como podrían ser ANSI C, Java, Python y Perl.
Minimizar los peligros de la migración
·        Diseñar un completo plan de migración.
·        Posibilitar en cualquier momento la restauración del sistema antiguo.
·   Realizar un seguimiento exhaustivo de la planificación para poder corregir retardos y errores en el correcto proceso de la migración.
·        Desarrollar un completo plan de comunicaciones que mantenga a todo el equipo completamente informado.

viernes, 1 de julio de 2011

¿Qué es una Comunidad de Software Libre?



La comunidad del software libre es un término que hace referencia informal a los usuarios y desarrolladores de software libre, así como los partidarios del movimiento de software libre. La comunidad de software libre es a veces también llamada la "comunidad open source". Es un grupo de personas que cooperan entre sí en distintas áreas relacionadas con el Software Libre. Estas personas pueden ser usuarios, desarrolladores, distribuidores, personal de soporte, traductores entre otras cosas. Las comunidades pueden abarcar todas estas áreas, o enfocarse en algunas específicas.

Así, dependiendo del área de la comunidad, sus objetivos van a variar. Pero todas tienen en común el espíritu cooperativo, la búsqueda continua del mejoramiento y difusión del software libre y del conocimiento, y que su principal interés es la libertad de los usuarios.
Entre las actividades comunes que realiza una Comunidad de Software Libre están conferencias, festivales de instalación, capacitaciones y un largo etc.
Si tienes alguna duda relacionada con el software libre, puedes unirte a alguna Comunidad, y sus miembros harán todo lo posible para ayudarte.


Comunidades del Software Libre de Venezuela



1.- Asociación de Software Libre Venezuela SOLVE




2.- Grupo de Usuarios Linux de Venezuela – VELUG


3.- Grupo de Usuarios de GNU/Linux de Portuguesa
http://www.plug.org.ve


4.- Grupo de Usuarios Valencia/Venezuela Software Libre
http://www.vaslibre.org.ve/



5.- Grupo de Usuarios de Software Libre GNU/Linux del Estado Bolívar



6.- Activistas por el Software Libre



7.- Ubuntu Venezuela



8.- UNPLUG
grupo de usuarios de GNU/Linux



9.- Debian Venezuela



10.- Grupo de Usuarios Linux Mérida (GULMER)



11.- GUPY- Grupo de Usuarios de Pithon en Venezuela


12.- GULIP

13.- GUSL



14.- Grupo de usuarios del Colegio Universitario de Caracas

15.- Mundo Accesible




16.- Grupos de Ususarios Linux de Yaritagua

17.- Grupos de Ususarios GNU/Linux del Estado Aragua

18.- GULUP Grupos de Ususarios GNU/Linux Punto Fijo (UNEFA)



19.- GULUP Grupos de Ususarios GNU/Linux Caracas (UNEFA)





miércoles, 29 de junio de 2011

Ficha Técnica Planeta Linux Venezuela

Ficha Técnica
Comunidades del Software Libre
  
Nombre:

Planeta Linux Venezuela

Descripción/Misión/Objetivos:



PlanetaLinux es una comunidad de usuarios, desarrolladores y activistas iberoamericanos de software libre, GNU/Linux y similares. A través de los blogs, de cada uno de los miembros de esta comunidad, se entera de lo que pasa, de primera mano, a nuestro alrededor de una forma divertida y actualizada al día por día.
Para unirse debe leer los lineamientos. Para hacer cualquier petición, ya sea para agregarse, modificar algún feed existente o reportar problemas con el sitio, se hace a través de la pagina de contacto.
Actividades/Proyectos:




Planetalinux, posee actividades como wiki, blog, videos, y foro de discusión a través del cual se debaten temas relacionados con el proyecto Linux.
Planetalinux tiene una cuenta en Identi.ca, un servicio de microblogueo basado en la herramienta de software libre StatusNet.

Fecha de creación:
Octubre de 2004
Observaciones:


Actualmente esta comunidad está conformada por 112 usuarios registrados.
El sitio contiene artículos técnicos, noticias y todo tipo de contenido en Español relacionado con Linux. Los visitantes se dedican a colaborar debatiendo en los foros, enviando artículos técnicos y noticias.

 Elaborado por: Estelita Martínez

martes, 21 de junio de 2011

Software libre vs código abierto

Diferencia de principios
A continuación los principios que definen el software libre y el código abierto (opensource):
Software libre:
  • La libertad de ejecutar el programa, para cualquier propósito (libertad 0).
  • La libertad de estudiar cómo trabaja el programa, y cambiarlo para que haga lo que usted quiera (libertad 1). El acceso al código fuente es una condición necesaria para ello.
  • La libertad de redistribuir copias para que pueda ayudar al prójimo (libertad 2).
  • La libertad de distribuir copias de sus versiones modificadas a terceros (la 3ª libertad). Si lo hace, puede dar a toda la comunidad una oportunidad de beneficiarse de sus cambios. El acceso al código fuente es una condición necesaria para ello.
  • Redistribución Libre
  • Código Fuente
  • Trabajos Derivados
  • Integridad Del Código Fuente Del Autor
  • No a la Discriminación de Personas o Grupos
  • No a la Discriminación de Campos Laborales
  • Distribución de la Licencia
  • La Licencia No Tiene que Ser Específica de un Producto
  • La Licencia No Tiene que Restringir a Otro Software

Análisis de los principios del software libre:

Si nos fijamos de acuerdo a estos principios el software libre de manera directa se construye para ser una satisfactor sinérgico de Entendimiento, Participación, Creación y mayor énfasis en la Libertad.

Si nos fijamos en término de satisfactores y  revisamos la licencia GPL nos damos cuenta que la redacción de Richard Stallman hace mayor énfasis en la Participación, ya que el copyleft es una garantía de libertad para que puedan colaborar los usuarios futuros y restringe la posibilidad de cerrar el software con licencia GPL. En una economía competitiva como la actual, donde se acostumbra a defraudar sistemáticamente, el copyleft garantiza la colaboración, al impedir que algún agente económico restrinja el acceso a las mejoras hechas al software construido por las comunidades de software libre. Existen otras licencias, como la licencia BSD, que no tienen esta garantía y existe la posibilidad legal de mezclar o transformar las mejoras de software con licencia BSD en software privativo.

Análisis de los principios del opensource:

Revisemos ahora los principios del opensource y su relación con las necesidades humanas fundamentales y nos podemos dar cuenta que se relacionan de manera indirecta a través de satisfactores ( Trabajo, No discriminación, Licencia, Productos, etc. ), es decir son principios menos claros y no por todos fácilmente entendibles, por la naturaleza de los satisfactores estos van a cambiar con el tiempo, por eso son más proclives a generar comunidades más inestables, complicadas y con mayor riesgo de ser manipuladas.

Aspectos Legales del Software Libre

LICENCIA PUBLICA GENERAL - GENERAL PUBLIC LICENSE.

Los principios que inspiran al software libre y que se garantizan a través del Copyleft, se logran gracias a la adopción del sistema de Licencia Pública General (LPG) o en ingles Public General License (PGL). El proyecto GNU (No es Unix) y las condiciones de distribución y redistribución del software libre, se encuentran claramente definidas en cuanto a sus términos y alcances en la Licencia Pública General (LPG). La licencia respectiva es incluida en cada paquete y hace parte de cada una de las distribuciones que se hace del código fuente de los programas GNU.

Así por ejemplo existe una Licencia Pública General para Bibliotecas (Library General Public License - LGPL), la cual ha sido rediseñada luego de que la misma se presto para usos incorrectos por parte de algunos de su usuario. La GPL lo que busca en ultimas es crear unos parámetros o standard generales en el licenciamiento del software libre, haciéndolos compatibles entre si.

Actualmente la versión oficial de la GPL aprobada por la Fundación de Software Libre se encuentra en idioma ingles, y no se han aprobado traducciones oficiales de la misma a otras lenguas para evitar tergiversaciones o interpretaciones erróneas. Sin embargo, existen una serie de traducciones no oficiales a varios idiomas (Alemán, Francés, Croata, Español, Italiano, Koreano, japonés, Ruso, Eslovaco, Portugués, Finlandés, Rumano, Gallego, Tailandés, Chino e Indonesio), que servirán de parámetro para entender en alguna medida de mejor manera la GNU - GPL. Estas traducciones al igual que el texto oficial en ingles y mucha otra información sobre el software libre y la Licencia Publica General pueden ser consultadas en www.gnu.org


TEXTOS LEGALES Y PROYECTOS DE LEY

En muchos y diversos Países del Globo, se han realizado avances significativos en la regulación positiva y en la fijación de políticas en cuanto a la adopción de los sistemas de software libre o de código abierto (Open Source).

En Latinoamérica Países como la Argentina, el Perú, México y Venezuela cuentan en la actualidad  con proyectos de ley en curso, que buscan establecer el uso de herramientas de software libre en las tres ramas del poder público (Ejecutivo, Legislativo y Judicial), así como en las demás entidades gubernamentales del orden local, regional y nacional. En Brasil, País líder en el desarrollo de software propietario, el movimiento del software libre ha tenido unos desarrollos plenos, donde existen algunos estados y provincias que cuentan con textos legales ya aprobados para su masificaciòn.

La Unión Americana y la mayoría de Estados que la conforman han empezado ha presentar proyectos de ley donde se busca la utilización del software libre con fines de seguridad nacional; destacándose el proyecto de Ley que actualmente se discute en el Estado de California (Digital Software Security Act).

En Asia, países como China, Japón y Malasia desde el año 2000 han buscado el desarrollo del software libre como una premisa que evite la dependencia tecnológica de países extranjeros y que suscite un desarrollo tecnológico sostenido en la industria nacional, que permita el empleo de mano de obra local y la reactivación de sus economías. 

En Europa gobiernos como el del Reino Unido, Francia, España, Italia, Bélgica, Finlandia, Noruega y Alemania han propugnado por la adopción tanto de una tecnología y una legislación que permita la masificaciòn del software libre con propósitos múltiples como el de seguridad nacional, interoperabilidad, creación de standares y compatibilidad. 



jueves, 2 de junio de 2011

Mapa Mental ISL V2

Pruebas de Software

El Software testing o como se conoce en español las pruebas de software se aplican como una etapa más del proceso de desarrollo de software, su objetivo es asegurar que el software cumpla con las especificaciones requeridas y eliminar los posibles defectos que este pudiera tener. En un principio la mayoría de  empresas de desarrollo contaban con una etapa de pruebas demasiado informal, en la actualidad el software testing se ha convertido en una de las etapas más críticas del ciclo de vida del desarrollo de software y esto ha causado el origen de diversas metodologías.

En la actualidad el software testing se hace más complicado ya que debe hacer frente a una gran cantidad de metodologías de desarrollo, lenguajes de programación, sistemas operativos, hardware etc.

Es por esto que el testing debe apoyarse en metodologías generales que revisan los aspectos más fundamentales que debe considerar todo proceso de pruebas. Debido a esta complejidad actualmente se cuentan con una gran cantidad de software diseñado exclusivamente para la etapa de pruebas, incluyendo la gestión del proceso de software testing, la administración y seguimiento de errores, la administración de los casos de prueba, automatización de pruebas etc.

Luego de culminadas las etapas de análisis, diseño y desarrollo se inicia la etapa de pruebas, en esta etapa lo recomendable es que el software se mantenga en un ambiente aislado o separado del ambiente de desarrollo o de producción, lo ideal es preparar un ambiente de pruebas lo más parecido a los ambientes que existen en producción para asegurar su correcto funcionamiento en esa futura etapa, se debe considerar adquirir un equipo de pruebas especializado “software tester” o analista de pruebas, con experiencia, estas personas tienen una formación que les permite detectar una gran cantidad de errores en tiempos mínimos, así como una metodología especifica que les permite hacer el trabajo de manera correcta, algunas empresas más informales utilizan a los futuros usuarios del sistema como testers situación que puede traer una serie de problemas debido a la poca experiencia que pueden tener los usuarios en la detección de errores, además se obvian pruebas importantes como las pruebas de Esfuerzo o “Stress testing”, también se dejan de lado las pruebas unitarias o pruebas modulares, las que deberían asegurar que cada modulo del sistema trabaje correctamente de manera independiente, otro error muy conocido en empresas de software es el uso de los mismos desarrolladores como analistas de pruebas, es muy difícil probar con objetividad un software si nosotros mismos lo hemos desarrollado, un técnico o analista programador empezara a probar con la idea preconcebida de que su hijito trabaja a la perfección e inconcientemente evitara realizar pruebas mas exhaustivas considerando que las mismas podrían ser absurdas o innecesarias, lo bueno es que poco a poco estas ideas van quedando descartadas y se van alineando conceptos hacia un software testing profesional.

PROCESOS DE PRUEBA DE SOFTWARE
Se define como Proceso al conjunto ordenado de pasos a seguir para llegar a la solución de un problema u obtención de un producto, en este caso particular, para lograr la obtención de un producto software que resuelva un problema.

El proceso de creación de software puede llegar a ser muy complejo, dependiendo de su porte, características y criticidad del mismo. Por ejemplo la creación de un sistema operativo es una tarea que requiere proyecto, gestión, numerosos recursos y todo un equipo disciplinado de trabajo. En el otro extremo, si se trata de un sencillo programa (por ejemplo, la resolución de una ecuación de segundo orden), éste puede ser realizado por un solo programador (incluso aficionado) fácilmente. Es así que normalmente se dividen en tres categorías según su tamaño líneas de código o costo: de Pequeño, Mediano y Gran porte. Existen varias metodologías para estimarlo, una de las más populares es el sistema como que provee métodos y un software (programa) que calcula y provee una estimación de todos los costos de producción en un "proyecto software" (relación horas/hombre, costo monetario, cantidad de líneas fuente de acuerdo a lenguaje usado, etc.).

Considerando los de gran porte, es necesario realizar tantas y tan complejas tareas, tantas técnicas, de gerenciamiento, fuerte gestión y análisis diversos (entre otras) que toda una ingeniería hace falta para su estudio y realización: es la ingeniería de software.

En tanto que en los de mediano porte, pequeños equipos de trabajo (incluso un avezado analista programador solitario) pueden realizar la tarea. Aunque, siempre en casos de mediano y gran porte (y a veces también en algunos de pequeño porte, según su complejidad), se deben seguir ciertas etapas que son necesarias para la construcción del software. Tales etapas, si bien deben existir, son flexibles en su forma de aplicación, de acuerdo a la metodología o proceso de desarrollo escogido y utilizado por el equipo de desarrollo o por el analista-programador solitario (si fuere el caso).