Ir al contenido principal

Como producimos software


Muchas veces nos preguntamos cuanto esfuerzo hay detras de un producto de software intangible. Normalmente las personas estamos acostumbrados que cuando compramos un producto, este facilmente lo podemos ver, tocar y casi siempre tiene un volumen considerable. El software es intangible y muchas veces uno puede pensar, ¿Cuanto pague por esta licencia?, $200.00, o que tal $20,000.00 y solo me dieron un CD y ademas tengo que pagarles la consultoría de la implementación y de remate me cobran una cuota mensual de soporte.


Estas son algunas de las situaciones a las que nos enfrentamos los vendedores de programas computacionales. Aqui tratare de explicar de manera bastente sencilla, que hacemos nosotros para producir el software que aqui en este sitio esta a la venta.


1.- Macro proceso 
2.- Requerimientos obtenidos donde el cliente
Cada ves que nos reunimos con el cliente, este expone sus requerimientos y normalmente la información obtenida es totalmente desordenada. Es nuestra responsabilidad darle forma a esta, de tal manera que pueda irse moldeando el producto que necesita el cliente.
Veamos el siguiente caso.
Un cliente nos pide que le creemos un sistema de facturación donde el pueda vender a diferentes clientes, ademas que el sistema de una vez descargue los inventarios cada vez que vende, luego que alimente la cuenta por cobrar cuando una venta sea realizada al credito, seguidamente que le de reportes de todo lo vendido y cuanto le deben sus clientes.

3.- Obtenidos los requerimientos, damos inicio a la creación de nuestro modelo de datos  donde definimos las tablas que contendra el sistema para almacenar la información requerida
Diseñamos cuidadosamente nuestro modelo para asegurarnos que toda la información requerida por el sistema se ha considerado.



















4.-Creado nuestro modelo de datos, este lo escribimos en la base de datos de SQLSERVER 






5.-Ahora utilizando una herramienta de desarrollo que puede Ser Visual Basic .Net, Java, PowerBuilder, etc, comensamos a definir todas las interfaces que veran los usuarios del sistema.
Lo primero que definimos es la pantalla de conexión a la base de datos











Esta puede llevar una serie de codigo como el siguiente, lo cual garantiza que solo podran conectarse usuarios que  han sido creados en la base de datos:
vendedor=sle_usuario.text
gusuario =sle_usuario.text
if cbx_odbc.checked = true then
SQLCA.DBMS="ODBC"
SQLCA.dbparm="Connectstring='DSN="+ddlb_datasourcename.text+";"+"UID="+sle_usuario.text+";"+"PWD="+sle_password.text+"'"

else

SQLCA.DBMS = "MSS Microsoft SQL Server 6.x"
SQLCA.Database = ddlb_datasourcename.text
SQLCA.ServerName =sle_servidor.text
SQLCA.LogId =sle_usuario.text
SQLCA.LogPass =sle_password.text
SQLCA.AutoCommit = False
SQLCA.DBParm = ""
end if
connect;
if SQLCA.SQLCODE <0 then
    messagebox('Coneccion a la Base','No se ha podido Conectar :'+SQLCA.SQLERRTEXT)
    return
else


6.- Seguidamente hacemos nuestro menu principal, el cual contendrá todas las opciones del sistema










7.- Definido nuestro menú principal, iniciamos la programación de las pantallas necesarias para todas las tablas maestras del sistema, siguiendo una plantilla estandar. Esto facilita el uso del sistema para los operadores por que solo explicamos como funciona la creación de registros en una tabla y facilmente pueden crear registros en las demas tablas.


















8.- Terminado los mantenimientos comenzamos a programar las pantallas que contienen los procesos principales del sistema.






















9.- Luego comenzamos a crear nuestros reportes
















10.- Seguidamente creamos las consultas


















11.- Después definimos procesos claves en la base de datos, estos procesos son fundamentales para garantizar el buen funcionamiento del sistema. (Reglas de negocio utilizando procedimientos almacenados y/o triguers).






















12.- Cada una de las etapas anteriores vamos raelizando pruebas mediante el concepto de iteraciones. Esto nos permite ir haciendo mejoras en le camino y cada pantalla y/o reporte liberado esta listo para ser utilizado.

13.- Despues de superadas las pruebas, creamos nuestro instalador para ir a probarlo donde el cliente.















14.- Ya superadas las pruebas por parte de los usuarios, creamos el manual de usuario del sistema.






















