Sunday, May 18, 2025

Business Domain Testing

Overview of Software Testing: Introduction Testing, QC and QATesting and SDLC ModelsAgile TestingTesting ProcessesTest Levels - Test TypesTest Documents - Test Metrics

Business Domain testing Skills: Software Testing Lifecycle (STLC)Quality Characteristics for Business domain TestingFunctional TestingMobile Application TestingUsability Testing - RolesResponsibilitiesTools

Introduction

o   Software testing is a set of activities to discover defects and evaluate the quality of software artifacts.

o   Testing involves verification, i.e., checking whether the system meets specified requirements, it also involves validation, which means checking whether the system meets users’ and other stakeholders’ needs in its operational environment.


o   Testing may be dynamic or static. Dynamic testing involves the execution of software, while static testing includes reviews and static analysis.

o   Testing needs to be properly planned, managed, estimated, monitored and controlled

o   Objectives of testing can vary, depending upon the context, which includes the work product being tested, the test level, risks, the software development lifecycle (SDLC) being followed, and factors related to the business context

Testing, QC and QA

o   Testing is a major form of quality control (QC), while others include formal methods (model checking and proof of correctness), simulation and prototyping.

o   QC is a product-oriented, corrective approach that focuses on those activities supporting the achievement of appropriate levels of quality

o   Quality Assurance (QA) is a process-oriented, preventive approach that focuses on the implementation and improvement of processes. It works on the basis that if a good process is followed correctly, then it will generate a good product.

o   Test results are used by QA and QC. In QC they are used to fix defects, while in QA they provide feedback on how well the development and test processes are performing.



Testing and SDLC Models

o   Software Development Lifecycle (SDLC) include sequential development models (e.g., waterfall model, V-model), iterative development models (e.g., spiral model, prototyping), and incremental development models (e.g., Unified Process).

o   Some activities within software development processes can also be described by more detailed software development methods and Agile practices.


Agile Testing

o   One of the main differences between traditional lifecycles and Agile lifecycles is the idea of very short iterations, each iteration resulting in working software that delivers features of value to business stakeholders.


o   At the beginning of the project, there is a release planning period. This is followed by a sequence of iterations.

o   At the beginning of each iteration, there is an iteration planning period. Once the iteration scope is established, the selected user stories are developed, integrated with the system, and tested.

o   These iterations are highly dynamic, with development, integration, and testing activities taking place throughout each iteration, and with considerable parallelism and overlap. Testing activities occur throughout the iteration, not as a final activity.

o    Agile approaches and aspects include Whole-Team Approach, Early and Frequent Feedback, Collaborative User Story Creation, Retrospectives, Continuous Integration, Release and Iteration Planning

o   Agile Testing Methods include test-driven development, acceptance test-driven development, and behavior-driven development 

o   Testing quadrants align the test levels with the appropriate test types in the Agile methodology

Testing Processes

o   Organizational Test Processes

§  Organizational Test Policy

§  Organizational Test Strategy

o   Test Management Processes

§  Test Planning

§  Risk Management

§  Test Monitoring and Control

§  Test Completion

o   Dynamic Testing Processes

§  Test Analysis

§  Test Design

§  Test Implementation

§  Test Execution

§  Test Completion and Reporting

Test Levels

o   Component testing: focuses on testing components in isolation.

o   Component integration testing focuses on testing the interfaces and interactions between components, dependent on the integration strategy approaches like bottom-up, top-down or big-bang.

o   System testing focuses on the overall behavior and capabilities of an entire system or product,

o   System integration testing (SIT) focuses on testing the interfaces of the system under test and other systems and external services

o   User Acceptance testing (UAT) focuses on validation and on demonstrating readiness for deployment, which means that the system fulfills the user’s business needs


Test Types

o   Functional testing: evaluates the functions that a component or system should perform.

o   Non-functional testing: evaluates attributes other than functional characteristics of a component or system, non-functional software quality characteristics include Performance, Compatibility, Usability, Reliability, Security, Maintainability and Portability

