সিউডোকোডিং করে সফটওয়্যার ডিজাইন?


9

আপনি কি সিউডোকোডের উপর ভিত্তি করে একটি পদ্ধতি সহ সফ্টওয়্যার ডিজাইন করার (যেমন লিখুন) ভাল উপায় জানেন?

আমি সফটওয়্যার ডিজাইনে নতুন এবং ইউএমএল সম্পর্কে কিছু তথ্য পড়ি। আমার নম্র শ্রেণির শ্রেণিবিন্যাস এতদূর ভাল, তবে এটি জটিল হয়ে যাওয়ার পরে আমি লক্ষ্য করেছি যে "সম্পূর্ণ দেখলে" ছবিটি নিয়ে আমি ভবিষ্যতের আরও প্রসারযোগ্যতার জন্য একটি আলাদা কাঠামো ব্যবহার করতে পারতাম। পাইথন প্রোটোটাইপিংয়ের পক্ষে ভাল, কেবল লিখতে শুরু করার সাথে আমি প্রায় ভাল, তবে বেশ নয়।

সুতরাং আমি ইউএমএল শ্রেণির চিত্রগুলি চেষ্টা করেছি, তবে তারা আমাকে খুব বেশি সাহায্য করবে বলে মনে হয় না। আমি যে সমস্যাগুলি সমাধান করি সেগুলি আমি আমার মাথায় তুচ্ছভাবে করতে পারি। আমি প্রকৃত পদ্ধতিগুলি সিউডোকোড করা শুরু করার পরে আমি অতিরিক্ত নকশার প্রয়োজনীয়তা লক্ষ্য করি।

সুতরাং আপনি যদি সিউডোকোড দ্বারা ডিজাইন করতে চান, আপনি এটি কিভাবে করবেন? আমি আমার কাছে এমন একটি পদ্ধতি বিশ্বাস করি যা কোড সহ মোটামুটি 1-থেকে -1 হয় সর্বোত্তম কাজ করে। তবে বেশিরভাগ ইউএমএল সফ্টওয়্যার এমনকি পদ্ধতিটির কোডও প্রদর্শন করে না (যেমন চিত্রের বিপরীতে জিওএফ)।

কেউ দাবি করেছেন যে ইউএমএল কেবলমাত্র ডকুমেন্টেশন এবং উপস্থাপনার জন্য এবং ডিজাইনের জন্য এটি দুর্দান্ত নয়? আমিও এই অনুভূতি পাই। আমি ভেবেছিলাম খাঁটি ইউএমএল এবং কিছু সহজলভ্য হোয়াইটবোর্ড স্কেচগুলি গুগলিংয়ের আগ পর্যন্ত সফ্টওয়্যার ডিজাইন করার উপায় ছিল আমি এনভিশন এপিডিটি খুঁজে পেয়েছি।

তাই কি চটপটে বিকাশ এমন কিছু যা আমার সন্ধান করা উচিত বা তারা এলোমেলোভাবে সেই চটপট কল করে - আমি ভেবেছিলাম চৌকস কেবল সময়সূচী সম্পর্কে? বা আমি ভুলভাবে ডিজাইন করছি (ইউএমএল সহ) - কেউ কি সিউডোকোড দ্বারা ডিজাইন করেছেন? আমি কীভাবে এটির জন্য একটি ভাল সরঞ্জাম খুঁজে পেতে পারি?


3
স্টিভ ম্যাককনেল তার বুক কোড সম্পূর্ণ 2সিউডোকোড প্রোগ্রামিং প্রক্রিয়া (পিপিপি) বর্ণনা করেছেন । পদ্ধতিটি নিম্ন-স্তরের নকশা এবং বাস্তবায়নে মনোনিবেশ করে তবে আপনি যদি পরে থাকেন তবে এটি ভাল পঠনযোগ্য।
থিটন

উত্তর:


8
 I thought agile is about schedule only?

এটা শুধু পরিকল্পনা নয়। চতুর সফ্টওয়্যার বিকাশ একটি বিবর্তনীয় বিকাশ এবং অভিযোজিত পরিকল্পনার সাথে একটি সময়-বাকী পুনরাবৃত্ত বিতরণ হওয়া সম্পর্কে আরও বেশি যা পণ্যের মালিক দ্বারা অনুরোধকৃত পরিবর্তনের জন্য নমনীয় প্রতিক্রিয়াটিকে উত্সাহ দেয়।

 Or am I designing incorrectly (with UML) - does anyone design by pseudocode? 

