Introduction Software development is the construction of system or application software that can be deployed on computers to execute repetitive tasks; more or less this software automates manual tasks. Software development is very often understood as programming, or writing a source code by using a particular computer language, but it can also include all other tasks from an initial idea to the implementation of the same idea. Implementation in this case means specification of all details or algorithms, design, programming, testing, deployment, and maintenance. While most of the current literature is dedicated to the description of methodology and processes (Sommerville, 2001; Larman, 2005; Leffingwell & Widrig, 2000; Beck, 2002; Beck et al., 2001; Beck et al., 2001a), a very important part, the implementation platform, is often ignored. The reason is probably based on the understanding that the methodology should be independent from implementation details. The description of an implementation platform is ignored, and it is assumed that a method implementation requires a computer. This assumption is, of course, correct; because in order to execute the software we need a processor and hardware. This paper is an attempt to fill this gap information, and to draw attention to the concept that an effective development environment requires adequate tools. To be productive and effective, any kind of production requires tools, no matter where--in civil engineering, construction, mechanical engineering, or software engineering. Today it is unimaginable to even think about producing machine parts manually. This is a job for highly specialized machines connected to the computers, with their operations managed by Computer Aided Design (CAD) systems. Some will argue that software development is different, and of course it is, as any production type is different; however, the use of tools is a common pattern, and replacing manual work improves productivity, reduces the number of errors, and, generally speaking, significantly improves the average product quality. While it can be argued that these tools and the development environment setup are important for any software development method, we believe that an effective development environment is more vital in the agile and distributed development environment. In the case of the agile development approach, waiting a day or two for a new release to be deployed and tested is not an option. Short iteration requires prompt feedback. Also, what is very important today, when outsourcing is present, is prompt and timely information-sharing and storing, even in small development teams. Although communications through e-mail messages, chats, and over video conferences can help to share information and quickly clarify issues, they do not guarantee that information, as well as any conclusions or actions, will be stored in a repository that enables fast and easy searching, filtering, or retrieving. An effective collaboration environment needs tools that can inform and warn the stakeholders about any kinds of changes. Setting up an effective development environment in advance is very rare. Development environment setup, as well as using of proper tools, is mostly left to the particular developer. Although many IT companies are aware of the need to use an effective development environment and standard set of tools, very seldom does this awareness assist in the choosing of an Integrated Development Environment (IDE) framework and target database software. Aside from creating an ineffective use of tools, this approach can also create a lot of issues in the future. An example issue is the replacement of skilled developers with those that are not familiar with the tools, or tool installation and configuration. An effective development environment can significantly speed up the software development process and improve final product quality. …
Read full abstract