Automatic actor-based program partitioning



Software reverse engineering techniques are applied most often to reconstruct the architecture of a program with respect to quality constraints, or non-functional requirements such as maintainability or reusability. In this paper, AOPR, a novel actor-oriented program reverse engineering approach, is proposed to reconstruct an object-oriented program architecture based on a high performance model such as an actor model. Reconstructing the program architecture based on this model results in the concurrent execution of the program invocations and consequently increases the overall performance of the program provided enough processors are available. The proposed reverse engineering approach applies a hill climbing clustering algorithm to find actors.

Key words

Actor model Software reverse engineering Performance evaluation 

CLC number



  1. Agha, G., Thati, P., 2004. An algebraic theory of actors and its application to a simple object-based language from object-orientation to formal methods. LNCS, 2635:26–57. [doi:10.1007/b96089]Google Scholar
  2. Andolfi, F., Aquilani, F., Balsamo, S., Inverardi, P., 2000. Deriving Performance Models of Software Architectures from Message Sequence Charts. Proc. 2nd Int. Workshop on Software and Performance, p.47–57.Google Scholar
  3. Bal, H.E., Kaashoek, M.F., 1993. Object Distribution in ORCA Using Compile-Time and Run-Time Techniques. ACM Conf. on Object-Oriented Programming Systems, Languages and Applications, p.162–177.Google Scholar
  4. Chan, B., Abdelrahman, T.S., 2004. Runtime support for the automatic parallelization of Java programs. J. Supercomput., 28(1):91–117. [doi:10.1023/B:SUPE.0000014804.20789.21]MATHCrossRefGoogle Scholar
  5. Deb, D., Fuad, M., Oudshoom, M.J., 2006. Towards Autonomic Distribution of Existing Object Oriented Programs. IEEE Int. Conf. on Autonomic and Autonomous System, p.17–17. [doi:10.1109/ICAS.2006.61]Google Scholar
  6. Fahringer, T., Jugravu, A., 2002. JavaSymphony: New Directives to Control and Synchronize Locality, Parallelism, and Load Balancing for Cluster and GRID-Computing. Proc. joint ACM-ISCOPE conf. on Java Grande, p.8–17. [doi:10.1145/583810.583812]Google Scholar
  7. Gourhant, Y., Louboutin, S., Cahill, V., Condon, A., Starovic, G., Tangney, B., 1992. Dynamic Clustering in an Object-Oriented Distributed System. Proc. OLDA-II (Objects in Large Distributed Applications), p.17–27.Google Scholar
  8. Grimshaw, A.S., 1993. Easy-to-use object-oriented parallel processing with Mentat. IEEE Trans. Parall. Distr. Technol., 26:39–51.MathSciNetGoogle Scholar
  9. Hyunsang, Y., Suhyeon, J., Eunseok, L., 2007. Deriving Queuing Network Model for UML for Software Performance Prediction. 5th Int. IEEE Conf. on Software Engineering Research, Management and Application, p.125–131.Google Scholar
  10. Joao, M., Simon, T., Jense, B.J., Oscar, R., 2007. Designing Tool Support for Translating Use Cases and UML 2.0 Sequence Diagrams into a Colored Petri Net. IEEE Proc. 16th Int. Workshop on Scenarios and State Machines.Google Scholar
  11. Maani, R., Parsa, S., 2007. An Algorithm to Improve Parallelism in Distributes Systems Using Asynchronous Calls. 7th Int. Conf. on Parallel Processing and Applied Math, p.312–317.Google Scholar
  12. Mitchell, B.S., Spiros, M., 1999. Bunch: a Clustering Tool for the Recovery and Maintenance of Software System Structure. Proc. IEEE Int. Conf. on Software Maintenance, p.50–59.Google Scholar
  13. Mitchell, S., 2002. A Heuristic Search Approach to Solving the Software Clustering Problem. PhD Thesis, Drexel University, Philadelphia, USA.Google Scholar
  14. Parsa, S., Bushehrian, O., 2005. The design and implementation of a tool for automatic software modularization. J. Supercomput., 32(1):71–94. [doi:10.1007/s11227-005-0159-5]CrossRefGoogle Scholar
  15. Philippsen, M., Zenger, M., 1997. JavaParty transparent remote objects in Java. Concurr.: Pract. & Exper., 9(11):1225–1242. [doi:10.1002/(SICI)1096-9128(199711)9:11<1225::AID-CPE332>3.0.CO;2-F]CrossRefGoogle Scholar
  16. Robert, G., Hassan, G., 2007. Analyzing Behavior of Concurrent Software Designs for Embedded Systems. IEEE Proc. 10th Int. Symp. on Object and Component-Oriented Real-Time Distributed Computing.Google Scholar
  17. Schoeberl, M., 2006. A Time Predictable Java Processor. Proc. Conf. on Design, Automation and Test in Europe, p.800–805.Google Scholar
  18. Sobral, J.L., Proenca, A.J., 1999. Dynamic Grain-Size Adaptation on Object-Oriented Parallel Programming the SCOOP Approach. Proc. 13th IEEE Int. Symp. on Parallel Processing, p.728–732.Google Scholar
  19. Tahvildari, L., Kontoglannis, K., Mylopoulos, J., 2003. Quality-driven software re-engineering. J. Syst. Software, 66(3):225–239. [doi:10.1016/S0164-1212(02)00082-1]CrossRefGoogle Scholar
  20. Zima, H., Chapman, B., 1991. Supercompilers for Parallel and Vector Computers (1st Ed.). Addison Wesley, MA, USA.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg and “Journal of Zhejiang University Science” Editorial Office 2010

Authors and Affiliations

  1. 1.Department of Information TechnologyShiraz University of TechnologyShirazIran

Personalised recommendations