আমার অভিজ্ঞতার চার্টগুলি ক্লায়েন্ট স্ট্যান্ড দৃষ্টিকোণ থেকে বোঝা অনেক সহজ। এগুলি চাক্ষুষভাবে আবেদনময়ী এবং অনেক সময় খুব রঙিন এবং সহজে অনুসরণ করা যায়। তবে প্রকৃত অ্যাপ্লিকেশন কোডটি সংযোগ বিচ্ছিন্ন করার প্রকৃতির কারণে চার্টগুলি বজায় রাখা খুব কঠিন। প্রতিবার অ্যাপ্লিকেশনটিতে পরিবর্তন আনার সময় বিকাশকারীকে চার্ট সহ সমস্ত ডকুমেন্টেশন আপডেট করার জন্য সময় নিতে হবে। তবে, দল বা সংস্থায় বিএ থাকলে, ক্লায়েন্ট ব্যবসায়ের প্রক্রিয়া ভালভাবে বুঝতে পারে এবং ইউএমএল ডায়াগ্রামগুলি পরিচালনা করতে পারে এমন সমস্যাটি সহজেই দূর করা যায়।

ইউএমএলের মতো সরঞ্জামগুলি এই প্রক্রিয়াটিকে সহজ করে তুলতে পারে তবে কেবল অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের সাথেই ভাল কাজ করে। প্রযুক্তিগত দলগুলির জন্য সিউডো কোড অনেক সহজ। এই কোডটি তৈরির প্রক্রিয়া প্রকৃত প্রোগ্রামিং ভাষার বিকাশের পর্বের গতি বাড়িয়ে তোলে।

এছাড়াও অন্যান্য কিছু বিকল্প রয়েছে যা আপনি দেখতে পাচ্ছেন:

  • ডেটা ফ্লো ডায়াগ্রাম
  • রাজ্য ডায়াগ্রাম
  • প্রক্রিয়া প্রবাহের চার্ট

দেখতে ভাল রেফারেন্স: সফ্টওয়্যার ডিজাইন টিউটোরিয়াল । এছাড়াও, আমি ব্যক্তিগতভাবে সিউডোকোড বা কোডে একটি ভাল ব্লগ পড়ার পরামর্শ দেব ? কোডিং হরর পোস্ট করেছেন - পড়তে আমার প্রিয় ব্লগ :)

সব মিলিয়ে কিছু ট্রেড অফ রয়েছে যা আপনাকে বিবেচনা করা উচিত।


3
সিউডোকোড বা কোডের লিঙ্কের জন্য +1 । শুধু অভিশাপ কোড লিখুন।
কেভিন ক্লাইন

@ এল ইউসুবুভ: ব্যাখ্যার জন্য ধন্যবাদ। দেখে মনে হচ্ছে আপনি উপস্থাপনের জন্য কী ইউএমএল বেশি? আসল ডিজাইনের জন্য আমি এর উপর জোর দিচ্ছি না? শেষ পর্যন্ত আপনি 3 ডায়াগ্রামের প্রস্তাব দিন। এগুলি কিছু প্রসারিত কোড সহ 1-থেকে -1 করা যায়। আমার বিপরীতে কিছু জিনিস যা ডায়াগ্রামে কাজ করে কোডের সাথে কাজ নাও করতে পারে - যা আমি এড়াতে চাই।
জেরেনুক

@ জেরেনুক, ডেটা ফ্লো ডায়াগ্রামগুলি কোড প্রবাহের মাধ্যমে 1-থেকে -1 করা যেতে পারে। তবে চিত্রগুলি সাধারণত উপাদান / মডিউল / ব্যবহারের ক্ষেত্রে উচ্চ স্তরের নকশা এবং মিথস্ক্রিয়া দেখতে ব্যবহৃত হয়।
ইউসুভভ

3

