The number of methods and tools available to the software engineer nowadays is overwhelming; nevertheless, many software projects fail?that is, do not meet their schedules, are over budget, do not meet the user needs, or simply have considerable quality defects. The numerous possible explanations for this situation include poor project management, unsuitable methods and tools used in the project, and poorly developed skills of the participating software engineers. The challenge for researchers in this field is to provide methods and tools that can be applied by software engineers with average skill levels in average projects. This project emphasizes methods, techniques, and tools that can be used by average software engineers in average projects for the early phases (analysis and design) of the software life cycle. Therefore, the important requirements for the methods and techniques are simplicity, preciseness, generality, and expressiveness. This project deals with an approach that combines assertion and scenario techniques into a consistent methodology that can be used for analysis and design tasks. The technique developed can be combined with a prototyping-oriented software development approach.