Dificultades en el aprendizaje del diseno de software orientado a objetos: un estudio cualitativo longitudinal
Las companias de desarrollo de software buscan reducir costes a traves del desarrollo de disenos que permitan: a) facilidad en la distribucion del trabajo de desarrollo, con la menor comunicacion de las partes; b) modificabilidad, permitiendo realizar cambios sobre un modulo sin alterar las otras partes y; c) comprensibilidad, permitiendo estudiar un modulo del sistema a la vez. Estas caracteristicas elementales en el diseno de software se logran a traves del diseno de sistemas cuasi descomponibles, cuyo modelo teorico fue introducido por Simon en su busqueda de una teoria general de los sistemas. En el campo del diseno de software, Parnas propone un camino practico para lograr sistemas cuasi descomponibles llamado el Principio de Ocultacion de Informacion. El Principio de Ocultacion de Informacion es un criterio diferente de descomposicion en modulos, cuya implementacion logra las caracteristicas deseables de un diseno eficiente a nivel del proceso de desarrollo y mantenimiento. El Principio y el enfoque orientado a objetos se relacionan debido a que el enfoque orientado a objetos facilita la implementacion del Principio, es por esto que cuando los objetos empiezan a tomar fuerza, tambien aparecen paralelamente las dificultades en el aprendizaje de diseno de software orientado a objetos, las cuales se mantienen hasta la actualidad, tal como se reporta en la literatura. Las dificultades en el aprendizaje de diseno de software orientado a objetos tiene un gran impacto tanto en las aulas como en la profesion. La deteccion de estas dificultades permitira a los docentes corregirlas o encaminarlas antes que estas se trasladen a la industria. Por otro lado, la industria puede estar advertida de los potenciales problemas en el proceso de desarrollo de software. Esta tesis tiene como objetivo investigar sobre las dificultades en el diseno de software orientado a objetos, a traves de un estudio empirico. El estudio fue realizado a traves de un estudio de caso cualitativo, que estuvo conformado por tres partes. La primera, un estudio inicial que tuvo como objetivo conocer el entendimiento de los estudiantes alrededor del Principio de Ocultacion de Informacion antes de que iniciasen la instruccion. La segunda parte, un estudio llevado a cabo a lo largo del periodo de instruccion con la finalidad de obtener las dificultades de diseno de software y su nivel de persistencia. Finalmente, una tercera parte, cuya finalidad fue el estudio de las dificultades esenciales de aprendizaje y sus posibles origenes. Los participantes de este estudio pertenecieron a la materia de Software Design del European Master in Software Engineering de la Escuela Tecnica Superior de Ingenieros Informaticos de la Universidad Politecnica de Madrid. Los datos cualitativos usados para el analisis procedieron de las observaciones en las horas de clase y exposiciones, entrevistas realizadas a los estudiantes y ejercicios enviados a lo largo del periodo de instruccion. Las dificultades presentadas en esta tesis en sus diferentes perspectivas, aportaron conocimiento concreto de un estudio de caso en particular, realizando contribuciones relevantes en el area de diseno de software, docencia, industria y a nivel metodologico. ABSTRACT The software development companies look to reduce costs through the development of designs that will: a) ease the distribution of development work with the least communication between the parties; b) changeability, allowing to change a module without disturbing the other parties and; c) understandability, allowing to study a system module at a time. These basic software design features are achieved through the design of quasidecomposable systems, whose theoretical model was introduced by Simon in his search for a general theory of systems. In the field of software design, Parnas offers a practical way to achieve quasi decomposable systems, called The Information Hiding Principle. The Information Hiding Principle is different criterion for decomposition into modules, whose implementation achieves the desirable characteristics of an efficient design at the development and maintenance level. The Principle and the object oriented approach are related because the object oriented approach facilitates the implementation of The Principle, which is why when objects begin to take hold, also appear alongside the difficulties in learning an object oriented software design, which remain to this day, as reported in the literature. Difficulties in learning object oriented software design has a great impact both in the classroom and in the profession. The detection of these difficulties will allow teachers to correct or route them before they move to the industry. On the other hand, the industry can be warned of potential problems related to the software development process. This thesis aims to investigate the difficulties in learning the object oriented design, through an empirical study. The study was conducted through a qualitative case study, which consisted of three parts. The first, an initial study was aimed to understand the knowledge of the students around The Information Hiding Principle before they start the instruction. The second part, a study was conducted during the entire period of instruction in order to obtain the difficulties of software design and their level of persistence. Finally, a third party, whose purpose was to study the essential difficulties of learning and their possible sources. Participants in this study belonged to the field of Software Design of the European Master in Software Engineering at the Escuela Tecnica Superior de Ingenieros Informaticos of Universidad Politecnica de Madrid. The qualitative data used for the analysis came from the observations in class time and exhibitions, performed interviews with students and exercises sent over the period of instruction. The difficulties presented in this thesis, in their different perspectives, provided concrete knowledge of a particular case study, making significant contributions in the area of software design, teaching, industry and methodological level.