o   Black-box testing: specification-based and derives tests from documentation external to the test object.

o   White-box testing: structure-based and derives tests from the system's implementation or internal structure (e.g., code, architecture, workflows, and data flows)

o   Confirmation Testing or Retesting (it confirms that an original defect has been successfully fixed) and Regression Testing (confirms that no adverse consequences have been caused by a change)

Test Documents

o   Test Policy

o   Test Strategy

o   Master test plan

o   Test plan

o   Traceability Matrix

o   High level scenarios (HLS)

o   Test cases (TC)

o   Test data requirements

o   Test Execution Log

o   Test Status report (Progress report)

o   Test Completion report (Summary report)

o   Defect report

Test Metrics

o   Project progress metrics (e.g., task completion, resource usage, test effort)

o   Test progress metrics (e.g., test case implementation progress, test environment preparation progress, number of test cases run/not run, passed/failed, test execution time)

o   Product quality metrics (e.g., availability, response time, mean time to failure)

o   Defect metrics (e.g., number and priorities of defects found/fixed, defect density, defect detection percentage)

o   Risk metrics (e.g., residual risk level)

o   Coverage metrics (e.g., requirements coverage, code coverage)

o   Cost metrics (e.g., cost of testing, organizational cost of quality)

Software Testing Lifecycle (STLC)

o   STLC consists of key activities to ensure that all software quality goals are met:

§  Requirements Analysis

§  Test Planning

§  Test Case Design

§  Test Environment Setup

§  Test Execution

§  Test Closure

Quality Characteristics for Business domain Testing

o   Functional Suitability

§  Functional Correctness: involves verifying the application's adherence to the specified or implied requirements and may also include computational accuracy

§  Functional Appropriateness: involves evaluating and validating the appropriateness of a set of functions for its intended specified tasks

§  Functional Completeness: performed to determine the coverage of specified tasks and user objectives by the implemented functionality. Traceability between specification items (e.g., requirements, user stories, use cases) and the implemented functionality (e.g., function, component, workflow) is essential to enable required functional completeness to be determined.

o   Usability

§  Appropriateness recognizability: verify the users can recognize whether a product or system is appropriate for their needs.

§  Learnability: Verifying the product or system enables the user to learn how to use it with effectiveness and efficiency in emergency situations.

§  Operability: Verifying the product or system is easy to operate, control and appropriate to use.

§  User error protection: Verifying the product or system protects users against making errors.

§  User interface aesthetics: Verifying the user interface enables pleasing and satisfying interaction for the user.

§  Accessibility: Verifying the product or system can be used by people with the widest range of characteristics and capabilities to achieve a specified goal in a specified context of use.

o   Portability

§  Installability: Verifying the product or system can effectively and efficiently be adapted for different or evolving hardware, software or other operational or usage environments.

§  Adaptability: Verifying effectiveness and efficiency in which a product or system can be successfully installed and/or uninstalled in a specified environment.

§  Replaceability: Verifying the product can replace another specified software product for the same purpose in the same environment.

o   Compatibility

§  Interoperability: verifies the exchange of information between two or more systems or components. Tests focus on the ability to exchange information and subsequently use the information that has been exchanged.

Functional Testing

o   Functional Testing evaluates the functions that a component or system should perform. The functions are “what” the test object should do. The main objective of functional testing is checking the functional completeness, functional correctness and functional appropriateness.

o   Test analysis and design techniques including Coverage-Based test Techniques and Experience-based Test Techniques

o   Coverage-Based test Techniques such as Equivalence Partitioning (EP), Boundary Value Analysis (BVA), Decision Table Testing, State Transition Testing, Use Case Testing, Data Cycle Testing (CRUD) testing and others.

§  EP Technique divides data into partitions based on the expectation that all the elements of a given partition are to be processed in the same way by the test object.

§  If a test case, that tests one value from an equivalent partition, detects a defect, this defect should also be detected by test cases that test any other value from the same partition. Therefore, one test for each partition is sufficient.

§  BVA is a technique based on exercising the boundaries of equivalence partitions

