Monday, February 17, 2014

Binpacking and scheduling Matlab toolboxes

In the following links you can find my matlab toolboxes. These toolboxes implement some algorithms that were important in my research. The available toolboxes are:
  • Clustering Toolbox contains clustering algorithms. Clustering is the task of grouping a set of objects in such a way that objects in the same group (called a cluster) are more similar (in some sense or another) to each other than to those in other groups (clusters).
    Test run sample:test_clustering_toolbox.html
    Test run sample:test_dynamicprog.html
  • Graph Toolbox contains useful algorithms including graph traversal (BFS, DFS), topological ordering and includes some metrics calculations.
    Test run sample:test_graph_toolbox.html
  • Packing Toolbox contains knapsacking and binpacking algorithms. Knapsacking and binpacking problems are a class of optimization problems that involve attempting to pack objects together into containers.
    Test run sample:test_packing_toolbox.html
  • Sorting Toolbox contains algorithms that are used to put elements of a list in a certain order. Efficient sorting is important for optimizing the use of other algorithms which require input data to be in sorted lists.
    Test run sample:test_sorting_toolbox.html

Saturday, May 7, 2011

Conceptual Model of Agile Release and Iteration Scheduling

A conceptual model (or domain model) represents entities and relationships between them. The aim of a conceptual model is to express the meaning of terms and concepts used by domain experts to discuss the problem, and to find the correct relationships between different concepts.

In my article (titled: Conceptual scheduling model and optimized release scheduling for agile environments), I proposed a conceptual model of agile planning that defines a common language for experts of agile software development. The aim of the model to provide a global and common view for agile planning and to avoid the different interpretations that are used in the field. This model not only helps to identify and define the main notions but with its precise relationships it can also be used in the design of agile planning applications.

Our proposed conceptual model of agile release and iteration scheduling is visualized with UML notation in the figure below.

Generally, scheduling mandates defining who will realize what and when. Team, Feature and Release concepts answer to these questions in agile release scheduling. In this case, a Feature can be a Requirement or a DefectRepair; and a Release consists of several Iterations. Whereas, Developer, TechnicalTask and Iteration concepts answer to the previous questions in agile iteration scheduling. Due to the structural similarity of release and iteration scheduling,these concepts are expressed with Resource and Workproduct abstract concepts. 

Additionally, schedule constraint must also be defined: resource constraints can be expressed by iteration velocity or the number of developers, temporal constraints can be asserted as attributes (e.g. deadlines) or Precedence and Coupling dependencies. In the figure, shaded objects (like Developer and TechnicalTask) pertain to iteration scheduling only. Objects in italics point out abstract objects (cannot be instantiated), and the lower compartments of entities with double compartment give the list of attributes of each object.

If you are interested in the details, the whole article can be found in the Selected Publications page.

Tuesday, April 5, 2011

LaTeX code listing definition for Manchester OWL Syntax and UML Profiles

The listings package is a source code printer for LaTeX. It can be used to typeset stand alone files as well as listings with an environment as well as you can print code snippets. Many parameters control the output and if your preferred programming language isn’t already supported, you can make your own definition.

The presently supported languages don't include the following syntaxes:

  • Manchester OWL syntax: The Manchester OWL Syntax, is a new syntax that has been designed for writing OWL class expressions. Although the syntax borrows ideas from the OWL Abstract Syntax, it is much less verbose, meaning that it is quicker to write and easier to read.
  • UML Profile XML format: A profile in the UML (Unified Modeling Language) provides a generic extension mechanism for customizing UML models for particular domains and platforms. Profiles are defined using stereotypes, tag definitions, and constraints that are applied to specific model elements (such as Classes, Attributes, Operations, and Activities).
I implemented both of them, the results can be downloaded from the links below (Please note, the keywords section may be completed depending on your need.):

The following code snippet points out usage examples:




Friday, September 24, 2010

Plan-based vs. Agile -- Explanation with Control Theory Metaphore

Some of my students and colleagues with electrical engineering background found the following explanation useful to distinguish plan-based and agile methods.

First and foremost, I think a more accurate distinction is that methods exist on a continuum from predictive to adaptive (see Boehm). In this continuum predictive methods focus on planning the future in detail, in contrast, adaptive methods empasize adapting to changes quickly. So, in the following I use the plan-based as a synonym to predictive, and agile as a synonym to adaptive approaches.

