CIDM6330-Fall2024
- Lectures/Dicussion from FSA/PAP
- Review and Reflection on Previous Evolution.
- Orientation to the purpose of the evolution
- Q and A about Evolution
Please place your Diagrams in the corresponding folder.
API-Centricity (heart of system)
Exercise Make an API for coin toss
- Flask
- FastAPI
- Django Rest Framework
Good reference article: https://www.twilio.com/en-us/blog/create-api-with-python
Clean and abstracted transactions for all state changes
Balancing state change requests and business rules
Leveraging the web as the application framework
Validation and verificaiton
- Django app that uses:
- Django Architecture - MVC/MVT
- Django Rest Framework for API Development
- Django O/RM to get some of the benefits of the repository pattern
- Django, Celery, and Redis for Message Queueing and Event Tasking
- Django Unit Tests for TDD, BDD, DDD
Expectations:
- Use Django for your models, views, and monolithic architecture
- Use the Django Rest Framework for API Routing and Serliazation
- Use Django, Celery, and Redis for message/task queuing
- Use built-in unit testing for TDD, BDD, DDD
- Ensure that the behaviors and structures of your app are represented by:
- UML diagrams - class, seqeuence, activity, state, use case
- Provide a glossary of the Ubiquitous Language that is embedded in your project Developing the ubiquitous language
- Create testable stories and acceptance criteria, using the BDD Gherkin syntax, to develop your unit tests. Read: What is BDD?
- Ensure you create tests that reflect the Gherkin Syntax feature design statements from the link above.
- Configure the Django Rest Framework to deliver your system's API.
- Extend your basic viewsets to create at least one behavioral extra action for routing (this will be your task handler).
- Use Django Models and DRF Serializers to provide CRUD operations for your entities
- Use Celery and Redis to create a message/event and task queue to execute asynchronous tasks in your application.
- Django serves as our comprehensive application/project framework for our entire architecture. Bear in mind that this is a monolithic architecture as opposed to a service-based (microservices) architecture.
Data that loads up my simple examples has been exported using the following Django command:
python manage.py dumpdata api --format json --indent 4 --output ./api/fixtures/api_fixtures.json
Use the loaddata
django management command to import this fixture.