About
72
Publications
37,304
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
651
Citations
Introduction
I am a researcher in Healthcare Analytics, Informatics, and Model Driven Software Engineering.
www.Badreddin.com
My publications: http://scholar.google.com/citations?user=xAXp0WYAAAAJ&hl=en
Linked Profile:
http://www.linkedin.com/profile/view?id=19295957&trk=tab_pro
Microsoft Academic Search Profile:
http://academic.research.microsoft.com/Author/11608639
Academia.edu profile:
http://uottawa.academia.edu/OmarBadreddin/About
Current institution
Additional affiliations
January 2008 - January 2013
Publications
Publications (72)
Resource Type Curriculum Framework SYNOPSIS Given an increased focus on computer science education as a valuable context to teach data science-due in part to the potential of computing for accessing, processing, and analyzing digital datasets-there have been steady efforts to develop kindergarten through 12th grade (K-12) curricula that productivel...
Umple is an open-source software modeling tool and compiler. It incorporates textual language constructs for UML modeling, including associations and state machines. It includes traits, aspects, and mixins for separation of concerns. It supports embedding methods written in many object-oriented languages, enabling it to generate complete multilingu...
Software complexity is an indicator to the quality of software. It shows that a software or a component of software has a design or implementation that is difficult to understand, modify and maintain. Many complexity metrics have been developed by researchers to identify and measure the degree of complexity. Unfortunately, Current complexity metric...
In model‐driven engineering (MDE) software projects, large portions of the executable code are automatically generated from designs and models. This generated code may or may not be edited by the developers to achieve their development objectives. MDE projects also include a significant amount of handwritten code (HC). This handwritten code is deve...
The primary purpose of software design is to reduce the complexity of software systems and to abstract the details to aid in comprehension. Design languages, such as UML, offer increased flexibility and alternatives for designers. However, there are no clear objective guidelines to help software designers select alternatives that reduce model compl...
As software systems continue their exponential growth in size and complexity, measuring this complexity has become fundamental to ensuring longevity and to maximize returns over investment. Modern code complexity methods are agnostic to the intended designs, and are often applied indistinguishably to all software modules. This paper presents novel...
Software design is one of the core concepts in software engineering. This covers insights and intuitions of software evolution, reliability, and maintainability. Effective software design facilitates software reliability and better quality management during development which reduces software development cost. Therefore, it is required to detect and...
Mining Software Repositories (MSR) has opened up new pathways and rich sources of data for research and practical purposes. This research discipline facilitates mining data from open source repositories and analyzing software defects, development activities, processes , patterns, and more. Contemporary mining tools are geared towards data extractio...
Millions of lines of code are written every day, and it is not practically possible to perfectly thoroughly test all this code on all possible situations. In practice, we need to be able to separate codes which are more probable to contain bugs – and which thus need to be tested more thoroughly – from codes which are less probable to contain flaws....
The primary purpose of software design is to reduce the complexity of software systems and to abstract the details to aid in comprehension. As such, design languages, such as UML, offers increased flexibility and choices for designers. However, there are no clear objective guidelines to help software designers make choices that reduce model complex...
Measuring software complexity is key in managing the software lifecycle and in controlling its maintenance. While there are well-established and comprehensive metrics to measure the complexity of the software code, assessment of the complexity of software designs remains elusive. Moreover, there are no clear guidelines to help software designers ch...
Model cantered software development practices adoption remains limited to small niche domains. The broad development practices remain code centric. Modeling tool complexity is often cited as a significant factor limiting the adoption and negatively affecting user experience. Modeling and design tools complexity are due to multiple factors including...
Object Constraint Language (OCL) supports UML model navigation, queries, and constraints. OCL has precise unambiguous semantics and supports definition of constraints at the model level. However, OCL is arguably the least adopted UML notation in practice. We argue that while the language constructs, concepts, and semantics are well founded, the lan...
We present the results of a survey of 228 software practitioners conducted on two phases ten years apart. The goal of the study is to uncover trends in the practice of software design and the adoption patterns of modeling languages such as UML. The first phase was conducted in April-December 2007 and included 113 responses. The second phase was con...
The Open source ecosystem creates new pathways for participation and collaboration from a broad and diverse community of developers. As a software system grows, the need to capture its design, often through models, becomes important to boost communication and collaboration. In this paper, we report on a study that assesses the open source community...
Hospitals need to reduce wait times in emergency rooms to ensure timely delivery of services. This paper provides an in-depth investigation and evaluation of three distinct approaches to provide real time monitoring of patient flow. The three approaches differ in the number and nature of their data sources. The results suggest that additional data...
Modeling and programming have often been considered two different activities. While this may be true when modeling is primarily meant for human communication and early design explorations, it is not the case when modeling is meant for execution. Some approaches have been specifically developed to address this latter case with variable successes. In...
Despite the emergence of UML as the defacto modeling and design tool for software engineering, its adoption remains dismal. Software development, particularly in the open source community, remains code-centric. Adoption of UML in open source projects represents a significant lost opportunity. In this paper, we present an approach to encourage upfro...
Performance and compliance in hospitals are particularly challenging due to the nature of care variability, and the human- intensive clinical activities involved. There is a need to collect fine-grained measurements to enact performance and governance effectively.
Modern wearable technologies, such as smart watches, provide a significant opportunit...
Precision in goal models can be enhanced using quantitative rather than qualitative scales. Selecting appropriate values is however often difficult, especially when groups of stakeholders are involved. This paper identifies and compares generic and domain-specific group decision approaches for selecting quantitative values in goal models. It then r...
Requirements tractability remains challenging, particularly in the prevalence of code centric approaches. Similarly, within the emerging model centric paradigm, requirements traceability is addressed only to a limited extent. To facilitate such traceability, we call for representing requirements as first class entities in the emerging paradigm of m...
Developers using model driven development (MDD) to develop systems lack the ability to specify traces
that operate at the model level. This results in specification of traces at the generated code level. In this
paper, we are proposing trace directives that operate at the model level to specify the tracing of UML
attributes and state machines. Tr...
UML modelling tools provide poor support for composite state machine code generation. Generated code is
typically complex and large, especially for composite state machines. Existing approaches either do not handle
this case at all or handle it by flattening the composite state machine into a simple one with a combinatorial explosion of states, an...
Implementing UML attributes directly in an object-oriented language may not appear to be complex, since such languages already support member variables. The distinction arises when considering the differences between modelling a class and implementing it. In addition to representing attributes, member variables can also represent association ends a...
UML classes involve three key elements: attributes, associations, and methods. Current object-oriented languages, like Java, do not provide a distinction between attributes and associations. Tools that generate code from associations currently provide little support for the rich semantics available to modellers such as enforcing multiplicity constr...
In order to adapt to a continuously changing environment, organizations are evolving their business objectives, processes, and operations through various strategic initiatives. In this context, it is imperative for organizations to continuously monitor their performance and adjust when there is a need or an opportunity to do so. The cluster of tech...
Model Driven Architecture (MDA) advocates the use of models, rather than code, as the main development artifact. Yet model versioning and merging tools still lag in capabilities, ease of use and adoption relative to source code versioning and merging tools. This forces many teams to avoid model-based collaboration and concurrent model modifications...
We analyze the current direction of UML Action Language development and provide a classification of the proposed action language structure and statements. We also present a functioning implementation of an action language and discuss our platform for experimenting with Action Language based systems. We propose a novel approach that adopts a bottom-...
Test-Driven Development (TDD) is the practice of attempting to use the software you intend to write, before you write it. The premise is straightforward, but the specifics of applying it in different domains can be complex. In this paper, we provide aTDD approach for language development. The essence is to apply TDD at each of four levels of langua...
Hospitals in North America are operating at near full or full capacity. Ageing populations are further increasing patients' inflows. These trends manifest themselves in continuously increasing patients wait time that can reach 20 hours at emergency departments [1]. Excessive wait time is both costly to patients and hospitals, increases risks to pat...
Regulations are a source of evolving requirements for products and organizations. As regulatory institutions shift towards outcome-based regulations, they increasingly adopt legislation performance modeling, at the basis of regulatory intelligence. In this context, performance modeling refers to the measuring of important business aspects in a coor...
It is widely accepted that modeling in software engineering increases productivity and results in better code quality. Yet, modeling adoption remains low. The open source community, in particular, remains almost entirely code centric. In this paper, we explore the reasons behind such limited adoption of modeling practices among open source develope...
Model Driven Engineering proposes the use of models as the main development artifacts. This methodology involves generating code from models and then perhaps adding some details to the generated code. Frequently, it is required to also reverse-engineer code to generate models. Despite the wide acceptance of modeling benefits, the use of Model Drive...
Improving care processes in healthcare institutions relies on effectively monitoring and making timely decisions for improving patient experience. Business Intelligence solutions have proven to be effective for monitoring processes in other industries. However, healthcare organizations face three challenges for implementing Business Intelligence so...
Empirical evaluation of research tools is growing especially in the field of software engineering. A number of research techniques have been proposed and used in evaluating research prototypes. We take the view that evaluation of software engineering tools is best achieved in industrial settings, with real life artifacts and tasks, and with profess...
We present metacodes, a new concept to guide grounded theory (GT) research in software engineering. Metacodes are high level codes that can help software engineering researchers guide the data coding process. Metacodes are constructed in the course of analyzing software engineering papers that use grounded theory as a research methodology. We perfo...
1 Many tools and approaches support the use of modeling abstractions in textual form. However, there have been few studies about whether textual models are as comprehensible as graphical models. We present an experiment investigating the understandability of three different notations: Systems modeled in UML, and the same systems in both Java and Um...
The emergence of model-driven software development brings new opportunities and challenges for rapid prototyping. On the one hand, the modeling process is inherently abstract, removing the prototyper from details, and letting him or her focus on exploring design alternatives for various aspects of the system. On the other hand, the most popular mod...
Research prototypes typically lack the level of quality and readiness required for industrial deployment. Hence, conducting realistic experimentation with professional users that reflect real life tasks is challenging. Experimentation with toy examples and tasks suffer from significant threats to external validity. Consequently, results from such e...
We show how a technology called Umple can be used to improve teaching UML and modeling. Umple allows UML to be viewed both textually and graphically, with updates to one view reflected in the other. It allows UML concepts to be added to programming languages, plus web-based code generation from UML to those languages. We have used Umple in student...
1 INTRODUCTION Business Process Management (BPM) is a novel holistic approach to aligning aspects of the organization with its stated goals, and aims at bridging the gap between business and IT domains. Although the initial focus of BPM was on the automation of business processes with the use of information technology, it has since been extended to...
Our research tool, Umple, has the objective of raising the abstraction level of programming languages by adding modeling abstractions such as UML associations, attributes and state machines. My research focuses on the syntax and semantics of state machines in Umple plus the empirical validation of Umple. The latter consists of a grounded theory stu...
Umple adds UML abstractions to base programming languages such as Java, PHP and Ruby. The resulting program can be seen as both model and code at the same time. Umplification is the process of converting a base language program to Umple by a series of refactorings. The result is a program semantically equivalent to the original, but which can be re...
The emergence of model driven methodologies is bringing new challenges for software prototyping. Models tend to focus on the design of the system, and are less concerned with, or less able to, support prototype qualities like reuse, evolution, or weaving together independently designed parts. This paper presents a model-oriented prototyping tool ca...
Our research tool, Umple, has the objective of raising the abstraction level of programming languages by including modeling abstractions such as UML associations, attributes and state machines. My research focuses on the syntax and semantics of state machines in Umple and the empirical validation of Umple as a whole.
Software Engineering has always been a fast moving and changing industry. This has continually presented an additional challenge for the Software Engineering research community; namely, how to catch up with fast changing technologies, tools, and practices? How to bring on-board yet another tool, methodology, or results to influence an industry that...
This paper investigates the use of Artificial Neural Networks (ANN) to predict software aging phenomenon. We analyze resource usage data collected on a typical long-running software system: a web server. A Multi-Layer Perceptron feed forward Artificial Neural Network was trained on an Apache web server dataset to predict future server resource exha...
This paper investigates the use of Artificial Neural Networks (ANN) to mine and predict patterns in software aging phenomenon. We analyze resource usage data collected on a typical long-running software system: a web server. A Multi-Layer Perceptron feed forward Artificial Neural Network was trained on an Apache web server dataset to predict future...
This research has the main objective of enhancing the Rational Unified Process to better address the emerging new Globalization and Internationalization requirements of modern software, focusing on integrating the Globalization Processes, Artifacts, Roles, Activities, and best practices into the Rational Unified Process (RUP). RUP is a well establi...