Archive

Posts Tagged ‘Programming’

Pomotux

September 28th, 2009 bodom_lx No comments

Summary

Pomotux is  a C++ activity manager for the Pomodoro Technique created by Francesco Cirillo, a member of the XPlabs crew. The program focuses on the basic features of the technique. It does not focus on advanced techniques, such as the prediction of the number of pomodoros needed for an activity.

About the Pomodoro Technique

The Pomodoro Technique is a time management method that can be used for any kind of task. For many people, time is an enemy. The anxiety triggered by “the ticking clock”, especially when a deadline is involved, leads to ineffective work and study habits which in turn lead to procrastination. The aim of the Pomodoro Technique is to use time as a valuable ally in accomplishing what we want to do in the way we want to do it, and to enable us to continually improve the way we work or study.

The Technique is heavily explained on a 60+ pages book published on the website. Please visit the official website for more explanations.

A running Pomodoro

A running Pomodoro

Get Pomotux

Pomotux has been developed for the Software Engineering Project course at the Free University Of Bolzano by Daniel Graziotin, Riccardo Buttarelli and Massimiliano Pergher. We decided to release it under the GPL 3 license and host the code on Google Code. Everybody is free to contribute and join the project.

Pomotux is hosted on: http://code.google.com/p/pomotux/

Source code is available on: http://code.google.com/p/pomotux/downloads/list

The wiki contains more information and installation instruction, and a better description of the of the system implementation and Software Engineering outcomes

Activity Inventory Sheet

Activity Inventory Sheet

Technology Overview
The System has been developed using

  • C++ programming language (coding standard)
  • QT framework (4.5)
  • SQLite Database library
  • LiteSQL Object Relational Mapper framework

Useful tools used during development:

  • CXXTEST Testing Framework
  • CPPCHECK code analyzer
  • Artistic Style code formatter

Project Status
The project succesfully passed the exam with a maximum degree. It has been developed under Gnu/Linux and has only been tested under Gnu/Linux (various distributions). It should be cross-platform. The only component that brakes cross-platform is LiteSQL, that should work on any *NIX system but not Windows. We are looking for testers and people to port it under Max Os X (and possibly) under Windows

Related posts

Introduction To Software Testing

July 19th, 2009 bodom_lx No comments

Elements and Concepts – A brief overview


Download PDF version of the whole document. You can browse the article online but I encourage the download of the PDF since it is written with accuracy.


Introduction

This document contains some basic concepts and definitions about software testing. It has been written for studying a part of the Software Engineering Project course at my University. It is composed by a summary of the intersection of more than 10 different sources, all of which are cited. If you feel that some contents of this publication belong to your intellectual property and it is not cited, please contact the author who is willing to correct any mistake.

The first part of the paper focuses on the definition of the most important key aspects of software testing. Then some information about input partitioning are given. What follows is a research about code coverage and two useful and famous tools, Control-flow coverage and Data-flow analysis. A complete example on using those tools is then given. The second half of the document also contains the definition of the most important software testing practices.

The goal of this tiny document is to clarify key terms and therefore become a base start for the reader to go in deep with the interested topics. Another goal is to give a simple but clear example about data flow analysis, as I realized that not all the people understand the examples around the Net.

Software Testing

Software Testing is an empirical investigation conducted to provide stakeholders with information about the quality of the product or service under test, with respect to the context in which it is intended to operate. Software Testing also provides an objective, independent view of the software to allow the business to appreciate and understand the risks at implementation of the software. Test techniques include, but are not limited to, the process of executing a program or application with the intent of finding software bugs. It can also be stated as the process of validating and verifying that a software program/application/product meets the business and technical requirements that guided its design and development, so that it works as expected and can be implemented with the same characteristics. 1

Read more…

Related posts

Introduction to Aspect-Oriented Programming

June 16th, 2009 bodom_lx No comments

Like I did for Functional Programming, this post contains the mindmap that covers the basic elements of Aspect-Oriented Programming.
This is just a tiny summary of the most important points of AOP, and uses AspectJ in the examples.

