Showing posts with label Software Engineering. Show all posts
Showing posts with label Software Engineering. Show all posts

Sunday, November 16, 2025

مراحل تخطيط وتنفيذ مشروع نظام برمجي من المراحل الاولية حتي التسليم النهائي

المرحلة الأولي: ما قبل التعاقد (Pre-Contract / Pre-Sales)

هذه المرحلة تتضمن فهم متطلبات العميل أو تقديم عرض تنافسي للمناقصة المعروضة من قبل العميل

·       الدراسة الأولية للمتطلبات أو دراسة وثائق المناقصة (RFP/RFQ Initial Review)

·       اعداد العرض الفني والمالي (Technical and Financial Proposal)

·       المفاوضة والتعاقد (Negotiation and contracting)

المرحلة الثانية: التخطيط والتحليل (Planning and Analysis)

تبدأ هذه المرحلة بعد توقيع العقد، وتهدف إلى توثيق المتطلبات التفصيلية ووضع خريطة طريق مفصلة.

·       جمع وتوثيق المتطلبات التفصيلية (Requirements Gathering)

·       تحليل المتطلبات التفصيلية (Requirements Analysis)

·       مراجعة واعتماد المتطلبات (Requirements Review/Approval)

·       تخطيط المشروع التفصيلي (Detailed Project Plan)

المرحلة الثالثة: التصميم (Design)

هذه المرحلة تحول المتطلبات إلى تصميم يمكن تنفيذه

·       تصميم معمارية النظام (System Architecture)

·       تصميم قاعدة البيانات (Database Design/ Schema)

·       تصميم واجهات وتجربة المستخدم (UI/UX Design)

·       مراجعة واعتماد التصميم (Design Review/Approval)

المرحلة الرابعة: البناء والتطوير (Construction and Development)

هنا يتم بناء النظام البرمجي فعليًا، وهي غالبًا ما تكون المرحلة الأطول

·       اعداد بيئة ونموذج التطوير (SDLC Model/Environment)

·       كتابة ومراجعة الكود (Coding/ Code Review)

·       اختبار الوحدة (Unit Testing)

·       اختبار تكامل الوحدات (Components Integration Testing)

·       إدارة طلبات التغيير (Change Requests)

·       التكامل المستمر (Continuous Integration)

المرحلة الخامسة: الاختبار والجودة (Testing and Quality)

في هذه المرحلة يتم التركيز على اختبار جودة المنتج الموجه للعميل

·       اعداد بيئات الاختبار (Testing/Staging/Pre-production Environments)

·       اختبار النظام (System testing)

·       اختبار تكامل النظام (System Integration Testing SIT)

·       اختبار قبول المستخدم (User Acceptance Testing UAT)

·       الدمج المستمر في بيئات الاختبار (Continuous Deployment in Testing/ Staging)

·       التكامل/الدمج المستمر في بيئات ما قبل الإنتاج (CI/CD in Pre-Production)

المرحلة السادسة: النشر والتسليم (Deployment and Delivery)

في هذه المرحلة يتم نشر النظام وتسليمه الي العميل ومن ثم اطلاقه

·       اعداد بيئات الإنتاج (Production Environments)

·       التكامل المستمر/الدمج المستمر في بيئات الإنتاج (CI/CD Production Environment)

·       توثيق النظام واعداد ادلة المستخدم (Documentation and User Manuals)

·       تدريب المستخدمين على النظام (Training)

·       نشر وتشغيل النظام في بيئة الإنتاج (Deployment and Go-Live in Production)

·       مراقبة النظام بعد الاطلاق (Monitoring)

·       تسليم النظام ومخرجات المشروع للعميل (System and Packages Delivery)

·       موافقة التسليم النهائية (Final Sign-off)  

المرحلة السابعة: ما بعد التسليم (Post-Go-Live Support)

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

·       الدعم الفني بعد التسليم خلال فترة الضمان (Corrective Support/Warranty Period)

·       عقود الصيانة والدعم المستمر (Continuous Maintenance and Support Contracts)

·       عقود إضافة ميزات وترقية (Modification/Upgrading Contracts)

·       التحسين المستمر (Continuous Improvement)

Saturday, August 30, 2025

Understanding the Hierarchy: From System to Class in Software Engineering


