ভাল ডিজাইন / উচ্চ-মানের ওপেন সোর্স সফ্টওয়্যার [বন্ধ]


32

আমি একটি সফ্টওয়্যার ডিজাইনের ক্লাস নিচ্ছি যেখানে সফ্টওয়্যার ডিজাইনের দিক থেকে বিশ্লেষণ করার জন্য আমার একটি ওপেন সোর্স সফ্টওয়্যার বেছে নেওয়া উচিত।

এটি একটি বড় প্রকল্প হতে হবে: কোডের 100,000 লাইনের চেয়ে কম নয়।

আমি সত্যিই এমন একটি সফ্টওয়্যার বেছে নিতে চাই যা খুব ভাল ডিজাইন করা এবং ভাল সফ্টওয়্যার ডিজাইনের উপর অন্তর্দৃষ্টি পেতে আর্কিটেটেড।

ভাল ডিজাইনের দ্বারা আমি অর্থবোধক শ্রেণি এবং আর্কিটেকচার, নকশার নিদর্শনগুলির ভাল ব্যবহার, বিমূর্ত ব্যবহারের ভাল ব্যবহার, উপাদানগুলির সুসংগঠন, উচ্চ সংহতি এবং উপাদানগুলির মধ্যে কম মিলন ইত্যাদির মতো জিনিসগুলি বোঝায় ...

আমাকে পরামর্শ দেওয়ার মতো কোনও সফটওয়্যার আছে কি?

নোট করুন যে সফ্টওয়্যারটিতে কেবল একটি ভাল ডিজাইন থাকা দরকার, নকশাকে নথিভুক্ত করার দরকার নেই! :)

এটি শেষ ব্যবহারকারীর জন্য অ্যাপ্লিকেশন হওয়ার দরকার নেই ... এটি একটি গ্রন্থাগার, একটি সরঞ্জাম ইত্যাদিও হতে পারে ...


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

এটা ইশারা জন্য ধন্যবাদ। আমার বলতে হবে যে সফ্টওয়্যার বিকাশ সরঞ্জামগুলি আমার আগ্রহী হবে।
অ্যান্ড্রিয়া জিলিও

আপনি যে কোনও বিশেষ প্ল্যাটফর্ম ব্যবহার করতে চান?

3
ওপেন সোর্স অ্যাপ্লিকেশনগুলির আর্কিটেকচারটি একবার দেখুন যা বেশ কয়েকটি ভালভাবে ডিজাইন করা ওপেন সোর্স অ্যাপ্লিকেশনগুলিকে বর্ণনা করে।
রিচার্ড

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

উত্তর:


23

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

প্রথমত, ভাল বা খারাপ কোনও সফ্টওয়্যার নির্জনতায় বাস করে না - এটি এমন এক বাস্তব দুনিয়ার মডেল তৈরি করে যা মানুষেরা একটি সমস্যা হিসাবে কল্পনা করে এবং এভাবে সর্বদা একটি "অ্যাপ্লিকেশন ডোমেন" নামক কোনও জিনিসের সাথে নিবিড়ভাবে জড়িত। সুতরাং, আপনি যখনই সফ্টওয়্যার সম্পর্কে কথা বলবেন, প্রথমে ডোমেনটি জেনে নিন এবং অধ্যয়ন করুন - তবেই আপনি ভাল এবং খারাপের বিচক্ষণতা অর্জন করতে পারেন।

  • গিট - শুধু ভাল নয়, একটি আশ্চর্যজনক নকশা। এটি এর মূল অংশে কোনও সংস্করণ নিয়ন্ত্রণ নয়, কেবল একটি ফাইল সিস্টেম। মূলটির উপরে কার্যকারিতার একটি পাতলা পাতলা এটি একটি সংস্করণ নিয়ন্ত্রণ ব্যবস্থা করে তোলে। গিটের ইন্টার্নালগুলি জানুন এবং আপনার সফ্টওয়্যার ডিজাইনের ধারণাটি আলোকিত হবে।

  • jQuery - খুব ভাল (অভ্যন্তরীণ) ডকুমেন্টেড লাইব্রেরি নয়, তবে একটি অনুপ্রেরণামূলক উত্স যা ক্লায়েন্টের পাশের জাভাস্ক্রিপ্ট কোডটি আশ্চর্য করতে পারে তা প্রমাণ করে।

  • নোডজেএস - আপনি সার্ভার তৈরি করতে চাইলে এই প্রকল্পটিতে অফার করার জন্য সতেজভাবে নতুন ধারণা এবং নিদর্শন রয়েছে।

  • ভি 8 - ভার্চুয়াল মেশিন বাস্তবায়ন শিখতে / অধ্যয়ন করার জন্য খুব ভাল সি ++ কোড, চমত্কার গ্রন্থাগার।

  • নোএসকিউএল প্রকল্পগুলি - কাউচ, মঙ্গো, রেডিস, ক্যাসান্দ্রা - এই প্রকল্পগুলি অধ্যবসায় সমস্যা সমাধানের দুর্দান্ত উপায় প্রদর্শন করে। এছাড়াও তারা বহুভোগের অধ্যবসায়ের ধারণাটি আলিঙ্গন করে।

  • লাইব্রেরিগুলি বুস্ট করুন - সি ++ এর ভাল ডোজ।

  • ওপেনস্ট্যাক - ক্লাউড কম্পিউটিং এবং ভার্চুয়ালাইজেশনে খুব ভাল প্রকল্প।

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

  • mod_wsgi - আমি জুড়ে এসেছি সেরা সি প্রোগ্রামগুলির মধ্যে একটি।

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

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

