Software development is a process of writing and maintaining the source code.

Software Development

Software engineering treats the approach to developing software as a formal process much like that found in traditional engineering. Software engineers begin by analyzing user needs. They design software, deploy, test it for quality and maintain it. 1

Software development is the process of computer programming, documenting, testing, and bug fixing involved in creating and maintaining applications and frameworks resulting in a software product. Software development is a process of writing and maintaining the source code, but in a broader sense, it includes all that is involved between the conception of the desired software through to the final manifestation of the software, sometimes in a planned and structured process.Therefore, software development may include research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities that result in software products.2

Programming - the act or process of planning or writing a program.3

...the main activity you think of when you think about creating software is probably the activity the researchers refer to as “construction.”4

...construction is mostly coding and debugging but also involves the detailed design, construction planning, unit testing, integration, integration testing, and other activities...5

Construction is also sometimes known as “coding” or “programming.” “Coding” isn’t really the best word because it implies the mechanical translation of a preexisting design into a computer language; construction is not at all mechanical and involves substantial creativity and judgment.6

  • Software construction is the central activity in software development; construction is the only activity that’s guaranteed to happen on every project.
  • The main activities in construction are detailed design, coding, debugging, integration, and developer testing (unit testing and integration testing).
  • Other common terms for construction are “coding” and “programming.”
  • The quality of the construction substantially affects the quality of the software.
  • In the final analysis, your understanding of how to do construction determines how good a programmer you are...

Agile Software Development

Agile software development is a group of software development methods in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development, early delivery, continuous improvement, and encourages rapid and flexible response to change7

Manifesto for Agile Software Development8

Principles behind the Agile Manifesto

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Extreme Programming (XP)

Extreme Programming (XP) is an agile software development framework that aims to produce higher quality software, and higher quality of life for the development team.9

Lean Software Development

Lean Software Development is a translation of lean manufacturing principles and practices to the software development domain.10

Waterfall Model

Waterfall Model is a sequential design process, used in software development processes, in which progress is seen as flowing steadily downwards (like a waterfall) through the phases of conception, initiation, analysis, design, construction, testing, production/implementation and maintenance.11

2 Software development. (2017, August 2). In Wikipedia, The Free Encyclopedia. Retrieved 16:29, August 26, 2017, from https://en.wikipedia.org/w/index.php?title=Software_development&oldid=793555465
4 McConnell, S. (2004). Code complete, second edition. Redmond (Washington): Microsoft Press.
5 McConnell, S. (2004). Code complete, second edition. Redmond (Washington): Microsoft Press.
6 McConnell, S. (2004). Code complete, second edition. Redmond (Washington): Microsoft Press.
7 Agile software development. (2015, June 29). In Wikipedia, The Free Encyclopedia. Retrieved 05:26, June 30, 2015, from https://en.wikipedia.org/w/index.php?title=Agile_software_development&oldid=669176431
10 Wikipedia contributors. (2019, January 14). Lean software development. In Wikipedia, The Free Encyclopedia. Retrieved 17:46, February 17, 2019, from https://en.wikipedia.org/w/index.php?title=Lean_software_development&oldid=878395515
11 Waterfall model. (2015, May 5). In Wikipedia, The Free Encyclopedia. Retrieved 03:57, June 27, 2015, from https://en.wikipedia.org/w/index.php?title=Waterfall_model&oldid=660906933


Programming paradigms

Programming paradigms are a way to classify programming languages based on their features. Languages can be classified into multiple paradigms.1

  • Procedural which groups instructions into procedures
  • Object-Oriented which groups instructions together with the part of the state they operate on
  • Functional in which the desired result is declared as the value of a series of function applications


Cracking the Coding Interview: 189 Programming Questions and Solutions Cracking the Coding Interview: 189 Programming Questions and Solutions
Cracking the Coding Interview, 6th Edition is here to help you through this process, teaching you what you need to know and enabling you to perform at your very best. I've coached and interviewed hundreds of software engineers. The result is this book.

The Mythical Man-Month The Mythical Man-Month
Few books on software project management have been as influential and timeless as The Mythical Man-Month. With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects. These essays draw from his experience as project manager for the IBM System/360 computer family and then for OS/360, its massive software system. Now, 20 years after the initial publication of his book, Brooks has revisited his original ideas and added new thoughts and advice, both for readers already familiar with his work and for readers discovering it for the first time.

Code Simplicity: The Fundamentals of Software
The book exists to help all programmers understand the process of writing software, on a very fundamental level that can be applied to any programming language or project, from here into eternity. Code Simplicity is also written in such a way that even non-technical managers of software teams can gain an understanding of what the “right way” and the “wrong way” is (and why they are right and wrong) when it comes to software design. The focus of the book is primarily on “software design,” the process of creating a plan for a software project and making technical decisions about the pattern and structure of a system.

Understanding Software: Max Kanat-Alexander on simplicity, coding, and how to suck less as a programmer
In Understanding Software, Max Kanat-Alexander, Technical Lead for Code Health at Google, shows you how to bring simplicity back to computer programming. Max explains to you why programmers suck, and how to suck less as a programmer. There's just too much complex stuff in the world. Complex stuff can't be used, and it breaks too easily. Complexity is stupid. Simplicity is smart.

Software Engineering at Google: Lessons Learned from Programming Over Time
The approach to and understanding of software engineering at Google is unlike any other company. With this book, you'll get a candid and insightful look at how software is constructed and maintained by some of the world's leading practitioners.

Building Maintainable Software
Have you ever felt frustrated working with someone else's code? Difficult-to-maintain source code is a big problem in software development today, leading to costly delays and defects. Be part of the solution. With this practical book, you'll learn 10 easy-to-follow guidelines for delivering Java software that's easy to maintain and adapt. These guidelines have been derived from analyzing hundreds of real-world systems.

Building Software Teams: Ten Best Practices for Effective Software Development
Why does poor software quality continue to plague enterprises of all sizes in all industries? Part of the problem lies with the process, rather than individual developers. This practical guide provides ten best practices to help team leaders create an effective working environment through key adjustments to their process.


1 Wikipedia contributors. (2019, February 13). Programming paradigm. In Wikipedia, The Free Encyclopedia. Retrieved 16:25, February 17, 2019, from https://en.wikipedia.org/w/index.php?title=Programming_paradigm&oldid=883099865

Last edited by MichaelAlber .
Page last modified on Sunday August 1, 2021 20:50:19 PDT.