Software Fundamentals

When developing software, especially at planning time, it's useful to not only consider functional requirements (the core of what the software must do), but also to bear in mind early on what the various "fundamentals" apply. These are often referred to as non-functional requirements, "-ilities", "fundamentals", "horizontals", or quality attributes.

Wikipedia has a perhaps overly-extensive list over in the quality attributes page. In practice, the ones I've seen applied most broadly are these.

Many of these are not just about enabling the capability in software ("testability") but also about actually implementing a plan to test the product (and make it performant, localize it, etc.)

Happy planning and development!

Tags:  design

Home