SoftDevLinks.com is a new general directory for software developers, testers and managers. Launched in June, it has achieved in September more than 500 links. If you have a blog, a web site, distribute a tool or work a consulting company related to software development, do not hesitate to add (for free) your links in this directory.
Methods & Tools is a free magazine with PDF and text issues that provide practical knowledge and information on all topics of software development and software engineering: UML, Agile Methodologies, Software Testing, Software Configuration Management, Java, .NET, Software Project Management,Quality Assurance, Software Process Improvement, Risk Management, Refactoring, IT News, etc.
Friday, 12 September 2008
Thursday, 6 March 2008
The Three Rules of Test Driven Development
Over the years I have come to describe Test Driven Development in terms of three simple rules. They are:
1. You are not allowed to write any production code unless it is to make a failing unit test pass.
2. You are not allowed to write any more of a unit test than is sufficient to fail; and compilation failures are failures.
3. You are not allowed to write any more production code than is sufficient to pass the one failing unit test.
You must begin by writing a unit test for the functionality that you intend to write. But by rule 2, you can’t write very much of that unit test. As soon as the unit test code fails to compile, or fails an assertion, you must stop and write production code. But by rule 3 you can only write the production code that makes the test compile or pass, and no more.
If you think about this you will realize that you simply cannot write very much code at all without compiling and executing something. Indeed, this is really the point. In everything we do, whether writing tests, writing production code, or refactoring, we keep the system executing at all times. The time between running tests is on the order of seconds, or minutes. Even 10 minutes is too long.
Robert Martin
http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd
Besides these rules and independently of an agile approach, I always like as a developer being able to verify quickly my code, because it makes much more easier to find all the errors I do ;o)
Tuesday, 30 October 2007
Lower Software Maintenance Period?
The main theory is that maintenance is "just" like software development on existing systems and does not need particular approaches or skill. Anyone who has spend time trying to understand an existing program or an architecture that has been twisted during some years knows that this activity is different from new projects.
Our last poll wanted to know what percentage of your software development budget was devoted to maintenance. Maintenance is defined as the process of correcting, enhancing and optimising deployed software. Here are the answers:
25% or less of the budget ...........37%
26% to 50% of the budget ............27%
51% to 75% of the budget ............24%
more than 75% of the budget .........12%
Number of participants: 433
The annual maintenance costs in the US are estimated at over $ 70 billion. According to the different studies produced in the last century, maintenance should cost between 66% and 90% of the total life cycle costs. We can see in our survey that the majority of the participants estimate their maintenance budget below the 50% threshold. If we accept that these numbers are representative of a modified situation, many hypothesis can be made to explain it.
The adoption externally developed software (like ERP) for the large enterprise application has replaced the in-house development of the last century. Thus, a large part of the maintenance budget could be displaced to the licence area. This could also push the development teams of participating organisations to work on smaller applications, so there is less maintenance because this type of software is more easily replaced, especially in the Web world. The new technologies (Web, services) could also explain the lower level of maintenance spending. Many organisations are currently redeveloping applications to use these new technologies, freezing in the meantime the evolution and spending on existing software. The rapid evolution of Web technologies reduces the life expectancy of application and therefore the maintenance budget. Even if the backend remains unchanged, there has been a many evolutions / redevelopment from the initial static Web to the current Rich Interface Application trend. Finally, the outsourcing of maintenance activities to lower cost countries reduce proportion of the maintenance part in overall software development costs for organisation that locates new development in the US or Europe, where the majority of the Methods & Tools readers are.
Resources and numbers on maintenance:
Software Maintenance Costs
A software maintenance survey
Software Maintenance As Part of the Software Life Cycle
A Study in Software Maintenance
Software Maintenance and Evolution: a Roadmap
Measurements to Manage Software Maintenance
Evolution or Maintenance of Quality Software: An exploratory interview study in nine Swedish organisation
Thursday, 16 August 2007
If You Can't Beat Them, Join Them !
The new JGear product line includes - JGear™ Performance for Eclipse, JGear™ LiveSource® for Eclipse, and JGear™ Team for Eclipse (both Client and Server editions). JGear Performance contains a variety of performance and tuning features such as memory and CPU profiling and debugging; automatic detection of potential memory leaks; and real-time monitoring of programs' use of virtual machine memory. JGear LiveSource includes a graphical EJB workbench and Web services designer; Unified Modeling Language visualisation of code artefacts and design for analysing an application's design and implementation; CodeGear's LiveSource technology that simultaneously replicates changes to models in the code and vice versa to aid alignment between software architects and developers; and creation of Enterprise JavaBeans and model relationships. JGear Team offers a complete agile team collaboration and development system based on open-source components. JGear Team is both a turnkey server solution and an Eclipse developer client solution JGear Team Server is a team development server stack based on best of breed open-source components such as Subversion, Bugzilla, Continuum, and XPlanner. JGear Team Server includes ProjectAssist™ - the JGear Team administrator client for simple single-click server installation and configuration, team project creation, user administration and setup.
This is a normal evolution for CodeGear as the future is difficult in the software development IDE sector if you want to remain the supplier of an isolated solution. Competition with open source and free products like Eclipse or NetBeans is difficult to sustain. A better strategy is to offer additional services that could be missing in the core open source solution and that developers are ready to pay some dollars to obtain. Acting like this in the Eclipse ecosystems, CodeGear recognises that its survival may depend on its ability to transform itself from software producer to plug-in developer.
http://www.codegear.com/
http://www.eclipse.org/
Wednesday, 23 May 2007
The Relative Importance of Web Development
Even if 66% of the participants develop the majority of their new applications with a browser as the interface, there is still a large portion of developers that are working today for operating contexts that are outside the Web world, like embedded software or Windows applications.
Get the full results of this poll here
Thursday, 17 May 2007
Software Development Articles
* Smells to Refactorings
This handy cheat sheet maps code smells to their likely refactorings with corresponding page references to source material contained in the books Refactoring: Improving the Design of Existing Code by Martin Fowler and Refactoring to Patterns by Joshua Kerievsky.
* Invasion Of The Dynamic Language Weenies
A critical and humourous look at the increased usage of dynamic (interpreted) languages for Web applications.
* Bare-Naked Languages or What Not to Model
Domain-specific language (DSL) technology was introduced at Microsoft as part of the software factories methodology. While DSLs are useful as stand-alone languages, placing them in the context of a software factory makes them more powerful and helps avoid some common pitfalls in applying the technology. This article explains how DSLs fit into the software factories methodology and how using the methodology can help DSL developers avoid some common pitfalls.
Tuesday, 10 April 2007
Safe Coding
Programming professionals can test their secure coding skills, find the gaps, and, if they choose, gain certified status. The examinations each cover a specific programming language suite and are designed to enable reliable measurements of technical proficiency and expertise in identifying and correcting the common programming errors that lead to security vulnerabilities. The exams will be administered in August in Washington DC on a pilot basis, and then will roll out worldwide through the remainder of 2007. The first tests are already available on the Web for the C and Java languages.
Security is surely one of the most neglected area of the software engineering discipline. The security/access model of a new project is often treated as last-minute activity after the functional requirements have been defined. Only companies operating in more sensible industries (banking for instance) have a more pro-active approach to this topic. Now with the increased openness of the internet world and the wide usage of open source code mainly based on interpreted languages, the possible vulnerabilities of applications have increased. Identifying possible security threads and applying programming best practices to prevent common coding mistakes is a goal that every internet programmer should have.
Wednesday, 21 March 2007
Slow Developer Growth in the USA?
A 4 percent growth rate is not bad when the overall population is growing at around one percent. In 2005, a Business Week article mentioned that recent growth rate in computer jobs was 7.5 %. If the InfoWorld article title seems negative for North America and Europe, but we should not forget that demographic trends for both regions are also signalling a slow growth of working population that starts already from a smaller base. This is the contrary of the Asia region where there are already more than 2 billion people with a younger age pyramid. If you are interested by this topic. The US Census Bureau has an interesting Web site with a database containing statistical tables of demographic data for 228 countries and areas of the world.
Tuesday, 27 February 2007
More Offshoring than Outsourcing in Software Development
The majority of the 346 respondents were equally split between those that are not using outsourcing and those that use it, partially or completely. Complete outsourcing is done by only 6% of participants. There is a need to keep internal expertise when outsourcing is used. The phenomenon of outsourcing of IT services is well known. An article of McKinsey Quarterly estimated the global market for IT and business process outsourcing to $30 billion. The part of software development in this growing market is less known and discussed. In another recent survey published by the Software & Information Industry Association (SIIA), 60% of the participants were offshoring software development efforts and half of them were doing it with external providers.
Get the complete results of this survey with references on Methods & Tools
Friday, 2 February 2007
Software Factories: Success or Failure?
Initiatives like the software factories or the software product lines are often badly considered in the software development world. First, they are not really understood. In the InfoWorld article, the analyst is quoted comparing software factories and object-oriented programming. The industrial background of these approaches could seem also more difficult to transpose in the world of consumer or business applications development where software is not closely connected to devices. I think however that they provide a very interesting vision for projects that are interested in developing software for a multi-customers target or with a strong focus on product evolution.
More information on the Web:
Software Product Line Development community Web site
Introduction to the Emerging Practice of Software Product Line Development
Making an Incremental Transition to Software Product Line Practice
Software Product Line Engineering with Feature Models
Tuesday, 30 January 2007
Microsoft Frees Ajax
With this release, Microsoft joins, albeit late, a crowded market for Ajax related frameworks provided by open source projects, small or large (Google) companies. Market is perhaps not the right word as a vast majority of solutions are available for free. Microsoft product will certainly get some following in the .NET community and this will hurt current providers of paid frameworks like Telerik or zumiPage. With its free client-side library, Microsoft can also appeal to people looking for developers outside the ASP world.
More information on the Web
Ajax: A New Approach to Web Applications (original Ajax article)
Wikipedia on Ajax
Wikipedia on Ajax frameworks
Comparison of AJAX frameworks for ASP.NET
Exploring Ajax Runtime Offerings (java oriented)