Software plays a vital role in most of the embedded systems including safety and mission-critical systems in avionics, automotive, nuclear and medical applications. Along with the functional complexity of software, the quality of software-intensive systems has become a crucial concern. Numerous techniques are being developed to evaluate the quality of a software system from its architecture in terms of quality attributes such as reliability, safety and performance, and to automate the search for alternative designs which provides good trade-offs with respect to those quality attributes of interest. However, the results of these quantitative architecture evaluations depend on design-time estimates for a series of model parameters, which may not be accurate and can change at run-time. Conventional approaches use numerical values (point estimates) as design-time estimates, where the uncertainty in the parameter estimation is not part of the evaluation. As a result, architecture-based quality evaluations at design-time can be inaccurate and thus, sub-optimal design decisions may be taken. To overcome this problem, this thesis presents a novel design-time architecture evaluation and optimisation approach that incorporates parameter uncertainties. The work specifically focuses on architecture-based reliability evaluation models, where a number of parameters have to be estimated subject to heterogeneous uncertain factors. Instead of using point-estimates for architecture-based reliability evaluation models, this work proposes to incorporate heterogeneous and diverse uncertainty information into the reliability evaluation and architecture optimisation. A framework is devised which can capture uncertainty information associated with parameters and use them for the search for robust and optimal candidate architectures. This approach is able to find good architecture solutions that can tolerate the impact of the uncertainties, and thus provides better decision support. The accuracy and scalability of the presented approach is validated with an industrial case study and a series of experiments with generated examples in different problem sizes and characteristics.