অ্যাসেম্বলি ভাষায় প্রোগ্রামিং করার সময় সিউডো-কোড লেখা অনেক অর্থবোধ করে। অ্যালগরিদমটি ম্যানুয়ালি এ্যাসেম্বলি ভাষায় অনুবাদ করার চেষ্টা করার পরে অনুবাদটি ডিবাগ করার আগে যাচাই করা যেতে পারে। এটি এখনও প্রথম-প্রজন্মের সংকলিত ভাষার জন্য ফরট্রান চতুর্থ ভাষার জন্য কিছুটা উপলব্ধি তৈরি করেছিল, যেখানে একমাত্র নিয়ন্ত্রণের রচনা ছিল গোটো, সমস্ত ভেরিয়েবল (আনুষ্ঠানিক যুক্তি ব্যতীত) গ্লোবাল ছিল এবং ভেরিয়েবলের নাম ছয়টি অক্ষরের মধ্যে সীমাবদ্ধ ছিল।

আজ আমরা অ্যাসেম্বলি ভাষায় খুব কম প্রোগ্রামিং করি, এবং আমি কেবল কোড লেখার পরিবর্তে সিউডো কোড লেখার খুব কম মূল্য দেখি। একটি শালীন ভাষায়, আসল কোডটি সিউডো কোডটি প্রায় শব্দের জন্য শব্দ অনুসরণ করবে এবং সিউডো কোডটি কেবল সময়ের অপচয় a

তবে আমি নীচে কোডিং শুরু করি না। আমি টিডিডি অনুসরণ করি এবং একটি পরীক্ষা দিয়ে শুরু করি। তারপরে আমি উপরের দিকে কোডিং শুরু করি এবং পরীক্ষাগুলি পাস করার জন্য প্রয়োজনীয় হিসাবে ধীরে ধীরে আমার নীচের দিকে কাজ করি।

সিউডো কোডের বিকল্পটি নিম্ন-স্তরের শ্রেণির 1000 লাইন লিখছে না। পরিবর্তে শীর্ষে শুরু করুন, আপনার ডোমেনের জন্য আদর্শ তবে অস্তিত্বের এপিআই কল করে। তারপরে এপিআই তৈরি করুন।


যখন আমি কেবল কোডিং শুরু করি, কখনও কখনও পরে আমি লক্ষ্য করি যে ডিজাইনের ভিত্তিতে আমি কিছু কোড তৈরি করতে পারি। রিফ্যাক্টরিং ঠিক আছে, তবে আমি প্রথমে সমস্ত কোডের সংক্ষিপ্তসারটি দেখে এবং কিছুটা সৃজনশীলতা ব্যবহার করে থাকলে এটি এড়াতে পারত। একটি গ্রাফিকাল সিউডোকোড ভিউ একটি কনডেন্সড গ্রাফের মধ্যে সমস্ত কিছু উপস্থাপন করতে পারে। আমার ভুলটি অন্য কোথাও?
জেরেনুক

2
আপনার ভুলটি বিশ্বাসে রয়েছে যে রিফ্যাক্টরিং কোডটি সিউডো-কোড রিফ্যাক্টরিংয়ের চেয়ে কিছুটা বেশি কাজ work একটি আধুনিক আইডিই দিয়ে একটি সাদামাটা পাঠ্য সম্পাদককে কাগজে কাগজে ছদ্ম-কোড দিয়ে গণ্ডগোল করার চেয়ে প্রকৃত কোডটি লেখা সহজ এবং দ্রুত।
কেভিন ক্লিন

1

ক্লাস ডায়াগ্রামগুলি চেষ্টাটি সবেমাত্র সার্থক বলে মনে করি, এমনকি আপনি সমস্ত পদ্ধতি তালিকাভুক্ত না করে এবং কেবল উত্তরাধিকারের শ্রেণিবদ্ধতা দেখান। সিকোয়েন্স ডায়াগ্রামগুলি ভাল, তবে আমি যখন এগুলি আঁকছি তখন সম্ভবত বিশ্রী বোধ করুন (সম্ভবত কেবল আমার)।

আমি ডেটা ফ্লো ডায়াগ্রাম এবং স্ট্রাকচার চার্টগুলি আরও কার্যকর হতে খুঁজে পেয়েছি (যদিও কাঠামোগুলি চার্টগুলি সাধারণত বিডিইউএফের সাথে যুক্ত এবং তাই এই মুহুর্তে অনুকূলতার বাইরে)। বিশেষত কার্যকরী পচনের জন্য ডিএফডিগুলি কার্যকর। কোনও ডিএফডি-র প্রতিটি "বুদবুদ" আপনার ডিএফডিতে বিভক্ত হতে পারে যতক্ষণ না আপনি যতটুকু স্তরের বিশদ চান।


