السلام عليكم و رحمة الله و بركاته
الفكر بدأت عندي عندما قرأت احد تدوينات اخونا العزيز سردال , و تذكرت اني لاحظت كثيرا مشاريع و برمجيات الشباب فيها ثغرات كثيرة و عيوب كبيرة ... لأنهم يتخذون منهج الـ quick & dirty في التصميم
فيبدءون مباشرة بمرحلة البرمجة ثم يتوقفون عندها ... هذا الاسلوب جيد اذا اردت بناء برنامج او مشروع بسيط ذا امد صغير ... لكن الشباب ( ماشاء الله ) عليهم اشتغلوا بالمشاريع الكبيرة و الابداعات المتميزة .
لذا ان ممكن اساعدهم بإعطاء خلفية عن مادة و موضوع اسمه الـ ( software engineering ) وهي تساعدهم كثير بمشاريع ( لا دخل لها نهائيا بالبرمجة )
هي تساعدك كثيرا بمصنع مهنجية و تسلسلية عندما تريد تصنع او تصمم اي برنامج او مشروع او نظام ....
لتخبر فقط ان تصميم الواجهات ( الفوتشوب و الفرونت بيج .. الخ ) و لغات البرمجة ... هي جزئيات صغيرة جدا من البرمجة ... و البرمجة جزئية صغيرة من التصميم ... و التصميم جزئية صغيرة من هندسة البرمجيات .
وهذه ستكون سلسلة مواضيع سوف ادخل بها بالتفاصيل و استمر بها اذا رأيت هناك تفاعل تجاها و رغبة بالاستمرار من قبلكم ( و ربما اوفر لكم وصلات كتب و تصاميم اذا اردتم )
=======================================================
ما معنى كلمة تصميم ( Design ) لدى المهندسين او ما احب ان اسميهم انا المصممين و ذلك لسبب سوف اذكره بعد قليل
الاغلبية يعتقدون ان التصميم هو الشكل الخارجي ( بألوانها و صورها و نصوصها … الخ ) كما أشار الأخ سردال هنا و هذا خطىء , بل تسمى هذه الجزئية الــ ( interface ) … وهي اصغر جزئية من جزئيات التصميم ( على الرغم من اهميتها ) .
واما بعض المثقفين و المبرمجين يعتقدون بأن التصميم هو البرمجة … وهذا ايضا خطىء , و تسميتها الصحيحة ( coding & implementation ) و هي ايضا جزئية فرعية من التصميم . بل آخرى جزئية نهتم بها في التصميم
و في الحقيقة هذه الجزئية هي التى تميز مهندس الكمبيوتر عن المبرمج , حيث المبرمج كل ما يهمه هي يبرمج و يمشي … اما المهندس فهو انسان مادي لأقصى حد ممكن , ينظر الى الموضوع بصورته الكاملة ( look to the big picture )
كلمة التصميم ممكن تستخدم بعدة مواقف … لكن الذي سوف اشرحه اليوم هو هنسة البرمجيات ( software engineering )
و مراحل االبرمجيات ( software process ) تنقسم الى اربع اقسام :-
requirement
Design
evolution
validation
الــ requirement … هو تحديد المطلوبات بشقيه … الشق الاول هو تحديد المطلوبات التى نريدها من هذا النظام او المشروع الذي سوف نصنعه و نسمي هذا الشق بالخدمات ( serves )
و الشق الثاني هو تحديد المطلوبات التى سوف يحتاجها هذا النظام الذي نصممه .و نسمي هذا الشق بـالمحددات ( constrains )
و الــ requirement تتلخص بسؤال what problem the system solve ( ماهي المشاكل التى يحلها النظام )
اما الــ Design فيتلخص بسؤال who the system solve the problems .. لذا كما ترى التصميم مرتبط بشدة مع المطلوبات , فلا نقدر نصمم بشكل جيد بدون ان نحدد ما هي المطلوبات ثم عندما نصمم نبدأ نتحدث كيف نوفر الــ serves و ماهي الطرق التى نتبعها و ايضا كيف نتعامل مع المحددات
و الــ Design يتقسم الى مليون قسم و قسم … و فيه نقاط تختلف من شخص لآخر .
لن ادخل بتفاصليه حتى لا تتعقد . لكن فقط اردت اوضح لك ان التصميم ما هي الا خطوة من خطوات سابق له و هناك خطوات لاحقة له ( evolution و validation ) وهي خطوات منظمة … قد لا تفرق معك كونك تصمم برنامج خلال يومين او اسبوعين او شهر بالكثير ثم تمشي .
و قد تظهر لك خطوات معقدة لا فائدة لها …. لكن صدقني هذا البرنامج او النظام الذي صنعته بالغالب مليء بالعيوب و الثغرات و هو ما نسميه بالـ ( quick & dirty ) … اما الانظمة و البرامج الحقيقة تلك التى تأخذ بعض السنوات … هذه الخطوات اساسية لها و مهمة جدا و قد توفر ملايين الدولارات و العديد من السنوات .
و للحديث بقية ….
:: ردود مفيدة ::
3
4
مالفرق بين علم الحاسوب و هندسة الكمبيوتر
( لمن ليست له عضوية يقد يعلق هنا )