§  The minimum and maximum values of a partition are its boundary values

§  In the case of BVA, if two elements belong to the same partition, all elements between them must also belong to that partition.

§  In 2-Value BVA, for each boundary value there are two coverage items: this boundary value and its closest neighbor belonging to the adjacent partition. To achieve 100% coverage with 2-value BVA, test cases must exercise all coverage items, i.e., all identified boundary values.

§  In 3-Value BVA, for each boundary value there are three coverage items: this boundary value and both its neighbors. Therefore, in 3-value BVA some of the coverage items may not be boundary values. To achieve 100% coverage with 3-value BVA, test cases must exercise all coverage items, i.e., identified boundary values and their neighbors 

§  EP-with-three-value-BVA Example:

§  Decision Table are used for testing the implementation of system requirements that specify how different combinations of conditions result in different outcomes.

§  A state transition diagram shows the possible software states, as well as how the software enters, exits, and transitions between states.

§  A transition is initiated by an event (e.g., user input of a value into a field). The event results in a transition. The same event can result in two or more different transitions from the same state. The state change may result in the software taking an action (e.g., outputting a calculation or error message).

§  A state transition table shows all valid transitions and potentially invalid transitions between states, as well as the events, and resulting actions for valid transitions. State transition diagrams normally show only the valid transitions and exclude the invalid transitions

§  Tests can be derived from use cases, which are a specific way of designing interactions with software items. They incorporate requirements for the software functions. Use cases are associated with actors (human users, external hardware, or other components or systems) and subjects (the component or system to which the use case is applied).

§  The data cycle test or CRUD test (CREATE-READ-UPDATE-DELETE) is a technique for testing whether the data are being used and processed consistently by various functions from within different subsystems or even different systems. The technique is ideally suited to the testing of overall functionality, suitability and connectivity.

§  CRUD testing focuses on the coupling between different functions and how they handle common data.

§  An example of Data Cycle: a subsystem that invoices orders and processes payments. The relevant part of the CRUD matrix is in the table below.

o   Experience-based Test Techniques

§  Error Guessing

§  Exploratory testing

§  Checklist-based testing

Mobile Application Testing

o   Mobile Application Testing including Testing for Compatibility with Device Hardware, App Interactions with Device Software, Various Connectivity Methods

o   Testing for Compatibility with Device Hardware

§  Testing for Device Features

§  Testing for Different Displays

§  Testing for Device Temperature

§  Testing for Device Input Sensors

§  Testing Various Input Methods

§  Testing for Screen Orientation Change

§  Testing for Typical Interrupts

§  Testing for Access Permissions to Device Features

§  Testing for Power Consumption and State

o   Testing for App Interactions with Device Software

§  Testing for Notifications

§  Testing for Quick-access Links

§  Testing for User Preferences Provided by the Operating System

§  Testing for Different Types of Apps

§  Testing for Interoperability with Multiple Platforms and Operating System Versions

§  Testing for Interoperability and Co-existence with other Apps on the Device

o   Testing for Various Connectivity Methods

§  Testing for cellular networks such as 2G, 3G, 4G and 5G

§  Testing for wireless connection types such as NFC or Bluetooth.

Usability Testing

o   Usability testing includes Testing User Interface (UI), User Experience (UX) and Accessibility of software products

§  Usability is the extent to which a software product can be used by specified users to achieve specified goals with effectiveness, efficiency and satisfaction in a specified context of use

§  The User interface (UI) consists of all components of a software product that provide information and controls for the user to accomplish specific tasks with the system.

§  User experience (UX) describes a person’s perceptions and responses that result from the use and/or anticipated use of a product, system or service.

§  Accessibility is the degree to which a product or system can be used by people with the widest range of characteristics and capabilities to achieve a specified goal in a specified context of use

o   A usability test has the following three principal steps and associated tasks

§  Prepare usability test

·       Create usability test plan

·       Recruit usability test participants

·       Write usability test script(s)

·       Define usability test tasks

·       Pilot usability test session

§  Conduct usability test sessions

