Software development is the act or art of working to produce or create software. The main purpose is to meet some needs of potential users.
Software development is also the process of writing and maintaining source code including research, design, implementation, modification, re-engineering, verification, maintenance, software documentation, etc.
As I come from industrial engineering, when I started working at software engineering I liked the waterfall development model that had its roots in manufacturing and construction industries, in which subsequent changes were costly, so that the processes previous design had to be very precise and error free.
First phases in the software development process involve departments as marketing, engineering, R&D and general management but normaly they are not involved sufficiently in the requirements specification early in the process of project development, so that the needs of customers or end-users are not well-defined by the first time.
The waterfall model is easy to understand because it is a sequential model, but requires that development processes are rigorous as in the case of the building architecture and this doesn't usually happen in software architecture.
For this reason you can not pass from one process to another as in a waterfall, unable to turn back because the software application programs tend to be adapted throughout all their life cycle to satisfy the user needs, involving the customer as much as possible, and should be easy to modify as a smart building.
The book The Mythical Man-Month shows us the software engineering problems, spelling out the difficulties of software development, principally:
1) Adding manpower to a late software project makes it later (man-month increases!)
2) After users use our software application, when they know what want.
As there is always a deadline and changes are finite, otherwise the development can not be completed, and there arises the need for software releases life cycle.
A good software code is constantly changing to make sure we end up with the simplest, and best possible application that reflects the current needs of the user.
To my project of knowing how to make a Perpetual Calendar, I won't add man-months more than mine for not making it a perpetual development.