Abstract
This is a somewhat personal account of a journey starting with assembly coding based on Jackson Structured Programming (JSP) and ending with the design of thread architectures for reactive software systems using entity-life modeling (ELM). As the level of abstraction rises, the basic concepts remain the same: The software takes its shape from structures in the problem domain. JSP bases control structures on regular expressions describing data streams. Jackson System Development (JSD) introduces long-running processes patterned on the life histories of entities in the problem domain. Unfortunately, implementing long-running processes in sequential programs leads to awkward solutions. ELM lets us im-plement the processes as threads. This is a natural fit, which re-moves the awkwardness.
- Alexander, C. Notes on the Synthesis of Form. Harvard University Press, 1964.Google Scholar
- Asker, B. Algol-Genius -- An early success for high-level languages. In History of Nordic Computing: First Working Conference of Nordic Computing (HiNC1), Trondheim, Norway, June 16-18, 2003, ed. J. Bubenko, J. Impagliazzo, and A. Solvberg. Springer Verlag, 2005, pp. 251--260.Google Scholar
- Barnes, J.G.P. Programming in Ada 2005. Addison-Wesley, 2006. Google ScholarDigital Library
- Beizer, B. Software Testing Techniques, 2nd ed. Thomson Computer Press, 1990. Google ScholarDigital Library
- Blum, B.I. Software Engineering: A Holistic View. Oxford University Press, 1992. Google ScholarDigital Library
- Böhm, C., and G. Jacopini, Flow diagrams, Turing machines, and languages with only two formation rules. CACM 9, 5 (May 1966), 366--371. Google ScholarDigital Library
- Bollella, G., J. Gosling, B. Brosgol, P. Dibble, S. Furr, D. Hardin, M. Turnbull, D. Locke, S. Robbins, P. Solanki, and D. de Niz, The Real-time Specification for Java. Addison-Wesley, 2001. Google ScholarDigital Library
- Bollella, G., and J. Gosling, The real-time specification for Java. IEEE Computer 33, 6 (June 2000), 47--54. Google ScholarDigital Library
- Brooks, F.P. Jr. The Mythical Man-Month, Anniversary ed. Addison-Wesley, 1995. Google ScholarDigital Library
- Cameron, J.R. An overview of JSD. IEEE TSE 12, 2 (Feb. 1986), 222--240. Google ScholarDigital Library
- Cameron, J.R. JSP&JSD: The Jackson Approach to Software Development, 2nd ed. IEEE Computer Society Press, 1989. Google ScholarDigital Library
- Carter, J.R., and B.I. Sandén, Practical uses of Ada-95 concurrency features. IEEE Concurrency 6, 4 (Oct./Dec. 1998), 47--56. Google ScholarDigital Library
- Fairley, R.E., and N. Martin, Software engineering programs at the Wang Institute of Graduate Studies. In Proceedings of the 1983 annual conference on Computers: Extending the human resource, 240--250. Google ScholarDigital Library
- Ferguson, E.S. Engineering and the Mind's Eye, Reprinted. The MIT Press, 1994.Google Scholar
- Gamma, E., R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995. Google ScholarDigital Library
- Gomaa, H. A software design method for distributed real-time applications. J. Systems and Software 9, 2 (Feb. 1989), 81--94. Google ScholarDigital Library
- Harel, D., and A. Pnueli, On the development of reactive systems. In Logics and Models of Concurrent Systems, ed. K.R. Apt. Springer Verlag, 1985, 477--498. Google ScholarDigital Library
- Ingevaldsson, L. JSP: A Practical Method of Program Design. Studentlitteratur and Chartwell-Bratt, 1979. Google ScholarDigital Library
- Jackson, M.A. Principles of Program Design. Academic Press, 1975. Google ScholarDigital Library
- Jackson, M.A. System Development. Prentice-Hall, 1983. Google ScholarDigital Library
- Jackson, M.A. Software Requirements&Specifications. Addison-Wesley, 1995. Google ScholarDigital Library
- Jackson, M.A. The origins of JSP and JSD: A personal re-collection. IEEE Annals of the History of Computing 22, 2 (Apr.-June 2000), 61--63, 66.Google Scholar
- Langefors, B. Algol-Genius: A programming language for general data processing. BIT 4, 3 (Sept. 1964), 162--176.Google ScholarCross Ref
- Sandén, B.I. Systems Programming with JSP. Lund, Sweden: Studentlitteratur and Brookfield, VT: Chartwell-Bratt, 1985. (First published in Swedish by Studentlitteratur, Lund, Sweden, 1983 as Systemprogrammering med JSP.)Google Scholar
- Sandén, B.I. Systems programming with JSP: Example: a VDU controller. CACM 28, 10 (Oct. 1985), 1059--1067. Google ScholarDigital Library
- Sandén, B.I. An entity-life modeling approach to the design of concurrent software. CACM 32, 3 (Mar. 1989), 330--343. Google ScholarDigital Library
- Sandén, B.I. Entity-life modeling and structured analysis in real-time software design -- a comparison. CACM 32, 12 (Dec. 1989), 1458--1466. Google ScholarDigital Library
- Sandén, B.I. Software Systems Construction. Prentice-Hall, 1994.Google Scholar
- Sandén, B.I. Modeling concurrent software. IEEE Software 14, 5 (Sept. 1997), 93--100. Google ScholarDigital Library
- Sandén, B.I. Entity-life modeling: Modeling a thread architecture on the problem environment. IEEE Software 20, 4 (July/Aug. 2003), 70--78. Google ScholarDigital Library
- Sandén, B.I. Coping with Java threads. IEEE Computer 37, 4 (Apr. 2004), 20--27. Google ScholarDigital Library
- Sandén, B.I. and J. Zalewski, Designing state-based systems with entity-life modeling. Journal of Systems and Software 79, 1 (Jan. 2006), 69--78. Google ScholarDigital Library
- Sandén, B.I. Multithreading. Colorado Technical University, Colorado Springs, 2009.Google Scholar
- P. Taylor, Designerly thinking: What software methodology can learn from design theory. In Proceedings of the International Conference on Software Methods and Tools, 2000, (SMT 2000), 107--116. Google ScholarDigital Library
Index Terms
- Inspired software design early jackson methods to thread architectures
Recommendations
Efficient Java thread serialization
PPPJ '03: Proceedings of the 2nd international conference on Principles and practice of programming in JavaThe Java system supports the transmission of code via dynamic class loading, and the transmission or storage of data via object serialization. However, Java does not provide any mechanism for the transmission/storage of computation (i.e., thread ...
Thread algebra for strategic interleaving
AbstractWe take a thread as the behavior of a sequential deterministic program under execution and multi-threading as the form of concurrency provided by contemporary programming languages such as Java and C#. We outline an algebraic theory about threads ...
Experiences implementing efficient Java thread serialization, mobility and persistence
Research ArticlesToday, mobility and persistence are important aspects of distributed computing. They have many fields of use such as load balancing, fault tolerance and dynamic reconfiguration of applications. In this context, Java provides many useful mechanisms for ...
Comments