الاثنين، ٢٠ أكتوبر ٢٠٠٨

يعنى إيه مبرمج ؟!!!!!!

بداية هذا المقال يعبر عن رأيى الشخصى المتواضع ..................................
المتعارف عليه إنى لو اتعلمت كام لغة برمجة أو لغة واحدة حتى أصبحت مبرمج !!!
طيب ... يعنى ايه برمجة !!
البرمجة هى وضع حل لمشكلة ما وترجمة ذلك الحل للحاسب الآلى لإتاحة إستخدامه العملى(طبعا أنا بتكلم عن برمجة الكمبيوتر)


واضح من التعريف أن هناك شيئيين (وضع حل)و (ترجمة ذلك الحل)

وضع الحل : وهذا يأتى عن طريق دراسة المشكلة من وجهة نظر المستخدمين ثم تصميم الحل المفترض لتلك المشكلة
ترجمة الحل : فى هذه المرحلة نقوم بأخذ التصميم المفترض لحل لمشكلة ثم ترجمته بلغة برمجه يفهمها الحاسب


يبقى لو انا بعرف لغة برمجة فقط يبقى إسمى مترجم للحاسب!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

من هنا لكى أصبح مبرمج يجب أن أهتم بكيفية تصميم ووضع الحل النموذجى لتلك المشكلة
ويهتم بذلك عدة علوم للحاسب الآلى مثل علم هندسة البرمجيات ولغة التصميم لموحدة UML و البرمجة الكائنية OOP

أرجو أن أكون استطعت إضاحة وجة نظرى فى ذلك لموضوع



وللحديث بقية إنشاء الله

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

هي فرع من فروع المعلوماتية تهدف إلى تطوير مجموعة أسس وقواعد تؤدي إلى تحسين طرق تصميم وتطوير البرمجيات على جميع المستويات؛ وذلك بطريقة تلبي احتياجات المستخدمين. 

هندسة البرمجيات لا تهتم بكتابة البرنامج نفسه أي بكتابة شفرته، بل تحاول تحسين عملية تطوير وصنع البرنامج ابتداء من المواصفات التي يضع المختص، وانتهاء عند مشكلة صيانة البرنامج أو توسيعه. وهي تقوم على دراسة احتياجات المستخدم وتصميم البرنامج المناسب لتلك الإحتياجات قبل كتابة شيفرته، والأخذ بعين الاعتبار العديد من الجوانب كالقدرة على تطوير البرنامج بسهولة لاحقا، أو السرعة، أو إمكانية إضافة ملحقات له بشكل مرن.

تاريخ هندسة البرمجيات
استخدمت هندسة البرمجيات كمفهوم نظري من حين لآخر في أواخر الخمسينات وبداية الستينات من القرن الماضي. أما الاستخدام الرسمي الأول لهذا المصطلح فكان في مؤتمر عقد من قبل اللجنة العلمية في منظمة حلف شمال الأطلسي 1968 حول البرمجيات، وقد أخذ هذا المصطلح بالانتشار منذ ذلك الحين ولاقى اهتماماً متزايداً في نواح مختلفة. 

عقد المؤتمر لمعالجة مايعرف "أزمة البرمجيات" والتي ظهرت بسبب استخدام الوسائل التقليدية في بناء البرمجيات، مما أدى إلى ظهور برمجيات تحتاج إلى وقت كبير لتطويرها، وكلفة مالية عالية أكثر مما هو مقدر لها، وكفاءة ضعيفة في إنجاز الوظائف المطلوبة.

مفهوم هندسة البرمجيات
البرمجية  شيء غير ملموس إلى حد ما بالمقارنة مع المنتجات الأخرى، وهي سلسلة من آلاف أو ملايين الأوامر التي تطلب من الحاسوب إجراء عمليات معينة مثل عرض المعلومات، أو إجراء الحسابات، أو تخزين البيانات. 
هذه البرمجيات هي بمثابة الروح من الجسد في النظام الحاسوبي وهي في توسع دائم وازدياد في التعقيد والمتطلبات والمهام التي تقوم بتنفيذها.

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

الفرق بين البرمجة وهندسة البرمجيات
البرمجة هي كتابة الكود، يعتبرها البعض أهم عملية في بناء البرامج. 
لا تهتم البرمجة بأمور كالجدوى من البرنامج، أو إمكانية قبول المستخدم له، أو حتى قابلية تطويره. 
في حين أن هندسة البرمجيات تعمل على بناء النظام البرمجي كمشروع متكامل، وتدرسه من كافة الجوانب: البناء البرمجي، الدعم الفني والصيانة، التسويق والمبيعات، التطوير والتدريب على استخدامه، وبذلك يمكنها بناء الأنظمة الكبيرة لاستخدامها نظام فريق العمل في حين أن البرمجة الفردية تعجز عن ذلك


وللحديث بقية إنشاء الله

الأربعاء، ١٥ أكتوبر ٢٠٠٨

What is Service-Oriented Architecture?


Service-Oriented Architecture (SOA) is a new way of thinking about enterprise IT Architecture. SOA is about associating business process with IT. SOA represents a natural evolution of proven software architectural principles or design patterns commonly implemented in object-oriented systems.

SOA defines a paradigm and an architecture in which a group of related software components with an autonomous nature and a high level abstraction that carry out a given business process function, and these components can communicate with each other within the same enterprise, and with other services exposed by other enterprises. SOA is not a replacement for component architecture; rather it neatly complements the component architecture. While component architectures enhance reusability at a finer grain level, SOA can enhance reusability at a coarser grained level. Therefore a given service might very well be developed using well-defined component frameworks such as EJB, CORBA or .NET Remoting.

Service-Oriented Architecture has regained significance at this time because of the emergence of new technologies that are based on open standards that allow disparate systems to communicate in a common fashion.

The principles of SOA require that the services should:

  • Have behavior that is clearly defined by a published interface contract.
  • Have network addressable interfaces or endpoints.
  • Be dynamically discoverable and usable.
  • Emphasize interoperability.

Services are offered at a business level of abstraction which renders the interface as a business interface i.e. a contract. The contract is a mechanism that allows systems to be formalized, that is a set of operations semantically in relationship behind an interface, communication policies, pre-conditions and post-conditions for the collaboration such as security context, transactional behavior, session management, etc, and invariants such as policies for interacting with. Dependencies between services are regarded by the pairing of preconditions and post-conditions, though very loose coupling should minimize these dependencies.

One success factor for SOA is providing well-defined contracts with which other systems or applications can interact and significantly decreases the dependency on coding by eliminating the need to know and write to APIs.

Legacy and new applications are "wrapped" using the contracts, and they become provider of some services. The process of wrapping the legacy application into a service abstracts the complexities of individual applications and allows for what is known as "loose coupling" of services.

A SOAP application called Business Process is an orchestration of services, that is to say, it's an interaction semantically related messages between services, which process, transform and routes them to achieve a business goal. There are languages to specify the former orchestrations, such as Business Process Execution Language (BPEL) and XLANG.

An enterprise approach for SOA will seek to restate all business processes as services that communicate with each other and potentially with services outside of the enterprise. An organization will already have a number of systems already in place to support the business. These legacy systems are often disconnected from each other, or if not, then they are often tightly coupled or require manual intervention when communicating with each other. Legacy systems can be brought into SOA by providing "service wrappers" that would wrap around the system exposing the application functionality as services while allowing the existing technology to be reused. Over time, applications can be replaced or re-architected without affecting the entire enterprise so a long as the interface provided by the service wrapper remains enforced.