Considerable debate around how best to manage software development.
Most proposed 'processes' have a parentage in the 'Waterfall Model'; roughly:
Requirements
Design
Coding
Testing
Installation
Maintenance
Like a good many parents who try their best, its children have nothing good to say about it.
Critiques
Largely focused on the fact that software was never fully completed, but always being re-visited at different scales. In particular, it is unhelpful not to go back to users and consult once a basic system is drafted.
Popular alterative is Iterative and Incremental development, where, after initial Requirements are outlined, there is a cycling through the development units, taking important and high-risk elements first.
This is sometimes combined with the Waterfall model as the 'Iterfall model'. Experience suggests the broad sweep of this matches with beginner's natural inclinations.
New processes
Based on the Iterative and avoiding the over-management of the Waterfall method: Agile software development processes include:
Rational Unified Process
Extreme Programming
Kanban and SCRUM for communication
Short development sprints
Continuous Integration
Main issue is to concentrate on user needs.
UML
An intrinsic part of the development process.
From: Use Cases
Through: Class Diagrams
To: Activity Diagrams
Development stages
Refining user requirements.
Dividing code (e.g. by important high-risk functions first).
Keeping users informed.
Development.
Usability testing.
Bug hunting.
Refactoring.
Alpha and Beta testing.
Releases.
Deciding on the next set of functions to tackle.
Increasingly releases tackle a few functions on a short timescale rather than major releases with a longer gap ("RERO").
Licensing
Different options on a spectrum:
Open source.
Maintenance contracts.
Open standards.
Community built.
Freeware.
Adware.
Commercial.
Computer Ethics
Rapidly growing field:
Traditional elements:
Privacy and data protection
Copyright and Piracy
Software supplier responsibilities
Newer:
Big Data use
Robotic ethics
Control by computers
Integrating computers into our worldview
A good starting point for the newer stuff is Floridi et al.
Installing
Three parts to installation...
Get the files to them.
Check they have the JDK.
Let them run the program.
Ideally we want to let them run by double-clicking a name or icon...
Can get them to set this up as a shortcut themselves.
Can compile as a .exe.
Can use a self-executing jar file.
Can use a .bat file or wrapping exe.
Summary
Getting a strong project outline at the start will help you resource a project, as will having a clear delimitation of coding activities.
However, project frameworks need to have flexibility built in to cope with project evolution. Start with an ordered list of functionalities, but consult with users frequently.
Look into formal software development processes if you have to work with teams.