ChatGPT-এর সাথে আমার প্রাথমিক সাক্ষাত হয়েছিল যখন এটি প্রকাশিত হয়েছিল তখন নিছক কৌতূহল দ্বারা চালিত হয়েছিল। আমি বিশেষভাবে কোড জেনারেশন নিয়ে আলোচনা করা নিবন্ধগুলির প্রতি আকৃষ্ট হয়েছিলাম, যদিও আমি ব্যক্তিগতভাবে কোড লিখি না। এবং আমি প্রাথমিকভাবে বিশ্বাস করেছিলাম যে বৈশিষ্ট্যটি আমার সাথে প্রাসঙ্গিক হবে না।
যাইহোক, এমন একটি মুহূর্ত এসেছিল যখন আমি নিজেকে একটি ইউএমএল ডায়াগ্রামে কাজ করতে দেখেছি যা আমি তৈরি করতে খুব বেশি আগ্রহী ছিলাম না।
প্রক্রিয়াটিকে সহজ বা ত্বরান্বিত করার জন্য আমার অনুসন্ধানে, আমি বিভিন্ন পদ্ধতির দিকে ফিরেছি। আমি সাধারণত PlantUML কোড ব্যবহার করে UML ডায়াগ্রাম তৈরি করি... এখানে, উপলব্ধি আমাকে আঘাত করেছে: এটি কোডের একটি ফর্ম, এবং কোড তৈরি করা যেতে পারে।
এইভাবে, ChatGPT আমার ডায়াগ্রাম তৈরির জন্য একটি মূল্যবান টুলে পরিণত হয়েছে, এবং এখন আমি আপনার সাথে আমার অভিজ্ঞতা শেয়ার করতে পেরে উত্তেজিত।
ইউএমএল মানে ইউনিফাইড মডেলিং ল্যাঙ্গুয়েজ , এবং এটি সফ্টওয়্যার সিস্টেমের আর্টিফ্যাক্টগুলি নির্দিষ্ট, ভিজ্যুয়ালাইজ, নির্মাণ এবং নথিভুক্ত করার জন্য একটি ভাষা হিসাবে কাজ করে। ইউএমএল অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ল্যাঙ্গুয়েজের ধারণা থেকে আঁকে; উন্নয়ন জ্ঞান থাকা UML মডেলিংয়ের জন্য উপকারী কিন্তু বাধ্যতামূলক নয়।
এটি প্রাথমিকভাবে সফ্টওয়্যার ডিজাইনের দিকগুলি বর্ণনা করার জন্য ডিজাইন করা হয়েছে, তবে এটি ব্যবসা বা ব্যবহারকারীর প্রয়োজনীয়তা মডেল করার জন্য আচরণগত ডায়াগ্রামের একটি সেটও অফার করে।
আমার ভূমিকায়, আমি আইটি ব্যবসায়িক প্রক্রিয়াগুলির সাথে জড়িত, বিশেষভাবে সেগুলিকে বিশ্লেষণ, অপ্টিমাইজেশানের জন্য মডেলিং এবং বিকাশকারীদের বাস্তবায়নের জন্য একটি স্পষ্ট বিন্যাসে অনুবাদ করার উপর ফোকাস করি৷
যখন মডেলিংয়ের কথা আসে, আমি বিভিন্ন পদ্ধতি এবং সরঞ্জাম নিয়োগ করি, যার মধ্যে একটি হল UML।
এটির সৌন্দর্য এখানে - আপনাকে ইউএমএল ব্যবহার করার জন্য সফ্টওয়্যার ইঞ্জিনিয়ার হতে হবে না। আমি সফ্টওয়্যার দিয়ে বাস্তবায়িত ব্যবসায়িক প্রক্রিয়াগুলির মাধ্যমে নেভিগেট করার জন্য এটি ব্যবহার করি, তবে এটি এর বাইরেও যায় - এটি উল্লেখযোগ্যভাবে বহুমুখী এবং বিকাশের বিভিন্ন পর্যায়ে বিভিন্ন ভূমিকা দ্বারা প্রয়োগ করা যেতে পারে। সব মিলিয়ে, একবার চেষ্টা করে দেখুন; আপনি শুধু নিজেকে এটি ভালবাসা খুঁজে পেতে পারে.
যেকোনো ডায়াগ্রামের মতো, আপনি সহজেই এটি আঁকতে পারেন — এটি সহজ, সুবিধাজনক, দ্রুত এবং প্রক্রিয়া এবং ফলাফলের একটি পরিষ্কার দৃশ্য প্রদান করে। এই উদ্দেশ্যে অনেক গ্রাফিক টুল উপলব্ধ, এবং আমি সেগুলি ব্যবহার করি। যাইহোক, প্রায়শই না, আমি "কোড" পদ্ধতি বেছে নিই, প্লান্টইউএমএলকে ধন্যবাদ।
PlantUML , একটি ওপেন-সোর্স মডেলিং ভাষা এবং টুল, আপনাকে প্লেইন টেক্সট ভাষার উপর ভিত্তি করে ডায়াগ্রাম তৈরি করতে দেয়। সহজ ভাষায়, আপনি ডায়াগ্রাম তৈরি করতে PlantUML-এ কোড লিখতে পারেন।
আমি আমার 'সৃজনশীল মোডে' স্কেচিং ডায়াগ্রাম উপভোগ করি, কিন্তু প্রায়শই না, আমি হয় পরে সেগুলিকে কোডে রূপান্তর করি বা সরাসরি কোড লিখি। এই জন্য দুটি প্রধান কারণ আছে:
আপনি অনেক বেশি দক্ষতার সাথে আপনার ডায়াগ্রামে ব্লক সন্নিবেশ, সরাতে এবং মুছে ফেলতে পারেন
টানা ডায়াগ্রামে ব্লকের ক্রম পরিবর্তন করা প্রায়শই সমগ্র ডায়াগ্রাম জুড়ে পরিবর্তনের দিকে নিয়ে যায়, যা অন্যান্য ব্লক এবং লিঙ্কগুলিকে প্রভাবিত করে। কোডের সাথে কাজ করার সময়, আপনাকে চাক্ষুষ দিক নিয়ে নিজেকে উদ্বিগ্ন করার দরকার নেই; আপনি একটি পাঠ্যের সাথে কাজ করছেন, এবং PlantUML আপনার জন্য গ্রাফিকাল উপস্থাপনার যত্ন নেয়।
আপনি ছবি নিয়ে কাজ করার পরিবর্তে সাধারণ পাঠ্য ফাইলগুলির সাথে কাজ করতে এবং সংরক্ষণ করতে পারেন
ডকুমেন্টেশনে ডায়াগ্রামের চিত্রের সম্মুখীন হলে এটি বিশেষভাবে উপকারী। মান আপস করা হতে পারে. এই ধরনের ডায়াগ্রামের সাথে কাজ চালিয়ে যাওয়া অসম্ভব, এবং সেগুলি শুধুমাত্র পুনরায় আঁকা যাবে, সম্পাদনা বা প্রসারিত করা যাবে না।
আরেকটি উল্লেখযোগ্য সুবিধা হল যে ChatGPT PlantUML বোঝে এবং কোড তৈরি করতে পারে , যার ফলে আপনি কোড জেনারেশনের সুবিধা উপভোগ করতে পারবেন এবং সেগুলিকে UML-এর সাথে একত্রিত করতে পারবেন। আমি নীচে আমার ব্যক্তিগত অভিজ্ঞতা থেকে কিছু উদাহরণ শেয়ার করব।
আপনি PluntUML এর জন্য যেকোন কোড এডিটর ব্যবহার করতে পারেন। আমি ব্যক্তিগতভাবে এতে ভিজ্যুয়াল স্টুডিও কোড এবং প্ল্যান্টইউএমএল এক্সটেনশন পছন্দ করি। আরেকটি উপায় হল https://plantuml.com বা অন্যদের মত অনলাইন রেডেক্টর ব্যবহার করা।
আসুন একটি ট্যাক্সি অ্যাপ্লিকেশনের জন্য একটি ইউজ কেস ডায়াগ্রাম তৈরি করি।
প্রথমত, আমি একটি প্রম্পট ব্যবহার করি:
https://plantuml.com/ru/use-case-diagram থেকে সিনট্যাক্স ব্যবহার করুন, একটি ট্যাক্সি অ্যাপের জন্য একটি ব্যবহারের কেস ডায়াগ্রাম তৈরি করুন
ChatGPT একটি কোড তৈরি করে:
@startuml left to right direction actor "Passenger" as passenger actor "Driver" as driver rectangle "Taxi App" { usecase "Request Ride" as request usecase "Cancel Ride" as cancel usecase "Track Ride" as track usecase "Payment" as payment passenger -- (request) passenger -- (cancel) passenger -- (track) passenger -- (payment) driver -- (track) driver -- (payment) (request) --> (cancel) (request) --> (track) (track) --> (payment) } @enduml
ভিজ্যুয়াল ভিউ:
ধারণাটি ঠিক আছে, তবে মাত্র চারটি ক্ষেত্রে অপর্যাপ্ত বলে মনে হচ্ছে। আমি অতিরিক্ত কেস যোগ করার এবং কিছু সিনট্যাক্স উদাহরণ সহ এটিকে উন্নত করার অনুরোধ করছি, কারণ প্ল্যান্টইউএমএল-এ তেমন কিছু নেই। শীঘ্র:
আরও কেস যোগ করুন, আপনি বিভিন্ন ধরনের লিঙ্ক ব্যবহার করতে পারেন যেমন অন্তর্ভুক্ত, প্রসারিত এবং সাধারণীকরণ, সিনট্যাক্স:
(case1) .> (case2_includes_case1) : <<অন্তর্ভুক্ত>>
(পিতামাতা) <|-- (সন্তান)
(case1 কেস 2 প্রসারিত করে) .> (case2): <<extends>>
তারপর আমি একাধিকবার জিজ্ঞাসা করি
আরও কেস যোগ করুন
আবার এবং ত্রুটি ঠিক করার জন্য কিছু নির্দিষ্ট অনুরোধ করুন।
এখানে ChatGPT থেকে চূড়ান্ত ফলাফল রয়েছে:
@startuml left to right direction actor "Passenger" as passenger actor "Driver" as driver rectangle "Taxi App" { usecase "Request Ride" as request usecase "Cancel Ride" as cancel usecase "Track Ride" as track usecase "Payment" as payment usecase "Rate Driver" as rate usecase "View Ride History" as history usecase "Select Ride Type" as selectType usecase "Provide Feedback" as feedback usecase "View Driver Information" as driverInfo usecase "Update Profile" as updateProfile usecase "Promo Code" as promoCode usecase "Emergency Assistance" as emergencyAssistance passenger -- (selectType) passenger -- (request) passenger -- (cancel) passenger -- (track) passenger -- (payment) passenger -- (rate) passenger -- (history) passenger -- (feedback) passenger -- (driverInfo) passenger -- (updateProfile) passenger -- (promoCode) passenger -- (emergencyAssistance) driver -- (track) driver -- (payment) driver -- (rate) (request) ---> (cancel) (request) ---> (track) (track) ---> (payment) (track) ---> (rate) (history) --> (payment) (rate) --> (payment) (rate) ---> (track) (cancel) --> (request) (selectType) --> (request) (feedback) --> (rate) (driverInfo) ---> (track) (updateProfile) --> (track) (promoCode) --> (payment) (emergencyAssistance) --> (track) } @enduml
আমি কেস পছন্দ করি, কিন্তু তাদের মধ্যে সংযোগ না. সুতরাং, আমি যে কোড একটি বিট সম্পাদনা.
এখানে চূড়ান্ত ফলাফল:
@startuml actor "Passenger" as passenger actor "Driver" as driver rectangle "Taxi App" { usecase "Request Ride" as request usecase "Cancel Ride" as cancel usecase "Track Ride" as track usecase "Payment" as payment usecase "Rate Driver" as rate usecase "View Ride History" as history usecase "Select Ride Type" as selectType usecase "Provide Feedback" as feedback usecase "View Driver Information" as driverInfo usecase "Update Profile" as updateProfile usecase "Promo Code" as promoCode usecase "Emergency Assistance" as emergencyAssistance passenger -- (selectType) passenger - (request) passenger -- (track) passenger -- (payment) passenger -- (history) passenger -- (rate) passenger -- (updateProfile) passenger -- (emergencyAssistance) driver - (request) driver - (payment) driver - (rate) (request) --> (track) (track) --> (payment) (track) --> (rate) (selectType) --> (request) (cancel) .> (request) : <<extends>> (rate) <.. (feedback) : <<include>> (payment) <..(promoCode) : <<include>> (driverInfo) .> (track) : <<extends>> } @enduml
অবশ্যই, আপনি আরও পরিস্থিতি অন্তর্ভুক্ত করতে পারেন। উদাহরণস্বরূপ, ব্যবহারকারীর নিবন্ধন এবং লগইন সম্পর্কে কোন তথ্য নেই। উপরন্তু, আপনি আপনার ডিজাইনের সাথে সম্পর্কিত একটি ডায়াগ্রাম তৈরি করতে ChatGPT-কে গাইড করতে পারেন। মূল বিষয় হল আপনার একটি ভিত্তি আছে যা আপনি ব্যবহার করতে পারেন।
আমার কাছে একটি বিপরীত প্রক্সি সহ ছবি স্টোরেজ সমাধানের জন্য একটি সিকোয়েন্স ডায়াগ্রামের একটি সাধারণ সংস্করণ রয়েছে:
@startuml participant Client boundary "Reverse Proxy" as Proxy participant Back participant FileStorage participant Admin actor Editor Editor -> Admin: Add picture Admin -> FileStorage: Add picture Client -> Proxy: Get picture Proxy -> Proxy: Check cache alt cash is not empty Proxy -->> Client: Return picture else cash is empty Proxy -> FileStorage: Recieve picture FileStorage --> Proxy: Picture Proxy -> Proxy: Save to cache Proxy -->> Client: Return picture end @enduml
এর উন্নতি করা যাক। আমার প্রম্পট:
আমি ছবি সংরক্ষণ এবং ব্যবহার করার জন্য একটি সমাধান ডিজাইন করছি, এই চিত্রটি পরীক্ষা করুন এবং প্রয়োজনে এটি সম্পাদনা করুন
ChatGPT পরামর্শ:
1. **Participant Name Clarification:** - Consider renaming "Back" to something more descriptive, like "Application Server" or a similar term that better represents the functionality. 2. **Actor Placement:** - Move the "Editor" actor to a more standard position, usually at the top. @startuml participant Client actor Editor boundary "Reverse Proxy" as Proxy participant ApplicationServer participant FileStorage participant Admin Editor -> Admin: Add picture Admin -> FileStorage: Add picture Client -> Proxy: Get picture Proxy -> Proxy: Check cache alt cache is not empty Proxy -->> Client: Return picture else cache is empty Proxy -> ApplicationServer: Receive picture ApplicationServer --> Proxy: Picture Proxy -> Proxy: Save to cache Proxy -->> Client: Return picture end @enduml
আমি অভিনেতার নিয়োগের বিষয়টি পছন্দ করি না, তাই আমি এটিকে ফিরিয়ে দিয়েছি; বাকি সবকিছু ঠিক আছে।
তারপর আমি কয়েকবার একটি প্রম্পট পুনরাবৃত্তি করেছি:
এই চিত্রটি পরীক্ষা করুন এবং প্রয়োজন হলে এটি উন্নত করুন
এবং প্রম্পট লিখুন:
কিভাবে অ্যাপ্লিকেশন সার্ভার ডাটাবেস থেকে ছবি পায় তা দেখান
নিয়ন্ত্রণের ফোকাস যোগ করুন
কিছু কোণার কেস যোগ করুন
এটি চূড়ান্ত করতে, আমি নিয়ন্ত্রণের ফোকাস সামঞ্জস্য করি এবং নামকরণে কিছু পরিবর্তন করি। এখানে চূড়ান্ত ফলাফল:
@startuml participant Client boundary "Reverse Proxy" as Proxy participant ApplicationServer database FileStorage participant Admin actor Editor Editor -> Admin: Add picture activate Admin deactivate Admin Admin -> FileStorage: Add picture activate FileStorage deactivate FileStorage Admin -> ApplicationServer: Store metadata activate ApplicationServer Client -> Proxy: Get picture activate Proxy Proxy -> Proxy: Check cache alt cache is not empty Proxy -->> Client: Return picture else cache is empty Proxy -> ApplicationServer: Receive picture request activate FileStorage ApplicationServer -> FileStorage: Retrieve picture from database alt picture not found in database FileStorage --> ApplicationServer: Picture not found deactivate FileStorage ApplicationServer -> Proxy: Notify picture not found Proxy -->> Client: Picture not found else FileStorage --> ApplicationServer: Picture data deactivate FileStorage ApplicationServer -> Proxy: Send picture to Proxy Proxy -> Proxy: Save to cache Proxy -->> Client: Return picture end end deactivate Proxy deactivate ApplicationServer deactivate Admin deactivate Editor @enduml
প্রথমত, আপনাকে সবকিছু পরীক্ষা করতে হবে কারণ "ChatGPT ভুল করতে পারে।" এটি আপনার জন্য প্রতিস্থাপনের জন্য নয় বরং আপনার কাজকে স্ট্রীমলাইন এবং অপ্টিমাইজ করার একটি টুল।
সবচেয়ে সাধারণ ত্রুটি PlantUML সিনট্যাক্স সম্পর্কিত। কখনও কখনও, এটি একটি কথোপকথনের মাঝখানে ঘটে এবং আমাকে এটি ঠিক করতে হবে এবং ChatGPT কে সঠিক পথে ফিরিয়ে আনতে হবে৷
দ্বিতীয়ত, আমি ChatGPT 3.5 এর একটি বিনামূল্যের সংস্করণ ব্যবহার করি এবং এতে উত্থান-পতন রয়েছে। কখনও কখনও, এটি আরও খারাপ কাজ করে এবং একই প্রম্পটের জন্য কিছু র্যান্ডম উত্তর দেয়।
তৃতীয়ত, ChatGPT কিছু ডায়াগ্রাম অন্যদের চেয়ে ভালো বোঝে। উদাহরণস্বরূপ, কেস ডায়াগ্রাম ব্যবহার করার চেয়ে এটি সিকোয়েন্স ডায়াগ্রামের সাথে অনেক ভালো করে।
যাইহোক, এই সীমাবদ্ধতা থাকা সত্ত্বেও, ChatGPT একটি মূল্যবান হাতিয়ার এবং একটি চমৎকার সহকারী যা আপনার দক্ষতা বাড়াতে এবং আপনার সময় বাঁচাতে সক্ষম।
আমি আমার কাজে স্থায়ীভাবে ChatGPT ব্যবহার করি। আপনি যদি একজন ম্যানেজার, বিশ্লেষক, বিকাশকারী, পরীক্ষক বা অন্য কোনো ভূমিকায় থাকেন তবে আপনি UML ব্যবহার করতে পারেন। যদি তা হয় তবে PlantUML কোড লেখা এবং তৈরি করার কথা বিবেচনা করুন - এটি আপনার সময় বাঁচাবে এবং আপনার দক্ষতা বাড়াবে।
আমি আশা করি আমার অভিজ্ঞতা কাজে লাগবে এবং আপনাকে অনুপ্রাণিত করবে। ধন্যবাদ!