[en] During the last decade, many universities, research centers and private companies have started developing their miniature satellites. These small spacecraft, advantageous in terms of development-costs and -times, have been enabled by the miniaturization of several hardware technologies (embedded systems, COTS components) and the application of modularity-driven designs. However, this effort has been mainly focused on the hardware architecture but scarcely approached from the software architecture perspective. The purpose of this thesis is twofold. On the one hand, this work focuses on the software aspects of nano-satellites through the analysis of software architectures implemented in current nano-satellite missions. Such analysis allowed the generation of an evaluation framework which encompasses five quality attributes and which is targeted for these particular kinds of space systems. The result of this preliminary study converged in the definition of a set of design criteria that have been applied in the development of the general-purpose nano-satellite software architecture presented in this dissertation. One the other hand, this work consisted in the design and implementation of a core component in satellite autonomy systems: a task scheduler. Entirely written in Prolog and using constrain programming paradigm, this work details the development and test of a multi-resource fully-elastic priority-based task scheduler which has been integrated within the nano-satellite software architecture and which allows to operate the spacecraft with minimum human intervention.

[es] Durante la última década, muchas universidades, centros de investigación y empresas privadas han empezado a desarrollar sus pequeños satélites. Estos sistemas espaciales, ventajosos en cuanto a tiempo y coste de desarrollo, has sido posibles gracias a la miniaturización de diversas tecnologías hardware (sistemas encastados, componentes COTS) y a la aplicación de diseños modulares. No obstante, la mayoría de los esfuerzos se han centrado en la arquitectura hardware y no se ha abordado desde la perspectiva de la arquitectura software. Los objetivos de esta tesis son dos. Por un lado este trabajo se centra en los aspectos software de los nano-satélites, a través del análisis de las arquitecturas implementadas en misiones de nano-satélites actuales. Este análisis ha permitido la elaboración de un marco de evaluación que abasta cinco atributos de calidad y que está concebido particularmente para este tipo de sistemas espaciales. El resultado de este estudio preliminar converge en la definición de un conjunto de criterios de diseño que han sido aplicados en el desarrollo de la arquitectura software de propósito general para nano-satélites presentada en esta tesis. Por otro lado, este trabajo ha consistido en el diseño e implementación de uno de los componentes esenciales en el sistema de autonomía de un satélite: un planificador de tareas. Escrito en Prolog en su totalidad y adoptando el paradigma de la programación de restricciones, este trabajo detalla el desarrollo y las pruebas efectuadas de un planificador de tareas multi-recurso totalmente elástico y basado en prioridades que se ha integrado dentro de la arquitectura software para nano-satélites y que permite operar la nave con una intervención humana mínima.