الوحدة الأولى: الأساسيات - تطوير النظم
مقدمة شاملة لتحليل وتصميم النظم، دورة حياة تطوير النظم (SDLC)، المنهجيات الرشيقة (Agile)، مصادر البرمجيات، وإعادة استخدام البرمجيات.
Module 1: Foundations: Systems Development
A comprehensive introduction to system analysis and design, the Systems Development Life Cycle (SDLC), Agile methodologies, sources of software, and software reuse.
أهداف التعلم
- تعريف تحليل وتصميم نظم المعلومات.
- وصف منهجيات تطوير النظم المختلفة.
- شرح المصادر المختلفة للحصول على البرمجيات.
- Define information systems analysis and design.
- Describe system development methodologies.
- Explain different sources of software.
1 تحليل وتصميم النظم ومحلل النظم
1 System Analysis and Design & The System Analyst
عملية تنظيمية معقدة لتطوير وصيانة النظم، يقودها محلل النظم الذي يعمل كوكيل للتغيير والابتكار.
A complex organizational process to develop and maintain systems, led by a System Analyst who acts as an agent of change and innovation.
تحليل وتصميم نظم المعلومات هو العملية التنظيمية المعقدة التي يتم من خلالها تطوير وصيانة نظم المعلومات القائمة على الحاسوب.
ينتج عن هذه العملية 'برمجيات التطبيقات' (Application Software) المصممة لدعم الوظائف التنظيمية.
الدور الأساسي في هذه العملية يقع على عاتق محلل النظم (System Analyst)، وهو الشخص المسؤول عن دراسة مشاكل واحتياجات المؤسسة لتحديد كيف يمكن دمج الأشخاص والأساليب وتكنولوجيا المعلومات لإحداث تحسينات.
يُعتبر محلل النظم وكيلًا للتغيير والابتكار.
Information Systems Analysis and Design is the complex organizational process whereby computer-based information systems are developed and maintained.
An important result of this is Application Software, designed to support organizational functions.
The primary role is held by the System Analyst, who studies the problems and needs of an organization to determine how people, methods, and IT can best be combined to bring about improvements.
The analyst is an agent of change and innovation.
لا يقتصر دور محلل النظم على البرمجة، بل يمتد لفهم الأعمال بعمق.
يجب أن يمتلك مهارات تواصل عالية لمساعدة المستخدمين والمديرين في تحديد متطلباتهم بدقة، مما يجعله الجسر الرابط بين احتياجات العمل والحلول التقنية.
The system analyst's role goes beyond programming; it requires a deep understanding of the business.
They must possess strong communication skills to help users and managers define their requirements accurately, acting as the bridge between business needs and technical solutions.
لماذا يُوصف محلل النظم بأنه 'وكيل للتغيير' وليس مجرد مبرمج؟ Why is a system analyst described as an 'agent of change' rather than just a programmer?
لأن دوره يتجاوز كتابة الأكواد إلى دراسة مشاكل المؤسسة واقتراح طرق جديدة لدمج التكنولوجيا مع الأفراد والعمليات لتحسين الأداء العام وإحداث تغيير إيجابي.
Because their role goes beyond writing code to studying organizational problems and proposing new ways to integrate technology, people, and processes to improve overall performance and drive positive change.
2 النهج التنظيمي لتطوير النظم
2 Organizational Approach to System Development
مثلث التطوير: المنهجيات (خطوات شاملة)، التقنيات (عمليات محددة)، والأدوات (برامج حاسوبية داعمة).
The development triangle: Methodologies (comprehensive steps), Techniques (specific processes), and Tools (supporting computer programs).
يُقاد النهج التنظيمي لتحليل وتصميم النظم بواسطة ثلاثة عناصر تعمل معًا:
- المنهجيات (Methodologies): نُهج شاملة متعددة الخطوات توجه العمل وتؤثر على جودة النظام النهائي. يعتمد اختيارها على أسلوب الإدارة.
- التقنيات (Techniques): عمليات محددة يتبعها المحلل لضمان اكتمال العمل وفهمه من قبل الفريق (مثل جمع المعلومات، وتصميم الواجهات).
- الأدوات (Tools): برامج حاسوبية نموذجية تسهل استخدام التقنيات واتباع المنهجية.
An organizational approach to systems analysis and design is driven by three elements working together:
- Methodologies: Comprehensive, multiple-step approaches that guide work and influence final product quality. Choice depends on management style.
- Techniques: Particular processes followed to ensure work is complete and comprehensible (e.g., gathering info, designing interfaces).
- Tools: Typical computer programs that make it easy to use techniques and follow the methodology.
هذا الثالوث يضمن عدم الاعتماد على العشوائية.
المنهجية توفر الإطار العام، التقنيات توفر 'كيفية' التنفيذ التفصيلية، والأدوات تسرّع وتؤتمت هذه التقنيات (مثل أدوات CASE).
This triad ensures development isn't random.
The methodology provides the framework, techniques provide the detailed 'how-to', and tools accelerate and automate these techniques (like CASE tools).
ماذا يحدث إذا استخدمت مؤسسة أدوات متقدمة بدون منهجية واضحة؟ What happens if an organization uses advanced tools without a clear methodology?
ستفتقر العملية إلى التوجيه والتوحيد القياسي، مما يؤدي إلى فوضى في التطوير، وعدم توافق بين الفرق، وفشل محتمل في تلبية متطلبات العمل رغم جودة الأدوات.
The process will lack direction and standardization, leading to development chaos, misalignment among teams, and potential failure to meet business requirements despite having good tools.
3 دورة حياة تطوير النظم (SDLC)
3 Systems Development Life Cycle (SDLC)
المنهجية التقليدية المكونة من 5 مراحل: التخطيط، التحليل، التصميم، التنفيذ، والصيانة.
The traditional methodology consisting of 5 phases: Planning, Analysis, Design, Implementation, and Maintenance.
دورة حياة تطوير النظم (SDLC) هي المنهجية التقليدية المستخدمة لتطوير وصيانة النظم. تتكون من خمس مراحل:
- التخطيط (Planning): تحديد وتحليل وترتيب أولويات احتياجات النظام.
- التحليل (Analysis): دراسة وهيكلة المتطلبات (تحديد المتطلبات وتحليلها).
- التصميم (Design): تحويل الحل الموصى به إلى مواصفات منطقية (مستقلة عن المنصة) ومادية (محددة التكنولوجيا).
- التنفيذ (Implementation): البرمجة (Coding)، الاختبار (Testing)، التثبيت (Installation)، والدعم (Support).
- الصيانة (Maintenance): إصلاح وتحسين النظام بشكل منهجي بناءً على طلبات المستخدمين وتغير ظروف العمل.
The Systems Development Life Cycle (SDLC) is the traditional methodology used to develop, maintain, and replace information systems. It has 5 phases:
- Planning: Identifying, analyzing, prioritizing, and arranging system needs.
- Analysis: Studying and structuring system requirements (Requirements determination & analysis).
- Design: Converting the recommended solution into logical (platform-independent) and physical (technology-specific) specifications.
- Implementation: Coding, testing, installation, and support.
- Maintenance: Systematically repairing and improving the system based on user requests and evolving conditions.
الصيانة ليست مرحلة منفصلة تماماً، بل هي تكرار لمراحل دورة الحياة الأخرى لدراسة وتنفيذ التغييرات المطلوبة.
النظرة التطورية لـ SDLC تعتبرها دورة حلزونية (Spiral) تتكرر فيها المراحل بمستويات مختلفة من التفصيل.
Maintenance is not a completely separate phase but a repetition of the other life-cycle phases required to study and implement needed changes.
The evolutionary view of SDLC considers it a spiral, constantly cycling through phases at different levels of detail.
لماذا يتم فصل التصميم المنطقي عن التصميم المادي؟ Why is logical design separated from physical design?
للسماح بالتركيز على 'ماذا' يجب أن يفعل النظام (متطلبات العمل) قبل التورط في 'كيف' سيتم بناؤه (القيود التكنولوجية)، مما يسهل تكييف النظام مع تقنيات مختلفة لاحقاً.
To allow focus on 'what' the system should do (business requirements) before getting bogged down in 'how' it will be built (technological constraints), making it easier to adapt the system to different technologies later.
4 المنهجيات الرشيقة (Agile) والبدائل
4 Agile Methodologies and Alternatives
نهج مرن يركز على الأفراد، البرمجيات العاملة، تعاون العملاء، والاستجابة للتغيير، كبديل لنموذج الشلال (Waterfall) الصارم.
A flexible approach focusing on individuals, working software, customer collaboration, and responding to change, as an alternative to the rigid Waterfall model.
نموذج الشلال (Waterfall) التقليدي يعاني من مشاكل مثل تقييد المستخدمين بمتطلبات مبكرة قد تتغير، وتحديد مواعيد نهائية صارمة.
كبديل، ظهرت المنهجيات الرشيقة (Agile) التي تعتمد على 12 مبدأ وتفضل: الأفراد والتفاعلات على العمليات والأدوات، البرمجيات العاملة على التوثيق الشامل، تعاون العملاء على التفاوض على العقود، والاستجابة للتغيير على اتباع خطة. من أمثلتها:
- البرمجة القصوى (eXtreme Programming - XP): دورات تطوير قصيرة، اختبارات آلية، فرق برمجة ثنائية (Two-person teams)، ودمج البرمجة والاختبار معاً.
- سكروم (Scrum): إطار عمل رشيق يعتمد على فترات قصيرة (Sprints) واجتماعات يومية.
The Traditional Waterfall SDLC has problems like locking users into early requirements and setting hard-and-fast dates.
As an alternative, Agile Methodologies emerged, based on 12 principles and valuing: Individuals and interactions over processes/tools, Working software over comprehensive documentation, Customer collaboration over contract negotiation, and Responding to change over following a plan. Examples include:
- eXtreme Programming (XP): Short cycles, automated tests, two-person programming teams, coding and testing operating together.
- Scrum: An agile framework utilizing Sprints, daily scrums, and product backlogs.
جوهر تطوير النظم الحديث (Heart of systems development) يدمج التحليل والتصميم والتنفيذ في عملية واحدة متكررة (تحليل-تصميم-برمجة-اختبار).
هذا الدمج هو السمة المميزة للممارسات الحالية في المنهجيات الرشيقة، مما يقلل من مخاطر الفشل في نهاية المشروع.
The 'Heart of systems development' combines analysis, design, and implementation into a single iterative process (analysis-design-code-test loop).
This combination is typical of current practices in agile methodologies, significantly reducing the risk of late-stage project failure.
| Agile Methods | Traditional Methods | |
|---|---|---|
| الحجم (Size)Size | مناسب للمنتجات والفرق الصغيرة.Well matched to small products and teams. | تطور للتعامل مع المنتجات والفرق الكبيرة.Evolved to handle large products and teams. |
| الديناميكية (Dynamism)Dynamism | ممتاز للبيئات شديدة الديناميكية.Excellent for highly dynamic environments. | ممتاز للبيئات المستقرة، مكلف في البيئات الديناميكية.Excellent for highly stable environments, expensive rework for dynamic. |
| الثقافة (Culture)Culture | يزدهر في ثقافة الحرية والتمكين (الازدهار في الفوضى).Thrives in a culture of freedom and empowerment (thriving on chaos). | يزدهر في ثقافة الأدوار والإجراءات الواضحة (الازدهار في النظام).Thrives in a culture with clear roles and procedures (thriving on order). |
لماذا تعتبر البرمجة الثنائية (Two-person teams) في XP مفيدة رغم أنها تبدو مكلفة (شخصان يكتبان كوداً واحداً)؟ Why is pair programming (Two-person teams) in XP considered beneficial even though it seems costly (two people writing one code)?
لأنها تحسن التواصل، وتقلل الأخطاء بشكل كبير (مراجعة الكود في الوقت الفعلي)، وتؤدي إلى كود عالي الجودة، مما يقلل تكاليف الصيانة وإصلاح الأخطاء لاحقاً.
Because it improves communication, drastically reduces errors (real-time code review), and results in high-quality code, which lowers future maintenance and debugging costs.
5 الاستحواذ على النظم والتعهيد
5 Systems Acquisition and Outsourcing
الشركات لم تعد تبني كل شيء من الصفر؛ التعهيد (Outsourcing) هو تسليم مسؤولية تطوير أو تشغيل النظم لشركة خارجية.
Companies no longer build everything from scratch; Outsourcing is turning over responsibility for system development/operations to an outside firm.
أقسام تكنولوجيا المعلومات الداخلية تقضي وقتاً أقل في تطوير النظم من الصفر، وتستثمر أكثر في البرمجيات الجاهزة، مفتوحة المصدر، والخدمات الخارجية.
التعهيد (Outsourcing) هو ممارسة تسليم مسؤولية بعض أو كل تطبيقات وعمليات نظم المعلومات لشركة خارجية. فوائد التعهيد تشمل:
- فعالية التكلفة.
- تحرير الموارد الداخلية.
- زيادة إمكانات الإيرادات للمؤسسة.
- تقليل وقت الوصول للسوق (Time to market).
- زيادة كفاءة العمليات.
- تعهيد الأنشطة غير الأساسية (Non-core activities).
Internal IT departments spend less time developing systems from scratch, investing more in packaged software, open-source, and outsourced services.
Outsourcing is the practice of turning over responsibility for some or all of an organization’s IS applications and operations to an outside firm. Benefits include:
- Cost-effectiveness.
- Freeing up internal resources.
- Increasing revenue potential.
- Reducing time to market.
- Increasing process efficiencies.
- Outsourcing non-core activities.
التعهيد يسمح للشركات بالتركيز على ميزتها التنافسية الأساسية.
ومع ذلك، يتطلب إدارة عقود صارمة لضمان جودة الخدمة وأمن البيانات.
Outsourcing allows companies to focus on their core competitive advantage.
However, it requires strict contract management to ensure service quality and data security.
متى يكون التعهيد قراراً سيئاً للمؤسسة؟ When is outsourcing a bad decision for an organization?
عندما يتم تعهيد 'الأنشطة الأساسية' (Core activities) التي تميز الشركة عن منافسيها، أو عندما يؤدي إلى فقدان السيطرة على البيانات الحساسة.
When 'core activities' that differentiate the company from competitors are outsourced, or when it leads to a loss of control over sensitive data.
6 مصادر البرمجيات التطبيقية
6 Sources of Application Software
ستة مصادر رئيسية: شركات خدمات الـ IT، البرمجيات الجاهزة، حلول المؤسسات (ERP)، الحوسبة السحابية، مفتوحة المصدر، والتطوير الداخلي.
Six major sources: IT Services Firms, Packaged Software, Enterprise Solutions (ERP), Cloud Computing, Open-Source, and In-House Development.
هناك 6 فئات رئيسية للحصول على البرمجيات:
- شركات خدمات تكنولوجيا المعلومات: تُستخدم عند الحاجة لنظام مخصص ولا توجد خبرة داخلية.
- منتجو البرمجيات الجاهزة (Packaged): برمجيات جاهزة للاستخدام (Off-the-shelf). غالباً تكون أنظمة تسليم مفتاح (Turnkey) لا يمكن تعديلها.
- حلول برمجيات المؤسسات (ERP): أنظمة متكاملة تعبر الحدود الوظيفية للمؤسسة.
- الحوسبة السحابية (Cloud Computing): توفير التطبيقات عبر الإنترنت (مثل Google Docs) دون الاستثمار في الأجهزة/البرمجيات (SaaS, PaaS, IaaS).
- البرمجيات مفتوحة المصدر (Open-Source): متاحة مجاناً مع الكود المصدري، يطورها مجتمع (مثل Linux, MySQL). تُجنى الأرباح من الصيانة أو النسخ المتقدمة.
- التطوير الداخلي (In-House): بناء النظام بواسطة موظفي المؤسسة إذا توفرت الخبرة الكافية.
There are 6 major categories for sourcing software:
- IT Services Firms: Used when custom support is needed and internal expertise is lacking.
- Packaged Software Producers: Off-the-shelf software. Often Turnkey systems (cannot be modified to meet specific needs).
- Enterprise Software Solutions (ERP): Complete systems that cross functional boundaries.
- Cloud Computing: Provision of applications over the Internet (e.g., Google Docs) without investing in hardware/software (SaaS, PaaS, IaaS).
- Open-Source Software: Freely available with source code, developed by a community (e.g., Linux, MySQL). Money is made via maintenance or premium versions.
- In-House Development: Built by the organization's own staff if sufficient expertise exists.
اختيار المصدر يعتمد على مدى تخصص المهمة.
المهام العامة (Generic) تناسبها البرمجيات الجاهزة أو السحابية، بينما المهام الفريدة تتطلب تطويراً داخلياً أو شركات خدمات.
Choosing a source depends on task specificity.
Generic tasks are suited for packaged or cloud software, while unique, competitive tasks require in-house development or IT service firms.
| IT Services Firms | Cloud Computing | |
|---|---|---|
| متى نلجأ إليها؟When to Go to This Type | عندما تتطلب المهمة دعماً مخصصاً ولا يمكن بناؤها داخلياً.When task requires custom support and system can't be built internally. | للوصول الفوري للتطبيقات؛ عندما تكون المهمة عامة.For instant access to an application; when supported task is generic. |
| متطلبات التوظيف الداخليInternal Staffing Requirements | قد يُطلب موظفون داخليون حسب التطبيق.Internal staff may be needed, depending on application. | قليل؛ يحرر الموظفين لأعمال IT أخرى.Few; frees up staff for other IT work. |
كيف تجني الشركات أرباحاً من البرمجيات مفتوحة المصدر إذا كانت مجانية؟ How do companies make money from open-source software if it is free?
من خلال تقديم خدمات الصيانة والدعم الفني، أو توفير نسخة أساسية مجانية وبيع نسخة متقدمة تحتوي على ميزات إضافية.
By providing maintenance and support services, or by offering a free basic version and selling a more fully-featured premium version.
7 إعادة استخدام البرمجيات
7 Software Reuse
استخدام موارد برمجية مكتوبة مسبقاً في تطبيقات جديدة لزيادة الإنتاجية وتقليل التكلفة والأخطاء.
Using previously written software resources in new applications to increase productivity and reduce costs and defects.
إعادة الاستخدام (Reuse) هي استخدام كائنات ومكونات برمجية سابقة في تطبيقات جديدة.
فوائدها: زيادة إنتاجية المبرمج، تقليل وقت التطوير، والحصول على برمجيات عالية الجودة بأخطاء أقل.
خطوات إعادة الاستخدام الثلاث:
- التجريد (Abstraction): تصميم قطعة برمجية قابلة لإعادة الاستخدام.
- التخزين (Storage): إتاحة الأصول للآخرين (تصنيفها وفهرستها بشكل صحيح، وهو تحدٍ كبير).
- إعادة السياق (Recontextualization): جعل الأصل مفهوماً للمطورين لاستخدامه في أنظمتهم.
Reuse is the use of previously written software resources in new applications.
Benefits: Increase programmer productivity, decrease development time, and result in higher-quality software with lower defect rates.
Three basic steps:
- Abstraction: Design of a reusable piece of software.
- Storage: Making assets available for others (correctly labeling and cataloging is challenging).
- Recontextualization: Making the reusable asset understandable to developers who want to use it.
التقنيات التمكينية الأساسية لإعادة الاستخدام هي التطوير الموجه للكائنات (Object-oriented) والتطوير القائم على المكونات (Component-based).
يعتمد نجاح إعادة الاستخدام على دعم الإدارة، العمليات التنظيمية السليمة، والقدرة على توزيع تكلفة المكونات على قاعدة كبيرة من المشاريع.
Primary enabling technologies are Object-oriented development and Component-based development.
Success depends on management support, sound organizational processes, and the ability to leverage the cost of components across a large project base.
| Ad hoc | Designed | |
|---|---|---|
| مستوى إعادة الاستخدامReuse Level | منعدم إلى منخفضNone to low | عاليHigh |
| التكلفةCost | منخفضةLow | عاليةHigh |
| السياسات والإجراءاتPolicies and Procedures | لا يوجدNone | إلزامية؛ سياسات مطبقة لقياس الفعالية، الكود مصمم لإعادة الاستخدام منذ البداية.Mandated; policies in place to measure effectiveness, code designed for reuse initially. |
لماذا يُعتبر 'التخزين' في إعادة الاستخدام مشكلة صعبة رغم بساطة الفكرة؟ Why is 'storage' in software reuse considered a challenging problem despite the simple concept?
لأن المشكلة ليست مجرد وضع الكود في مستودع، بل في كيفية تصنيفه وفهرسته وتسميته بشكل صحيح بحيث يسهل على المطورين الآخرين البحث عنه وإيجاده وفهم وظيفته.
Because the problem isn't just putting code in a repository; it's correctly labeling, cataloging, and indexing it so other developers can easily search, find, and understand its function.