·       Prepare session

·       Perform briefing with pre-session instructions

·       Conduct pre-session interview

·       Moderate session

·       Conduct post-session interview

§  Communicate results and findings

·       Analyze findings

·       Write usability test report

·       Sell findings (i.e., convince people)

o   Human-centered design

§  An approach to design that aims to make software products more usable by focusing on the use of software products and applying human factors, ergonomics, and usability knowledge and techniques.

§  The human-centered design process can be summarized as follows: Analyze, Design, Evaluate, Iterate

§  The human-centered design activities are based on the following three key elements: Users, Evaluation, Iterations

Roles

o   Test management role

§  Takes overall responsibility for managing test activities, managing the product, and managing the team

§  Managing Test Activities

·        Test process: mainly focused on the activities of test planning, test monitoring and control and test completion

·        Risk based testing: Risk identification, assessment, monitoring and mitigation of risks to drive testing

·        Project test strategy

·        Improving the test process

§  Managing the product

·        Test estimation: Effort, time and Cost

·        Test metrics

·        Defect management

§  Managing the team

·        Test Team

·        Stakeholder relationships

o   Testing role

§  Takes overall responsibility for the engineering aspect of testing.

§  Mainly focused on the activities of test analysis, test design, test implementation and test execution.

§  Contribute to risk-based testing (risks related to business domain)

Responsibilities

o   Define test strategy consistently with the organizational test strategy and project context

o   Reviewing and analyzing system specifications to ensure clarity and understanding of requirements.

o   Creating detailed, comprehensive, and well-structured test plans.

o   Recognize and classify the risks associated with the functional correctness and Usability of software systems

o   Coordinate the test plans with project managers, product owners, Development team and other stakeholders

o   Perform the appropriate testing processes and activities based on the software development life cycle

o   Designing test scenarios and test cases based on specifications and requirements.

o   Executing test cases and analyzing results to report any defects or issues.

o   Conducting Functional testing and Usability testing to ensure software quality

o   Tracking defects or inconsistencies in the product's functionality and user interface

o   Collaborating with cross-functional teams to ensure quality throughout the software development lifecycle.

o   Collaborate with a cross-functional Agile team and apply practices of Agile software development

o   Continuously monitor and control testing to achieve project goals

o   Introducing metrics for measuring test progress and evaluating the quality of the testing and product

o   Prepare and deliver test progress reports, test summary and Test Completion reports

o   Participating in continuous improvement initiatives to enhance the efficiency and effectiveness of the testing process.

Tools

o   Tools Categories:

§  Application lifecycle management (ALM) and Test Management tools

§  Requirements management tools

§  Static testing tools

§  Test design and implementation tools

§  Test execution and coverage tools

§  Defect Tracking and Issue Management tools

§  Mobile Application testing tools.

o   Examples of Tools: Jira, Zephyr, Bugzilla, MantisBT, TestRail, qTest, Redmine, HP Quality Center, TestLink, Azure DevOps, Azure Test Plan and so on


References

ISTQB-CTFL Foundation Level 
https://www.istqb.org/certifications/certified-tester-foundation-level-ctfl-v4-0/
ISTQB-CTFL-AT Agile Tester
https://www.istqb.org/certifications/certified-tester-foundation-level-agile-tester-ctfl-at/
ISTQB-CTAL-TA Test Analyst
https://www.istqb.org/certifications/certified-tester-advanced-level-test-analyst/
ISTQB-CT-UT Usability Testing
https://www.istqb.org/certifications/certified-tester-usability-testing-ct-ut/
ISTQB-CTAL-TM Test Management
https://www.istqb.org/certifications/certified-tester-advanced-level-test-management-ctal-tm-v3-0/
GAQM-CSTE Software Test Engineer
https://gaqm.org/certifications/software_testing/cste
ASQ-CSQE Software Quality Engineer
https://www.asq.org/cert/software-quality-engineer
ISO/IEC 25010 Product Quality Model
https://www.iso.org/standard/78176.html
Test Design Techniques
https://www.tmap.net/building-blocks/test-design-techniques

