Software complexity measures how complicated a piece of software's internal structure is. It has great influence on the maintainability and testability of software. This talk is about how to measure the software complexity and how to decrease the complexity and improve the design.
Complex != complicated. Your software might have very complex functionality, but you don't have to implement it in a complicated way.
I will introduce you a free tool to measure it.
I will show you the reason and statistics on the relationship between software complexity and bugs, maintainability and testability.
High software complexity implies design problems. To solve the problem, it's not always breaking one big method into two. It might imply different problems (we call them code smells), and there are different ways of improving them (we call the ways refactoring). You will see some examples on it. Some examples will be from the complexity measurement tool itself.
I'm the author of the software complexity measurement tool, written in Python, of course. You can find it at: https://github.com/terryyin/lizard