DevOpsThoughts is a community initiative aims to teach the best practices in DevOps through a multi-platform application which targets a variety of technologies. DevOps is one of the most emerging topics of software development today as it improves the whole software development process, but unfortunately, there is no clear, detailed and explicit model to teach the best DevOps & Software Engineering practices on real world projects, this was the main problem that leads to DevOpsThoughts community establishment.
DevOpsThoughts teaches the best practices on a series of real-world e-commerce projects, each of which is
- Named after an animal name (We love animals, who doesn’t?)
- Built with a specific set of technologies
- Is a branch in the DevOpsThoughts E-Commerce repository
Further, in the post, I’ll present the first project in the series of DevOpsThoughts project, which was named DevOpsThoughts Rabbit.
The project is available in the public repository on GitHub and to start the following commands needs to be run and the BranchName should be replaced with the name of the branch you want to clone.
git clone https://github.com/DevOpsThoughts/E-Commerce.git -b BranchName
DevOpsThoughts Rabbit is the first project in DevOpsThoughts Series. It’s an e-commerce website built with the following technologies:
- ASP.NET MVC 5
- Microsoft SQL Server 2014
- Modern UI Tools & Frameworks, Like Twitter Bootstrap & Font-Awesome
Below is the homepage for DevOpsThoughts Rabbit.
Pages list Grouped by User Role:
- Product List Page
- Product Details Page
- Shopping Cart (Check Out) Cascading Menu Sub Page
- Shopping Cart (Check Out) Page
- Login Page
- Add/Edit Delivery Address Page
- Order Complete Page
- Order Confirmation email
- Registration Page
- Forget the Password
- Display/Edit Account Info
- Order List Page
- Addresses List Page
- Payment Page (Note#6)
- Dashboard (Member Homepage)
- Order List Page
- Order Details Page
- Edit Order Page
- Add/Edit Product
- Dashboard (Control Panel Home page)
- Confirmation Message (Sub Page)
- Loading (Sub Page or image)
- Notification, Error, Warning
This model was developed for learning purposes, so we had to make a precise plan for the whole development process, using Scrum, User Stories and Behavior Driven Development (BDD) we can simply but the plan into this list:
User Story is a description of a specific functionality from an end-user perspective.
Product Backlog Item is a single unit of work, here we mapped each user story to a PBI, so a PBI is a user story plus acceptance criteria, priority and tags.
Test Cases, which are very important in connection to Behaviour Driven Development (BDD) and in this project we have test cases written on three levels:
- Conceptual Test Cases
- Functional Test Cases
- Usability & Functional Test Cases
I’ll explain the details of each level in the next blog post of this series.
Use Case Scenarios, which represents a list of user actions and system’s response to it. In DevOps Thoughts, each PBI was mapped to a single use case scenario, which consists from related PBI’S, Main Actors List, the list of pre-conditions, basic and alternative flow and from post conditions of scenario.
Basic Mockups, which are very basic UI representation used to deliver an abstract format of the expected to UI design to a UI developer from end-user or product owner perspective.
PhotoShop Designs (PSDs), which are based on the Test Cases, Basic Mockups and PBI’s.
Storyboarding, which is showing an illustration of user interaction with application story.
Products Data, which was added into the application for the purpose of displaying a real image of the application. All products are filled with code, title, description, category, brand, etc, in order to ensure the, the application meets the real criteria.
The project DevOpsThougths was very carefully designed and developed as a community project with a purpose of teaching the best DevOps & Software Engineering practices on a real projects. In the next post of this series, I will explain more in detail about each step of the development process that has been used for this project.