Software Development Methodologies I

Software dev methodology pic 4

“No matter how good the team or how efficient the methodology, if we’re not solving the right problem, the project fails.” – Woody Williams

This brief article outlines four popular software development methodologies including different approaches and some common themes. Each methodology has its own pros and cons and having some background on this subject will help you determine best path forward.

Waterfall. This methodology works best when you follow fairly sequential path from project initiation through deployment. Waterfall requires scope and requirements definition at the beginning of the project and design, development, testing and deployment follows. It requires comprehensive change management effort especially if scope/requirements change during later stages. This is a conventional methodology mostly used in large-scale enterprise projects. While it offers predictable project delivery it lacks speed and agility required to execute fast-paced product development.

Unified Processes (UP). UP phases include Inception (scope definition), Elaboration (architecture and risk identification/mitigation), Construction (basic function/features are available and product may require fine tuning) and Transition (product ready for end users). UP uses structured and rigorous documentation process including use cases and user scenario to define requirements. During design and architecture stages, UP uses component-based architecture, similar to object oriented programming, and UML (Unified Modeling Language) to document architecture and design. Many of the large enterprises use UP to streamline their project delivery capabilities.

Agile/Scrum. As name suggests, this methodology is ideal for fast-paced product development. It is highly adaptable, flexible and capable of delivering product even if product requirements continue to evolve. This methodology relies on regular team communication (often daily standup meeting) and quicker issue identification and resolution. Team continuously selects subset of requirements and delivers those within defined timeframe (aka Sprint).
Scrum is one of the Agile methodologies. Basic building blocks of Scrum includes team collaboration, functional product and process flexibility to cater to ever changing business needs. Typical Scrum roles are Product Owner, Scrum Master and Team Members. Product Owner creates vision and define/prioritize requirements. Scrum Master facilitates Sprint and ensures effective issue resolutions to meet Sprint goals. Team members have flexibility to choose their own ways to complete the tasks as long as their delivery support Sprint goals/objectives.

Extreme Programming (XP). XP relies on incremental planning, design refinement / product performance improvement, rapid development cycles, ongoing communication and immediate end user/customer feedback. All of these stages rely of team members’ commonsense (oftentimes extreme commonsense and hence methodology is called Extreme!). XP teams are generally self-managed with reduced emphasis on management and governance during product development lifecycle. Some other interesting aspects of XP includes ‘Team programming’ (one computer and two programmers), ‘Team ownership of product source code’ (anyone can change part of the code if necessary) and ‘Ongoing integration’ (code integration with rest of the system as soon as new code is ready and tested). You can leverage XP if you are in-charge of innovative product development.

Hope this article helps you put your priorities in order.
1)  Attempt to solve a ‘right problem’.
2) Define customer requirements, engage stakeholder(s) and deliver value to the customer.
3) Debate about and choose correct methodology to maximize your project success!

About these ads

About Hitesh Adesara

Hitesh is a seasoned IT professional with experiences in planning, designing, developing and implementing Information Technology solutions. He is a qualified Lean Six Sigma (LSS) process owner and has successfully completed Information Technology Infrastructure Library fundamentals (i.e. ITIL Interaction, Service Delivery and Service Support) training. He holds a B.E/B.S. Computer Science degree from M.S.University of Baroda (India), 'Business Analyst Certification' from UC Irvine (CA, United States) and 'Advanced Project Management Certification' from Stanford University (CA, United States). He currently works for a leading cultural training and exchange program provider firm in Northern California. He lives in Silicon Valley with his wife and two children. In his spare time he enjoys reading, playing tennis and hiking. You can reach him at contactahitesh@gmail.com. (c) 2014 Hitesh Adesara. All rights reserved. Opinions expressed are solely my own and do not express the views or opinions of current/past employers and clients.
This entry was posted in Project Management and tagged , , , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s