created with NetLogo
view/download model file: SWAMM.nlogo
Contact David Hyland-Wood if you experience problems running the Java applet on this page. Note that it requires Java 1.4.1 or higher. It will not run on Windows 95 or Mac OS 8 or 9. Mac users must have OS X 10.2.6 or higher and use a browser that supports Java 1.4. (Safari works, IE does not. Mac OS X comes with Safari. Open Safari and set it as your default web browser under Safari/Preferences/General.) On other operating systems, you may obtain the latest Java plugin from Sun's Java site.
WHAT IS IT?
The Software Agent Maintenance Model (SWAMM) is a model of a software maintenance methodology developed at The University of Queensland for the purpose of addressing long-time problems in software maintenance. SWAMM models the methodology described in the references, below. Metadata is collected during development and used during maintenance activities to reduce overall cost of maintenance.
HOW TO USE IT
(1) Start in the upper left of the user interface. Select the number of customers that will provide requirements to a software project, the number of developers working on the project, the number of testers and the number of monitors (i.e. project managers or others with a reponsibility of reviewing work product).
(2) Select the "Setup" button. That will create nodes ("turtles" or "agents" in NetLogo-speak) representing the actors you requested as well as nodes representing code and metadata about the software project.
(3) Development Phase: Choose a number of requirements to inject into the software project during the development phase. Make sure to use the tab key or mouse to remove focus from the "requirements_to_inject" text input field so your number will be accepted. Select the "Inject Requirements" button when ready. This action will simulate customers requesting requirements to be coded and will result in development, testing and metadata collection occuring. You will see links created between the actors as development proceeds. Try selecting a link and noting its type ("breed") and weight (number of times it has occurred). You may inject more requirements at any time.
(4) Maintenance Phase: Choose a number of modification requests to inject into the software project during the maintenance phase. Select the "Inject Modifications" button when ready. Note that a number of modifications was set for you when you injected requirements in (3) above. That number is suggested based on the 60/60 Rule of software maintenance and is representative of the amount of modifications expected in a typical software system with the number of requirements you specified earlier. Feel free to override it.
Review the state of the network at the end of your project's maintenance phase. Look at the plot showing the amount of metadata created, the number of tests created and the number of reviews by monitors and customers.
THINGS TO NOTICE
A single requirement or modification request may result in a number of iterations. The number of iterations for any particular request is calculated via a Poisson distribution. Poisson distributions are also used to calculate the number of code components to create for a given request, the number of metadata elements to create per code component and the number of tests to create.
Note that the amount of metadata, tests and reviews generated are substantial, compared to the number of requirements and software modifications, but that the complexity is linear.
There are six different types (breeds) of links: provide, review, create, notify, test and translate. Visibility of each type may be turned on or off to assist you in seeing relationships between nodes. Turn the visibility on or off with the switches on the right and select the "Update link display" button.
Widths of displayed links grow as the links' weight increases. You can change the relative widths of the links to make the display more clear by adjusting the "link_size" slider and selecting the "Redraw links" button.
Scalability of the SWAMM model is limited by the ability of an information system to provide storage and query facilities for the metadata produced. Note that metadata is produced at a faster rate during development than during maintenance. This is because roughly 40% of maintenance activities do not result in the creation of new software components (by the 60/60 Rule: 60% of software cost is incurred during maintenance and 60% of maintenance activities relate to enhancements). Thus, the slope of the line representing the total number of metadata elements created compared to the number of requirements and modification requests is greater during development and lessens during the maintenance phase. This is shown in the monitors labeled "Development slope" and "Maintenance slope".
THINGS TO TRY
Vary the number of customers, developers, testers and monitors to see the impact on the methodology's performance.
NETLOGO FEATURES
Link primitives are used to represent relationships between actors, code and metadata. Breeds are used to address different types of links and turtles.
CREDITS AND REFERENCES
Early versions of the software maintenance methodology modeled by SWAMM appeared in the following academic publications. My thanks to my co-authors, reviewers and editors.
1) Hyland-Wood, D., Carrington, D. and Kaplan, S. (2006). Enhancing Software Maintenance by using Semantic Web Techniques, Poster, International Semantic Web Conference (ISWC) 2006.
2) Hyland-Wood, D., Carrington, D. and Kaplan, S. (2006). Toward a Software Maintenance Methodology using Semantic Web Techniques, Proc. of Second International IEEE Workshop on Software Evolvability 2006.
3) Hyland-Wood, D., Carrington, D. and Kaplan, S. (2008). Toward a Software Maintenance Methodology using Semantic Web Techniques and Paradigmatic Documentation Modeling in Harrison, R. (ed). IET Software Special Issue on Software Evolability. To appear.
Thanks to Uri Wilensky for producing NetLogo: Wilensky, U. 1999. NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University. Evanston, IL.
