Nour Ali

Nour Ali
Brunel University London · Department of Computer Science

Software Engineering

About

90
Publications
12,900
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
1,265
Citations
Citations since 2016
20 Research Items
742 Citations
2016201720182019202020212022020406080100120140
2016201720182019202020212022020406080100120140
2016201720182019202020212022020406080100120140
2016201720182019202020212022020406080100120140
Additional affiliations
June 2017 - present
Brunel University London
Position
  • Professor (Associate)
December 2012 - June 2017
University of Brighton
Position
  • Lecturer
September 2008 - December 2012
University of Limerick
Position
  • PostDoc Position

Publications

Publications (90)
Article
Designing an ontology that meets the needs of end-users, e.g., a medical team, is critical to support the reasoning with data. Therefore, an ontology design should be driven by the constant and efficient validation of end-users needs. However, there is not an existing standard process in knowledge engineering that guides the ontology design with th...
Article
Microservices have gained acceptance in software industries as an emerging architectural style for autonomic, scalable, and more reliable computing. Among the critical microservice architecture design decisions is when to adapt the granularity of a microservice architecture by merging/decomposing microservices. No existing work investigates the fol...
Article
Full-text available
The article Architecture consistency: State of the practice, challenges and requirements, written by Nour Ali et al. was originally published electronically on the publisher’s internet portal on May 15, 2017 without open access. The original article has been corrected.
Conference Paper
Full-text available
Micro service architectures are rapidly establishing themselves in the software industry as a more efficient and effective substitute for monolithic applications. In a micro service architecture, the application is broken down into many small elements called micro services. These are managed in a distributed way and typically involve several develo...
Article
Full-text available
Architecture Consistency (AC) aims to align implemented systems with their intended architectures. Several AC approaches and tools have been proposed and empirically evaluated, suggesting favourable results. In this paper, we empirically examine the state of practice with respect to Architecture Consistency, through interviews with nineteen experie...
Book
Software Architecture for Big Data and the Cloud is designed to be a single resource that brings together research on how software architectures can solve the challenges imposed by building big data software systems. The challenges of big data on the software architecture can relate to scale, security, integrity, performance, concurrency, paralleli...
Conference Paper
Full-text available
Isolating fine-grained business functionalities by boundaries into entities called microservices is a core activity underlying microservitization. We define microservitization as the paradigm shift towards microservices. Determining the optimal microservice boundaries (i.e. microservice granularity) is among the key microservitization design decisi...
Conference Paper
Legacy systems need to be continuously maintained and reengineered to improve their provision of services and improve quality attributes. An approach that promises to improve quality attributes and reduce human maintenance tasks is the self-adaptive approach, where software systems modify their own behaviour. However, there is little guidance in th...
Chapter
Making trade-offs in architecture is a fundamental activity in software design. As software is required to operate continuously in changing and uncertain environments, adaptability needs to be considered as a key issue, along with other more traditional software qualities. In this chapter, we introduce the concept of managing trade-offs in adaptabl...
Chapter
Software quality management (SQM) is the collection of all processes that ensure that software products, services, and life cycle process implementations meet organizational software quality objectives and achieve stakeholder satisfaction. SQM comprises three basic subcategories: software quality planning, software quality assurance (SQA), and soft...
Conference Paper
An investigation on how to produce a fast and accurate prediction of user behaviour on the Web is conducted. First, the problem of predicting user behaviour as a classification task is formulated and then the main problems of such real-time predictions are specified: the accuracy and time complexity of the prediction. Second, a method for compariso...
Book
In recent decades we have seen enormous increases in the capabilities of software intensive systems, resulting in exponential growth in their size and complexity. Software and systems engineers routinely develop systems with advanced functionalities that would not even have been conceived of 20 years ago. This observation was highlighted in the Cri...
Book
Managing Trade-Offs in Adaptable Software Architectures explores the latest research on adapting large complex systems to changing requirements. To be able to adapt a system, engineers must evaluate different quality attributes, including trade-offs to balance functional and quality requirements to maintain a well-functioning system throughout the...
Conference Paper
Mobile or pervasive systems continuously change their environments and resources (e.g. battery or bandwidth). Mobile applications require different services when they enter or exit environments and as their resources change. In this paper, we propose a service oriented architectural approach that takes into account the resources, the location topol...
Conference Paper
The IEEE Engineering Mobile Service Oriented Systems (EMSOS) Workshop aims to bring together researchers from academia and industry, as well as practitioners in the area of engineering services in mobile environments in order to provide a forum where recent research results can be presented and discussed. The objective is to understand open issues...
Conference Paper
The goal of this track is to strengthen the cross-fertilization of advances from software engineering, services and cloud computing. The workshop aims at exploring, debating and increasing our understanding to the following: (i) how advances in software engineering, with emphasis on engineering requirements software architectures, architecting depe...
Article
Reflexion Modelling is considered one of the more successful approaches to architecture reconciliation. Empirical studies strongly suggest that professional developers involved in real-life industrial projects find the information provided by variants of this approach useful and insightful, but the degree to which it resolves architecture conforman...
Chapter
The Attribute Driven Design (ADD) method provides steps for designing software architecture for satisfying quality attributes. This method has not been explored in terms of users’ perception on its usefulness and easiness of use. Our goal is to study the perceptions that software engineers with no or little experience industrially in designing soft...
Conference Paper
Abstract---Several initiatives have been proposed in recent years with the purpose of investigating how to tackle sustainability issues within software systems and software engineering. However, there is a lack of attention from the research community in exploring sustainability as an emergent quality property of the software systems, especially wh...
Conference Paper
Complexity and scale of modern data is at its highest level but its temporal properties are often neglected. As a result, it is often hard for a user to make an informed decision about its time related characteristics. However, an aesthetic and efficient visualization can mitigate this drawback of data representation. For example, an informative gr...
Conference Paper
Mobile applications interact with devices, networks, environments and pervasive services and at runtime these interactions can continuously change and adapt, causing side effects. In this paper, we propose the usage of architectural models at runtime to allow software engineers monitor the structural changes of a mobile system. Architectural models...
Conference Paper
The IEEE Engineering Mobile Service Oriented Systems (EMSOS) Workshop aims to bring together researchers from academia and industry, as well as practitioners in the area of engineering services in mobile environments in order to provide a forum where recent research results can be presented and discussed. The objective is to understand open issues...
Article
Context Several authors have proposed information seeking as an appropriate perspective for studying software evolution. Empirical evidence in this area suggests that substantial time delays can accrue, due to the unavailability of required information, particularly when this information must travel across geographically distributed sites. Objecti...
Conference Paper
Architectural drift is a widely cited problem in software engineering, where the implementation of a software system diverges from the designed architecture over time causing architecture inconsistencies. Previous work suggests that this architectural drift is, in part, due to programmers' lack of architecture awareness as they develop code. JITTAC...
Conference Paper
Full-text available
Service Oriented Architecture (SOA) is a promising approach for designing and developing mobile applications. However, SOA concepts need to be combined with mobile principles to fully accommodate their requirements. Previously, a metamodel called Ambient-SoaML has been defined, which combines the Service Oriented Architecture Modeling Language (Soa...
Chapter
This chapter presents the results of a systematic review from existing literature in software engineering for cloud-based applications and describes what the research community thinks about the effects of introducing cloud computing into a software development process. In this systematic review, the authors describe the challenges cloud computing p...
Chapter
This chapter sets out to introduce relevant foundations concerning evolution and adaptation of service-oriented systems. It starts by sketching the historical development of software systems from monolithic and mostly static applications to highly-dynamic, service-oriented systems. Then, it provides an overview and more thorough explanation of the...
Chapter
Following a successful adoption of lean and agile practices, the development team at Codeweavers Ltd has furthered its approach to service-oriented software development for the motor finance and insurance industry. Through iteratively inspecting and adapting their processes over the last twelve months, the team members have seen a change from their...
Chapter
This chapter explores using service-oriented computing to reengineer non-secure legacy software applications to create new secure target applications. Two objectives of this chapter are: (1) to analyze the architectural changes required in order to adopt new web technologies and cope with resultant vulnerabilities in source code; and (2) to measure...
Chapter
The emergence of Software as a Service (SaaS) has made it possible to develop dynamic and complex business processes as eServices. The development of business processes as eServices (SaaS) can be assisted by the means of adaptive or agile development processes. The development of business processes in terms of SaaS require to perform SaaS requireme...
Chapter
In agile software development, it is imperative for stakeholders such as the users and developers of an information system to collaborate in designing and developing the information system, by sharing their knowledge. Especially in development of a large-scale information system, such collaboration among stakeholders is important, but difficult to...
Chapter
To provide better service to customers and remain competitive in the business environment, a wide variety of ready-to-use software and technologies are available for one to “grab and go” in order to build up software systems at a rapid pace. Currently, a wide variety of Web services are available and ready to use for this purpose. Current software...
Chapter
Web services are increasingly being used in business critical environments as a mean to provide a service or integrate distinct software services. Research indicates that, in many cases, services are deployed with robustness issues (i.e., displaying unexpected behaviors when in presence of invalid input conditions). Recently, Test-Driven Developmen...
Chapter
A fad, hype, and a paradigm shift are often the words that are used about the agile, lean, and now also about service-oriented development. What starts as a step in evolution, grows into a mass movement in Internet and social media, and results in an avalanche of books, training, and consultancy services. Each proponent tries to differentiate from...
Chapter
Although the areas of Service-Oriented Computing (SOC) and Agile and Lean Software Development (LSD) have been evolving separately in the last few years, they share several commonalities. Both are intended to exploit reusability and exhibit adaptability. SOC in particular aims to facilitate the widespread and diverse use of small, loosely coupled u...
Chapter
The effective provision of security in an agile development requires a new approach: traditional security practices are bound to equally traditional development methods. However, there are concerns that security is difficult to build incrementally, and can prove prohibitively expensive to refactor. This chapter describes how to grow security, organ...
Chapter
The discipline of service science encourages the need to develop alternative and more scientific approaches to conceptualise modern service network environments. This chapter identifies the opportunity to apply organisational network analysis (ONA) as a novel approach to model agile service interaction. ONA also supports the visualisation of a serv...
Article
Full-text available
Architecting software systems is an integral part of the software development lifecycle. However, often the implementation of the resultant software ends up diverging from the designed architecture due to factors such as time pressures on the development team during implementation/evolution, or the lack of architectural awareness on the part of (po...
Chapter
This chapter focuses on designing software architectures of mobile applications using an Aspect-Oriented Architecture Description Language (AOADL). The AOADL follows an approach called Ambient-PRISMA which enables designers to address, in an explicit and abstract way, the notion of location and mobility. Concretely, the AOADL extends the PRISMA AOA...
Conference Paper
The IEEE International Workshop on the Future of Software Engineering for/in the Cloud (FoSEC 2011)aims to bridge the gap between software engineering and cloud computing by specifically addressing the software engineering challenges for software engineering for and in the cloud.
Article
Ambient-PRISMA is an architectural approach for specifying aspect-oriented software architecture and generating code of distributed and mobile systems. Ambient-PRISMA lacks a precise semantics due to the fact that it is based only on a metamodel. In this paper, Ambient-PRISMA is mapped into a formal language called Channel Ambient Calculus, a proce...
Article
Full-text available
Spatial Hypertext Wiki (ShyWiki) is a wiki which represents knowledge using notes that are spatially distributed in wiki pages and have visual characteristics such as colour, size, or font type. The use of spatial and visual characteristics in wikis is important to improve human comprehension, creation and organization of knowledge. Another importa...
Conference Paper
Full-text available
Most wikis do not allow users to collaboratively organize relations among wiki pages, nor ways to visualize them because such relations are hard to express using hyperlinks. The Spatial Hypertext Wiki (ShyWiki) is a wiki that uses Spatial Hypertext to represent visual and spatial implicit relations. This paper reports an experience about the use of...
Article
Wikis have been widely used as knowledge management tools. However, most of them do not support the conversion process of knowledge in an appropriate way. Specifically, they do not support brainstorming and creativity techniques, which are needed to convert tacit knowledge into explicit. This chapter presents how a wiki tool called the Spatial Hype...
Conference Paper
Full-text available
In this paper, we present the Global Teaming Model (GTM), which is empirically grounded, and outlines practices that managers need to consider when managing virtual teams. We explain how the model can be adapted to specific areas of software development, and use architectural knowledge management (AKM) as our exemplar. We focus on specific practice...
Article
non-peer-reviewed Architectural Knowledge Management (AKM) aims to coordinate the knowledge produced and used during architecting a software system. Managing architectural knowledge effectively is a task that becomes even more critical and complex when operating in a distributed environment. Thus, software architectural practices, processes, and to...
Article
Full-text available
peer-reviewed In Global Software Development (GSD), distributed stakeholders (e.g. team members, customers, etc) have to collaborate and communicate in an efficient and effective way to share, create and discuss knowledge. Nowadays, a challenge is to provide integrated collaborative tools that implement creativity techniques which allow distributed...
Conference Paper
Collaboration is a key factor in successful knowledge management. Recently, wikis have become a popular solution for distributed and collaborative knowledge management. However, most wikis do not appropriately support the facilities needed for group idea creation and can only represent unstructured knowledge (text, images, and hyperlinks) which can...
Article
This work presents an approach called Ambient-PRISMA for modelling and developing distributed and mobile applications. Ambient-PRISMA enriches an aspect-oriented software architectural approach called PRISMA with the ambient concept from Ambient Calculus. Ambients are introduced in PRISMA as specialized kinds of connectors that offer mobility servi...
Article
peer-reviewed Service Oriented Architecture (SOA) is an architectural style that is widely used in distributed and dynamic systems. The Service oriented architecture Modeling Language (SoaML) is an OMG standard for modelling SOA independent of a technology. This paper presents a tool for modelling SOA using SoaML and generating OSGi Declarative Ser...
Conference Paper
Full-text available
The absence of a disciplined approach for capturing and managing architectural knowledge causes the loss of substantial knowledge generated during the software architecture process. This paper describes the use of a Spatial Hypertext Wiki (ShyWiki) as a tool for Architectural Knowledge Management (AKM) support. Specifically, we demonstrate that Shy...
Conference Paper
Full-text available
Variability Management (VM) in Software Product Line (SPL) is a key activity that usually affects the degree to which a SPL is successful. SPL community has spent huge amount of resources on developing various approaches to dealing with variability related challenges over the last decade. To provide an overview of different aspects of the proposed...
Conference Paper
Full-text available
Mobile applications need to dynamically adapt to requirements of new environments (or locations) as users and their devices continuously move. Service oriented architecture (SOA) is a recent approach for designing and developing open and distributed systems. However, SOA has to be extended in order to fully accommodate the requirements of mobile se...
Article
Full-text available
Component-Based Software Development (CBDS) and Aspect-Oriented Software Development (AOSD) have emerged in the last few years as new paradigms of software development. Both approaches provide techniques to improve the structure and reusability of the code. In addition, Aspect-Oriented Programming (AOP) permits the reduction of the maintainability...
Article
Aspect-Oriented Software Development (AOSD) has emerged as a new approach to develop software systems by improving their structure, reuse, maintenance and evolution properties. It is being applied to all stages of the software life cycle. In this paper, we present the PRISMA approach, which introduces AOSD in software architectures. PRISMA is chara...
Article
Full-text available
The development process of software systems has become extremely complicated due to the complexity of the structures and the continuous evolution of the requirements. Software architectures are backbones for developing complex, dynamic and distributed software systems. Recently, two approaches have emerged to construct architectural models: the Com...
Article
Full-text available
Nowadays, information systems are large and complex to develop. An important factor that influences in this complexity is that information systems are tending to be distributed with mobile components. Many technologies have emerged in dealing with distribution issues at an implementation level. However, few approaches have considered distribution f...
Conference Paper
This paper presents ShyWiki, a Spatial Hypertext Wiki. ShyWiki has the flexibility and advantages of spatial hyper- text. ShyWiki hypertext documents are composed of notes and maps that can be arranged by users. Users can change the spatial attributes of the elements in a hypertext docu- ment such as their position, order, color, size, etc. Further...
Conference Paper
Full-text available
This paper presents ShyWiki, a Spatial Hypertext Wiki. ShyWiki has the flexibility and advantages of spatial hypertext. Hypertext documents in ShyWiki are composed of notes and maps that can be arranged by users. Users can change the spatial/visual attributes of the notes in the wiki pages such as their position, order, color, size, etc. Furthermor...
Article
Full-text available
Software architecture is a technique which aids the development of complex and dynamic systems. Architecture Description Languages (ADLs) describe software architectures using a textual syntax or a graphical notation. However, not many ADLs have provided primitives for describing software architectures of distributed and mobile software systems. Th...
Conference Paper
Currently, most software systems have a dynamic nature and evolve at run-time. The dynamic reconfiguration of software architectures has to be supported in order to enable their architectural element instances and their links to be created and destroyed at run-time. Complex components also need reconfiguration capabilities to evolve their internal...
Article
Full-text available
Replication has become a fundamental requirement for distributed systems in order to avoid network overload as well as to provide fault tolerance. The objective of this work is to show how replication can be supported in an abstract and technology independent way. The work presented in this paper is called Ambient-PRISMA. Ambient-PRISMA combines PR...