Saturday, May 10, 2025

تاريخ الكمبيوتر الجزء الاول - History of Computer Part 1

(1) العد بالاصابع والحجارة ( الانسان البدائي)

اعتمد الإنسان البدائي على العد على أصابع يديه وقدميه (وهو الأساس لنظام العد الأساسي 10). 

كما استخدم العصي والحجارة كعلامات. وفي وقت لاحق، تم استخدام العصي المحززة والحبال المعقودة للعد. 

وأخيرًا، ظهرت الرموز المكتوبة على الجلود والرق والورق.

(2) العداد - The abacus (العصور القديمة)

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



(3) الآلات الحاسبة التناظرية: Analog Calculator (القرن السابع عشر)
 
قضبان نابير Napier’s Bones : نقش القياسات اللوغاريتمية على مجموعة من 10 قضبان خشبية وبالتالي إجراء عمليات الضرب والقسمة عن طريق مطابقة الأرقام الموجودة على القضبان.، اخترعه العالم جون نابير في القرن السابع عشر مستفيدا من افكار العالم محمد بن موسي الخوارزمي حول اللوغاريتمات.


المسطرة الحاسبة Slide Rule : هي آلة حاسبة تماثلية تتكون من مسطرتين، أو أكثر، مدرجتين، تنزلقان على نفس المستوى، وتسمح بالقيام بعمليات حسابية متعددة مثل الضرب والقسمة وحساب الجذور وحساب المثلثات واللوغريتمات ، اخترع المسطرة الحاسبة الرياضي الإنجليزي ويليام أوتريد، في القرن السابع عشر مستفيدا من افكار نابير
(4) الآلات الحاسبة الرقمية : Digital Calculator (من القرن السابع عشر الي التاسع عشر)

الساعة الحسابية Calculating Clock : جهاز يعمل علي جمع وطرح أرقام مكونة من ستة أرقام (مع جرس للأرقام الزائدة السبعة) عبر ستة تروس متشابكة، يدور كل منها عُشر دورة مع كل دورة كاملة للترس إلى يمينه. وهكذا، فإن 10 دورات لأي ترس ستؤدي إلى "حمل" رقم واحد على الترس التالي، وتغيير العرض المقابل. صنعها عالم الفلك والرياضيات الألماني فيلهلم شيكارد عام 1623 م.


باسكالين Pascaline : آلة ميكانيكية تجري العمليات الحسابية تألفت من سلسلة من التروس، كل منها بعشرة أسنان، تُمثل الأرقام من 0 إلى 9. مع دوران كل ترس، كان يُحرك الترس التالي لأعلى ليُكمل عُشر دورة. ظل هذا المبدأ أساسًا لجميع آلات الجمع الميكانيكية لقرون ، اخترعها بليز باسكال عام 1642 م وقد سُميت لغة برمجة باسكال تكريمًا له.
 
آلة لايبنتز الحسابية Step Reckoner : جهاز حساب ميكانيكي صمم لإجراء عمليات حسابية مثل الجمع والطرح والضرب والقسمة استندت الي آلية تروس تسمي عجلة لايبنتز، صممها عالم الرياضيات الالماني لايبنتز عام 1671 م 




جهاز Arithmometer : جهاز حسابي تجاري. كان بإمكانه إجراء عمليات الجمع والطرح والضرب والقسمة،بطريقة أكثر دقة من الاجهزة المستخدمة من قبل ، اخترعها الفرنسي توماس دي كومار عام 1820 


 

(5) المناسج الميكانيكية (القرن الثامن عشر ، القرن التاسع عشر)

منسج جاكارد Jacquard loom : منسج ميكانيكي اعتمد علي مبدأ البطاقات المثقبة، اخترعه جوزيف جاكار عام 1804م ، تطلّب الأمر من المخترع جوزيف جاكار أن يجمع بين فكرة بوشون للأسطوانة المثقوبة المتصلة The Bouchon Loom، وأفكار فالكون للبطاقات المثقوبة المتينة Falçon Loom لإنتاج منسج عملي وقابل للبرمجة، استُخدمت هذه الطريقة في إصدار تعليمات الآلة تلقائيًا بواسطة أجهزة الكمبيوتر فيما بعد.


