Mohamed Salah Hamdi

Learn More
Refactoring restructures a program to improve its structure without altering its behavior. However, it is challenging to preserve the domain semantics of a program when refactoring is decided/implemented automatically. Indeed, a program could be syntactically correct, have the right behavior, but model incorrectly the domain semantics. In this paper, we(More)
Fast Health Interoperable Resources (FHIR) is the recently proposed standard from HL7. Its distinguishing features include the user friendly implementation, support of built-in terminologies and for widely-used web standards. Given the safety-critical nature of FHIR, the rigorous analysis of e-health systems using the FHIR is a dire need since they are(More)
Systems enabling smart city operations are highly adaptive complex systems that pose great challenges in their development and operation. Current user-driven techniques for system domain modeling and requirements engineering are not adequate for supporting the development of such systems. In this paper, we propose a development process and an(More)
MASACAD is a multiagent information customization system that adopts the machine-learning paradigm to advise students by mining the Web. In the distributed problem-solving paradigm, systems can distribute among themselves the processes necessary to accomplish a given task. Given the number of problems that distributed processing can address, AI researchers(More)
One of the widely used techniques for evolving software systems is refactoring, a maintenance activity that improves design structure while preserving the external behavior. Exploring past maintenance and development history can be an effective way of finding refactoring opportunities. Code elements which undergo changes in the past, at approximately the(More)
To combat information overload, systems that are often referred to as information customization systems are needed. Such systems act on the user’s behalf and can rely on existing information services like search engines that do the resource-intensive part of the work. These systems will be sufficiently lightweight to run on an average PC and serve as(More)
Reliability Block Diagrams (RBDs) allow us to model the failure relationships of complex systems and their sub-components and are extensively used for system reliability, availability, dependability and maintainability analyses of many engineering systems. Traditionally, Reliability Block Diagrams (RBD) are analyzed using paper-and-pencil proofs or computer(More)
This paper surveys the application of artificial intelligence approaches to the software engineering processes. These approaches can have a major impact on reducing the time to market and improving the quality of software systems in general. Existing survey papers are driven by the AI techniques used, or are focused on specific software engineering(More)