Topics covered:

  • Definition
  • Response to Object-Oriented crosscutting concerns
  • Aspects
  • Advices
  • Inter-Type Declarations
  • Join Point Model: Join Points, Pointcuts, Advices
  • AspectJ tiny example

You can reach a browsable HTML export of the mindmap
You can download a PNG export of the MindMap.
You can download Freemind sources of the MindMap

Related posts

Introduction to Functional Programming

June 16th, 2009 bodom_lx No comments

For the Programming Paradigms course we had to study the concepts of Functional Programming.

So here is my usual mindmap regarding the topic. This is just a summary of the most important concepts of functional programming. It also summarizes the very well-written Functional Programming for the Rest of us publication, and uses its pseudo-Java language.

Topics covered:

  • Definition
  • Basic Units
  • Symbols
  • Concurrency
  • Higher Order Functions
  • Functional Programming and Design Patterns
  • Currying
  • Lazy Evaluation
  • Abstract Control Structures
  • Infinite Data Structures
  • Continuations
  • Pattern Matching

You can reach a browsable HTML export of the mindmap
You can download a PNG export of the mindmap.
You can download FreeMind sources of the mindmap.

Related posts

Some little updates

June 12th, 2009 bodom_lx No comments

I am so busy in these days. Today I was sick to study Mathematical Method For Physics, so I took the time to fix some pages of the blog.

First of all, I finally created a page for the Unipoli project to our Programming Project Java opensource Monopoli game. Give it a try, it’s funny and free! You can obviously download the binaries and the code, as well as all the documents we wrote during analysis and design phases. You can even download or browse the Javadocs! Here is a screenshot:

Unipoli - Board Overview

Unipoli - Board Overview

Then I also updated my CV that unfortunately remains in Italian. I am a bit confused about which language to use  everytime I write something, sorry!

Related posts

Unipoli

June 11th, 2009 bodom_lx No comments

Unipoli is a simple simulation of the very popular board game Monopoly by Hasbro. Unipoli is the Java outcome of the Programming Project course I followed in Academic Year 2007 – 2008.

I don’t know for how long the official project page will stay on Unibz servers, therefore I’m keeping this page on task3.

Project Members

  • Riccardo Buttarelli
  • Daniel Graziotin
  • Martin Leitgeb
  • Massimiliano Pergher

Mission Statement

This document was the first step made in facing the project:
The project will provide a simple simulation of the very popular board game Monopoly. Unipoli will allow a multiplayer experience (up to 8 human players) on the same machine but not over a network.
We will implement the classical Standard (Atlantic City version) Monopoly game board layout, produced by Charles Darrow, and later by Parker Brothers.
However, by virtue of being a virtual implementation of the real game, Unipoli will overtake some aspects of the real Monopoly game, giving to the players unique visual experiences. As example, we will highlight owned lands with the color associated to their owners. When a player decides to sell a property, the board will be obscured, leaving the lands owned by the player well visible.
Like in the original game, the purpose is to dominate the competition against the opponents, and be the last to survive. Due to time problems, we will not implement all the rules and game features. For example, hotels will not be included in our game version.

The GUI will consist of two main components:

  • A 2D top view of the game-board, that will occupy about the 80% of the window.
  • A sidebar containing information on players and the dice.

Players will be able to buy lands and build houses in case of monopoly. The opponents have to pay rents if a land is owned. There will be both factories and railroads.
Our game implementation will also feature the so-called Chance Cards.
There wonʼt be the possibility to play as the Bank. Money will just be considered as a number which increases and decreases. Therefore, a graphical representation of paper money is not scheduled.

Screenshots

Unipoli - Board Overview

Unipoli - Board Overview


Unipoli: user choices

Unipoli: user choices

Documentation

Source code and Javadoc

Binaries

License

Unipoli is released under the GPL v. 3

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http ://www.gnu.org/licenses/>.

Related posts