Understanding code is the key to software development

June 26, 2017

June 26, 2017

By Elizabeth Richards and Todd Erickson

Discover how software developers are like archaeologists, and why understanding source code – the key to software development – involves a lot more than digging.

Software engineers are often called developers. However, according to a number of experienced programmers, they spend the great majority of their time (78%) simply searching and understanding existing software, and the rest of their time (22%) actually modifying legacy software or developing new applications.

Programmers are forced to spend so much time finding and comprehending code because current tools and techniques are not technically savvy, and they are too focused on the searching process. They don't help developers understand how the code works together within the systems they serve.

In fact, a recent blog post compared the source-code searching process to archeology. It's a reasonable analogy given that the tools developers use are only slightly more advanced than rudimentary shovels and brushes.

Why is software development – an activity that's driving incredible technological change – so far behind the curve in building tools that help programmers comprehend the code they work on?

Artifacts

Searching for ancient relics and specific lines of code are both complex processes.

An archeologist doesn't use a bulldozer and dig in random locations. She researches excavation sites and uses advanced technology, such as satellite imagery to find optimum exploration locales and ground-penetrating radar for mapping. Then she carefully and methodically removes topsoil while analyzing and recording each artifact down to the smallest pottery shard.

Every relic she unearths builds her knowledge of the site, and the people and culture she's investigating. For example, the archaeologist may assemble a handful of pottery shards into a serving dish, which she studies alongside other artifacts to better understand an ancient culture's family meal rituals. She can easily share the dish with other scholars and store it for future analysis.

Each discovered artifact may also modify how she approaches the rest of the dig.

Code

In software development, Professor Vaclav Rajlich asserts that the processes of searching and understanding code require two phases called concept location and impact analysis. Concept location involves finding the lines of code to be modified and the relevant but disjoined source surrounding it.

Impact analysis examines how a proposed modification will impact the entire application, including performance, stability, intent, and secondary consequences in distant modules. Poor or incomplete impact analysis can lead to more bugs.

In essence, a developer spends his time in active knowledge construction, building an integrated mental model so he understands how a system is constructed and its purpose and intended results. Only then can he be confident enough to make changes.

Errors logs, debuggers, and grepping assist developers in finding specific lines of code – his shards of pottery. But the developer must reconstruct the code into the mental models necessary for understanding the system. And these models remain locked away in the developer's mind, making them difficult to share and retrieve over time.

The greatest shovel ever invented

But it doesn’t have to be that way. Phase Change’s technology will transform how developers search and understand source code and applications. A programmer will no longer have to manually and laboriously search and play connect-the-dots to build mental models.

We are developing assistive artificial intelligence (AI) that automatically analyzes source code and understands the human intent behind it, creating immersive application-visualizations that resemble a programmer’s mental models. These visualizations can be stored, retrieved, and shared similar to how an archaeologist saves and shares the artifacts she assembles.

A developer will collaborate with our AI agent using natural language to effortlessly locate source and move quickly beyond simply identifying concept locations to performing comprehensive impact analysis. He will be aware of every effect his modifications bring about, and work confidently with a rich understanding of the code and the application.

Because the goal isn't to search, it's to understand.

learn more about our technology

Elizabeth Richards is Phase Change's director of business operations. You can reach her at [email protected].
Todd Erickson is a tech writer with Phase Change. You can reach him at [email protected].

Leveraging software’s encoded knowledge to create an assistive AI — science podcast 4 of 4

February 16, 2017

February 16, 2017

This is the fourth and final in a series of practical talks by founder and CEO Steve Bucuvalas about Phase Change Software, what we are developing, the math and science behind our technology, and the impact on the software development process.

Using a whimsical example of dog banking, Steve discusses how the knowledge that’s encoded in software is normalized into a data structure, which enables us to create an assistive AI and solve the learning curve problem.

Podcast Slides and References

Time Stamps Slides and References
00:11 Steve Bucuvalas Podcast – Equality: The fundamental operation for software as data -- science podcast 3 of 4
05:15 PowerPoint Slide #1: Black-box view of Dog banking application -- the user (dog) view
05:21 PowerPoint Slide #2: White-box view of Dog Banking application -- the developer view
08:30 PowerPoint Slide #3: Merging the black-box and white-box views -- Dog Banking source code sliced into functional segments

Equality: The fundamental operation for software as data — science podcast 3 of 4

February 16, 2017

February 16, 2017

This is the third in a series of practical talks by founder and CEO Steve Bucuvalas about Phase Change Software, what we are developing, the math and science behind our technology, and the impact on the software development process.

In this podcast, Steve addresses the fundamental operation for software to be treated as data, which is equality, and begins by asking how we know when a fundamental unit of software is equal to something else? The first talk in this series introduces the idea of compiling programs into an AI representation. In the second talk, the Turing and Rice proofs are shown that they only apply to the mental domain of computation.

Podcast Slides and References

Time Stamps Slides and References
00:28 Steve Bucuvalas Podcast – Changing the essence of software and creating breakaway efficiency — science podcast 1 of 4
00:36 Steve Bucuvalas Podcast – The Turing machine, the Halting problem, and Rice’s use of the Turing proof — science podcast 2 of 4
02:50 PowerPoint Slide #1: Using C-language functions to show functional equivalence determination method
09:05 PowerPoint Slide #2: Stack Overflow thread about Turing's Halting problem -- Online Thread
10:34 Steve Bucuvalas Podcast – Leveraging software’s encoded knowledge to create an assistive AI — science podcast 4 of 4

Changing the essence of software and creating breakaway efficiency — science podcast 1 of 4

February 16, 2017

February 16, 2017

This is the first in a series of practical talks by founder and CEO Steve Bucuvalas about Phase Change Software, what we are developing, the math and science behind our technology, and the impact on the software development process.

In keeping with the physics' definition of the term ‘phase change,’ we are changing the essence of software. Taking something that is chaotic and turning it into something coherent. Taking something that is intractable and hard to understand and making it into an AI that actively helps every person in the software development process.

Math and science make the difference — video

January 5, 2017

January 5, 2017

Founder and CEO Steve Bucuvalas explains why Phase Change is well-founded in science and how it is overturning historical assumptions about computational theory.

 

Contact

651 Corporate Circle
Suite 209A
Golden, Colorado 80401
Phone: +1.303.586.8900
Email: [email protected]

© 2024 Phase Change Software, LLC