In the world of software engineering, terms like system, application, service, microservice, module, and class are often used interchangeably—yet each plays a very different role in the software hierarchy. Understanding how these layers fit together is essential for architects, developers, and testers alike.

From the high-level system that integrates multiple applications, down to the class that represents the smallest unit of code in object-oriented programming, every layer has its own purpose and responsibilities. This hierarchy not only helps in designing scalable software but also in managing complexity, improving maintainability, and fostering collaboration across teams.

In this article, we’ll explore the structure step by step—illustrating how systems, applications, services, microservices, modules, and classes connect to form the backbone of modern software architecture.

1. System

A system is the complete ecosystem that delivers a business solution. It typically consists of multiple software applications working together, supported by infrastructure, databases, and integrations.

Example: A banking system includes mobile apps, web portals, ATMs, and backend services.

2. Software / Application

A software application is a standalone product designed to solve a specific problem or provide value to users. It can run on a desktop, mobile device, or in the cloud.

Example: The customer-facing mobile banking app that allows users to transfer money and check balances.

3. Service

A service represents a distinct business capability or functionality provided within a software application. Services are often exposed via APIs or internal components.

Example: A payment service, an authentication service, or an email notification service.

4. Microservice

A microservice is a small, independently deployable unit of a larger service. Microservices architecture allows teams to build, scale, and deploy components independently, increasing flexibility and resilience.

Example: Fraud Detection Microservice inside payment service that Runs fraud checks and risk scoring, or Refund Microservice that Handles partial/full refunds independently.
also Login Microservice inside authentication service that Manages username/password login.

5. Module

A module is a logical grouping of related functionality inside a service or application. It helps organize code, making the system more maintainable and testable.

Example: A "Credentials Validation Module" inside Login Microservice that Checks if username/email and password format are valid.
also "Refund Request Module" inside Refund Microservice that Accepts refund requests from users or other services.

6. Class

A class is the smallest building block in object-oriented programming (OOP). It encapsulates data (attributes) and behavior (methods), serving as the foundation for modules and higher layers

Example: A "User" class with properties like username and methods like validatePassword(),  "PasswordPolicy" class that enforces password complexity rules in Credentials Validation Module
also "RefundRequestHandler" Class: main entry point for handling new refund requests.

Thursday, August 28, 2025

Software Engineering Core Roles, Responsibilites and Deliverables

 The core roles needed to cover end-to-end software engineering (requirements → design → development → testing → deployment → management).

1- Business Analyst (BA) / System Analyst / Product Owner (PO)

2- Project Manager (PM) / Scrum Master

3- Quality Assurance Auditor (QA)

4- Quality Control Tester (QC) / Software Tester

5- Test Engineer / Technical Test Engineer

6- Software Engineer / Software Developer / Full Stack Developer

7- DevOps Engineer

The following Image Illustrate the Core Roles, Responsibilites, Deliverables and Related parts in Software development Life Cycle:





Thursday, June 5, 2025

Software Engineering Management Topics

 


*Software Engineering Management

**Initiation and Scope Definition

**Software Project Planning

**Software Project Enactment

**Software Review and Evaluation

**Software Closure

**Software Engineering Measurement

**Software Configuration Management

Sunday, May 18, 2025

Application lifecycle management (ALM) Overview

Keywords: ALM, Areas, governance, development, Maintenance, Stages, Evolution, ALM Suites, Tools

ALM

·        ALM is the lifecycle management of applications, which includes governance, development and maintenance.

·        ALM includes these disciplines: requirements management, software architecture, development, testing, maintenance, change management, support, continuous integration, project management, deployment, release management and governance.

·        ALM tools provide a standardized system for communication and collaboration between software development teams and related departments, such as test and operations.

·        ALM combines the disciplines concerned with all aspects of the process to achieve the goal of driving efficiency through predictable and repeatable software delivery.

Key Areas of ALM:

·        Governance includes requirements management, resource management, nurturing and system administration such as data security, user access, change tracking, review, audit, deployment control, and rollback.

·        Application development includes identifying current problems, and planning, design, building, and testing the application and its continuous improvements. This area includes traditional developer and app maker roles.

·        Maintenance includes deployment of the app, and maintenance of optional and dependent technologies.

·        The application lifecycle is the cyclical software development process that involves these areas: plan and track, develop, build and test, deploy, operate, monitor, and learn from discovery.

Key Stages of ALM

