Professional Documents
Culture Documents
هندسة برمجيات ك
هندسة برمجيات ك
هندسة برمجيات ك
It’s easy to sit down at the keyboard and write a working program with no previous design or
planning. Those types of programs are fine if you’re the only one using them and then for only a
short while. To produce applications that are effective, safe, and reliable, you can’t just sit down
and start typing. Because of a software is the combination of program(s), database(s), and
documentation in a systemic suite, and with the sole purpose of solving specific system problems
and meeting predetermined objectives that includes one or more team(s) to work on it, it need a
plan, for this reason, software engineering is founded to formulate the way to develop a software.
هذه األنواع من البرامج جيدة إذا كنت أنت الوحيد.من السهل الجلوس على لوحة المفاتيح وكتابة برنامج عمل بدون تصميم أو تخطيط سابق
نظرا ألن البرنامج
ً . ال يمكنك الجلوس والبدء في الكتابة، إلنتاج تطبيقات فعالة وآمنة وموثوقة.الذي يستخدمها وبعد ذلك لفترة قصيرة فقط
ولغرض وحيد هو حل مشكالت نظام معينة، هو مزيج من البرنامج (البرامج) وقاعدة البيانات (القواعد) والوثائق في مجموعة منهجية
تم تأسيس هندسة البرمجيات، ولهذا السبب، يحتاج إلى خطة، وتلبية األهداف المحددة مسبقًا التي تتضمن فريقًا واحدًا أو أكثر للعمل عليه
.لصياغة طريقة تطوير البرمجيات
Software engineering requires planning, and it goes through cycle similar to other engineering
project. However, software engineering is knowledge base which depends highly on the
understanding of the user needs which can change over time. For that, the software life cycle needs
to be flexible to accommodate any changes. The flexibility granted to software by its virtual nature
is both a good and a bad. It’s a good because it lets you refine the program during development to
better meet user needs, add new features to take advantage of opportunities discovered during
implementation, and make modifications to meet evolving business requirements. This type of
flexibility isn’t possible in other types of engineering. It is bad because the flexibility that allows
you to make changes throughout a software project’s life cycle also lets you mess things up at any
point during development. Adding a new feature can break existing code or turn a simple, elegant
design into confusing parts. Constantly adding, removing, and modifying features during
development can make it impossible for different parts of the system to work together. In some
cases, it can even make it impossible to tell when the project is finished.
فإن هندسة البرمجيات هي قاعدة معرفية، ومع ذلك. وهي تمر بدورة مشابهة لمشروع هندسي آخر، تتطلب هندسة البرمجيا ت التخطيط
يجب أن تكون دورة حياة البرنامج مرنة الستيعاب، لذلك.تعتمد بشكل كبير على فهم احتياجات المستخدم والتي يمكن أن تتغير بمرور الوقت
إنه أمر جيد ألنه يتيح لك تحسين البرنامج أثناء. المرونة الممنوحة للبرامج بطبيعتها االفتراضية جيدة وسيئة في نفس الوقت.أي تغييرات
وإجراء تعديالت لتلبية، وإضافة ميزات جديدة لالستفادة من الفرص المكتشفة أثناء التنفيذ، التطوير لتلبية احتياجات المستخدم بشكل أفضل
إنه أمر سيء ألن المرونة التي تتيح لك إجراء. هذا النوع من المرونة غير ممكن في أنواع الهندسة األخرى.متطلبات العمل المتطورة
يمكن أن تؤدي إضافة ميزة جديدة إلى.تغييرات طوال دورة حياة مشروع البرنامج تتيح لك أيضًا إفساد األمور في أي وقت أثناء التطوير
يمكن أن تؤدي إضافة الميزات وإزالتها وتعديلها باستمرار أثناء.كسر الكود الموجود أو تحويل التصميم البسيط واألنيق إلى أجزاء محيرة
. قد يجعل من المستحيل معرفة موعد انتهاء المشروع، في بعض الحاالت.مستحيالً أمرا
ً التطوير إلى جعل عمل أجزاء مختلفة من النظام معًا
Producing a software application is relatively simple in concept: Take an idea and turn it into a
useful program. Unfortunately for projects of any real scope, there are countless ways that a simple
concept can go wrong. Software engineering includes techniques for avoiding the many pitfalls
that otherwise might send your project down the road to failure. It ensures that the final application
is effective, usable, and maintainable. It helps you meet milestones on schedule and produce a
finished project on time and within budget. Perhaps most importantly, software engineering gives
you the flexibility to make changes to meet unexpected demands without completely obliterating
your schedule and budget constraints.
وحولها إلى برنامج مفيد .لسوء الحظ بالنسبة للمشاريع ذات النطاقّ طا نسبيًا من حيث المفهوم :خذ فكرةأمرا بسي ً
يعد إنشاء تطبيق برمجي ً
الحقيقي ،هناك طرق ال حصر لها يمكن لمفهوم بسيط أن يخطئ .تتضمن هندسة البرمجيات تقنيات لتجنب العديد من المزالق التي قد ترسل
مشروعك إلى طريق الفشل .إنه يضمن أن التطبيق النهائي فعال وقابل لالستخدام وقابل للصيانة .يساعدك على تلبية المعالم في الموعد المحدد
وإنتاج مشروع منتهي في الوقت المحدد وفي حدود الميزانية .ربما األهم من ذلك ،أن هندسة البرمجيات تمنحك المرونة إلجراء تغييرات
لتلبية الطلبات غير المتوقعة دون إلغاء قيود الجدول الزمني والميزانية تما ًما.
One of the first steps in a software project is figuring out the requirements. You need to find out
what the customers want and what the customers need. Depending on how well-defined the user’s
needs are, this chore can be time-consuming.
تتمثل إحدى الخطوات األولى في مشروع البرنامج في معرفة المتطلبات .تحتاج إلى معرفة ما يريده العمالء وما يحتاجه العمالء .اعتمادًا
على مدى دقة تحديد احتياجات المستخدم ،يمكن أن تستغرق هذه األعمال الروتينية وقتًا طويالً.
it includes such things as decisions about what platform to use (such as desktop, laptop, tablet, or
phone), what data design to use (such as direct access, 2-tier, or 3-tier), and what interfaces with
other systems to use (such as external purchasing systems or a payroll system hosted in the cloud).
It includes information about the project architecture at a relatively high level. You should break
the project into the large chunks that handle the project’s major areas of functionality. Also, it
includes the database relational information, object-oriented design, and visual interfaces.
يتضمن أشياء مثل القرارات المتعلقة بالنظام األساسي الذي يجب استخدامه (مثل سطح المكتب أو الكمبيوتر المحمول أو الجهاز اللوحي أو
الهاتف) ،وتصميم البيانات المراد استخدامه (مثل الوصول المباشر ،أو المستوى الثاني ،أو المستوى الثالث) ،وما هي الواجهات األخرى.
األنظمة المراد استخدامها (مثل أنظمة الشراء الخارجية أو نظام كشوف المرتبات المستضاف في السحابة) .يتضمن معلومات حول بنية
المشروع على مستوى عا ٍل نسبيًا .يجب عليك تقسيم المشروع إلى أجزاء كبيرة تتعامل مع مجاالت وظائف المشروع الرئيسية .أيضًا ،
يتضمن المعلومات العالئقية لقاعدة البيانات والتصميم الموجه للكائنات والواجهات المرئية.
At this point developers start using the requirements and designs to write the code that will provide
the users with what they need. During this step, requirements and design are revisited and they can
be refined and modified if needed.
في هذه المرحلة ،يبدأ المطورون في استخدام المتطلبات والتصاميم لكتابة الكود الذي سيوفر للمستخدمين ما يحتاجون إليه .خالل هذه الخطوة
،تتم مراجعة المتطلبات والتصميم ويمكن صقلها وتعديلها إذا لزم األمر
فإن ارتكاب خطأ في أي برنامج أمر ال مفر، ومع ذلك. يبذل المطورون قصارى جهدهم لبناء منتج يعمل بشكل صحيح، أثناء مرحلة التنفيذ
فهم، في الغالب هناك طريقتان يمكن أن يقدمهما الخطأ ؛ يفترض المبرمجون أن شفرتهم صحيحة.منه مما يؤدي بالتأكيد إلى حدوث أخطاء
يتم تقديم مرحلة االختبار حيث يقوم، لمعالجة هذه المشكالت. وال تعمل األجزاء المختلفة من الكود معًا، ال يختبرونها دائ ًما بالشكل المطلوب
ويتم اختبار، يتم دمجه في بقية المشروع، بعد أن يبدو أن جزء من الكود يعمل بشكل صحيح.المختبرين الذين لم يكتبوا الرمز باختبارها
يعود المبرمجون إلى الكود للعثور على الخطأ، في أي وقت يفشل فيه االختبار.كل شيء لمعرفة ما إذا كان الكود الجديد قد كسر أي شيء
. يعود الرمز إلى قائمة االنتظار إلعادة االختبار، بعد أي إصالحات.وإصالحه
5- Deployment االنتشار
It is the phase in which the product is ready to hand over to the users (customers). This phase could
be as easy as installing .exe file or it can take few days to prepare resources and configure these
resources.
ً
أو قد يستغرقexe . قد تكون هذه المرحلة سهلة مثل تثبيت ملف.)جاهزا للتسليم إلى المستخدمين (العمالء إنها المرحلة التي يكون فيها المنتج
.األمر بضعة أيام إلعداد الموارد وتكوين هذه الموارد
6- Maintenance الصيانة
After deploying a software, any found issue/bugs need to be fixed by and redeployed. This step
can trigger a whole cycle (requirement, design, coding, testing, and deployment) or it can just fix
small issue in the code (but still need to be retested).
يمكن أن تؤدي هذه الخطوة إلى بدء دورة كاملة. أخطاء يتم العثور عليها وإعادة نشرها/ يجب إصالح أي مشكلة، بعد نشر البرنامج
والنشر) أو يمكنها فقط إصالح مشكلة صغيرة في الكود (ولكن ال تزال بحاجة إلى إعادة، واالختبار، والترميز، والتصميم، (المتطلبات
.)االختبار
1.2. بدء ر
Project Initiation المشوع
Before starting any project, there are some studies need to be made in order to decide the benefit
of the project and its scop. There are three main points need to be made:
: هناك ثالث نقاط رئيسية يجب القيام بها. هناك بعض الدراسات التي يجب إجراؤها لتحديد فائدة المشروع ونطاقه، قبل البدء في أي مشروع
1- Project goal: This section aims to state why this project being execute, what the ultimate
goal is or outcome of the final results.
. وما هو الهدف النهائي أو نتيجة النتائج النهائية، يهدف هذا القسم إلى توضيح سبب تنفيذ هذا المشروع:هدف المشروع
2- Problem definition: This section defines the problem that the project should solve.
. يحدد هذا القسم المشكلة التي يجب أن يحلها المشروع:تعريف المشكلة
3- Target user (audiences): who will benefit from this project, who the users/customers are.
تعكس هذه المتطلبات احتياجات العمالء.متطلبات النظام هي أوصاف الخدمات التي يجب أن يوفرها النظام والقيود المفروضة على تشغيله
عادة ما يتم تقديم المتطلبات كمرحلة أولى من عملية.لنظام يخدم غرضًا معينًا مثل التحكم في جهاز أو تقديم طلب أو العثور على معلومات
استخدمت، خالل التطوير. قد يتعين تقديم بعض الفهم للمتطلبات قبل اتخاذ قرار للمضي قد ًما في تطوير النظام، ومع ذلك.تطوير البرمجيات
تم استخدام المتطلبات للتحقق من أن التطبيق، في نهاية المشروع.المتطلبات لتوجيه التنمية والتأكد من أن التقدم يسير في االتجاه الصحيح
.المكتمل يقوم بما يفترض به القيام به
1- Clear/ unambiguous: good requirements are clear, concise, and easy to understand. If the
requirement is worded so that you can’t tell what it requires, then you can’t build a system
to satisfy it. Example: if you are building app for cyclist and the requirement state “the app
will find the best path between start and destination location. Here the word “best” is not
clear and ambiguous. It should state whether the best is shortest, fastest, path with nice
view, etc.
فال يمكنك، إذا تمت صياغة المطلب بحيث ال يمكنك معرفة ما يتطلبه. المتطلبات الجيدة واضحة وموجزة وسهلة الفهم: ال لبس فيه/ واضح
هنا كلمة. إذا كنت تبني تطبيقًا لراكب دراجة وحالة المتطلبات "سيجد التطبيق أفضل مسار بين موقع البداية والوجهة: مثال.بناء نظام يفي به
. وما إلى ذلك، والمسار مع منظر جميل، واألسرع، يجب أن يذكر ما إذا كان األفضل هو األقصر."األفضل" ليست واضحة وغامضة
2- Consistent: A project’s requirements must be consistent with each other. That means that
they not only cannot contradict each other but that they also don’t provide so many
constraints that the problem is unsolvable. Example: if you are building software the
manage appointments for mechanical shop, the requirements state the following:
، هذا يعني أنهم ال يستطيعون التناقض مع بعضهم البعض فحسب. يجب أن تكون متطلبات المشروع متسقة مع بعضها البعض: متسقة
إذا كنت تقوم بإنشاء برنامج إدارة المواعيد لمتجر: مثال.ولكنهم أيضًا ال يوفرون الكثير من القيود التي تجعل المشكلة غير قابلة للحل
: فإن المتطلبات تنص على ما يلي، ميكانيكي
• Reduce the appointment starting window to two hours. تقليل فترة بدء الموعد إلى ساعتين
• Meeting 90% of the scheduled appointments. من المواعيد المقررة٪90 تلبية
These two requirements are unlikely to be satisfied because shortening the time before the
start of the appointment mean more likely to miss this appointment.
.من غير المحتمل أن يتم استيفاء هذين المطلبين ألن تقصير الوقت قبل بدء الموعد يعني زيادة احتمالية تفويت هذا الموعد
العمل على الجدول الزمني للمشروع يتطلب تحديد أولويات المتطلبات ألن المشروع يمكن أن يصل إلى النقطة التي يجب:تحديد األولويات
فيجب، إذا أصر العميل على أن جميع المتطلبات لها نفس األولويات.ً يجب أن يقدم المشروع أهم الميزات أوال، في هذه المرحلة.أن تتوقف
:MoSCoW إحدى طرق تحديد األولويات هي.أن يكون على استعداد لزيادة التمويل إذا لزم األمر
1) M for Must have: The features that must have because they are the fundamental and
backbone of the software.
. الميزات التي يجب توفرها ألنها تمثل العمود الفقري واألساسي للبرنامج:M يجب أن يكون
2) S for Should have: The features that are important that should be include (if possible)
because they provide benefits to user. If there are no time/budget they can be postpone to
next release.
فيمكن تأجيلها، ميزانية/ إذا لم يكن هناك وقت. الميزات المهمة التي يجب تضمينها (إن أمكن) ألنها توفر فوائد للمستخدم: يجب أن يكونS
.إلى اإلصدار التالي
3( C for Could have: The features that desirable (not necessary and not important). They will not
be done until the M and C finished. These features are postponed until having time and budget.
يتم تأجيل هذه الميزات.C وM لن يتم إجراؤها حتى يتم االنتهاء من.) الميزات المرغوبة (ليست ضرورية وليست مهمة: يمكن أن يكونC
.حتى يتوفر الوقت والميزانية
4( W for Will not have: Features that optional and will note be done. It could be included in the
future release.
. يمكن تضمينها في اإلصدار المستقبلي. الميزات االختيارية والتي سيتم مالحظتها: لن يكونW
4- Verifiable: Requirements must be verifiable. If you can’t verify a requirement, you can’t
know if you met the requirement and you can’t prove to your customers that you’ve done
it. Being verifiable means the requirements must be limited and precisely defined. They
can’t be open-ended statements such as, “Process more work orders per hour than are
currently being processed.” How many work orders is “more”?
فال يمكنك معرفة ما إذا كنت تفي، إذا لم تتمكن من التحقق من أحد المتطلبات. يجب أن تكون المتطلبات قابلة للتحقق: يمكن التحقق منها
ال. كونها قابلة للتحقق يعني أن المتطلبات يجب أن تكون محدودة ومحددة بدقة.بالمتطلبات وال يمكنك أن تثبت لعمالئك أنك قد فعلت ذلك
كم عدد أوامر العمل "أكثر"؟." "معالجة المزيد من أوامر العمل في الساعة أكثر مما تتم معالجته حاليًا، مثل، يمكن أن تكون بيانات مفتوحة
6- Mix project goal with requirement: Avoid mixing project goal and hope with requirements.
Example: customers state “increase the purchasing by 50%”. This the goal of the project
and it is the marketing responsibility, and it should not be part of the requirements.
ذكر العمالء "زيادة الشراء بنسبة: مثال. تجنب الخلط بين هدف المشروع واألمل مع المتطلبات:امزج بين هدف المشروع والمتطلبات
. هذا هو هدف المشروع وهي مسئولية تسويقية وال يجب أن تكون جزء من المتطلبات."٪50
1- User requirements: describe how the project will be used by the eventual end users. They
show the steps users will perform to accomplish specific tasks, use cases, and prototypes.
إنها توضح الخطوات التي سيقوم بها المستخدمون. صف كي ف سيتم استخدام المشروع من قبل المستخدمين النهائيين:متطلبات المستخدم
ونماذج أولية، وحاالت استخدام، إلنجاز مهام محددة
2- Hardware Requirements: Define the properties expected from and constraints on the
physical hardware in a system. Expectations on storage space, CPU, network latency, etc.
التوقعات بشأن مساحة التخزين ووحدة. تحديد الخصائص المتوقعة والقيود المفروضة على األجهزة المادية في النظام: متطلبات األجهزة
.المعالجة المركزية وزمن انتقال الشبكة وما إلى ذلك
3- Software Requirements: Properties of software that being executed and its constraints. This
includes details about how software will functional.
. يتضمن هذا تفاصيل حول كيفية عمل البرنامج. خصائص البرمجيات التي يتم تنفيذها وقيودها:متطلبات البرمجيات
يمكن اعتبار هذا النوع من المتطلبات في غاية األهمية ألنه، ومع ذلك.هذه المتطلبات التي ليست مرتبطة بالدليل أو معنية بالخدمات المقدمة
غالبًا ما تكون الموثوقية ووقت االستجابة ومستوى األمان واستخدام الذاكرة وما: على سبيل المثال.يمكن أن يؤثر على حياة النظام وهدفه
. يمكن أن يعني الفشل في تلبية متطلبات غير وظيفية أن النظام بأكمله غير قابل لالستخدام.إلى ذلك أكثر أهمية من المتطلبات الوظيفية الفردية
يمكن، أيضًا. فلن يتم اعتماده على أنه آمن للتشغيل، إذا كان نظام الطائرات ال يفي بمتطلبات الموثوقية الخاصة به، على سبيل المثال
. المتطلبات األمنية التي أدت إلى تنفيذ المصادقة والترخيص كمتطلبات: مثال.للمتطلبات غير الوظيفية أن تولد متطلبات وظيفية متعددة
يمكن أن تكون مطلوبة من خالل سياسة المنظمة. ال يتم رفعها دائ ًما بسبب حاجة المستخدم، على عكس الوظيفية، المتطلبات غير الوظيفية
. وما إلى ذلك، وإمكانية التشغيل البيني مع نظام آخر، وتنظيم الدولة،
• Interview: meet with stockholders and ask them question related to their jobs, tasks,
difficulties, hope, etc. These can provide good information about how the system should
be. Interview can be closed (there are predefined questions) or opened (not predefined
agenda and it is open discussion)
يمكن أن توفر هذه المعلومات. وما إلى ذلك، وأملهم، وصعوباتهم، ومهامهم، قابل المساهمين واطرح عليهم أسئلة تتعلق بوظائفهم:مقابلة
يمكن إغالق المقابلة (هناك أسئلة محددة مسبقًا) أو فتحها (ليس جدول أعمال.معلومات جيدة حول الكيفية التي ينبغي أن يكون عليها النظام
)محدد مسبقًا وهي مناقشة مفتوحة
• Observation: Watching people doing their jobs to learn the sequence and artifacts. This
can help when people can’t really explain or provide details about their tasks because it
became a habit, they do not understand how their work relate to others, etc.
يمكن أن يساعد ذلك عندما ال يتمكن األشخاص حقًا من شرح مهامهم أو. مشاهدة الناس يؤدون وظائفهم لمعرفة التسلسل والتحف:المالحظة
. وما إلى ذلك، وال يفهمون كيفية ارتباط عملهم باآلخرين، تقديم تفاصيل عنها ألنها أصبحت عادة
• Stories and scenarios: sometime people find it easy to tell a story about their work. This
can be helpful to provide good aspect of sequence of the task and their impact. It also can
give information about to handle specific/difficult situation.
يمكن أن يكون هذا مفيدًا في توفير جانب جيد. في بعض األحيان يجد الناس أنه من السهل سرد قصة عن عملهم:القصص والسيناريوهات
. صعب/ يمكن أن يقدم أيضًا معلومات حول التعامل مع موقف محدد.لتسلسل المهمة وتأثيرها
• Questionary: It can be helpful get users opinion of a requirement or a situation.
. يمكن أن يكون مفيدًا في الحصول على رأي المستخدمين بشأن مطلب أو موقف:استجوابي
• Brainstorming: in which group of people sitting together sharing their ideas as it come to
them discuss it to get it organized.
. في أي مجموعة من األشخاص يجلسون معًا يشاركون أفكارهم فور وصولها إليهم ويناقشونها لتنظيمها:العصف الذهني
It is a comprehensive technical that descript how the requirement will be states. The set of
specifications is fully described what the software will do and when, what, and how it will be
expected to perform.
. مجموعة المواصفات موصوفة بالكامل لما سيفعله البرنامج ومتى وماذا وكيف يتوقع أداءه.إنها تقنية شاملة تصف كيف سيكون الشرط
Example: requirement state that “user must be authenticated to user the software”.
." ينص الشرط على أن "المستخدم يجب أن يكون مصدقًا عليه لمستخدم البرنامج:مثال
Specifications:
:تحديد
• ID: 23
• Description: user need to login with his/her username and password to be able to
use the system. User who has no login credential must not enter to the system.
بها ى/ يحتاج المستخدم إىل تسجيل الدخول باسم المستخدم وكلمة المرور الخاصة به:الوصف
حت يتمكن من استخدام
. يجب أال يدخل المستخدم الذي ليس لديه بيانات اعتماد تسجيل الدخول إىل النظام.النظام
• Rationale: It is important to prevent unauthorized users from using the system.
. من المهم منع المستخدمين غير المصرح لهم من استخدام النظام:المسوغات
• Inputs: username: include any letter or number but must not include special
character, with length of at least 4. Password must consist of digit, letter, and symbol
mix, with length of at least 8.
يجب أن.4 بطول ال يقل عن، صا ً قم بتضمين أي حرف أو رقم ولكن يجب أال يتضمن: اسم المستخدم:المدخالت
ً رمزا خا
.8 بطول ال يقل عن، تتكون كلمة المرور من مزيج من األرقام والحروف والرموز
• Outputs: if user login successfully, welcome message should appear and move to
landing page; otherwise, error message will be displayed.
يجب أن تظهر رسالة الترحيب وتنتقل إلى الصفحة المقصودة ؛ خالف ذلك، إذا نجح المستخدم في تسجيل الدخول:المخرجات
. سيتم عرض رسالة خطأ،
• Persistent Changes: user information should be store in session. User should see
option based on its permission.
. يجب أن يرى المستخدم الخيار بنا ًء على إذنه. يجب تخزين معلومات المستخدم في الجلسة:التغييرات المستمرة
• Related Requirements or Prerequisite: requirement ID 22, user must have
created account.
. يجب أن يكون المستخدم قد أنشأ حسابًا، 22 معرف المتطلب:المتطلبات ذات الصلة أو المتطلبات األساسية
• Test Cases (verification): use correct user credential, user incorrect password to
make sure unauthorize user no able to login.
وكلمة مرور المستخدم غير الصحيحة للتأكد من عدم، استخدم بيانات اعتماد المستخدم الصحيحة:)حاالت االختبار (التحقق
.تمكن المستخدم غير المصرح له من تسجيل الدخول
Figure 3.2: Example of requirement information collected for login.
Collecting use cases help the development team to capture the user’s goal because it focuses on
what user can achieve with system. To get and understand how the user will achieve these goals,
team need to capture the sequences of user interactions which will describe the process. In use
cases diagram, you can use relationships to describe the connection between different classes or
actors (figure 3.4). The relationships as follow:
يساعد جمع حاالت االستخدام فريق التطوير على تحديد هدف المستخدم ألنه يركز على ما يمكن أن يحققه المستخدم مع النظام .للحصول
على وفهم كيف سيحقق المستخدم هذه األهداف ،يحتاج الفريق إلى التقاط تسلسل تفاعالت المستخدم التي ستصف العملية .في مخطط حاالت
االستخدام ،يمكنك استخدام العالقات لوصف العالقة بين الفئات أو الجهات الفاعلة المختلفة (الشكل .)3.4العالقات على النحو التالي:
Association between actor and use case represented by line connecting actor to use case.
االرتباط بين الفاعل وحالة االستخدام ممثلة بالخط الذي يربط الفاعل بحالة االستخدام.
Generalization of an actor represented by arrow from on actor to another. This arrow means
that the actor (arrow going from) can inherit the actor’s role that arrow going to
تعميم ممثل يمثله سهم من ممثل إلى آخر .يعني هذا السهم أن الممثل (السهم المتجه من) يمكنه أن يرث دور الممثل الذي سينتقل إليه السهم
Extend between two use cases represented by the text “<<extend>>” and it mean that the
extending use case is depending on the extended use case (which is the base). This relationship
can be base condition which make it optional.
قم بالتمديد بين حالتي استخدام يمثلهما النص "<<امتداد>>" وهذا يعني أن حالة االستخدام الموسعة تعتمد على حالة االستخدام الموسعة
(وهي األساس) .يمكن أن تكون هذه العالقة شر ً
طا أساسيًا يجعلها اختيارية.
Include between two use cases represented by text “<<include>>” which show that the
included use case is part of the including use case (which is the base). The goal of include
relationship is to reuse common class among different use cases.
قم بتضمين حالتي استخدام يمثلهما النص "<<تضمين>>" والتي توضح أن حالة االستخدام المضمنة هي جزء من حالة االستخدام المتضمنة
(وهي األساس) .الهدف من عالقة التضمين هو إعادة استخدام فئة مشتركة بين حاالت االستخدام المختلفة.
In the figure 3.6, example of the two features in patient record system. In these features, user try
to transfer information from the database to patient system. The diagram shows the
communication between actors and system objects. The sequence is as following:
يحاول المستخدم نقل المعلومات من قاعدة البيانات إلى، في هذه الميزات. مثال على السمتين في نظام تسجيل المرضى، 3.6 في الشكل
: التسلسل كالتالي. يوضح الرسم البياني االتصال بين الجهات الفاعلة وكائنات النظام.نظام المريض
1- User logs in to the system. يقوم المستخدم بتسجيل الدخول إلى النظام
2- After login successfully two options are available (represent with “alt”). These options are:
هذه الخيارات هي.)"alt" يتوفر خياران (يمثالن بـ، بعد تسجيل الدخول بنجاح
a. transfer of updated patient information from the database to the PRS
وPRS نقل معلومات المريض المحدثة من قاعدة البيانات إلى
and
b. the transfer of summary health data from the database to the PRS.
.نقل البيانات الصحية الموجزة من قاعدة البيانات إلى استراتيجية الحد من الفقر
3 - In each option user credentials are check using PRS authorization.
4- Patient information is transfer to PRS after checking user and return Ok message.
Ok بعد التحقق من المستخدم وإعادة رسالةPRS يتم نقل معلومات المريض إلى
5- User logout. خروج المستخدم
Figure 3.6: Example of sequence diagram of two feature in Clinic system
مثال على مخطط تسلسل لميزتين في نظام العيادة:3.6 الشكل
References مراجع
1- Ian Sommerville, Software Engineering Tenth Edition, 2016
2016 ، هندسة البرمجيات اإلصدار العاشر، إيان سومرفيل
2- Elvis C. Foster, Software Engineering A Methodical Approach Second Edition, 2022
2022 ، هندسة البرمجيات نهج منهجي اإلصدار الثاني، إلفيس سي فوستر
3- Rod Stephens, beginning Software Engineering Second Edition, 2023
2023 ، بداية هندسة البرمجيات الطبعة الثانية، رود ستيفنس
4- Ronald J. Leach, development Introduction to Software Engineering Second Edition, 2016
2016 ، الثان
اإلصدار ي، البمجيات
مقدمة تطويرية لهندسة ر، رونالد جيه ليتش
4. Software Design تصميم رالبمجيات
Software design is the process of envisioning and defining software solutions. The objective of
the software design process is the construction of a model that is representative of the required
software system. The model must be accurate and comprehensive; it must conform to
established software design and development standards. During this phase, there are many
activities that need to be accomplished. The following are some of them:
الهدف من عملية تصميم البرنامج هو بناء نموذج يمثل نظام البرنامج.تصميم البرمجيات هو عملية تصور الحلول البرمجية وتعريفها
خالل هذه المرحلة. يجب أن يكون النموذج دقيقًا وشامالً ؛ يجب أن تتوافق مع معايير تصميم وتطوير البرمجيات المعمول بها.المطلوب
: فيما يلي بعض منهم. هناك العديد من األنشطة التي يجب إنجازها،
: لها ثالث مزايا رئيسية، بشكل عام.تعتبر الهندسة المعمارية مهمة ألنها تؤثر على أداء النظام وقابلية توزيعه وصيانته
يمكنك التفكير في النمط المعماري.الهدف من األنماط كطريقة لتقديم ومشاركة وإعادة استخدام المعلومات حول البرامج قيد التطوير
يجب أن يصف النمط، لذلك. والتي تمت تجربتها واختبارها في أنظمة وبيئات مختلفة، ومجردًا للممارسات الجيدة
ّ باعتباره وصفًا منمقًا
: وفيما يلي بعض منها، هناك عدة أنواع من األنماط يمكن استخدامها.المعماري مؤسسة النظام التي نجحت في األنظمة السابقة
The notions of separation and independence are fundamental to architectural design because
they allow changes to be localized. Separating elements of a system allows these elements to
change independently. The architecture is also changeable and portable. If its interface is
unchanged, a new layer with extended functionality can replace an existing layer without
changing other parts of the system (figure 4.2.). It usually consists of four layers:
تعتبر مفاهيم الفصل واالستقاللية أساسية للتصميم المعماري ألنها تسمح بتوطين التغييرات .تسمح عناصر الفصل في النظام لهذه العناصر
بالتغير بشكل مستقل .الهندسة أيضًا قابلة للتغيير والمحمولة .إذا لم تتغير واجهتها ،يمكن لطبقة جديدة ذات وظائف موسعة أن تحل محل
طبقة موجودة دون تغيير أجزاء أخرى من النظام (الشكل .).4.2تتكون عادة من أربع طبقات:
والخوادم المرتبطة والعمالء الذين يصلون إلى الخدمات ويستخدمونها .سيوفر مكون الخادم خدمات لمكونات متعددة للعميل .يطلب
العمالء الخدمات من الخادم ويقدم الخادم الخدمات ذات الصلة لهؤالء العمالء.
4.1.4. Model-view-controller (MVC) pattern ) (MVCنموذج وحدة التحكم يف عرض النموذج
This pattern is the basis of interaction management in many web-based systems and is supported
by most language frameworks. It consists of three parts:
هذا النمط هو أساس إدارة التفاعل في العديد من األنظمة المستندة إلى الويب وتدعمه معظم أطر العمل اللغوية .وهو يتألف من ثالثة
أجزاء:
1- Model — contains the core functionality and data.
يحتوي على الوظائف والبيانات األساسية- النموذج
2- View — displays the information to the user (more than one view may be defined)
) يعرض المعلومات للمستخدم (يمكن تحديد أكثر من طريقة عرض- عرض
In this approach, a system is viewed as being made up of a collection of objects (i.e., entities).
Each object is associated with a set of functions that are called its methods. Each object contains
its own data and is responsible for managing it. The data internal to an object cannot be accessed
directly by other objects and only through invocation of the methods of the object. Example of
objects are employees, departments, items, etc.
يرتبط كل كائن بمجموعة من الوظائف تسمى.) يُنظر إلى النظام على أنه مكون من مجموعة من الكائنات (أي الكيانات، في هذا النهج
ال يمكن الوصول إلى البيانات الداخلية لكائن ما مباشرة بواسطة. يحتوي كل كائن على بياناته الخاصة وهو مسؤول عن إدارتها.طرقه
. وما إلى ذلك، والعناصر، واإلدارات، مثال على األشياء هي الموظفين.كائنات أخرى وفقط من خالل استدعاء أساليب الكائن
If we take a Pay-roll system in an object-oriented design, the employee data, such as the names
of the employees, their code numbers, basic salaries, etc., are distributed among different
employee objects of the system.
مثل أسماء الموظفين وأرقام األكواد الخاصة بهم، يتم توزيع بيانات الموظف، في تصميم موجه للكائناتPay-roll إذا أخذنا نظام
. بين كائنات الموظفين المختلفة في النظام، والرواتب األساسية وما إلى ذلك
4.2.1. Basic Terms ر
الشوط األساسية
This section will provide some definition to most used terms in object-oriented design:
:سيوفر هذا القسم بعض التعريفات للمصطلحات األكثر استخدا ًما في التصميم الموجه للكائنات
1. Object: it is usually any tangible real-world entity that it can be interacted with in real
life. Example in library system objects can be Books, Rooms, Employees, etc. Also,
Object can be something like Controller, Schedular, etc. even if they are not tangible.
advantage of considering a system as a set of objects is an excellent decomposition of
the system into parts that have low coupling and high cohesion. Each object essentially
consists of some data that is private to the object and a set of functions.
يمكن أن تكون كائنات نظام المكتبات. عادة ما يكون أي كيان ملموس في العالم الحقيقي يمكن التفاعل معه في الحياة الواقعية:الكائن
وما إلى، أو الجدولة، يمكن أن يكون الكائن شيئًا مثل وحدة التحكم، وما إلى ذلك أيضًا، وموظفين، وغرف، عبارة عن كتب
ً
ممتازا للنظام إلى أجزاء ذات اقتران منخفض ً
تحلال تعتبر ميزة اعتبار النظام كمجموعة من الكائنات.ذلك حتى لو لم تكن ملموسة
. يتكون كل كائن بشكل أساسي من بعض البيانات الخاصة بالكائن ومجموعة من الوظائف.وتماسك عا ٍل
Example: Library member is an object the has private data such as (name of the member,
membership number, address, phone number, e-mail address, etc.) and operations such
as (issue-book, find-books-outstanding, return-book, etc.).
وعنوان البريد اإللكتروني، ورقم الهاتف، والعنوان، ورقم العضوية، عضو المكتبة هو كائن به بيانات خاصة مثل (اسم العضو:مثال
.) وما إلى ذلك، كتاب العودة، البحث عن الكتب المعلقة، وما إلى ذلك) وعمليات مثل (كتاب اإلصدار،
2. Class: All the objects possessing similar attributes and methods constitute a class. all
library members would constitute the class LibraryMember because each library
member object has the same set of attributes and same operations.
ألن كلLibraryMember سيشكل جميع أعضاء المكتبة فئة. تشكل جميع الكائنات التي تمتلك سمات وأساليب متشابهة فئة:الفئة
.كائن عضو في المكتبة له نفس مجموعة السمات ونفس العمليات
3. Method: The operations (such as create, issue, return, etc.) supported by an object are
implemented in the form of methods. An operation is a specific responsibility of a class,
and the responsibility is implemented in the form of a method. However, it is at times
useful to have multiple methods to implement a single responsibility.
العملية هي مسؤولية محددة. إلخ) التي يدعمها كائن في شكل طرق، اإلرجاع، اإلصدار، يتم تنفيذ العمليات (مثل اإلنشاء:الطريقة
. من المفيد في بعض األحيان أن يكون لديك طرق متعددة لتنفيذ مسؤولية واحدة، ومع ذلك. ويتم تنفيذ المسؤولية في شكل طريقة، للفئة
: العالقات الطبقية.4
4. Class Relationships:
a. Inheritance: The inheritance feature allows one to define a new class by
extending the features of an existing class. The original class is called the base
class, superclass, or parent class, and the new class obtained through inheritance
is called the derived class, subclass, or a child class.
أو الطبقة، تسمى الفئة األصلية الفئة األساسية. تتيح ميزة الوراثة للفرد تحديد فئة جديدة من خالل توسيع ميزات فئة موجودة:الوراثة
أو الفئة، أو الفئة الفرعية، وتسمى الفئة الجديدة التي تم الحصول عليها من خالل الوراثة الفئة المشتقة، أو الفئة األصلية، الفائقة
.الفرعية
b. Association and link: it happen when two classes are taking each others’ help
(i.e., invoke each others’ methods) to serve user requests. Example, Student and
Subject objects they can have association relationship because Student can
register in Subject and can invoke SubjectName method and access Subject
information.
. يحدث عندما تتلقى فصلين مساعدة بعضهما البعض (أي استدعاء أساليب بعضهما البعض) لخدمة طلبات المستخدم: االقتران والرابط.ب
كائنات الطالب والموضوع يمكن أن يكون لها عالقة ارتباط ألن الطالب يمكنه التسجيل في الموضوع ويمكنه استدعاء، على سبيل المثال
. والوصول إلى معلومات الموضوعSubjectName أسلوب
c. Composition: represent part/whole relationships among objects. Objects which
contain other objects are called composite objects. Example, Book object is
composed of Chapter objects.
على سبيل المثال. تسمى الكائنات التي تحتوي على كائنات أخرى الكائنات المركبة. الكاملة بين األشياء/ يمثل العالقات الجزئية:التركيب
. يتكون كائن الكتاب من كائنات الفصل،
d. Dependency: one class depend on another class. Example, class C1 take an
object from class C2 (class C1 dependent on C2), so any change on C2 would
require change to class C1.
لذا فإن أي، )C2 تعتمد علىC1 (الفئةC2 كائنًا من الفئةC1 تأخذ الفئة، على سبيل المثال. فئة واحدة تعتمد على فئة أخرى:التبعية
.C1 يتطلب التغيير إلى الفئةC2 تغيير في
a. Abstract Class: Classes that are not intended to produce instances of themselves.
In other words, an abstract class cannot be instantiated into objects. Abstract
classes exist so that behavior common to a variety of classes can be factored into
one common location, where they can be defined once. Example, “Issuable” is
an abstract class and “Book” and “Journal” are concert class. Issuable can have
the common method like “issue”, “return”, etc. which they have to be overridden
in the concrete class.
توجد فئات مجردة. ال يمكن تحويل فئة مجردة إلى كائنات، بمعنى آخر. الفئات التي ال يُقصد بها إنتاج أمثلة خاصة بها:فئة الملخص
على سبيل المثال. حيث يمكن تحديدها مرة واحدة، بحيث يمكن تحليل السلوك الشائع لمجموعة متنوعة من الفئات في مكان واحد مشترك
" يمكن أن يكون لإلصدار طريقة شائعة مثل "المشكلة. "اإلصدار" فئة مجردة و "الكتاب" و "دفتر اليومية" هي فئة الحفلة الموسيقية،
. وما إلى ذلك والتي يجب تجاوزها في فئة محددة، " "العودة،
5. Encapsulation: The data of an object is encapsulated within its methods. To access the
data internal to an object, other objects have to invoke its methods, and cannot directly
access the data. Because object do not directly change each other’s data, they are weakly
coupled.
يتعين على الكائنات األخرى استدعاء أساليبها، للوصول إلى البيانات الداخلية لكائن ما. يتم تغليف بيانات الكائن ضمن طرقه: التغليف.5
. فإنهما يقترنان بشكل ضعيف، نظرا ألن الكائن ال يغير بيانات بعضه البعض بشكل مباشر ً . وال يمكنها الوصول مباشرة إلى البيانات،
4.2.2. Unified Modelling Language (UML) لغة النمذجة الموحدة
UML is a language for documenting models. A model is a simplified version of a real system.
The model aims to capture the important aspect with ignoring the internal details. Big and
complex project can have multi-level of design and different models. To create these models,
UML language used to create MUL diagrams. In UML, there are different association and
relationship which can be used:
يهدف النموذج إلى التقاط الجانب المهم مع تجاهل التفاصيل. النموذج هو نسخة مبسطة من نظام حقيقي. هي لغة لتوثيق النماذجUML
استخدمت، إلنشاء هذه النماذج. يمكن أن يحتوي المشروع الكبير والمعقد على مستويات متعددة من التصميم ونماذج مختلفة.الداخلية
: هناك ارتباط وعالقات مختلفة يمكن استخدامها، UML في.MUL إلنشاء الرسوم البيانيةUML لغة
2-Direction/bidirectional on an association indicates control. ثنائي االتجاه على ارتباط إلى التحكم/ يشير االتجاه
3-Multiplicity تعدد
4-Aggregation التجميع
4-Composition: in which the parts are existence-dependent on the whole. If components can
dynamically be added to and removed from the aggregate, then the relationship is expressed as
aggregation. If the components are not required to be dynamically added/delete, then the
components have the same lifetime as the composite. In this case, the relationship should be
represented by composition.
فسيتم، إذا كان من الممكن إضافة المكونات وإزالتها من التجميع ديناميكيًا. حيث تكون األجزاء معتمدا على الوجود بالكل:التركيب
. فإن المكونات لها نفس العمر االفتراضي للمركب، حذف المكونات ديناميكيًا/ إذا لم يكن من المطلوب إضافة.التعبير عن العالقة كتجميع
. يجب تمثيل العالقة بالتكوين، في هذه الحالة
5-Inheritance ميراث
6-Dependency االعتماد
Also, part of the object-oriented design, using UML to create use cases and sequence diagram
that can be used to represent the sequence of using objects and method invoking. The following
figure is example of sequence diagram for weather app base on the objects in the figure 4.5.
إلنشاء حاالت االستخدام ومخطط التسلسل الذي يمكن استخدامه لتمثيلUML باستخدام، جزء من التصميم الموجه للكائنات، أيضًا
الشكل التالي هو مثال على مخطط التسلسل لقاعدة تطبيق الطقس على الكائنات في الشكل.تسلسل استخدام الكائنات واستدعاء الطريقة
.4.5
Figure 4.6: Example of sequence diagram for data collection in weather app
The following figures represent a class diagram for “Ordering System” and “Invoice and Payment”
which show the objects and class with relationship among them.
ُ ً
.والت تظهر الكائنات والفئة ذات العالقة فيما بينها
تمثل األشكال التالية مخططا لفئة "نظام الطلب" و "الفاتورة والدفع" ي
Figure 4.7: UML Class diagram example مثال على الرسم التخطيطي لفئة:4.7 الشكل
4.2.4. Creational Design Patterns اإلبداع
ي أنماط التصميم
Creational patterns provide different object creation mechanisms which help in increase reuse of
the system code. The following the most common patterns:
: األنماط التالية األكثر شيوعًا.توفر األنماط اإلبداعية آليات مختلفة إلنشاء الكائنات تساعد في زيادة إعادة استخدام رمز النظام
1- Builder: it aims to separate the construction of a complex object from its representation.
This type of pattern let you construct object step by step with different type of
representation. Imagine you are creating function that make pizza with 10 optional
toping. You could create different override constructors for different combination of the
optional parameter (telescoping constructor) which unreasonable and to much work.
يتيح لك هذا النوع من األنماط إنشاء كائن خطوة بخطوة بنوع مختلف من. يهدف إلى فصل بناء كائن معقد عن تمثيله: منشئ-1
يمكنك إنشاء ُمنشِئات تجاوز مختلفة لمجموعة. طبقات اختيارية10 تخيل أنك تقوم بإنشاء وظيفة تجعل البيتزا تحتوي على.التمثيل
.مختلفة من المعلمة االختيارية (ال ُمنشئ المتداخل) والتي تعتبر غير معقولة وتؤدي إلى الكثير من العمل
Instead, we create builder for making pizza. In which, we have method or constructor that
set attribute the object and return the same object after the change.
. حيث لدينا طريقة أو ُمنشئ يقوم بتعيين سمة الكائن وإرجاع نفس الكائن بعد التغيير. نقوم بإنشاء منشئ لصنع البيتزا، بدالً من ذلك
2-Factory method: define an interface or abstract class for creating an object but let the
subclasses decide which class to instantiate.
. تحديد واجهة أو فئة مجردة إلنشاء كائن ولكن دع الفئات الفرعية تقرر أي فئة سيتم إنشاء مثيل لها:طريقة المصنع
Figure 4.8: Example of factory method
The following is example code of create factory method. In the code, we have interface Shape which is
implemented by two classes. The ShapeFactory is returning an object of type Shape which later can be
used to call a function.
بإرجاعShapeFactory يقوم. لدينا شكل واجهة يتم تنفيذه بواسطة فئتين، في الكود.فيما يلي مثال على رمز طريقة إنشاء المصنع
. والذي يمكن استخدامه الحقًا الستدعاء دالةShape كائن من النوع
public interface Shape {
void draw();
}
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Inside Rectangle.");
}
}
3-Abstract factory pattern: it provides an interface for creating families of related objects without
specifying their classes. In the figure 4.8, the abstract factory for vehicle is invoke another factory based
on the type provided, such as car. The car factory will create object based on the type of car type
provided. So factory is creating and return object.
يتم استدعاء المصنع، 4.8 في الشكل. يوفر واجهة إلنشاء مجموعات من الكائنات ذات الصلة دون تحديد فئاتها:نمط المصنع المجرد
لذا. سيقوم مصنع السيارة بإنشاء كائن بنا ًء على نوع السيارة المقدم. مثل السيارة، التجريدي للمركبة مصنعًا آخر بنا ًء على النوع المقدم
.فإن المصنع يقوم بإنشاء الكائن وإعادته
Another short example is shape creating factory. In which, Factory producer return factory either
rounded or shape. The shape factory will return object such as rectangle. The return object can be used
and called as normal as, see main function.
ً مستديرا أو
سيعيد مصنع الشكل كائنًا مثل.شكًل ً حيث يقوم منتج المصنع بإرجاع المصنع إما.مثال قصير آخر هو تشكيل المصنع
. انظر الوظيفة الرئيسية، يمكن استخدام الكائن المرتجع واستدعائه كالمعتاد.المستطيل
Class demo {
public static void main(String[] args) {
//get factory of type shape
AbstractFactory shapeFactory = FactoryProducer.getFactory(false);
// gat shap object from the factory
Shape shape1 = shapeFactory.getShape("RECTANGLE");
// call method from the returned object
shape1.draw();
4-Singleton: it ensures that a class has only one instance, while providing a global access point to
this instance.
. مع توفير نقطة وصول عالمية لهذه الحالة، يضمن أن يكون للفصل مثيل واحد فقط:Singleton
يعد استخدام قاعدة. يجب تحديد نوع قاعدة البيانات، أثناء التصميم.هناك العديد من أنواع قواعد البيانات التي يمكن استخدامها في النظام
يمكن أن تكون هذه الجداول مرتبطة. يتم تخزين البيانات في الجداول، في هذا النهج.أمرا شائعًا للتعامل مع البياناتً البيانات العالئقية
يساعد إنشاء قاعدة بيانات عالئقية في توفير المساحة عن طريق تقليل االزدواجية وتجنب حذف.ببعضها البعض بنا ًء على بعض القيود
.السجل عن طريق الخطأ والمزايا األخرى
4.3.1. Normalization . تطبيع
To create a database, you need to normalize it to be in standard form. There are 3 most common
level of normalizations.
. هناك ثالثة مستويات شائعة من التسويات. تحتاج إلى تطبيعها لتكون في شكل قياسي، إلنشاء قاعدة بيانات
The primary key in above table is Time+Game. The table meet the requirement for 1NF but it
has issue with 2NF as following:
علىNF2 ولكنه يواجه مشكلة معNF1 يلبي الجدول متطلبات.Time + Game المفتاح األساسي في الجدول أعًله هو
:النحو التالي
• Update—If you modify the Duration or MaximumPlayers value in one row, other rows
containing the same game will be out of sync.
فستكون الصفوف األخرى التي تحتوي على، في صف واحدMaximumPlayers أوDuration إذا قمت بتعديل قيمة- تحديث
نفس اللعبة غير متزامنة
• Deletion—if you want to cancel the Middle Earth Hold’em Poker game at 4:00, so you
delete that record. Then you’ve lost all the information about that game. You no longer
know that it takes 90 minutes and has a maximum of 10 players.
، بعد ذلك. لذلك تقوم بحذف هذا السجل، 4:00 في الساعةMiddle Earth Hold’em Poker إذا كنت تريد إلغاء لعبة- الحذف
. العبين كحد أقصى10 دقيقة وبه90 لم تعد تعلم أن األمر يستغرق.تكون قد فقدت كل المعلومات المتعلقة بهذه اللعبة
• Insertion—You cannot add information about a new game without scheduling it for play.
. ال يمكنك إضافة معلومات حول لعبة جديدة دون جدولة للعب- اإلدراج
3- Third (3NF): الثالثة
a. It is a 2NF إنه
a. It contains no transitive dependencies. Which means non-key field’s value does not
depend on another non-key field’s value.
مما يعني أن قيمة الحقل غير الرئيسي ال تعتمد على قيمة حقل غير مفتاح آخر.ال يحتوي على تبعيات متعدية
This table meet the requirement of 2NF but not 3NF. It has the following issues (which
solve in the figure 4.13):
:)4.13 يحتوي على المشكالت التالية (التي تم حلها في الشكل.NF3 ولكن ليسNF2 يلبي هذا الجدول متطلبات
• Update: If you change the Pages value for Becky’s row, it will be inconsistent with
Noah’s row as they have same favorite book. Also, if Luke changes his favorite book
to different book, the table loses the data it has about “The Color of Magic”.
أيضًا. ألن لديهم نفس الكتاب المفضلNoah فستكون غير متوافقة مع صف، Becky لصفPages إذا قمت بتغيير قيمة:• تحديث
." فإن الجدول يفقد البيانات التي لديه حول "لون السحر، إذا غير لوقا كتابه المفضل إلى كتاب مختلف،
• Deletion: If you remove J.C. record from the table, you lose the information about
Gil’s All Fright Diner.
.Gil’s All Fright Diner فستفقد المعلومات حول، من الجدولJC إذا قمت بإزالة سجل:الحذف
• Insertion: You cannot add information about a new book unless it’s someone’s
favorite. Conversely, you can’t add information about a person unless he declares a
favorite book.
ً
ال يمكنك إضافة، على العكس من ذلك.مفضال لشخص ما ال يمكنك إضافة معلومات حول كتاب جديد ما لم يكن كتابًا:• اإلدراج
.معلومات عن شخص ما إال إذا أعلن عن كتاب مفضل
، أو منتجات، أو طلبًا، يمكن أن يكون هذا الكيان مستخدمين.تبدأ عملية التصميم بتحديد الكيان أو العنصر المطلوب في قاعدة البيانات
ثم ابدأ. وهذا يشمل تحديد نوع البيانات لكل عمود، ثم تحديد نوع البيانات التي سيحتويها كل جدول والتي ستكون أعمدة.وما إلى ذلك
: يمكن أن تكون العالقة أيًا مما يلي.في تحديد العالقة بين الجدول
باستخدام اسم الجدولERD ( يتم إنشاءERD). يجب إنشاء مخطط عالقة الكيان، بعد هذه العملية ومع مراعاة إجراء عملية التطبيع
يساعد هذا الرسم التخطيطي في إنشاء صورة كبيرة حول الشكل الذي ستبدو عليه.واألعمدة الموجودة في الجدول مع تحديد النوع والقيد
dbdiagram هناك العديد من األدوات إلنشاء مثل هذا الرسم التخطيطي)مخطط.قاعدة البيانات وكيف ترتبط الجداول ببعضها البعض
.(أو التطبيق الواضح أو غيرهما
1
https://dbdiagram.io/home
2
https://lucid.app/documents#/dashboard
Figure 4.14: example of ERD
References مراجع
1- Ian Sommerville, Software Engineering Tenth Edition, 2016
2016 ، هندسة البرمجيات اإلصدار العاشر، إيان سومرفيل
2- Elvis C. Foster, Software Engineering a Methodical Approach Second Edition, 2022
3-Composite: it lets you compose objects into tree structures and then work with these
structures as if they were individual objects.
. يتيح لك تكوين كائنات ز يف هياكل شجرية ثم العمل مع هذه الهياكل كما لو كانت كائنات فردية:مركب
For example, you have two objects: Employee which has sub-object (subordinates).
Solution of this is using composite pattern to include object as tree.
الموظف الذي لديه كائن ي: لديك كائنان، عىل سبيل المثال
.)فرع (المرؤوسون
رز
.لتضمي الكائن كشجرة حل هذا هو استخدام النمط المركب
4-Façade: it provides a simplified interface to a library, a framework, or any other complex set
of classes. توفر واجهة مبسطة لمكتبة أو إطار عمل أو أي مجموعة أخرى معقدة من الفئات:الواجهة
Example: an app that uploads short videos with to social media could potentially use a
professional video conversion library. You can interact with library and call each method/class
as you need. A better option, creating a class with the single method encode(filename,
format). After creating such a class and connecting it with the video conversion library, you’ll
get façade pattern as “encode” function will simplify all the complex work.
.االجتماع مكتبة تحويل فيديو احيافية
ي قد يستخدم التطبيق الذي يقوم بتحميل مقاطع فيديو ر:مثال
قصية إىل وسائل التواصل
إنشاء فئة باستخدام طريقة واحدة ر ز، خيار أفضل. فئة حسب حاجتك/ يمكنك التفاعل مع المكتبة واستدعاء كل طريقة
ترمي (اسم
ستحصل عىل نمط الواجهة حيث ستعمل وظيفة، بعد إنشاء مثل هذا الفصل وربطه بمكتبة تحويل الفيديو.) التنسيق، الملف
."التشفي" عىل تبسيط جميع األعمال المعقدة
ر
References مراجع
1-Ian Sommerville, Software Engineering Tenth Edition, 2016
2016 ، اليمجيات اإلصدار العاش
هندسة ر، إيان سومرفيل
2-Elvis C. Foster, Software Engineering a Methodical Approach Second Edition, 2022
3-Rod Stephens, beginning Software Engineering Second Edition, 2023
ز
2023 ، الثان بداية هندسة ر، Rod Stephens-3
اليمجيات اإلصدار ي
4- Ronald J. Leach, development Introduction to Software Engineering Second Edition, 2016
ز
2016 ، الثان
اإلصدار ي، اليمجيات
مقدمة تطويرية لهندسة ر، رونالد جيه ليتش
Scrum works well for long-term, complex projects that require stakeholder feedback, which
may greatly affect project requirements. So, when the exact amount of work can’t be
estimated, and the release date is not fixed, Scrum may be the best choice.
ً
والت قد تؤثر
ي ، الت تتطلب مالحظات أصحاب المصلحة جيدا مع المرسوعات المعقدة طويلة األجل يScrum يعمل
، ولم يتم تحديد تاري خ اإلصدار، عندما ال يمكن تقدير حجم العمل الدقيق، لذلك.كبي عىل متطلبات المرسوع
بشكل ر
. هو الخيار األفضلScrum فقد يكون
5.4.2. Kanban كانبان
Kanban focuses on the visualization of the workflow and prioritizes the work in progress (WIP),
limiting its scope to match it effectively to the team’s capacity. As soon as a task is completed,
the team can take the next item from the pipeline. Thus, the development process offers more
flexibility in planning, faster turnaround, clear objectives, and transparency. By using Kanban,
teams can do small releases and adapt to changing priorities. Unlike Scrum, there are no
sprints with their predefined goals. Kanban is focused on doing small pieces of work as they
come up.
مما يحد من نطاقه لمطابقته بشكل فعال، )WIP( سي العمل ويحدد أولويات العمل الجاري عىل تصور رKanban يركز
توفر عملية، وبالتاىل
ي .التاىل من خط األنابيب
يأخذ العنرص ي يمكن للفريق أن، بمجرد اكتمال المهمة.مع قدرة الفريق
ً ا ز ً
.
يمكن للفرق، Kanban وشفافية باستخدام، وأهدافا واضحة، وتحويًل أشع، التطوير مزيدا من المرونة يف التخطيط
ال توجد سباقات شيعة بأهدافها المحددة، Scrum عىل عكس.المتغيةر صغية والتكيف مع األولويات
ر عمل إصدارات
ً
صغية من العمل عند ظهورها
ر عىل القيام بأجزاءKanban يركز.مسبقا