Dangers of Prototyping
Frederick 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.
Saving a Failing Project
In 2006 I had the opportunity to work as a “project leader” into a small failing project.
Published in 1975, “The Mythical Man-Month” is considered an all-time classic in the software engineering field.
While 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 Engineers
Software Engineering is the youngest of all the professions, being born around 50 years ago, but since then it has been continually improved.
A Watch - from an OOP Perspective
A 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.
Total Quality Management and Software
Total 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.
Factors of Software Project Quality
I strongly consider that the following three items are of high relevance for software project quality:
About Operating Systems, Abstractions and APIs
Charles 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 Contract
Even if Design by Contract is a trademark (Eiffel Software, 2007) the idea behind it is the more general one of “defensive programming”.
About Mercury TestDirector for Quality Center
Mercury 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.
The Explosion of the Columbia Space Shuttle
The explosion of the Columbia Space Shuttle uncovered several internal problems in the National Aeronautics and Space Administration (NASA).
Web Development Software Development
I have been developing web applications since 1996, and I still do a fairly large amount of web development nowadays.
POSIX Device Files
Modern 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.
Users as Testers
Both users and black-box testers approach software with apparently similar attitudes; however, they have fundamentally different goals.
One 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.
Schedule Issues in Software Projects
Time is the ultimate dictator: “Time is also the one variable that has the least amount of flexibility.
About Corporate Politics
Politics 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 Project
Five 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.
TCP congestion control tries to bring solutions to the problem of packet loss, which happens in networks for several reasons:
Scrum Software Development Process
In this article I give an overview of the Scrum Software Development Process.
Intelligent Software Agents - a .NET Example
Software Example In the February 2006 issue of MSDN Magazine (http://msdn.
A Case for Compilers: a Fake Paper
This morning I said to myself; I should write something for my blog.
About OOP and Other Programming Paradigms
Does OOP reflect a “natural” way of thinking? Is it a better choice than the procedural programming paradigm?
Quick Comparison of C Sharp and Ruby
I have been working as a software developer since 1996, and as such I’ve used a variety of different languages, both compiled and interpreted.
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.
Since 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.
What Will the Software Architecture Discipline Look Like in 10 Years' Time
This 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: