Articles on Software Development Process
We begin the article by presenting a brief historical perspective on software development. We present the view of several software practitioners, who express different views on how software should be developed. Two major schools of thought in this context are presented: Software engineering and software craftsmanship. We will then see how agile and iterative development learns from the mistake of the flaw of the traditional Waterfall model in software development. We incorporate some of the best practices based on our experience and beliefs, inspired by a few famous agile and iterative development methods, in an attempt to formulate a well-rounded method. The article is concluded by presenting some interesting yet controversial views in agile and iterative development, such as the right team size, good estimation technique, and the debate on high tech or high touch approach. We also give some advice for a successful adoption and implementation of agile and iterative development.
As we all should know, two heads are better than one. Teamwork is the key to success. When you enter the industry to work as a software engineer, you will be working with groups. However, when working on a project, how do you get access to all the information you need to accomplish your assigned task? This is where I introduce you to the practice of distributed software development. Distributed software development is the sharing of information between others to accomplish a main specific task. In today’s industry, almost all company’s used distributed software development practices. In this article I will be discussing issues relating to why we use distributed software development, what type of tools support distributed software development, and how distributed development may influence the effective construction and use of an application framework. I will also discuss issues such as heterogeneous platforms, project management concerns, communication barriers, cultural and social differences, time zone changes, system integration challenges, and best practices. Then I will discuss the advantages and disadvantages of software collaborative development. This article should give great insight to those who just entered the industry to work in the profession as a software engineer.