Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts

Friday, 12 September 2008

More than 500 Links in SoftDevLinks.com

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.

http://www.softdevlinks.com/

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?

Software maintenance is an important part of the software development activity, but it is also the less discussed. As an example of its relative importance, you could just compare the space occupied by "software maintenance" and "test driven development" in Wikipedia (and I have nothing against TDD). Furthermore, software maintenance is a topic that is mostly discussed by university scholars and no practitioners. Have you ever heard of a software maintenance guru or agile software maintenance?

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 !

August 13th, Borland's subsidiary CodeGear announced JGear™, a set of specialised plug-ins for the Eclipse open-source development platform. JGear augments Eclipse in three areas - Java application performance, visual development and team collaboration. According to CodeGear, the top pain points for Java developers using Eclipse stem from the difficulties of application performance tuning , Java code archaeology, coding and configuring Java servers and frameworks, team collaboration

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

If you follow the evolution of software development on Internet, you may have the impression that every new development is Web based and that the main areas of concern are whether you should develop new application with Ruby on Rail or if you should choose Flash rather than Ajax for the interface. However, if you ask developers, you may find that the Web is not as ubiquitous in their work as you may think.

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

Some of the last interesting additions to our directory of 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

The SANS (SysAdmin, Audit, Network, Security) Institute announces the first secure coding assessment and certification exams for programmers.

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 recent Evans Data survey was discussed in an InfoWorld article "Software developer growth slows in North America". It tells us that the worldwide software developer population is expected to grow from 14.5 million now to 19.5 million in 2010. North America will account for only 18 percent of those jobs in 2010, down from 23 percent today. While the North American share of the developer work force will decrease, the Asia-Pacific share will increase to close to 45 percent from 37 percent today. The share of developers from EMEA (Europe, the Middle East, and Africa) will slip from 35 percent to 30 percent. The share from Latin America will remain flat at 6 percent. The growth rate for the developer population in Asia-Pacific over the next three to five years is expected to be 15 percent, 8 to 10 percent in EMEA, but only 3 to 4 percent in North America.

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

Outsourcing is often closely related to offshoring in software development, but you can outsource onshore and you can create offshore subsidiaries. This seems to be the current trend for large occidental organisation that want to profit for lower costs in countries like India, but maintain a high control on the process. However, developers in Europe or North America feel no differences if their Asian "competitor" work for a subsidiary or for another organisation. A recent poll from Methods & Tools wanted to know if applications are developed exclusively inside organisations or if outsourcing software development services are used.

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?

A recent InfoWorld article publicized the blog post of S. Somasegar, corporate vice president of the Microsoft Developer Division, celebrating the fact that its Software Factories product had more than 100,000 downloads in six months. The InfoWorld article was rather negative on the technology as an analyst defined the Software Factory technology as "unimportant".

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

Microsoft has just released ASP.NET AJAX 1.0. This product (formerly known as "Atlas") integrates cross-browser client script libraries with the ASP.NET 2.0 development framework. ASP.NET AJAX is not just for ASP.NET developers. Developers targeting other server frameworks can take advantage of the Microsoft AJAX Library. This library is a standalone collection of the standards-based JavaScript classes included in ASP.NET AJAX. It’s supported by most popular browsers and can be used to build Web applications that integrate with any backend data provider. This free software can be downloaded here.

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)