Hi everyone,
I’m currently writing a PhD about software (tailored made) development contracts.
As a lawyer, I’m trying to understand an engineer’s point of view in a contractual relationship, and particularly, what developers/engineers struggle with during a software development project. The aim of my research is to find the best solution in case of litigation or even to prevent such litigation from happening between the customers and the developers in a tailored made software contract. To understand the real experience of developers, I’ve a bunch of questions, and it would be really helpful to have your point of view and (possibly) examples from experiences you had in various projects:
1. Which kind of process do you use for a software development project (for example, agile, cycle, waterfall, etc.)?
2. How do you define a software's failure?
3. Which are the most common failures that you can find?
4. How do you detect a failure?
5. Which is the procedure to repair a failure that you usually use and why do you use this specific procedure?
6. Which problems do you usually find in a software project regarding the client’s needs and communication?
7. During a project, have you already experienced a problem that has rendered the software development (technically) impossible and/or extremely hard to develop (for instance due to the development taking too much time, or becoming too expensive)?
8. How do you determine (or define) this impossibility or a piece of software that is “really hard” to develop?
9. How do you usually solve this kind of issue?
10. Do you have any other problems while developing software for a client (before, during or after the contract being concluded and/or performed, for example failed installation)?

Your answers will be extremely precious for my PhD thesis. Thanks a lot, in advance for your help and please feel free to also share these questions with your colleagues.