Stages of Software Development Lifecycle using a waterfall approach In the waterfall approach, each stage of the project delivered is a set of tasks that have to be completed by a planned deadline. A common set of stages for a software development project are [1]: System requirements Software requirements Analysis Program design Coding Testing Operations (until the system reaches its end of life - EOL) In theory, after the requirements are gathered, and the system was designed, implementation has to satisfy the requirements and the design without the possibility of changing the agreements made during in previous phases. Each phase is a silo of work, which is disconnected from other silos . This can result in a situation of conflicting requirements being detected during the testing or deployment phase without a chance to discuss these requirements with their authors. Maintenance is a special type of stage because there are cases when it is unknown, how long the system will be...
Did you ever learn about transactions and ask yourself, will I ever use it? Real life scenario When programming business logic, which involves multiple steps, you may have a need to make sure that all of the steps are persisted in the database. It is a very easy task in Java, because you simply write explicitly which step should be executed and imperatively decide what is the order. However, this is the "happy-path". What about the case, when e.g. the 9th out of 10 steps raises and exception? What about database changes made by previous 8 steps? Possible approach One of the solutions is to prepare a set of database queries which will reverse the changes made by each step. In simple cases, with few simple independent DML queries it is easy enough as you prepare one reverse query for each query executed. This is possible in the case, when each query makes individual, independent of previous queries, change. But, what if each query inserts different data, depending on the result...