Jack the Ripper and legacy codebases have more in common than you'd think. Inspired by forensic psychology methods, you'll learn strategies to predict the future of your codebase, assess refactoring direction, and understand how your team influences the design. With its unique blend of forensic psychology and code analysis, this book arms you with the strategies you need, no matter what programming language you use.
Software is a living entity that's constantly changing. To understand software systems, we need to know where they came from and how they evolved. By mining commit data and analyzing the history of your code, you can start fixes ahead of time to eliminate broken designs, maintenance issues, and team productivity bottlenecks.
In this book, you'll learn forensic psychology techniques to successfully maintain your software. You'll create a geographic profile from your commit data to find hotspots, and apply temporal coupling concepts to uncover hidden relationships between unrelated areas in your code. You'll also measure the effectiveness of your code improvements. You'll learn how to apply these techniques on projects both large and small. For small projects, you'll get new insights into your design and how well the code fits your ideas. For large projects, you'll identify the good and the fragile parts.
Large-scale development is also a social activity, and the team's dynamics influence code quality. That's why this book shows you how to uncover social biases when analyzing the evolution of your system. You'll use commit messages as eyewitness accounts to what is really happening in your code. Finally, you'll put it all together by tracking organizational problems in the code and finding out how to fix them. Come join the hunt for better code!
What You Need:
You need Java 6 and Python 2.7 to run the accompanying analysis tools. You also need Git to follow along with the examples.
Domain-Driven Design: Tackling Complexity in the Heart of Software
The software development community widely acknowledges that domain modeling is central to software design. Through domain modeling, software developers are able to express rich functionality and translate that functionality into software implementation that truly serves the needs of its users. Despite its obvious importance,...
Collins Writing for Ielts
If your writing is preventing you from getting the score you need in IELTS, Collins Writing for IELTS can help. Don't let one skill hold you back. Collins Writing for IELTS has been specially created for learners of English who plan to take the Academic IELTS exam to demonstrate that they have the required ability to communicate...
Algorithms in a Nutshell: A Practical Guide
Creating robust software requires the use of efficient algorithms, but programmers seldom think about them until a problem occurs. This updated edition of Algorithms in a Nutshell describes a large number of existing algorithms for solving a variety of problems, and helps you select and implement the right algorithm for your...
Taboo: 10 Facts You Can't Talk About
It has become virtually impossible to honestly discuss race, gender, and class issues in mainstream American society because if you dare repeat certain "tabooo truths," you'll be ostracized as a bigot. Professor Wilfred Reilly (author of Hate Crime Hoax
) fearlessly presents 10 of these truths here and investigates...
Cognition in A Digital World Massive changes are occurring in society regarding the delivery of information
to individuals and the way individuals process this information. These
changes happen at work, at home, and in schools; the Internet and the
World Wide Web (WWW) are changing people’s working lives, leisure
time, work settings, and educational...