0

আমি মনে করি গ্রাফিকাল সরঞ্জামগুলি সিউডোকোডিংয়ের চেয়ে ভাল তবে ইউএমএল কেবলমাত্র এত বেশি জটিল হয়ে গেছে যে এটি এই পদ্ধতিগুলির মধ্যে খারাপগুলি একত্রিত করে :-)

কিছুটা স্পষ্ট করে বলতে: আমি মনে করি প্রোগ্রামিং বেশিরভাগ ক্ষেত্রে একটি নির্দিষ্ট সমস্যা বিশ্লেষণ করার উপায়, এটি ছোট উপাদান এবং তাদের মিথস্ক্রিয়াতে পৃথক করে। এটি "একটি যাত্রা, কোনও গন্তব্য নয়", আপনি ক্রমাগত সমস্যা সম্পর্কে আপনার জ্ঞানের উন্নতি করেন, সুতরাং উপাদানগুলির গ্রাফটি পরিবর্তন হচ্ছে: স্তরগুলি উপস্থিত হয় এবং বিবর্ণ হয়ে যায়, ফাংশন এবং ডেটা আইটেমগুলি উপরে এবং নীচে সরানো হয় ইত্যাদি ইত্যাদি etc.

এই প্রক্রিয়াটি অনুসরণ করার প্রাকৃতিক সরঞ্জামটি একটি স্কেচবোর্ড, যতটা সম্ভব সহজ, তবে দ্রুত বোঝার জন্য সহায়তা করার জন্য যথেষ্ট জটিল (একই রঙের, আকারগুলি, একই যৌক্তিক অর্থের জন্য তীর)। আমি সিলভার বুলেটটি খুঁজে পাইনি, এবং সম্ভবত আমি নিজেই একদিন লিখব, তবে এখন আমি চকচকে ব্যবহার করছি ; প্রিজির জুমিং বৈশিষ্ট্যের সাথে মিলিত এটি প্রায় নিখুঁত হবে।

সিউডোকোডিং কেন হয় না? সিউডোকোডিং বাস্তবায়নের এক ধাপ এগিয়ে, "উপাদান গ্রাফের ক্রমিক রূপ", যখন আপনি এখনও আপনার ধারণাগুলি আকার দেন। ভাল নয়, আপনার মাথা সীমাবদ্ধ করুন। আমার অভিজ্ঞতায় আমি জানতে পেরেছিলাম যে পরে আমি কোডিং শুরু করি, কম কোড আমাকে ফেলে দিতে হবে ...

তবে সম্ভবত এটি কারণ আমি এই সমস্ত ফেলে দেওয়া কোডগুলি লিখেছি, সুতরাং এখনই সেগুলি লিখতে হবে না, সিস্টেমটি ডিজাইনিং করার সময় আমি তাদের কাছ থেকে যে অভিজ্ঞতা অর্জন করেছি তা আমার সাথেই রয়েছে? ঠিক আছে, আমাকে বিবৃতিটি সংশোধন করতে হবে।

যদি আপনি আপনার গ্রাফটি হারিয়ে ফেলেছেন এবং অনেকগুলি সমতুল্য সমাধান দেখতে পান তবে সিউডোকোডে যান, বা এমনকি মক অবজেক্ট সহ সেই কোডটি লিখুন - জাভাতে, এটি প্রায় কোনও পার্থক্য নয়। কোডটি দেখুন, সেই উপাদানগুলির কাঠামো এবং ব্যবহারযোগ্যতা অনুভব করুন, এটি আপনাকে আপনার গ্রাফ ঠিক করতে এবং সিদ্ধান্ত নিতে সহায়তা করবে। তবে আপনি যদি সেই কোডটি খারাপ মনে করেন তবে আপনি যদি সেই কোডটি ফেলে দিতে প্রস্তুত হন তবে এটি কেবলমাত্র কাজ করে। আমি মনে করি এটি সিউডোকোডের সুবিধা: এটি কাজ করার সময় এটি রাখার জন্য কম প্রলোভন, তবে এটি কাঠামোর ক্ষেত্রে ভুল (এবং সর্বদা হিসাবে, আপনার পর্যাপ্ত সময় নেই)। :-)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.