15.- Despues hacemos la instalación definitiva al cliente y le damos capacitación a los usuarios

16.- Damos seguimiento a la implantación de la solución hasta dejarla a entera satisfación del cliente

17.- De ahi en adelante, ofrecemos el servicio de soporte ante fallas que pudieren ocurrir o nuevas necesidades existentes.

Como pueden observar, el desarrollo de sistemas es una actividad bastante compleja, que requiere mucha experiencia. De manera simple hemos tratado de explicar los pasos que seguimos en el desarrollo de los requermientos de nuestros clientes.
Por tal razón, es que los sistemas según su complejidad pueden valer desde una pequeña cantidad de dolares hasta muchos miles. Imagínese cuantas horas hombres han sido invertidas, para tener un producto de acuerdo a las especificaciones del clietne. Asi que no se extrañe,  si por un sistema se le piden varios cientos de dolares...


Entradas populares de este blog

GUARDAR DOCUMENTOS PDF EN LA BASE DE DATOS SQLSERVER DESDE .NET

Personalmente quiero contarles que para mi este proceso ha sido muy escabroso,he dedicado muchas horas de investigacion para encontrar la forma de hacerlos lo más sencillo posible. Anteriormente había guardado imagenes en la base de datos utilizando compos de tipo imagen, pero luego revisando la documentacion de sqlserver 2005 encontre que en el futuro este tipo de campo podría ser descartado, esto me llevo a buscar otras alternativas especialmente con los campos binarios o (varbinary(max)) . PASOS: 1.- Primero declare las siguientes variables de clase en su formulario windows form Dim fdlg As New OpenFileDialog Dim fs As System.IO.FileStream Dim mcorr_documento As Int32 Dim bw As System.IO.BinaryWriter ----- fin de las variables de clase 2.- Seguidamente en su formulario pegue un objeto de tipo OpenFileDialog que le servira para buscar el archivo que desea almacenar en la base de datos 3.- Cree un objeto de tipo Combo y agregue una lista de los tipos de archivos q

Como guardar un PDF en un campo de una tabla en SQL SERVER utilizando PowerBuilder

1.- Crea un campo de tipo image en la tabla donde deseas guardar tu archivo. 2.- Luego lees el archivo pdf del path donde se encuentre 3.- Seguidamente actualizas el contenido leido en el campo de la tabla Supongamos que tenemos una tabla que se llama prueba y utiliza una llave unica sobre el campo tmp_llave. El campo campo image se llama tmp_archivo. // Declaramos nuetros campos de tipo blog blob lbl_data blob lbl_temp long ll_file, ll_long = 0, ll_tam integer li_pos = 1 // leemos el archivo ll_file = FileOpen("c:\temp\prueba.pdf",streammode!) // barremos sus registros Do While FileRead(ll_file,lbl_temp) > 0 lbl_data += lbl_temp Loop // cerramos el archivo FileClose(ll_file) // actualizamos nuestra base de datos UPDATEBLOB prueba SET prueba.tmp_archivo = :lbl_data WHERE prueba.tmp_llave = :li_llave; // Para recuperar y mostrar el archivo: SELECTBLOB tmp_archivo INTO :lbl_data FROM prueba WHERE prueba.tmp_llave = :li_llave; ll_file FileOpen("c:\temp\prueba2.pdf"

Como reparar una DB SQL

En muchas ocasiones nuestra base de datos en sqlserver 2000 se puede dañar por fallas debido a que nuestro servidor se reinicia de manera inesperada o la memoria RAM o el disco duro tienen algunos problemas. Esto origina que en la base de datos se corrompan algunos objetos como tablas o índices. Cuando tratamos de seleccionar registros en nuestra tabla nos da un error grave del ( DBPROCESS is dead, Error Severities) Aquí es donde inicia nuestro problema, no podemos acceder a los registros de la tabla; la razón puede ser según el nivel de severidad del error, estos niveles están categorizados así: EXINFO 1 Informational, nonerror. EXUSER 2 User error. EXNONFATAL 3 Nonfatal error. EXCONVERSION 4 Error in DB-Library data conversion. 5 The server has returned an error flag. EXTIME 6 Time-out period exceeded while waiting for a response from the server; the DBPROCESS is still alive. EXPROGRAM 7 Coding error in user program. EXRESOURCE 8 Running out of resources; the DBPROCESS ma