Assignment 2 Software Project: A routing daemon - OSPF with Bellman Ford Michael Soltys February 16, 2011 Robustness: the routing daemon has to behave reasonably even in unanticipated or exceptional situations. Correctness is accomplished by satisfying requirements Robustness is accomplished by satisfying unstated requirements For example: -as explained in project, what if we try to add a router/network that is already there? -what if we try to delete a router/network that is not there? -what if we provide a range as in "add rt i-j" where some of the routers in {i,i+1,...,j} are new and some are already there? A routing daemon has to be robust; it cannot go down. What if there is a garbled command like "add r i-"; it should do nothing, and only display an error message. Correctness: keeps track of a consistent table of entries, and computes the shortest paths correctly. Reliability: it usually does what it is intended to do. Correctness is an absolute quality, while reliability is a relative quality; reliability is usually measured statistically (in the case of the daemon we may keep a log of how often it is down). Keep in mind that software products are usually much less reliable than other engineering products. Performance: we want the tree of paths to be computed very quickly and with an efficient use of memory. In this case, the design is geared toward performance - the Bellman-Ford algorithm is very efficient in terms of space and memory. Usability is not really an issue, as our routing daemon is not meant to be used by a human; it is meant to be a protocol. Interoperability: a software system is interoperable if it can work with other systems. In this case the interoperability comes from the simple command line interface. Although not measured in this assignment, Maintainability is another very desirable software characteristic. It is the ease with which the product can be modified after its initial release. There are three main categories of software maintenance: -Corrective: modifications to fix errors/bugs -Adaptive: modifications to hand changes in the OS or environment -Improvements Software maintenance can be divided into: -Repairability: the ability to correct defects -Evolvability: the ability to improve the software and to keep it current