Software design is described as the process of defining the architecture, components, interfaces, and other characteristics of a system or component plus the result of the process that births the design with an overall aim of creating the architecture on which the software will run. However, software designers are faced with numerous concerns during system design. This work discussed basic concerns namely security, modularity, performance and re-usability. Each of the issues were briefly and separately analysed to understand the intricacies. It was revealed that the use of models, understanding and predicting computers’ future, excellent system structuring control modeling, and modular decomposition are some of the solutions to the issues raised. Conclusively, since humans are still susceptible to errors and to adequately alleviate the impact of such during designs, designers and experts generally must understand high-level design concepts. The best architects don’t have to know how to implement all levels of design they only need an understanding of all the levels.