Wednesday, June 17, 2009

Is Traditional Software Development Process Relevant Today?

Waterfall life cycle model, considered to be one of the traditional life cycle models that has identified different stages when building software applications. It starts off with requirements, then design, implementation, testing and lastly, maintenance. Every phases of the waterfall should be completed before moving into the next phase. An entry and exit criteria is used to assess the completeness of each phase. I would say that this approach to software development can still be applied to the current practice of building software applications.

Due to the inherent complexity of software applications, new development paradigms (rather than just life cycle models such as spiral, prototyping, etc.) have emerged to cater for changing requirements of customers in which the traditional waterfall model cannot address. One of these was the Rational Unified Process (RUP), a heavyweight process aligned to SEI's Capability Maturity Model (CMM). It consists of phases, namely; inception, elaboration, construction and transition. However, due to its nature, it was intended for large scale projects wherein software processes should be defined in development. Another is the birth of Agile Development consisting of Extreme Programming (XP), Test-Driven Development (TDD), Scrum, and many others. Agile processes are more flexible in terms of handling software processes and more focused on the Agile Manifesto as a baseline for its practice. Nowadays, agile practices are becoming widespread and more software companies are using it.

In this new era of computing, the same software life cycle processes (see IEEE/EIA 12207.0 Standards for details) were used for development. Every product needs to have pre-defined set of requirements or features. Then, these features will be realized in the design and implementation using different technologies and tools. After which, it will be subjected to software testing as a means of quality control before deploying it to customer. Software applications now are developed iteratively (rather than linearly as waterfall) to address the changing needs and demands of customers (rather than a fixed set of requirements). The main foundation is still waterfall life cycle. One thing is certain, software companies have their own way of building software for different types of software projects and Waterfall is one of them...still.

Sunday, June 14, 2009

Reading Materials for SE Professionals

There are lots of resources in the web for software engineering materials to read on. Normally, I don't use only one book for readings and I am very selective about what I read especially in terms of how they practice software engineering as a whole.

For a book, the classic reference that you can have is from Roger S. Pressman in his book entitled "Software Engineering: A Practitioner's Approach" which is currently on its 7th Edition. Pressman's website can be found here. He has provided software engineering resources there that can be a useful material for learning. Another classic SE book is from Ian Sommerville in his book entitled "Software Engineering" which is currently on its 8th edition. As with Pressman, Sommerville's book has been published for software engineering professionals even when software engineering was just considered as a best practice for developing software. What's good with his website was that all the chapters of his book in slide presentations and pdf formats can be downloaded for free. I don't know why he did it but it was really good. You can check his new website here.

One of my favourites for SE readings was the book of Karl Wiegers entitled "Creating a Software Engineering Culture". It was really a good book because it emphasizes the essence of building an SE culture where everybody is committed towards building quality into the product. It has also a lot of strategies for imposing software engineering strategies and practices in software engineering organizations. You can visit him at Process Impact. Another is the book of Steve McConnell entitled "Professional Software Development: Shorter Schedules, Better Projects, Superior Products, Enhanced Careers" which illustrates how software development should be dealt with and some issues with regards to how people build software products. Visit his site here. I would really recommend you to read it.

For some internet resources, you can apply for membership with the IEEE and IEEE - Computer Society to subscribe to various technical magazines and journals. Every month, they had this Computer Magazines which can be interesting to read for new developments in Computing. Another is the IEEE Software which is available bi-monthly. It is a very good source for new knowledge and interesting articles. You can visit IEEE-CS for details. The IEEE-CS developed this IEEE Software Engineering Online which is patterned to SE Body of Knowledge. What they did was to compile all available resources by SE Knowledge Areas such as requirements, design, construction, etc. The website is here for details.

Well, I guess those are some of my favourite resources for software engineering theory and practice. Although it can be technical, you can try visiting the Software Engineering Institute here. The works of Watts Humphrey towards emphasizing the software process framework (PSP, TSP, & CMM) in building software greatly contributed to how SE has evolved through the years. I would only suggest that you need to criticize what you read on the net as they may sometimes lead you to a different perspective of how Software Engineering is practiced.