Engenharia de Domínio aplicada ao Desenvolvimento Robusto e Eficiente de Sistemas Operacionais
Resumo
As técnicas de engenharia de software têm sido modestamente aplicadas para simplificar a construção de sistemas operacionais. Como resultado, o desenvolvimento de sistemas operacionais permanece restrito a especialistas e é considerado como tarefa complexa e propensa a erros. Neste artigo, descrevemos uma abordagem de engenharia de domínio aplicada ao desenvolvimento de um framework dedicado à implementação de escalonadores de processos. Esse framework, chamado Bossa, foi implementado no núcleo do Linux e extensivamente utilizado no desenvolvimento e teste de políticas de escalonamento. São apresentados os passos realizados no processo de engenharia de domínio e discutidos aspectos relacionados ao aprendizado adquirido durante o desenvolvimento desse framework.
Referências
L. P. Barreto. Uma Arquitetura Baseada em Eventos para Desenvolvimento de Políticas de Escalonamento de Processos. In I Workshop de Sistemas Operacionais (WSO'2004), July 2004.
L. P. Barreto, R. Douence, G. Muller, and M. Südholt. Programming OS schedulers with domainspecific languages and aspects: New approaches for OS kernel engineering. In Proceedings of the 1st Workshop on Aspects, Components, and Patterns for Infrastructure Software, pages 1-6, April 2002.
D. Batory, C. Johnson, B. MacDonald, and D. von Heeder. Achieving Extensibility through Product-Lines and Domain-Specific Languages: A Case Study. ACM Transactions on Software Engineering and Methodology, 11(2):191-214, 2002.
B. N. Bershad, S. Savage, P. Pardyak, E. G. Sirer, M. Fiuczynski, D. Becker, S. Eggers, and C. Chambers. Extensibility, safety and performance in the SPIN operating system. In Proceedings of the 15th ACM Symposium on Operating Systems Principles (SOSP'95), pages 267-284, December 1997.
I. T. Bowman, R. C. Holt, and N. V. Brewster. Linux as a case study: Its extracted software architecture. In Proceedings of the International Conference on Software Engineering (ICSE'99), pages 555-563, May 1999.
Y. Coady and G. Kiczales. Back to the future: A retroactive study of aspect evolution in operating system code. In Proceedings of the International Conference on Aspect-Oriented Software Development (AOSDí2003), pages 50-59, March 2003.
Y. Coady, G. Kiczales, M. Feeley, N. Hutchinson, and J. S. Ong. Aspect-oriented operating systems. Communications of the ACM, 44(10), October 2001.
Y. Coady, G. Kiczales, M. Feeley, and G. Smolyn. Using AspectC to Improve the Modularity of Path-Specific Customization in Operating System Code. In Proceedings of the 9th ACM SIGSOFT International Symposium on the Foundations of Software Engineering (FSE-9), September 2001.
C. Consel and R. Marlet. Architecturing software using A methodology for language development. In Proceedings of the 10th International Symposium on Principles of Declarative Programming (PLIP'98), Pisa, Italy, September 1998.
J. Coplien, D. Hoffman, and D. Weiss. Commonality and variability in software engineering. IEEE Software, 15(6):37-45, November/December 1998.
D. Engler, D. Y. Chen, S. Hallem, A. Chou, and B. Chelf. Bugs as deviant behavior: A general approach to inferring errors in systems code. In Proceedings of the 18th ACM Symposium on Operating System Principles (SOSP'2001), pages 57-72, Banff, Canada, October 2001.
P. Goyal, X. Guo, and H. M. Vin. A hierarchical CPU scheduler for multimedia operating systems. In Proceedings of the 2nd USENIX Symposium on Operating Systems Design and Implementation (OSDI'96), pages 107-121, Berkeley, CA, USA, October 1996.
M. F. Kaashoek, D. R. Engler, G. R. Ganger, H. Briceño, R. Hunt, D. Mazières, T. Pinckney, R. Grimm, J. Jannotti, and K. Mackenzie. Application performance and flexibility on exokernel systems. In Proceedings of the 16th ACM Symposium on Operating Systems Principles (SOSP'97), pages 52-65, October 1997.
K. Kang, S. Cohen, J. Hess, W. Novak, and S. Peterson. Feature-Oriented Domain Analysis (FODA) Feasibility Study. Technical Report CMU/SEI-90-TR-21, Software Engineering Institute, Carnegie Mellon University, November 1990.
S. Kumar, Y. Mandelbaum, X. Yu, and K. Li. ESP: a language for programmable devices. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'2001), pages 309-320, Snowbird, UT, USA, June 2001.
J. Lawall, G. Muller, and L. P. Barreto. Capturing OS expertise in a modular type system: the Bossa experience. In Proceedings of the ACM SIGOPS European Workshop 2002 (EW'2002), pages 54-61, Saint-Emillion, France, September 2002.
J.L. Lawall, G. Muller, and H. Duchesne. Language design for implementing process scheduling hierarchies. In ACM SIGPLAN 2004 Symposium on Partial Evaluation and Program Manipulation (PEPM'04), pages 80-91, August 2004.
C. L. Liu and J. W. Layland. Scheduling algorithms for multiprogramming in a hard-real-time environment. Journal of the ACM, 20(1):46-61, January 1973.
D. Lohmann, O. Spinczyk, and W. Schröder-Preikschat. On the configuration of non-functional properties in operating system product lines. In Proceedings of the 4th Workshop on Aspects, Components, and Patterns for Infrastructure Software, pages 19-24, March 2005.
D. L. Parnas. On the design and development of program families. IEEE Transactions on Software Engineering, SE-2(1):1-9, March 1976.
D. L. Parnas, G. Handzel, and H. Würges. Design and Specification of the Minimal Subset of an Operating System Family. IEEE Transactions on Software Engineering, SE-2(4):301-307, 1976.
L. Réveillère, F. Mérillon, C. Consel, R. Marlet, and G. Muller. A DSL Approach to Improve Productivity and Safety in Device Drivers Development. In Proceedings of the 15th IEEE International Conference on Automated Software Engineering (ASE'98), pages 101-109, Grenoble, France, September 2000.
M. Simos. Organization Domain Modeling (ODM): Formalizing the Core Domain Modeling Life Cycle. In Proceedings of the ACM SIGSOFT Symposium on Software Reusability (SSR'95), pages 196-205, April 1995.
D. C. Steere, A. Goel, J. Gruenberg, D. McNamee, C. Pu, and J. Walpole. A feedback-driven proportion allocator for real-rate scheduling. In Proceedings of the 3rd Symposium on Operating Systems Design and Implementation (OSDI'99), pages 145-158, February 1999.
R. N. Taylor, W. Tracz, and L. Coglianese. Software development using domain-specific software architectures. ACM SIGSOFT Software Engineering Notes, 20(5):27-38, December 1995.
S. Thibault, R. Marlet, and C. Consel. Domain-Specific Languages: from Design to Implementation - Application to Video Device Drivers Generation. IEEE Transactions on Software Engineering, 25(3):363-377, May-June 1999.
C. A. Waldspurger. Lottery and Stride Scheduling: Flexible Proportional-share Resource Management. PhD Thesis, Massachusetts Institute of Technology, September 1995.
D. A. Wheeler. More Than a Gigabuck: Estimating GNU/Linux's Size, jul 2002. http://www.dwheeler.com/sloc. Version 1.07.
Yasuhiko Yokote. The Apertos Reflective Operating System: The Concept and Its Implementation. In Proceedings of the ACM Conference on Object-oriented Programming Systems, Languages and Aplications (OOPSLAí92), pages 414-434, Vancouver, Canada, October 1992.