To emphasize the differences of the plan-based and agile approaches I use control theory analogy in the following. Plan-driven methods are similar to open-loop control systems: at the beginning of the process the desired output (desired product) is defined, then the controller (development coordinator) determines the necessary inputs (development plan) for the system (development team) in other to that realizes the output (product). So an open-loop control system determines the input using only the current knowledge about the desired output. It means that the system does not observe the output of the process that it is controlling. Therefore, an open-loop control system can not engage in machine learning, cannot correct any errors that it could make, and it also may not compensate the disturbances that influences the system. Open-loop control system is useful for well-defined control systems (development situations) where the relationship between input and the desired output are well known.

Unfortunately, only one thing is usually constant in software development situations: the change. The changes are emanating from different sources, for example, changes of customer requirements, business goals, and technological demands. Consequently, these software development processes should respond to these changes by adapting its execution to the changed situation. Continuing the previous analogy, we can characterize agile methods as closed-loop control systems: additionally to the open-loop control system the disturbances (changes), which affect the system, are measured by different sensors (development reviews) that are transferred to the input of the controller (developer coordinator) in other to the input of the system (development plan) can be adapted to the changed situation. In agile methods, actually, there are typically three planning levels -- therefore three feedback loops -- in the process: daily-, iteration- and release plans to adapt the development process at (roughly) daily, weekly and monthly plan-levels. The intuitive mapping of agile methods to closed-loop control system can be seen in the next figure.

Interpreting the previous mapping on the Scrum method, the method can be visualized as in the next figure (Please note, the daily loop is not shown.).

Wednesday, July 21, 2010

How to Sync Outook 2007 Calendar Meeting Requests with Google Calendar?

Using Google Calendar Sync, Google Calendar can be synchronized with Outlook 2003 and 2007 Calendar (see the compatibility issues).

Generally, it works fine but annoyingly Outlook's 2007 Meeting Request entries can not be transfered to the Google Calendar... (It is important for me because I would like to look at my calendar entries on my Android based HTC on the move.)

I searched for a solution on the Internet, but I only found solutions that didn't work in my situation. But finally, I used the old greek 'try-and-error' principle and found a working solution to this problem in WinXP SP3 + Office 2007 context:
  1. Download and install Google Calendar Sync
  2. In the configuration screen (where you can set your Google account and the Sync option - later it can be also run from the Taskbar using the Google Calendar Sync icon) you should set your original Google email address (that was created first when you created your Google account,
  3. In the Calendars tab in the Google Calendar Settings you should add your email address that is used in MS Outlook 2007 using the Shared: Edit settings link.
... and it works fine and I am happy because now I know where and when I should arrive...

Tuesday, July 13, 2010

Connecting to an unnamed wifi with HTC Hero and HTC Desire

I tried to connect to an unnamed wifi network with a HTC Hero and a HTC Desire and they couldn't find the network despite of the fact that I entered all the necessary connection information. Then I revealed the name of the network and the connections were established. After I covered again the name of the network they could still establish connection. So, the solution is to reveal the name of the wifi network for the first connection after that you can hide it again to restore the original state of the network. It works both on Android 1.5 and 2.1 OS.

Friday, July 9, 2010

A problem and a solution using elsarticle.cls

I tried to resubmit one of my revised article to the Elsevier's Editorial Team and the following error occurred which hindered me to resubmit it:

Package pdftex.def Error: pdfmode expected, but DVI mode detected!
(pdftex.def) If you are using 'latex', then call pdflatex'.
(pdftex.def) Otherwise check and correct the driver option. Error
recovery mode by switching to PDF mode.
See the pdftex.def package documentation for explanation.

This error was really annoying, since the deadline was very close...

Fortunately, after some hours inspection, I found that the cause of the error was that the 'pdftex' module was changed in the editorial system. The new version of 'pdftex' now tries to detect if the pdf mode is set correctly in the document. (I didn't bother about it before as everything was fine.)

In other to help 'pdftex' in the decision (it believed that I wanted to use DVI mode but I didn't) I put the '\pdfoutput=1' line just before the document class definition:


So now, everything goes fine as previously.