(6) الحاسوب الميكانيكي mechanical computer (القرن التاسع عشر)

محرك الفروقات Difference Engine : جهاز يمكنه عمل سلسلة كاملة من العمليات الحسابية على عدد من المتغيرات لحل مسألة معقدة، يعمل على أرقام منفصلة بدلًا من الكميات المنتظمة، وكانت الأرقام عشرية (0-9)، ممثلة بمواضع على عجلات مسننة، بدلًا من الأرقام الثنائية التي فضلها لايبنيز (ولكنه لم يستخدمها). عندما تدور إحدى العجلات المسننة من 9 إلى 0، تدفع العجلة التالية إلى التقدم خطوة واحدة، حاملةً الرقم تمامًا كما كانت تعمل حاسبة لايبنيز.كان محرك الفروقات مزودًا بمساحة تخزين - أي مكان يمكن فيه حفظ البيانات مؤقتًا لمعالجتها لاحقًا - وصُمم لطباعة مخرجاته على معدن لين ، صمم خططه تشارلز باباج حوالي عام 1822م




المحرك التحليلي Analytical Engine : حاسوب رقمي ميكانيكي يُدار يدويًا، استبق تقريبًا جميع جوانب الحواسيب الحالية ، اقترح تشارلز باباج بناء آلة أطلق عليها اسم "المحرك التحليلي". كان من المفترض أن تحتوي على مدخلات بطاقات مثقبة ( القارئ reader)، ووحدة ذاكرة (تُسمى المخزن store)، ووحدة حسابية (تُسمى الطاحونة mill)، وطباعة آلية (الطابعة printer)، وتحكم برمجي متسلسل، ودقة عشرية تصل إلى 20 خانة. في الواقع، كان قد وضع خطةً لحاسوب يسبق عصره بمئة عام.

الطاحونة هي وحدة الحساب، على غرار وحدة المعالجة المركزية (CPU) في الحاسوب الحديث؛
والمخزن هو مكان حفظ البيانات قبل معالجتها، على غرار الذاكرة والتخزين في حواسيب اليوم؛
والقارئ والطابعة هما جهازا الإدخال والإخراج.

بين عامي ١٨٤٢ و١٨٤٣، ترجمت آدا لوفليس Ada Augusta مذكرات عالم الرياضيات الإيطالي لويجي مينابريا حول "المحرك التحليلي" لتشارلز باباج. وألحقت بترجمتها مجموعة من الملاحظات التي حددت بالتفصيل طريقة حساب أعداد برنولي باستخدام المحرك. ويُقرّ المؤرخون الآن بأن هذا أول برنامج حاسوب في العالم، ويُكرّموها كأول مبرمجة. سميت لغة برمجة Ada باسمها


(7) آلة جدولة التعداد السكاني Herman Hollerith’s census tabulator machine (القرن التاسع عشر)

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

وباستخدام آلة هوليريث، تم الانتهاء من جدولة التعداد السكاني الامريكي عام 1890 في 1/8 من الوقت. وتحققوا من العدد مرتين

في نفس الوقت استمرت التحسينات في الآلات الحاسبة: فبحلول ثمانينيات القرن التاسع عشر، أصبح بإمكانها إضافة النتائج الجزئية المتراكمة، وتخزين النتائج السابقة، وطباعتها. ثم في عام 1892 حصل الامريكي ويليام بوروز، الذي أسس شركة "American Arithmometer" بهدف تصنيع آلات الجمع Adding machine ، على براءة اختراع لإحدى أوائل الآلات الحاسبة العملية والناجحة تجاريًا

بعد التعداد السكاني، تحول هوليريث إلى استخدام آلاته للجدولة في أعماله، وفي عام 1896 أسس شركة آلات الجدولة التي اندمجت لاحقًا مع شركات أخرى لتُصبح شركة آلات الاعمال الدولية IBM

