في البرمجيات هناك مصطلح معروف جدا وهو
SDLC (Software Development Life Cycle)
الي هي دورة حياة تطوير البرمجيات وهي تتمحور بالنقاط الي ذكرتها سابقا وبما إنها دورة حياة، إذن كل خطوة تعتبر ناقصه بدون الخطوة الي قبلها
وهيا بنا نشوف كل مرحلة من هالمراحل ايش هي
SDLC (Software Development Life Cycle)
الي هي دورة حياة تطوير البرمجيات وهي تتمحور بالنقاط الي ذكرتها سابقا وبما إنها دورة حياة، إذن كل خطوة تعتبر ناقصه بدون الخطوة الي قبلها
وهيا بنا نشوف كل مرحلة من هالمراحل ايش هي
جمع المتطلبات Requirements
هنا مرحلة "مالذي نرغب ببناؤه" في متطلبات خام نجمعها بحيث نعرف الهدف النهائي بالنسبة لنا وهالمتطلبات غالبا ماتخرج عن نوعين
Functional/Non-Functional
المقصود بالوظيفية functional
هي المتطلبات الي يتوقع انه يشوفها المستخدم ويتعامل معها
تابع..
هنا مرحلة "مالذي نرغب ببناؤه" في متطلبات خام نجمعها بحيث نعرف الهدف النهائي بالنسبة لنا وهالمتطلبات غالبا ماتخرج عن نوعين
Functional/Non-Functional
المقصود بالوظيفية functional
هي المتطلبات الي يتوقع انه يشوفها المستخدم ويتعامل معها
تابع..
المقصود بالمتطلبات غير الوظيفية non-functional
هل الأمور الي من خلالها نقدر نحكم على قدرة البرنامج على العمل بشكل جيد مثل السرعة والحماية والتخزين
اذن "الوظيفية" ايش المفروض يقدم البرنامج
"غير الوظيفية" كيف المفروض إنه يشتغل هالبرنامج
هل الأمور الي من خلالها نقدر نحكم على قدرة البرنامج على العمل بشكل جيد مثل السرعة والحماية والتخزين
اذن "الوظيفية" ايش المفروض يقدم البرنامج
"غير الوظيفية" كيف المفروض إنه يشتغل هالبرنامج
التحليل Analysis
هنا يتم دراسة المتطلبات حتى تحقق أهداف النظام المبني (إيش ناقصنا وايش نحتاج نوصل له وهل المطلوب الآن يؤدي للغاية المطلوبة أو المطلوب الآن أكثر من المتوقع؟)
غالبا هذي دراسة تفصيلية مرتبطة بأسباب بناء النظام أكثر من أنها تقنية بحته
هنا يتم دراسة المتطلبات حتى تحقق أهداف النظام المبني (إيش ناقصنا وايش نحتاج نوصل له وهل المطلوب الآن يؤدي للغاية المطلوبة أو المطلوب الآن أكثر من المتوقع؟)
غالبا هذي دراسة تفصيلية مرتبطة بأسباب بناء النظام أكثر من أنها تقنية بحته
التصميم Design
هنا نقول بسم الله ونبدا نفكر "برمجيا" كيف راح يتم تنفيذ هذا البرنامج بحيث يتم تصميم النظام (ليس تصميمه كواجهات فقط) بل تصميمه برمجيا من حيث المكونات وقواعد البيانات و واجهات المستخدم والمنطق البرمجي "الخوارزميات" بحيث يصبح جاهز للكتابة Coding
هنا نقول بسم الله ونبدا نفكر "برمجيا" كيف راح يتم تنفيذ هذا البرنامج بحيث يتم تصميم النظام (ليس تصميمه كواجهات فقط) بل تصميمه برمجيا من حيث المكونات وقواعد البيانات و واجهات المستخدم والمنطق البرمجي "الخوارزميات" بحيث يصبح جاهز للكتابة Coding
كتابة الكود Coding
قدامك تصميم جاهز (نفذ على بركة الله) وهنا يتم اختيار لغة البرمجة المناسبة والتقنيات الأخرى بناء على التصميم المُقدم وهنا لازم نطابق ماتم تصميمه مع المتطلبات للمشروع Requirements بحيث نبني النظام لتبيه المتطلبات بناء على التصميم.
قدامك تصميم جاهز (نفذ على بركة الله) وهنا يتم اختيار لغة البرمجة المناسبة والتقنيات الأخرى بناء على التصميم المُقدم وهنا لازم نطابق ماتم تصميمه مع المتطلبات للمشروع Requirements بحيث نبني النظام لتبيه المتطلبات بناء على التصميم.
مرحلة الاختبار Testing
هنا نبدأ نختبر النظام وأول واهم الاختبارات هو اختبار تحقيق المتطلبات (هل تم تحقيق جميع المتطلبات؟) ثم من الناحية التقنية البحته (مثل Unit testing / Integration testing "اختبار التكامل والوحدات" ومثل inputs/outputs)
هنا نبدأ نختبر النظام وأول واهم الاختبارات هو اختبار تحقيق المتطلبات (هل تم تحقيق جميع المتطلبات؟) ثم من الناحية التقنية البحته (مثل Unit testing / Integration testing "اختبار التكامل والوحدات" ومثل inputs/outputs)
التوثيق Documentation
هنا نسجل كل شيء داخل النظام كيف يعمل، والسبب؟ هذا راح يسهل علينا تطويره وصيانته مستقبليا ويقلل علينا التكاليف المادية بحيث مانصل لمرحلة (دخلت بالجدار لاني مادري كيف يشتغل هذا البرنامج)
هنا نسجل كل شيء داخل النظام كيف يعمل، والسبب؟ هذا راح يسهل علينا تطويره وصيانته مستقبليا ويقلل علينا التكاليف المادية بحيث مانصل لمرحلة (دخلت بالجدار لاني مادري كيف يشتغل هذا البرنامج)
التشغيل Deployment
بعد ما انتهينا الآن نتوكل على رب العالمين ونشغل البرنامج في بيئة التشغيل الحقيقة الي تسمى Production Environment ومن هذه المرحلة سنعود من جديد لأول مرحلة في البرنامج والسبب هو التطوير المستمر والصيانة للبرنامج بحيث نضمن أنه يشتغل أطول فترة ممكنه بدون توقف
بعد ما انتهينا الآن نتوكل على رب العالمين ونشغل البرنامج في بيئة التشغيل الحقيقة الي تسمى Production Environment ومن هذه المرحلة سنعود من جديد لأول مرحلة في البرنامج والسبب هو التطوير المستمر والصيانة للبرنامج بحيث نضمن أنه يشتغل أطول فترة ممكنه بدون توقف
فيه بعض التفريعات الثانية لكن حبيت اكتفي بالأشهر
مبرمج مستجد واوجعك راسك؟ لا تقلق!
هذي الأشياء الي ذكرتها بسيطة مقارنة بالأشياء الي انت جالس تتعلمها وتسويها الآن وهي أجزاء صغيرة تتكامل بحيث تكون مفهوم هندسة البرمجيات الكبير، لكن خذها بالحسبان الآن بحيث تتعلمها لاحقا.
مبرمج مستجد واوجعك راسك؟ لا تقلق!
هذي الأشياء الي ذكرتها بسيطة مقارنة بالأشياء الي انت جالس تتعلمها وتسويها الآن وهي أجزاء صغيرة تتكامل بحيث تكون مفهوم هندسة البرمجيات الكبير، لكن خذها بالحسبان الآن بحيث تتعلمها لاحقا.
الآن هندسة البرمجيات بين الواقع والخيال
الخيال هو الي ذكرته سابقا أنا وهو شيء يمكن أنه يتحقق حسب طبيعة المشروع وحسب المالك للمشروع أيضا.لك السوق قد يفرض عليك عدم تطبيق المفاهيم هذي بسبب "إنه ماراح يدفع لك" حق هالشغل كله لذلك كن رشيقا واشتغل حسب هوى الزبون (مع توضيح ذلك له)
الخيال هو الي ذكرته سابقا أنا وهو شيء يمكن أنه يتحقق حسب طبيعة المشروع وحسب المالك للمشروع أيضا.لك السوق قد يفرض عليك عدم تطبيق المفاهيم هذي بسبب "إنه ماراح يدفع لك" حق هالشغل كله لذلك كن رشيقا واشتغل حسب هوى الزبون (مع توضيح ذلك له)
هل مطلوب مني كمبرمج إني اسوي كل هذا؟
لما نقول "مبرمج" فأنت حرفيا موجود في مرحلتين (التصميم و كتابة الكود) لأن المفترض كل مرحلة لها شخص متخصص فيها لكن لو المشروع صغير أو الشركة ماتبي تسوي هالشغل. راح تصير انت مهندس المشروع بدل ما إنك مبرمج المشروع (وهذا غالبا صار معك بالمشاريع)
لما نقول "مبرمج" فأنت حرفيا موجود في مرحلتين (التصميم و كتابة الكود) لأن المفترض كل مرحلة لها شخص متخصص فيها لكن لو المشروع صغير أو الشركة ماتبي تسوي هالشغل. راح تصير انت مهندس المشروع بدل ما إنك مبرمج المشروع (وهذا غالبا صار معك بالمشاريع)
لماذا أقوم بهذه الخطوات؟ احسها نظريه وغير مفيدة!
كلامك صحيح هي نظرية، بس غير مفيدة هذا خطأ. هو أنت جالس تسوي هالخطوات هذي عشان تضمن عدد كبير من الأشياء وأهمها إن البرنامج يشتغل كما هو متوقع وإن مالك المشروع يكون على درايه بالمُخرج النهائي (مايصير فيه مشكلة بعدين)
كلامك صحيح هي نظرية، بس غير مفيدة هذا خطأ. هو أنت جالس تسوي هالخطوات هذي عشان تضمن عدد كبير من الأشياء وأهمها إن البرنامج يشتغل كما هو متوقع وإن مالك المشروع يكون على درايه بالمُخرج النهائي (مايصير فيه مشكلة بعدين)
عن تجربة، معظم مشاكل البرمجيات "المشاكل غير البرمجية مع أصحاب المشاريع أنفسهم" سببها عدم تطبيق المفاهيم السابقة تتفاجأ بأن صاحب المشروع يقول لك "لا أنا ماطلبت كذا" لانك ما جلست معه وسجلت متطلباته وعرضتها عليه بعد التحليل وقلت له هذا هو الي تبيه اكيد؟"
أهم الخطوات للتعامل مع العملاء؟
اول ثلاث خطوات (المتطلبات + التحليل + التصميم) هذي العميل لازم يكون على اطلاع كامل فيها إذا فعلا تبي المشروع ينجح والعميل هنا مب شرط يكون زبون عندك قد يكون مديرك في العمل. المراحل الباقية اعمل مايحلو لك وانت متطمن إذا الأولى تمام.
اول ثلاث خطوات (المتطلبات + التحليل + التصميم) هذي العميل لازم يكون على اطلاع كامل فيها إذا فعلا تبي المشروع ينجح والعميل هنا مب شرط يكون زبون عندك قد يكون مديرك في العمل. المراحل الباقية اعمل مايحلو لك وانت متطمن إذا الأولى تمام.
احتاج مصادر اتعلم منها هندسة البرمجيات؟
تبي نصيحة مجرب؟ إدرس أول شيء (إدارة المشاريع) خذ لك كتاب أو كورس يتكلم عن كيفية إدارة المشاريع لا يكون شيء كبير خذ حاجة مبسطة وتعمق لاحقا.
بعدين رح تعلم هندسة البرمجيات وراح تشوف كيف بتصير السالفة سهلة وواضحة لك.
تبي نصيحة مجرب؟ إدرس أول شيء (إدارة المشاريع) خذ لك كتاب أو كورس يتكلم عن كيفية إدارة المشاريع لا يكون شيء كبير خذ حاجة مبسطة وتعمق لاحقا.
بعدين رح تعلم هندسة البرمجيات وراح تشوف كيف بتصير السالفة سهلة وواضحة لك.
من وين أدرس هندسة البرمجيات؟
إذا كنت تبي حرف "م" قدام اسمك خذ لك كورس معتمد وحط الحرف أو تخصص بالجامعة لكن لو ماتقدر تتخصص لانك متخصص بشيء ثاني بالحاسب أو أصلا انت لك فترة تبرمج وماتحتاج الأساسيات اكتب في امازون
software engineering
خذ الكتاب الي تجد تقييمه جيد ويناسبك اسلوبه
إذا كنت تبي حرف "م" قدام اسمك خذ لك كورس معتمد وحط الحرف أو تخصص بالجامعة لكن لو ماتقدر تتخصص لانك متخصص بشيء ثاني بالحاسب أو أصلا انت لك فترة تبرمج وماتحتاج الأساسيات اكتب في امازون
software engineering
خذ الكتاب الي تجد تقييمه جيد ويناسبك اسلوبه
الكتب في أمازون وغيرها هي نفسها الكتب الي يدرسها المتخصص الآن باقي عليك تجيب أحد فاهم يعلمك إياها لان المتخصص عنده دكتور بالجامعة بس انت ماعندك وش تسوي؟
stackoverflow
موقع مليان أباطرة بالبرمجة بعضهم سيرته الذاتية تساوي قسم برمجيات كامل ببعض الجامعات (اقرا لغيرك واسألهم)
stackoverflow
موقع مليان أباطرة بالبرمجة بعضهم سيرته الذاتية تساوي قسم برمجيات كامل ببعض الجامعات (اقرا لغيرك واسألهم)
جاري تحميل الاقتراحات...