·        The application management lifecycle can be divided into several stages, depending on the specific methodology or framework being used. Most ALM processes include the following Key Stages:

o   Stage 1: Evaluation

§  Key considerations include Business Case, Requirements Gathering, Technical Feasibility, Vendor Selection

o   Stage 2: Implementation

§  Key considerations include Development, Testing, Deployment, Management

o   Stage 3: Live

§  Key considerations include Monitoring, Maintenance, Support, Optimization, Application Register

o   Stage 4: Phasing Out

§  Key considerations include Data Migration, Communication, Deprecation

o   Stage 5: Retired

§  Key considerations include Roadmaps and Migration Plans, Decommissioning, Data Retention, Lessons Learned

·        The Main stages of ALM include Application requirements, Application development, Application testing, Application deployment, Application maintenance

o   Application requirements

§  Stakeholders define what they require from the application.

§  They analyze how the application will help them to meet their business goals and regulatory compliance requirements.

§  Requirements management typically involves writing user stories that show how different users will interact with the application.

o   Application development

§  various teams work together to convert the requirements into a working application

§  Project managers estimate the time and development cost.

§  Developers identify the design tasks and programming activities.

§  Quality analysts add review tasks and checkpoints for quality and progress checks. 

§  The development and testing teams also plan a timeline for their software projects. They identify any interdependence among the requirements and decide the order in which to complete and release new features.

o   Application testing

§  Quality analysts assess the application to verify it meets requirements.

§  They identify and prioritize any software errors or bugs, which the software development team then fixes.

§  Application testing and development often proceed simultaneously during the application’s lifecycle.

§  Agile development methodologies use automated testing tools to test the entire code base every time developers make a software change.

o   Application deployment

§  Developers release the application to end users.

§  Release management also includes planning how the team deploys software changes over time.

§  Agile development teams automate deployment to speed up the release of new features and updates.

o   Application maintenance

§  Support and development teams work together to resolve the remaining bugs, plan new updates, and improve the product further.

§  They incorporate user feedback and release new features that are relevant to customers.

Evolution of ALM

·        Adoption of Agile and DevOps practices

o   The widespread adoption of Agile and DevOps methodologies has transformed how software is developed and managed.

o   ALM has evolved to support these practices, enabling organizations to be more adaptive and automated in delivery software while enhancing cross-team collaboration.

·        Shift towards cloud-based ALM solutions

o   Cloud-based ALM solutions provide organizations with the agility and scalability to manage software delivery and collaborate across distributed teams and geographies.

o   Cloud-based ALM platforms offer benefits such as reduced infrastructure costs, increased accessibility, and easier maintenance.

·        Use of artificial intelligence (AI)

o   AI technologies are transforming ALM. AI algorithms enable predictive analytics, anomaly detection, root cause analysis, human-like automation, and workflow optimization.

o   ALM platforms with AI capabilities significantly improve productivity, reduce time-to-market, and enhance software quality and performance.

·        Emphasis on compliance and governance

o   As regulatory requirements and compliance standards become more stringent, ALM has evolved to incorporate robust compliance and governance features.

o   ALM tools can track changes, document audits, enforce policies, and ensure adherence to regulatory requirements

ALM Tools:

·        ALM tools are software that developers, testers, analysts, and other stakeholders use for application management. They provide a standardized environment that everyone can use to communicate and collaborate. Some common features of an integrated ALM suite:

o   Project management

o   Requirements management

o   Source code management

o   Test management

o   Real-time chat support

o   Project portfolio management

o   Visualization tools, such as charts and graphs

·        Some ALM software suites are:

o   Microsoft Azure DevOps

o   Atlassian JIRA

o   GitLab

o   Helix ALM

o   Enterprise Architect

o   Tuleap

o   Jama Connect

o   Codebeamer

o   Orcanos Application Lifecycle Management

o   Visure

o   ClickUp

o   IBM Targetprocess

o   Rally Software

o   Polarion ALM

o   DocSheets

o   Polarion

o   SpiraTeam


References

https://learn.microsoft.com/en-us/power-platform/alm/overview-alm

https://www.ibm.com/think/topics/application-lifecycle-management

https://aws.amazon.com/what-is/application-lifecycle-management/

https://www.opentext.com/what-is/application-lifecycle-management

https://www.ardoq.com/knowledge-hub/application-lifecycle-management

https://azure.microsoft.com/en-us/products/devops