(8) الحاسبات التناظرية والرقمية الكهروميكانيكية Electromechanical analogue and digital computer (القرن 20)

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

المحلل التفاضلي Differential Analyzer : آلة حاسبة تناظرية تُستخدم لحل فئات معينة من المعادلات التفاضلية، كانت المتغيرات تُمثَّل بحركة عمود الدوران، وكانت عمليات الجمع والضرب تُنفَّذ بإدخال القيم في مجموعة من التروس. أما التكامل فكان يُنفَّذ بواسطة عجلة حادة تدور بنصف قطر متغير على طاولة دائرية. ثم تُربط المُكاملات الميكانيكية الفردية مع بعضها البعض لحل مجموعة من المعادلات التفاضلية، طوره فانيفار بوش في معهد ماساتشوستس للتكنولوجيا (MIT) في عام 1930 

حاسوب أتاناسوف-بيري Atanasoff Berry Computer (ABC) : استخدم هذا الحاسوب دائرة كهربائية مكونة من 45 صمامًا مفرغًا لإجراء الحسابات، ومكثفات للتخزين. وكان أيضًا أول حاسوب يستخدم النظام الثنائي، بُني في جامعة ولاية آيوا على يد البروفيسور جون أتاناسوف وطالب الدراسات العليا كليفورد بيري خلال الفترة من 1939 الي 1942


حاسوب زد 3 Z3 Computer : صممه الالماني كونراد زوسي عام ١٩٣٨، واكتمل بناؤه عام ١٩٤١. وكان أول حاسوب رقمي آلي بالكامل وقابل للبرمجة في العالم

حاسوب كولوسس Colossus : كان مجموعة من الحواسيب تم تطويرها من قبل مجموعة من محللي الشفرات البريطانيين في الفترة ما بين 1943 و1945 من القرن العشرين، للمساعدة في تحليل الرموز السرية لآلة التشفير الألمانية لورينز. استخدم كولوسس صمامات ثيرميونية (الأنابيب المفرغة) لأداء العمليات البوليانية الجبرية والعمليات الحسابية.


اجهزة هارفارد مارك Harvard Mark I to the Harvard Mark IV : بينما كان بوش يعمل على الحوسبة التناظرية في معهد ماساتشوستس للتكنولوجيا، كان هوارد أيكن، أستاذ جامعة هارفارد في الجهة المقابلة من المدينة، يعمل على الأجهزة الرقمية للحساب، بدأ أيكن يدرك في مجال الأجهزة شيئًا يشبه محرك باباج التحليلي، الذي قرأ عنه. ابتداءً من عام ١٩٣٧، وضع خططًا مفصلة لسلسلة من أربع آلات حاسبة متطورة، تعتمد على تقنيات مختلفة، من مارك ١ الميكانيكية إلى مارك ٤ الإلكترونية. mechanical Mark I to the electronic Mark IV.


آلة تورينغ The Turing machine : وضّح تورينج، بتفصيل كبير، المفاهيم الأساسية لآلة حوسبة عالمية، أي آلة قادرة، نظريًا على الأقل، على القيام بأي شيء يمكن لجهاز حوسبة خاص القيام به. وعلى وجه الخصوص، لن تقتصر على إجراء العمليات الحسابية. فالحالات الداخلية للآلة يمكن أن تمثل أرقامًا، ولكنها يمكن أن تمثل أيضًا قيمًا منطقية أو حروفًا. في الواقع، اعتقد تورينج أن كل شيء يمكن تمثيله رمزيًا، هذا النموذج يعطي تعريفا رياضيا دقيقا للمصطلح خوارزم Algorithm

مصادر: 




Tuesday, May 6, 2025

Software Engineering: Software Construction Topics

- Software Construction

**Software Construction Fundamentals

**Managing Construction

**Construction Design

**Construction Languages

**Construction Coding

**Construction Testing

**Reuse in Construction

**Construction Quality

**Integration

**Cross-Platform Development and Migration