Make a Google Sheet for your OOAL : Put all your info into this:
Put the Share link into your TRELLO Board.
Step 1: Using LucidChart.com: Create a UML diagram of your Business Domain. (or Draw.io, FIGMA, or my own favorite - Just draw on a piece of paper and upload the photo from your phone).
Step 2: Share the LINK to your LucidChart Diagram in your TRELLO Board.
Step 3: Create an OOAD Object Oriented Analysis and Design Document in Google Sheets.
Provide the Share URL in your Google Sheet.
This OOAD Document will contain:
Business Objects : is a Use Case in your SUD → It is One Business Process.
Therefore it is initiated by an Actor: Follows a series of steps which is your business process.
The Data and Behaviors of each object
The Actor and their worksteps
The connections of the objects with each other:
shared field composition
object interaction via methods: Note that method choreography is how we implement use cases.
Here's a detailed lab worksheet for students to construct an Object Oriented Analysis and Design (OOAD) using Google Sheets:
Lab Worksheet: OOAD with Google Sheets
Objective: Create a comprehensive OOAD document for your chosen business domain using Google Sheets as an organizational tool.
Step 1: Set up your Google Sheet
1. Create a new Google Sheet
2. Name the sheet "OOAD - [Your Business Domain]"
3. Create the following ranges on 1 sheet:
- Business Objects : actors initiate business processes
- Object Interactions : is-a : inheritance, has-a : composition
- Lexical Analysis : Placing methods and data in the appropriate objects
- Use Cases & Actors
- Business Processes
Step 2: Business Object Identification
In the "Business Objects" tab:
1. Create columns: Object Name, Description, Attributes, Methods
2. List all potential business objects you identify in your domain
3. For each object, provide:
- A brief description
- Key attributes (data it holds)
- Methods (actions it can perform)
4. Note: These will become classes in your UML class diagram
Step 3: Object Interactions
In the "Object Interactions" tab:
1. Create a matrix with business objects as both rows and columns
2. In each cell, describe how objects interact:
- Compositional relationships (e.g., "contains", "is part of")
- Method call interactions (e.g., "calls method X of object Y")
3. Note: These interactions will inform associations and dependencies in your UML diagram
Step 4: Lexical Analysis
In the "Lexical Analysis" tab:
1. Create columns: Term, Definition, Related Objects, Notes
2. List all domain-specific terms and concepts
3. Provide clear definitions for each term
4. Identify which business objects are related to each term
5. Note: This analysis helps refine your object model and ensures consistent terminology
Step 5: Use Case and Actor Discovery
In the "Use Cases & Actors" tab:
1. Create columns: Actor, Use Case, Description, Primary Object(s) Involved
2. Identify all actors (users or external systems interacting with your system)
3. For each actor, list the use cases they participate in
4. Provide a brief description of each use case
5. Identify the primary business objects involved in each use case
6. Note: This will form the basis of your UML use case diagram
Step 6: Business Process Discovery
In the "Business Processes" tab:
1. Create columns: Process Name, Description, Steps, Objects Involved
2. Identify key business processes in your domain
3. Describe each process
4. Break down each process into steps
5. List the business objects involved in each step
6. Note: These processes will help you create sequence or activity diagrams in UML
Forward Reference to UML:
- Business Objects will become classes in your class diagram
- Object Interactions will inform associations, aggregations, and dependencies between classes
- Use Cases and Actors will directly translate to a use case diagram
- Business Processes can be represented as sequence or activity diagrams
- Lexical Analysis will ensure consistency in naming and terminology across all diagrams
Final Step: Review and Refine
1. Review all tabs for consistency and completeness
2. Ensure all identified objects, actors, and processes are accounted for
3. Look for opportunities to refine your model (e.g., generalizing similar objects, identifying patterns)
4. Prepare to translate this analysis into UML diagrams
By completing this OOAD document, you'll have a comprehensive understanding of your business domain, making the creation of UML diagrams and subsequent TypeScript implementation much more straightforward. This structured approach will also facilitate the development of a robust CI/CD pipeline for your project.
Learning Outcomes:
In terms of DEV OPS, go from a lexical analysis / UML analysis of a Business Domain to a UML Diagram suitable to deploy in TYPESCRIPT with forward view to building in a CI CD PIPE LINE.
Lesson Plan: Lexical and UML Analysis to UML Diagram for TypeScript Deployment with a Forward View to CI/CD Pipeline
Course: CSD-4503 DevOps: Tools and Practices
Topic: Transitioning from Business Domain Analysis to UML and TypeScript Implementation with CI/CD Integration
Duration: 2 hours
Target Audience: Advanced software development students familiar with TypeScript, UML, and DevOps principles.
Learning Objectives:
Understand the process of converting lexical analysis into UML:
Analyze business domains using lexical analysis.
Create UML diagrams from business requirements.
Define classes, methods, and relationships in UML based on a business problem.
Deploy UML to TypeScript:
Generate TypeScript code from UML diagrams.
Recognize how UML class diagrams correspond to TypeScript’s object-oriented nature.
Introduce CI/CD Pipeline integration:
Explain how UML-based models fit into continuous integration and deployment (CI/CD) pipelines.
Understand the deployment of TypeScript applications in CI/CD pipelines using tools like Jenkins or GitLab CI.
Lesson Outline:
1. Introduction to Lexical Analysis and Business Domain Understanding (20 minutes)
Objective: Use lexical analysis to break down business domain language into meaningful components that inform software development.
Discussion:
Lexical analysis is the process of parsing and categorizing words and phrases to extract useful data. For software development, this involves identifying:
Nouns (often correspond to classes or entities).
Verbs (often correspond to methods or operations).
Adjectives (attributes or properties of entities).
Example: A business problem for an e-commerce platform might involve nouns like Customer, Order, and Product. Verbs might include purchase, return, and cancel.
Activity: Present students with a brief business domain description. Ask them to perform lexical analysis, identifying potential classes, methods, and attributes.
2. UML Diagrams: Class Diagrams from Business Domain (30 minutes)
Objective: Transform lexical analysis into UML diagrams.
Discussion:
A UML Class Diagram is a static structure diagram representing the objects in the system, their attributes, operations, and the relationships among them.
The process involves:
Identifying Classes: From the nouns in lexical analysis.
Identifying Methods: From the verbs.
Attributes: Derived from adjectives or directly from business requirements.
Relationships: Between classes (association, inheritance, composition, etc.).
Example:
Customer class has attributes like name and email, and methods like placeOrder() and cancelOrder().
Order class has orderDate, status, and methods like processPayment().
Activity: Based on the lexical analysis performed earlier, students should draft a UML class diagram on paper or using UML tools like Lucidchart or Visual Paradigm.
3. UML-to-TypeScript Transition (30 minutes)
Objective: Translate UML diagrams into TypeScript classes and interfaces.
Discussion:
In TypeScript, UML classes translate directly into classes or interfaces.
Attributes in UML become properties, and methods map to functions.
Example:
A UML diagram for Customer becomes:
class Customer {
name: string;
email: string;
constructor(name: string, email: string) {
this.name = name;
this.email = email;
}
placeOrder(): void {
// Implementation
}
cancelOrder(): void {
// Implementation
}
}
Discuss the benefits of defining strong interfaces and ensuring code follows object-oriented principles as per the UML design.
Activity: Students take their UML diagrams and implement corresponding TypeScript code.
Objective: Learn how UML-designed systems fit into a CI/CD pipeline.
Discussion:
CI/CD Overview:
Continuous Integration (CI): Ensures that changes in TypeScript code from UML diagrams are regularly integrated and tested.
Continuous Deployment (CD): Automates deployment of TypeScript applications once they pass testing.
Tools like Jenkins, GitLab CI, or GitHub Actions are essential for automating the build and testing process.
Emphasize the importance of unit testing for classes and methods generated from UML to ensure correctness and maintainability.
Activity: Demonstrate a basic pipeline setup for a TypeScript project.
Steps:
Version Control: Push UML-based TypeScript code to GitHub.
CI Tool: Configure Jenkins or GitLab CI to build, test, and deploy the project.
Test Cases: Integrate automated unit testing for TypeScript classes generated from UML.
Example: Build a Jenkins pipeline that pulls code from a Git repository, runs npm test to validate unit tests, and deploys the app if tests pass.
5. Conclusion and Q&A (10 minutes)
Recap key lessons:
Transitioning from business requirements to UML.
Converting UML diagrams into TypeScript classes.
Using CI/CD pipelines for efficient development and deployment.
Address any questions from students.
Assessment:
Assignment:
Students must complete a lexical analysis of a provided business domain.
They will generate a UML diagram and submit corresponding TypeScript classes.
Implement a basic CI pipeline for the project using Jenkins or GitLab.
Term Project:
Students will work in groups to design a complex system using UML, deploy it using TypeScript, and implement a full CI/CD pipeline by the end of the course.
Resources:
UML Tool: Lucidchart, Visual Paradigm.
CI/CD Tools: Jenkins, GitLab CI, GitHub Actions.
Recommended Reading:
DevOps: A Software Architect’s Perspective by Len Bass et al.
Docker: Up & Running by Sean Kane, Karl Matthias (for containerization in CI/CD).
This lesson integrates UML design with modern DevOps practices, a crucial combination for deploying software with agility and confidence.
September 18 Lesson Plan Day 3 Section 1
Your JEAM Text Book contains all the formulas you need to make this work:
Here are 8 business domains suitable for teams to analyze using UML and create TypeScript for a DevOps CI/CD pipeline:
Online Bookstore A web-based platform for buying and selling books, including features like user accounts, book listings, shopping cart, and order processing.
Food Delivery Service An app-based system connecting customers with local restaurants, featuring menu browsing, order placement, real-time tracking, and driver management.
Fitness Tracking Application A mobile and web app for users to log workouts, track nutrition, set fitness goals, and connect with other users for motivation and challenges.
Task Management System A collaborative tool for teams to create, assign, and track tasks, with features like project boards, deadlines, notifications, and reporting.
E-learning Platform An online education system with course creation, student enrollment, video lessons, quizzes, progress tracking, and certificate generation.
Inventory Management System A software solution for businesses to track stock levels, manage suppliers, process orders, and generate inventory reports.
Social Media Analytics Tool A platform for businesses to monitor their social media presence, track engagement metrics, analyze trends, and generate performance reports.
Car Rental Service An online system for users to browse available vehicles, make reservations, manage bookings, and process payments for car rentals.
These domains offer a good mix of complexity and real-world applicability, making them suitable for UML analysis and TypeScript implementation in a DevOps pipeline.
Each domain provides opportunities for modeling various entities, relationships, and processes, which can then be translated into TypeScript code and managed through a CI/CD workflow.
Business Simulation Name: "DevOps Dynamics: Stakeholder Insights"
In this simulation, students will practice stakeholder interviews to gather information for their System Under Design (SUD).
They'll use ChatGPT to simulate various stakeholders, allowing them to hone their interview skills in a safe environment.
Instructions for students:
For this exercise: Select their own SUD:
"In real-world scenarios, you'll interview actual stakeholders to gather requirements for your System Under Design. For our 'DevOps Dynamics: Stakeholder Insights' simulation, you'll use ChatGPT to play the role of different stakeholders. This will help you practice formulating questions and interpreting responses.
To use ChatGPT as a stakeholder, preface your questions with a prompt like this:
'Act as [stakeholder role] for [chosen business domain]. Please respond to the following question:'
Then, ask your interview question. Here are 6 typical stakeholder interview questions you can use as a starting point:
1. "What are the primary goals you hope to achieve with this system?"
2. "Can you walk me through your current process and where you see the biggest pain points?"
3. "What features or functionalities are absolutely essential for this system?"
4. "How do you envision users interacting with this system on a day-to-day basis?"
5. "Are there any regulatory or compliance requirements we need to consider?"
6. "What metrics would you use to measure the success of this system?"
Remember to adjust these questions based on the specific stakeholder you're 'interviewing' and the business domain you're working with. Follow up on their responses to dig deeper into requirements and potential challenges.
For example, if you're working on the Online Bookstore domain and want to interview the Chief Marketing Officer, you might start with:
'Act as the Chief Marketing Officer for an Online Bookstore. Please respond to the following question: What features do you think are crucial for attracting and retaining customers on our platform?'
Use the responses you get to inform your UML diagrams and subsequent TypeScript implementation. This process will help you better understand the requirements and challenges you'll need to address in your DevOps pipeline."
Want to print your doc? This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (