Software engineering is a field of design, the process of creating a software project, and a discipline that studies design methods. Software design is a special case of Product and Process Design.
In the process of software design, its structure and interconnections of the elements of the system being developed are investigated. The result is a project that contains enough information to implement the system.
Functional design is the backbone of a software development project. There is a collection and analysis of functional requirements in any project; in small projects this stage can proceed unnoticed by its participants. Each project begins with a discussion of what exactly needs to be done, how the system should work, how many users the system will have and what they will do with it. For small projects, this discussion is the functional design stage; for larger projects, this is just the beginning. As practice shows, it is useful to record functional requirements in writing. We use use cases to write functional requirements. This technique allows you to describe complex processes in simple words, and most importantly makes them understandable for all interested parties. The customer can write the requirements together with the contractor, or maybe independently. Availability of ready-made functional requirements allows the customer to receive candidates-executors more accurate, detailed project estimates in a shorter period of time.