আবার, সমস্যার ডোমেনটির প্রকৃতি এবং সংক্ষিপ্তকরণগুলি অধ্যয়ন করতে ভুলবেন না এবং তারপরে কোডটি পড়তে আগ্রহী হন।

আপডেট: অক্টোবর 2015

ইনফ্লুডডিবি - https://influxdb.com/ এই গো প্রকল্পটি সক্রিয় বিকাশের অধীনে রয়েছে, এবং এখনও এটি খুব জটিল নয়। সুতরাং আপনি ওপেনস্ট্যাকের মতো তুলনায় সহজেই কোডে খনন শুরু করতে পারেন।


13

একটি মুদ্রা শিরসঁচালন. সমস্ত বড় ওপেন সোর্স প্রকল্প বাঁচতে উজ্জ্বল হতে হবে। অ্যাপাচি, লিনাক্স, জিএনইউ প্রকল্পগুলি সব উজ্জ্বল।


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

8
ওয়ার্ডপ্রেস উজ্জ্বল?
ড্র হয়েছে

9
  • ক্রৌমিয়াম
  • ফায়ারফক্স
  • এ্যাপাচি
  • মাইএসকিউএল
  • পোস্টগ্রি
  • লিনাক্স
  • গনুহ

2
আপনি কি নিশ্চিত যে ফায়ারফক্স 90 দশকের গোড়ার দিকে লিখিত কোডের টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো আধুনিক কোডিং অনুশীলনের
অধ্যয়ন করার

3
ফায়ারফক্স এবং মাইএসকিউএল এর সোর্স কোডটি ক্র্যাপের ভয়ঙ্কর টুকরো যা কখনও কখনও ভাল সফ্টওয়্যার ডিজাইনের উদাহরণ হিসাবে ব্যবহার করা উচিত নয়।
জর্ডান

7

পাইথন। বিশেষত সিপিথন, প্রাথমিক বাস্তবায়ন। সংস্করণ ৩.২-এর জন্য, দোভাষী সি কোডের প্রায় 50k স্লোক, পাইথন কোডের 400k স্লোকের উপরে স্ট্যান্ডার্ড লাইব্রেরি চালায়। ভাষার অত্যন্ত উচ্চমানের এবং পড়ার যোগ্যতা এবং ভাল নকশার নীতিগুলির উত্সাহকে দেওয়া, আমি এই কোডটি সবই বেশ ভাল মনে করব।


4

মেটাফন্টের সাথে টেক্সও সত্যিই অধ্যয়নের জন্য মূল্যবান: http://www.tug.org/

আপনার স্থানীয় গ্রন্থাগারটি উত্সগুলির মুদ্রিত সংস্করণে আপনাকে সহায়তা করতে পারে।


3

