Home هندسة برمجيات

هندسة برمجيات

شرح ال Single Responsibility Principle

مفهوم ال Single Responsibility Principle واختصاراً SRP هو من أهم المفاهيم في أساسيات تصميم البرمجيات SOLID، وبنى هذا المفهوم اعتماداً على مفاهيم ال Coupling وال Cohesion وال Separation of Concerns والتي سبق أن تحدثنا عنها سابقاً هنا ماذا تعرف عن ال Coupling وال Cohesion في تصميم البرمجيات؟ ما هو ال SRP ينص هذا المفهوم على أنه […]

مقدمة لل SOLID

ال SOLID هي اختصار لمجموعه من العادات والتي إن قمت باتباعها سوف تحصل على كود أكثر قابلية للصيانة وأسهل في التغيير والتكيف مع متطلبات المشروع المتغيرة Adaptive Code. وليس كما قد يدل الاسم SOLID أو الصورة التي بالمقالة، على أنه شيء يجعل الكود جامد بل بالعكس تماماً، فهذه الأفكار تدور حول كيف يمكن أن يكون الكود […]

ماذا تعرف عن ال Coupling وال Cohesion في تصميم البرمجيات ؟

كثيراً ما نسمع عن هذا المصطلحان وأنه يجب أن تسعى الى أن يكون الكود قليل التداخل Low Coupling وأكثر تجانساً High Cohesion بدون توضيح مناسب لمعناها، في هذه المقالة سوف نوضح هذه المصطلحات والفرق بينهم بشكل مبسط ونوضح طرق مختلفة لتحقيق ال loose coupling عن طريق طرق التصميم  Design Patterns المختلفة. (1089) About وجدي عصاممهندس […]

ما هي ال Scalability وكيف يتحمل الموقع ملايين الزوار ؟

مقدمة موضوع ال Scalability يعتبر من أهم المواضيع بالنسبة لمطورين الويب خصوصاً هذه الأيام مع تزايد عدد البيانات والمستخدمين سواء في التخزين أو المعالجة أو حتى في الارسال، والطلب على مطورين الويب الذي لديهم خبرة في ال Scalability أصبح اعلى بكثير من مبرمجي الويب بدون أي معرفة أو خبرة بهذا الموضوع. وبالرغم من تزايد الطلب […]

تصميم البرمجيات باستخدام نمط Model-View-Controller

من المعروف والمسَلَم به في عالم البرمجيات القاعده “المتطلبات دائماً تتغير” ” Software Requirement Always change “، هذه القاعده تنص على أن متطلبات البرنامج سواء كانت General Software موجه للعامه أو Custom Software موجه لزبون معين سوف تتغير بمرور الزمن ، فالبرنامج الذي كان يشغل صوتيات MP3 يجب أن يشغل في الاصداره القادمه صوتيات ram,rm والا بالتأكيد سوف […]

ما الفرق بين ال Composition و ال Aggregation

عالم البرمجه له كثير من الأوجه أو الأقسام programming paradigm منها البرمجه الإجرائيه procedural programming مثل لغه السي والباسكال (البعض يطلق عليهم imperative language) ، نوع أخر وهي الFunctional programming وهي تختلف عن الإجرائيه مثل لغه ليسب فالبرمجه هنا تستخدم مفهوم الlist بشكل كبير وتختلف طريقه كتابه البرامج عن الطريقه المعروفه بالاضافه الى وجود بعض […]

كيف تُستخدم ال UML بشكل صحيح ؟

كون أن لغه UML لها مقياس Standard وهناك جهه (ال ISO) تتولى الاهتمام بذلك، الا أن هذا لا يعارض وجود أكثر من استخدام لها أثناء فترة تطوير المشروع، وهذا الاختلاف بين طرق الاستخدام قد يدخلك في صراع أو نقاشات مطوله خصوصاً لو عملت مع شخص يستخدمها بطريقة ما ولا يدري الطرق الاخرى التي يمكن ان […]

كيف تخطط لمشروعك Agile Planning

هل تستطيع تقدير وقت المشروع بشكل جيد ؟ هل تريد أن تعرف حالة المشروع بشكل دائم وتعرف مدى تأثير أي حدث على المشروع مثلاً خروج أحد المطورين؟ هل تعرف ماذا تفعل عندما يكون المشروع في نهايته وقد قارب وقت التسليم وما زال هناك الكثير من المهام ؟ هل مشاريعك ما زالت متأخرة في التسليم ؟ […]

كيف تبدأ الخطوة الأولى في تطوير المشروع

اليوم الأول في مشروعك الجديد  بعد أن تحدثنا عن فلسفه ال Agile  وأدوار فريق التطوير، سوف نتحدث عن الخطوة الأولى في بدايه اي مشروع، وهو موضوع مهم حيث كثير من المشاريع تموت من قبل أن تبدأ حتى، وذلك بسبب وقوعها في أحد الأخطاء القاتلة (وهي انهم لم يستطيعوا سؤال الأسئلة المناسبة وقت بدايه المشروع، أو انهم […]

تعرف على فريق ال Agile

تلخيص بتصرف من كتاب The Agile Samurai فريق ال Agile ليس كباقي الفرق في منهجيات التطوير التقليدية، حيث لا يوجد اهتمام كثيراً بالألقاب ولا بالأدوار الثابته، اي شخص يستطيع القيام بأكثر من دور ، قد تظن ان هذه عشوائية بسبب عدم وجود الرسميات والمناصب بين اعضاء الفريق Hierarchy ولكن في الحقيقة فريق ال Agile بهذا الشكل […]

الAgile في سطور

حيث لا مكان للاختباء – تلخيص بتصرف من الكتاب The Agile Samurai لتنسى أنك مطور (لدقائق معدودة) وتخيل أنك صاحب مشروع كبير ولديك المال المناسب لهذا المشروع وقد وظفت عدة مبرمجين ليقوموا بالتطوير في هذا المشروع، السؤال المهم الأن: ما هو الشيء الذي يجعلك تثق في أن الفريق يعمل ويسير في الإتجاه الصحيح؟ مجموعه من الملفات الورقية […]