Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


advertisement
 

Exploring Software Development Methodologies

Gigi Sayfan brings some clarity to the concept of the methodology and investigates various prominent methodologies and their manifestation in processes, programming language, frameworks and tools.


advertisement

A software development methodology is a fairly nebulous thing. In this article, I'll try to bring some clarity to the concept of the methodology, investigate various prominent methodologies and their manifestation in processes, programming language, frameworks and tools.

What is a Software Development Methodology?

A software development methodology is a set of principles and practices that dictate how to develop software. Organizations sometimes adopt a unified methodology and sometimes choose a different methodology for each project. The scope of methodologies has expanded significantly over time. Originally, the focus was on designing and writing software. All the planning was done ahead of time and testing was an afterthought. Installation, deployment and maintenance were a completely separate world. Nowadays, all these aspects are considered part of the software development process. Different methodologies are designed to promote different aspects such fast development lifecycle, high confidence or reliability.

Prominent Software Development Methodologies

The Waterfall Methodology

The waterfall methodology is one of the most famous (or infamous) methodologies around. It promotes a linear approach where stages follow each other strictly: analysis, design, implementation, testing and evaluation. It has fallen out of grace and is almost never practiced as is by modern companies.

The Agile Family of Methodologies

The Agile family of methodologies evolved as a response to the waterfall model. The Agile approach emphasizes quick iterations (typically 2-4 weeks) where all the software development phases take place and big projects are broken into small, easy-to-digest chunks. There are many flavors of Agile methodologies: Extreme programming, Scrum, Kanban and more.

The Object-Oriented Methodology

Object-oriented analysis, design and programming is a methodology that focuses on seeing the world as objects that have state and behavior. The analysis and design often leads to class hierarchies. Note that the object-oriented approach can be practiced as part of a waterfall or Agile process. It is orthogonal in a sense because it focuses on a lower-level of abstraction.

Programming Languages and Methodologies

When designing a programming language, the designers often have a philosophy about how software should be developed and they try to make their language support this notion in various ways. For example, Smalltalk is a complete system that puts objects front and center. There is probably no Smalltalk program that doesn't use the object-oriented methodology. Other programming languages are more versatile, for example, C++ prides itself on being a multi-paradigm language.



The Go programming language was built around a very clear methodology of simplicity. The designers paid a lot of attention to what features they included--and maybe even more importantly--what feature they excluded from the language. For example, classes, exceptions and templates were explicitly excluded. While Go is an object-oriented language, it shuns many of the features that are present in most existing popular object-oriented languages (C++, Java, C#) to focus on the essence.

Some programming languages incorporate features of the development lifecycle that often left to other tools. Languages like D and Rust have built-in testing. Many languages provide standard packaging. Eiffel even promotes design by contract via language support.

What Methodology Should You Choose?

This is a pretty vague question. I would say with confidence that you should practice some form of Agile. The main question is how rigorously you implement your methodology. Developing software is hard. Whatever methodology you end up with make sure you practice it properly and adjust it as you learn more. The larger the scope and the team you'll need more and more processes, checks and balances in place.

Conclusion

Software methodologies are confusing and overlapping entities. You should be familiar with the main ones and understand their strengths and weaknesses. Different projects call for different levels of rigor regardless of the specific methodology. The Agile approach in general has been successful from small to large organizations. Your programming language may have some built-in notions about the right software development methodology. Pay attention so that you don't create unintended tension.

Object-Oriented Methodology


   
Gigi Sayfan is the chief platform architect of VRVIU, a start-up developing cutting-edge hardware + software technology in the virtual reality space. Gigi has been developing software professionally for 21 years in domains as diverse as instant messaging, morphing, chip fabrication process control, embedded multi-media application for game consoles, brain-inspired machine learning, custom browser development, web services for 3D distributed game platform, IoT/sensors and most recently virtual reality. He has written production code every day in many programming languages such as C, C++, C#, Python, Java, Delphi, Javascript and even Cobol and PowerBuilder for operating systems such as Windows (3.11 through 7), Linux, Mac OSX, Lynx (embedded) and Sony Playstation. His technical expertise includes databases, low-level networking, distributed systems, unorthodox user interfaces and general software development life cycle.
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date