আমি ওপেন সোর্স প্রকল্প চয়ন করার আগে নীচের বইটি পড়ার পরামর্শ দেব। এটি আপনাকে ভাল / খারাপ কোড হিসাবে বিবেচনা করা যেতে পারে তার অন্তর্দৃষ্টি দেবে।

গ্রেগ উইলসন
মেকিং সফটওয়্যার আসলে কী কাজ করে এবং আমরা
ওপেন সোর্স অ্যাপ্লিকেশনগুলির আর্কিটেকচারকে কেন বিশ্বাস করি

আপনি যদি তার http://blog.stackoverflow.com/2011/06/se-podcast-09/ দেখার আগে লেখকের শোনার আগ্রহী হন তবে তার ব্লগ স্ট্যাক এক্সচেঞ্জ সাক্ষাত্কারটিও এখানে রয়েছে

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

ব্যবসায়ের দৃষ্টিকোণ থেকে তারা সাধারণত সফ্টওয়্যার গুণমানের উপর নির্ভর করে এটি ক্লায়েন্টের প্রত্যাশা পূরণ করে বা তারা কোনও ক্লায়েন্টের চুক্তিগত বাধ্যবাধকতাগুলি মেনে চলেছে তার উপর নির্ভর করে measure পেশাগত আচরণও রয়েছে তবে আপনি বেড়াটি কোন দিক থেকে দেখেন তা নির্ভর করে।

প্রোগ্রামারদের দৃষ্টিকোণ থেকে, সফ্টওয়্যারটি তৈরি হওয়ার সময় এপিআইয়ের নকশা এবং নির্মাণগুলি কতটা মার্জিত। প্রোগ্রামারদের দৃষ্টিভঙ্গি এবং সময়ের সাথে সাথে পরিবর্তিত হওয়ার সময় একই নকশা বা কোডের মানটি পেশাগত হিসাবে বিবেচিত হতে পারে।


2

আপনি ইন্টেলিজ কমিউনিটি সংস্করণটির পরামর্শ দেব কারণ আপনি উল্লেখ করেছেন যে আপনি সফ্টওয়্যার সরঞ্জাম পছন্দ করেন।

http://www.jetbrains.org/

আমি এটি সম্পর্কে কি পছন্দ:

  1. এটি এমন একটি সরঞ্জাম যা কাঠামোর পরিবর্তে কিছু করে
  2. তারা স্থিতিশীল কোড বিশ্লেষণ এবং ডেটা প্রবাহ বিশ্লেষণের মতো সত্যই আকর্ষণীয় জিনিসগুলির বিশদটি দেখতে সত্যিই আনন্দদায়ক বলে মনে করি।
  3. একটি দুর্দান্ত বিষয় হ'ল আপনি এটি নিজের অধ্যয়ন সম্পাদন করতে ব্যবহার করতে পারেন কারণ এতে সমস্ত কোড বিশ্লেষণ নিজেই চালানোর ক্ষমতা রয়েছে।

(স্বীকারোক্তিযুক্ত আমি একটি জেটব্রেইন ফ্যানবয়)


2

আমি নিজেই এই জাতীয় প্রকল্পের সন্ধান করছি এবং এর জন্য স্থির হয়েছি CLang

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

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

এতে বলা হয়েছে, পারফরম্যান্স সমালোচনামূলক হওয়ায়, বেশ কয়েকটি ডিজাইনের সিদ্ধান্তগুলি সন্দেহজনক বলে মনে হতে পারে (অসংখ্য বস্তুর জন্য ভার্চুয়াল ফাংশন এড়ানো, আরটিটিআই / ব্যতিক্রম ছাড়াই সংকলন), তাই দৈনন্দিন সফ্টওয়্যারগুলিতে সবকিছু প্রযোজ্য নয়।


1

ব্লেন্ডার ভাল কাঠামোগত এবং ভাল ডিজাইন করা হয়।



0

সুতরাং, কেবল অন্য একটি রূপ - নিমেরল প্রোগ্রামিং ভাষার কী হবে?

এটি এত জনপ্রিয় নয় (তবে গিটহাব স্রেফ নিমেরেলের জন্য হাইলাইট যুক্ত করেছেন) এবং আপনি সেখানে অনেকগুলি ভাল পয়েন্ট পেতে পারেন।

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