11 Skill 4 - Skills in documenting a software requirements specification
- SAT401: Documents the functional and non-functional requirements, constraints, and scope as part of the SRS.
- SAT402: Documents the technical environment and the intended audience of the solution as part of the SRS.
- SAT403: Documents evidence of critical and creative thinking through the use of questions and strategies to critically analyse solution requirements.
11.1 Linking Django Development with Software Requirements Specification
In this exercise, students will learn how to bridge the gap between Software Requirements Specification (SRS) and Django development by creating a simple Event model within a CRM system. Understanding how to translate a well-defined SRS into a functional Django application is a crucial skill for any aspiring software developer.
We will come up with a quick design for:
- Function and non-functional requirements
- Constraints
- Scope
11.1.1 Functional and Non-Functional Requirements
Functional Requirements:
- The system should allow admin users to create, update, and delete events.
- Each event should have attributes such as name, date and time, location, description, and an optional link to more information.
- The system should allow users to view a list of all events in a list format.
Non-Functional Requirements:
- Presentation: The system should provide users with the option to view events in a calendar view or list format.
- Usability: The user interface should be responsive, ensuring a smooth experience on both desktop and mobile devices.
11.1.2 Constraints
- Technical Constraints: The system must be developed using Django and should be compatible with a SQLite database.
- Budget Constraints: The project will be developed as a class exercise with limited resources; therefore, it must be simple and focus on core features without expensive third-party integrations.
- Time Constraints: The development of the CRM system should be completed within a 1-week timeframe, with each phase (planning, development, testing) allotted a specific period.
- User Constraints: The system will be used primarily by students and faculty, so the design should prioritise educational value and simplicity over complex business requirements.
11.1.3 Scope
In-Scope: - Development of the Event model with basic CRUD (Create, Read, Update, Delete) functionality. - Implementation of a user-friendly interface for managing and viewing events. - Security features, including user authentication and data encryption.
Out-of-Scope: - Complex event management features, such as allowing regular users to create events or sending SMS/email notifications. - Mobile application development (the focus will be on a responsive web interface). - Extensive customisation of event templates (only the list view or the calendar view will be available).
11.2 Development of Event CRM
Based on the design brief provided, students will need to complete the following tasks to develop the Event model within a CRM system using Django:
11.2.1 1. Set Up the Django Project
- Create a new Django project and set up a virtual environment.
- Configure the project settings, including connecting to a SQLite database.
11.2.2 2. Define the Event Model
- Create a Django app within the project specifically for the CRM system.
- Define the
Eventmodel inmodels.pywith the following attributes:name: ACharFieldto store the name of the event.time: ADateTimeFieldto store the event’s date and time.location: ACharFieldto store the location of the event.description: ATextFieldto provide a detailed description of the event.link: An optionalURLFieldfor additional information.
11.2.3 3. Implement Basic CRUD Functionality
- Create views for creating, reading, updating, and deleting events.
- Implement corresponding forms to handle event data input.
- Set up URL routing to connect views with URLs.
11.2.4 4. Develop the User Interface
- Design and implement a user-friendly interface for managing and viewing events.
- Ensure the interface is responsive and works well on both desktop and mobile devices.
- Implement a list view for displaying all events.
- (Optional) Implement a calendar view for displaying events by date.
11.2.5 5. Add Security Features
- Implement user authentication to restrict access to event management features to admin users only.
- Use Django’s built-in authentication system to handle user login and registration.
- Ensure data encryption is in place for sensitive information.
11.2.6 6. Testing and Validation
- Write unit tests to ensure the Event model and CRUD functionality work as expected.
- Perform manual testing to verify that the user interface is responsive and meets usability requirements.
- Validate that the system adheres to the defined functional and non-functional requirements.
11.2.7 7. Deployment
- Deploy the Django application on a local or cloud server for demonstration.
- Ensure that all features work correctly in the deployed environment.
11.2.8 8. Documentation
- Document the development process, including design decisions and how the system meets the SRS.
- Provide clear instructions on how to use the system, including any setup or installation steps.
11.2.9 9. Reflection
- Reflect on the project by evaluating how well the final product meets the initial requirements.
- Identify any areas for improvement or additional features that could be added in future iterations.