The Requirements Engineering (RE) process aims at eliciting, negotiating, specifying, validating and managing the requirements of a system under construction. The main product of this process is the requirements specification, which includes a formal description of the functionalities of the software system to be developed that can be used as a basis for successive phases of development (design, implementation, testing, maintenance). It is widely acknowledged that the process of producing correct, consistent and non-ambiguous requirements specifications is a difficult task.
The aim of this research project is to use XML technologies to represent, manipulate and allow reuse of software specifications. In particular, we use the concept of scenario formalized in XML to allow sharing and reusing the knowledge produced during the development of software projects.
A commonly used approach in requirements engineering to analyze, understand and represent software requirements is the scenario-based approach. A scenario is defined as "an ordered set of interactions between the users and the system". The concept of scenario has been included in the Unified Modeling Language (UML), now a standard notation for object-oriented software engineering methodologies. Unfortunately, no methodology has yet been adopted as a standard for scenario representation.
Available tools that support requirements specification and analysis mostly focus on the graphical representation of specifications, using diagrams like the UseCase diagrams (defined in UML). Nevertheless, diagrams cannot express many system details that may result useful in the successive development steps. In these tools, scenarios are often written as simple tables and text documents. The documents are difficult to read, since they contain a mix of natural language statements, semi-standard names and expressions, and raw cross references.
The first result of our research is the Scenario Description Markup Language (SDML). SDML is an XML language that can be used to describe and manipulate scenarios.
The main features of SDML are:
SDML has been defined using the XML Schema formalism. We also developed several examples of scenarios formalized through SDML, that can be viewed as source XML or using the dynamic visualization stylesheet (see below) from the SDML examples page.
We are currently developing several tools to support SDML. At the same time, we plan to give extensions to SDML to support the representation of advanced features like non-functional requirements.
Starting from the SDML descriptions, we can easily obtain very expressive graphical and textual representations of the scenarios that can be useful to test the integration between the system components. The representations are built using the latest XML and HTML technologies, so they are all web-compatible: this is very important, since it facilitates the information sharing.
SDML files can be directly handwritten, but this process could become too complex for large software projects. We are developing a visual editor to describe, manipulate and compose scenario specifications formalized using SDML.
The testing phase verifies the consistency, soundness and completeness of requirement specifications. Today, software tests, in particular system and performance tests, are created using ad-hoc methodologies, and the generation of test cases is not systematic.
Thanks to the SDML structure, test cases can be generated automatically or semi-automatically from scenarios written during the requirements specification phase. To support this generation process, we are developing
We designed an algorithm to automatically create object statecharts from the scenarios describing the behavior of a particular object. The output of this algorithm is a statechart-specific language, namely SCDML. We are currently implementing the algorithm in a Java program, and we plan to use the generated statacharts to further verify automatically the specification consistency.