Using Phonegap as a Mobile App PlatformThis report will provide an overview of the challenges and opportunities brought by PhoneGap when building cross-platform mobile applications for touchscreen smartphones and tablets.
On the Importance of Yerba Mate in the Software Development ProcessThis paper will highlight the results of an extensive research conducted since the mid 90’s, on the effects of the consumption of beverages based in the plant known as Ilex paraguariensis, in the framework of software development process activities in South America and some small parts of Europe.
Dangers of PrototypingFrederick P. Brooks Jr. has written about prototypes, saying that they are not only useful but strictly fundamental pieces of the overall software process, as in many other engineering activities. He gives the example of a pilot chemical plant, prepared to process 10'000 units per day instead of the 2 million units a day that the final plant would have to handle, in order to demonstrate the feasibility and uncover some unforeseen problems.
Saving a Failing ProjectIn 2006 I had the opportunity to work as a “project leader” into a small failing project. Three developers were working in an ad hoc basis, creating a software application for an important client (a government office in Lausanne), without any kind of detailed formal specification, without any kind of design documentation, and with strong pressure from the management to release the application, even if not in an usable state. Needless to say, the project was also beyond budget.
Adding ManpowerPublished in 1975, “The Mythical Man-Month” is considered an all-time classic in the software engineering field. The book author, Frederick P. Brooks Jr., used his experience as the project manager of the IBM System/360 and its software, the Operating System/360, to explain a common set of problem patterns, applicable to other software projects as well.
CertificationWhile several other professions have a long, established and standard procedure of certification, the title “software engineer” is applied to both self-made developers, turned into experts of some technique, or to people with PhD degrees, and a long history of both academic and professional achievements.
Challenges for Software EngineersSoftware Engineering is the youngest of all the professions, being born around 50 years ago, but since then it has been continually improved. Practicers have fiercely debated upon it through the years, given the extremely fast pace of the innovations in the field, and the extremely difficult and inherently dynamic nature of software. Many trends have appeared and vanished, and many others will come.
A Watch - from an OOP PerspectiveA watch might be one of the most common types of objects, but it remains also one of the earliest pieces of human craftmanship to show an extreme level of complexity, all contained in a small amount of space. Since the late 1700s, artisan watchmakers in Switzerland and elsewhere have shown their pride and skills creating watches called “Grande Complications”, containing thousands of individual parts and performing incredible functions:
Total Quality Management and SoftwareTotal Quality Management is one of the founding pillars of modern mass-production economy, of which the software industry is by far the youngest (and most rebel) child. This article will provide a short discussion on some TQM principles and about their applicability to software projects.
Factors of Software Project QualityI strongly consider that the following three items are of high relevance for software project quality:
About Operating Systems, Abstractions and APIsCharles Petzold, in its book “Code”, states the following: “In theory, application programs are supposed to access the hardware of the computer only through the interfaces provided by the operating system.”
How to Test Software Security?Howard and LeBlanc give a very complete answer to this question in their classic “Writing Secure Code” book:
Design by ContractEven if Design by Contract is a trademark (Eiffel Software, 2007) the idea behind it is the more general one of “defensive programming”. As software developers, we often concentrate our efforts in the main code of the application, which is the interesting part, and that provides the realization of the use cases identified during the early phases of the project.
About Mercury TestDirector for Quality CenterMercury TestDirector for Quality Center is an enterprise-class solution, recognized as one of the most complete and integrated software suites geared towards the management of testing- and quality-related activities. Mercury Interactive, the company behind TestDirector, was bought by Hewlett Packard in 2006 for USD 4.5 billion (Wikipedia). TestDirector is used by several important organizations such as Nextel, the United States Navy, Nestlé, Qualcomm and Shell (Mercury Website, 2007a).
The Explosion of the Columbia Space ShuttleThe explosion of the Columbia Space Shuttle uncovered several internal problems in the National Aeronautics and Space Administration (NASA). This paper will summarize the reasons of the accident, highlighting the organizational issues, and provide an overview of the roles played by the different stakeholders of the project.
Web Development is Software DevelopmentI have been developing web applications since 1996, and I still do a fairly large amount of web development nowadays. During these years I have seen some common misconceptions and myths about web development, that ultimately have a direct impact in the usability of the system. I will outline these in this article, providing at the end my opinion on how to achieve a proper QA process.
POSIX Device FilesModern operating systems provide a clear separation of the kernel processes from those running in user space, which prompts the question of how to access I/O devices from user processes, without breaking the above mentioned architectural separation, which guarantees stability, security and performance.
ViacardDesde hace unos meses que vengo siguiendo un blog argentino llamado Viajé como el orto, por sugerencia de hernún. Básicamente, en Buenos Aires se viaja cada vez peor, y esto está llegando a niveles alarmantes, muy lejos de ser anecdótico.
Users as TestersBoth users and black-box testers approach software with apparently similar attitudes; however, they have fundamentally different goals. With this article I will try to expose some of my ideas about this dichotomy.
Application FrameworksOne of the most pragmatically influential changes in software development, since the late eighties, was the introduction of several object-oriented frameworks, in different programming languages. This article will provide a short overview of their impact in the software engineering field.
Schedule Issues in Software ProjectsTime is the ultimate dictator: “Time is also the one variable that has the least amount of flexibility. Time passes no matter what happens on a project.” (Schwalbe, chapter 6, page 202). As a result, any problem regarding the schedule of a project is likely to be the most difficult one to manage.
About Corporate PoliticsPolitics are part of our daily life. Nevertheless, the word has got a bad reputation in the IT world (and elsewhere, too), thanks to famous failures and managed disasters, but the truth is that to succeed, projects need politics - and project managers should know it well.
Peer to Peer: An Overview“P2P” or “peer-to-peer networking” is maybe one of the most controversial and interesting trends in the dawn of the new century; its complete decentralization challenges all definitions of private intellectual property and creates new technological, commercial and juridic challenges.
AOP and the DataServices ProjectFive years ago I worked as a Software Engineer for a startup, based in Geneva, Switzerland, which had the goal of creating a web-based systems management console, to control and monitor the status of large computer installations, much like Microsoft SMS (Systems Management Server) does. This tool would eventually benefit from being a web-based application, and as such it could be used from anywhere, without having to install a “fat client”; just launch a browser, point to a particular URL, and you are done.
TCP FriendlinessTCP congestion control tries to bring solutions to the problem of packet loss, which happens in networks for several reasons:
Scrum Software Development ProcessIn this article I give an overview of the Scrum Software Development Process. This methodology was first described by Takeuchi and Ikujiro in their 1986 book “The New New Product Development Game”, and was initially meant to manage any kind of product development project. This methodology, for example, has been used in “real” product development projects by companies such as Fuji-Xerox, Canon, Honda, NEC, Epson, Brother, 3M, Xerox and Hewlett-Packard (Schwaber). In the nineties it was adapted for software development projects.
Intelligent Software Agents - a .NET ExampleSoftware Example In the February 2006 issue of MSDN Magazine (http://msdn.microsoft.com/msdnmag/), Matt Neely describes a .NET implementation of mobile agents:
A Case for Compilers: a Fake PaperThis morning I said to myself; I should write something for my blog… but had no subject to write about; so I found a faster way: I went to http://pdos.csail.mit.edu/scigen/ and asked the SCIgen Automatic CS Paper Generator to create a document suitable to post here, to keep you entertained for a while. The results are amazing!
About OOP and Other Programming ParadigmsDoes OOP reflect a “natural” way of thinking? Is it a better choice than the procedural programming paradigm?
Quick Comparison of C# and RubyI have been working as a software developer since 1996, and as such I’ve used a variety of different languages, both compiled and interpreted. But the who languages that I know and use most today, are two somewhat different ones, C# and Ruby. I will begin my presentation with a short explanation of both, providing their major similarities and differences, and then providing some code samples of both.
About Operating Systems and Networks“The true operating system is the net itself”. This phrase, common marketing argument in the late nineties, made me remind that in the eighties, Sun Microsystems’ founder, Scott McNealy, used the slogan “The Network is the Computer” to describe his vision.
Hardware PolymorphismSince data and instructions are stored in RAM in pretty much the same way, a priori the CPU cannot distinguish each other, but by the cycle in which the binary chunk is fetched from memory. In the case of instructions, it then needs to decode the operation codes into instructions, with the added problem that if the operation is performed on data that is not implied by the operation code, the results are wrong or even catastrophic.
What Will the Software Architecture Discipline Look Like in 10 Years' TimeThis is a tricky question; after all, Bill Gates himself published a book in 1995, “The Road Ahead”, where he only slightly talks about the World Wide Web:
Primer Parcial de Historia Económica y Social ArgentinaEstos últimos cuarenta años, ricos en acontecimientos, vieron desfilar en el Gobierno Nacional a no menos de 16 presidentes, 37 ministros de economía y nada más ni nada menos que 5 unidades monetarias (con un factor de 10^13 entre el $ m/n y el $ de 1991…) De más está decir que en estas condiciones, el simple hecho de mencionar las palabras “Industria Argentina” significa reconocer innumerables escollos y dificultades de toda índole.