In general, the software development process begins with writing the requirement of the stakeholder. Since the system designer designs the software using this requirement, it is important that it be written unambiguously. To do this, a new requirement writing language is needed that is unambiguous, easy to use, and easy to understand. In this dissertation, a Requirement Diagram Language (RDL) is presented, together with its philosophy and major features. The uniqueness of the RDL comes from its simplicity and intuitiveness in describing system requirements. In contrast to other languages that aim to present a graphical requirement description, RDL can completely describe requirements using graphical symbols that are sufficiently intuitive that even novices can understand them. A complete requirement for an embedded system can be built with a collection of simple elementary requirements in RDL. A major advantage of a requirement described in RDL is that the requirement is executable. That is, the requirement itself can be verified or simulated without any other extra information. A case study using RDL to describe an elevator’s requirements is presented.
In this dissertation, I also present a new coverage criterion MC/DC with Definition Clear Path (MC/DC-DCP). Traditionally, many types of coverage criteria are used for generating test cases. In particular, the Modified Condition and Decision Coverage (MC/DC) criterion is known as one of the most powerful methods. However the MC/DC does not sufficiently reflect the dependency between two different modules. To overcome this disadvantage, I adopt flow driven coverage criteria to MC/DC. By applying MC/DC-DCP, the data dependencies between two different modules are considered in the MC/DC coverage criterion. Since the MC/DC-DCP is more powerful than MC/DC, it is appropriate for a safety critical system. The analysis of difference coverage criteria on several requirement examples is presented.
Finally, this dissertation introduces the tools of R-Bench, which is a commercial product for designing, verifying and testing embedded systems. REED (Requirement Editor), which is the requirement management tool using RDL for writing requirements, and TE (Test Executor), which is the automatic test execution tool, are presented. REED has several features, such as a requirement analyzer, unit-tester, source code generator, requirement manager, natural language translator and so on. Using the TE, a test engineer can execute the test automatically in batches. The TE shows the status of the SUT during test execution. If there are faults, these show up in real-time. The faults are recognized by comparing the SUT outputs and the oracle, which is generated automatically.