After many years since software design first started, it is still not matured like other disciplines such as electrical or mechanical engineering design in such a way that they are repeatable with defined methods, processes, artifacts, and so forth. For example, electronics systems are based on the fundamental of physics and chemistry. Software does not work based on these fundamentals, and many are still questioning the necessity of software engineering. We show one of the ways to do software design, particularly on telecommunication systems, that demonstrate a practical software engineering practice. We show that software development is very much like art, science and engineering. We show how do we design and specify a software feature systematically with disciplines, and further suggest the skills required for software professional.