Académique Documents
Professionnel Documents
Culture Documents
SOFTWARE CONSTRUCTION 2
ACTIVIDADES DE LA CONSTRUCCIÓN
SOFTWARE CONSTRUCTION 3
CONSTRUCCIÓN Y GESTIÓN DE PROYECTOS
Ya que la Construcción genera la mayor parte
de artefactos configurables se necesita manejar
un proyecto de software: Alcance, Presupuesto,
Cronograma
Herramientas
Jira
PMD
SubversionEdge
BitBucket
SOFTWARE CONSTRUCTION 4
SOFTWARE CONSTRUCTION 5
IMPORTANCIA DE LA CONSTRUCCIÓN
SOFTWARE CONSTRUCTION 6
"By relieving the brain of all unnecessary work, a good notation sets it free to concentrate on more
advanced problems, and in effect increases the mental power of the race. Before the introduction of the
Arabic notation, multiplication was difficult, and the division even of integers called into play the highest
mathematical faculties.... Our modern power of easy reckoning with decimal fractions is the almost
miraculous result of the gradual discovery of a perfect notation”
Alfred North Whitehead
SOFTWARE CONSTRUCTION 7
TIPOS DE SISTEMAS I
Sistemas de Negocios
Sitios de Internet
Sitios de Intranet
Gestión de Inventarios
Sistemas de Gestión de Información
Sistemas de Nómina
SOFTWARE CONSTRUCTION 8
TIPOS DE SISTEMAS II
Sistemas Dedicados
Juegos
Herramientas de software
Servicios web
Sistemas Críticos
Software aeronáutico / automotriz
Software médico
Sistemas Operativos
Paquetes de software
SOFTWARE CONSTRUCTION 9
DECISIONES CLAVES EN LA CONSTRUCCIÓN
SOFTWARE CONSTRUCTION 10
ELECCIÓN DEL LENGUAJE DE PROGRAMACIÓN I
Ada
(Jean Ichbiah, 1980) Militar, Espacio, Aeronaútica
Assembly
Lenguaje de bajo nivel, Específico del procesador
C
(Dennis M. Ritchie, 1972) Ventaja de portabilidad
C++
( Bjarne Stroustrup, 1980) Objetos
C#
(Microsoft, 2000) .NET
Cobol
(CODASYL, 1959) COmmon Business-Oriented Language
Fortran
(IBM, 1957) Formula Translating System
Java
(James Gosling & Sun Microsystems, 1995)
SOFTWARE CONSTRUCTION 11
ELECCIÓN DEL LENGUAJE DE PROGRAMACIÓN II
JavaScript
(Netscape, 1995) Interpretado
Pascal
(Niklaus Wirth, 1970) Programación estructurada
Perl
(Larry Wall , 1987) Multiparadigma
PHP
(Rasmus Lerdorf, 1995) contenido web dinámico
Phyton
(Guido van Rossum, 1991) Multiparadigma
Sql
(Donald D. Chamberlin & Raymond F. Boyce, 1970) Consultas
Visual Basic
(Alan Cooper, 1993) Eventos
SOFTWARE CONSTRUCTION 12
Tipo de Programa Recomendado No recomendado
Línea de Comandos Cobol, Fortran, SQL -
Desarrollo Java, Perl, Python Assembler, C#,Visual
multiplataforma Basic
Manipulación de SQL, Visual Basic Assembler, C
Base de Datos
Fácil mantenimiento C++, Java,Visual Assembler, Perl
Basic
Ejecución rápida Assembler, C, C++, JavaScript, Perl,
Visual Basic Python
SOFTWARE CONSTRUCTION 14
CONVENCIONES DE PROGRAMACIÓN
SOFTWARE CONSTRUCTION 15
SOFTWARE CONSTRUCTION 16
TENDENCIAS DE GARTNER
SOFTWARE CONSTRUCTION 17
SOFTWARE CONSTRUCTION 18
FUNDAMENTOS DE CONSTRUCCIÓN
SOFTWARE CONSTRUCTION 19
SELECCIÓN DE LAS MEJORES PRACTICAS DE CONSTRUCCIÓN
Codificación
Se ha definido convenciones?
Se ha definido prácticas implícitas de arquitectura, condiciones de errors, seguridad, etc.?
Se ha identificado su situación en la ola tecnológica?
Se ha visto la manera de extender el lenguaje en lugar de limitarse a lo que el lenguaje nos brinda?
Equipo de Trabajo
Se ha definido un procedimiento de integración de Código. Es decir, se ha definido los pasos específicos que
debe realizer un programador antes de verificar el código en las fuentes principals?
Los programadores trabajaran en pares, individualmente o en combinación?
SOFTWARE CONSTRUCTION 20
SELECCIÓN DE LAS MEJORES PRACTICAS DE CONSTRUCCIÓN
Aseguramiento de la Calidad
Los programadores escriben los casos de prueba antes de construir el código?
Los programadores inspeccionan el código de otros?
Herramientas
Se ha selecionado una herramienta de control de versiones?
Ha seleccionado lenguaje y versiones de lenguajes, compiladores, librerías, etc.?
Se ha decidido o no utilizer características del lenguaje en versions no estándares?
Ha identificado y definido herramientas para de edición de programas, refactorización, depurador, test
framework, comprobador de sintaxis, etc.
SOFTWARE CONSTRUCTION 21
CALIDAD DE LAS CLASES I
Abstracción
Dispone de datos Abstractos
Tiene la clase un propósito central y su nombre lo demuestra?
Se puede tratar a la clase como una caja negra?
Los servicios de la clase son lo suficientemente completos para que otras clases no tengan que inmiscuirse con sus
datos internos?
Se ha podido trasladar información relacionada fuera de la clase?
Se ha pensado en la subdivisión de la clase?
Encapsulamiento
La clase evitar exponer datos de los miembros?
Se esconde los detalles de la implementación de otras clases tanto como lo permita el lenguaje de programación?
Es la clase independiente de las otras clases? Baja cohesión?
SOFTWARE CONSTRUCTION 22
CALIDAD DE LAS CLASES II
Herencia
La herencia es usada sólo para modelar relaciones?
La documentación de la clase describe la estrategia de herencia?
Las interfaces comunes, los datos y el comportamiento se encuentra lo más alto posible en el árbol de herencia?
Todos los miembros de datos de la clase base privada en lugar de protegerse?
Otras cuestiones de aplicación
Contiene la clase siete atributos de datos o menos?
La clase tiende a minimizar las llamadas de métodos a otras clases?
Colabora la clase con otras clases sólo en la medida en que sea absolutamente necesario?
Todos los datos miembro se inicializan en el constructor?
Cuestiones específicas del lenguaje
¿Ha investigado las cuestiones específicas del lenguaje en lo concerniente a las clases?
SOFTWARE CONSTRUCTION 23
CALIDAD EN LAS RUTINAS (PROCEDIMIENTOS, MÉTODOS,
FUNCIONES) I
Cuestiones principales
Es suficiente la razón para la creación de la rutina?
Todas las partes de la rutina interactúan solo en el entorno de la misma?
El nombre de la rutina es descriptivo en concordancia con un verbo o el valor de retorno?
¿Se han establecido convenios de denominación para las operaciones comunes?
¿La rutina tiene una fuerte cohesión interna?
Es la longitud de la rutina determinada por su función y la lógica?
SOFTWARE CONSTRUCTION 24
CALIDAD EN LAS RUTINAS (PROCEDIMIENTOS, MÉTODOS,
FUNCIONES) II
SOFTWARE CONSTRUCTION 25
REFERENCIAS
SOFTWARE CONSTRUCTION 26