I am currently thinking about what deliverables to request from the students in a new software engineering / software development project. Although the project will involve a significant implementation part, the software engineering part is crucial. To ensure that the students design and model their software system well, I would request the students to model their system to be developed using a variety of notations such as :
During the requirements phase :
• An *activity diagram* to provide a high-level view of the behavior and flow of the software system to be developed.
• Either *use cases* or *user stories* to capture the different usage scenarios that the system should be able to handle.
During the analysis phase :
• A conceptual UML *class diagram* for describing the main concepts of the system to be developed.
• Either an *ORM* (Object Role Modeling) or *ER* (Entity Relationship) diagram to describe the data that the system will need to handle.
During the design phase :
• A detailed UML *class diagram* for describing the static structure of the system in terms of classes and operations.
• UML *sequence diagrams* for describing the dynamic behavior of the system.
• A *relational schema* of the database that the system will be using.
Of course apart from the above many other kinds of diagrams exist such as goal diagrams, feature diagrams, agent models, state machine diagrams, formal specification schemas, object diagrams, deployment diagrams, package diagrams, component diagrams, architectural models, interaction diagrams, message sequence charts, design patterns, and many more.
In your opinion, what kind of diagrams should or could be part of such a project and which diagrams are less important?