To build successful and cost-effective software systems, in conjunction with functional requirements, software development practices advocate for more rigorous understanding of non-functional requirements often referred to as "quality concerns". Typically, during requirement elicitation phase, software architects primarily focus on satisfying and prioritizing functional requirements while neglecting quality concerns. When this requirement elicitation gap occurs, developers typically retrofit solutions by implementing quality concerns at the code-level. This poses a risk on the stability of entire software architecture---as developers may inadvertently make system-wide design decisions compromising architectural well-formalized design decisions. Aside from that, developers have to reason about which functional pieces of the code interact with which non-functional ones. The caveat is that when such interactions are poorly or vaguely understood, future modifications may lead to defects resulting in excessive maintenance costs. When defects are reported, they are generally addressed with adhoc bug-fixing code, often, resulting in code fragmentation. Seemingly, the architectural knowledge associated with quality concerns becomes fragmented across implemented code leading to architectural drift phenomena. Typically, architectural drift occurs due to the effect of both "scattered'' and "tangled'' code---code that leads to poor readability, maintainability, low reuse and, high impact and cost of changes.Understanding quality concerns under these effects is a resource intensive process even for experienced developers; Especially when developers perform system-wide tasks such as iteratively tracing monitoring quality concerns, refactoring or fixing bugs at the code-level. To promote a better understanding of quality concerns, an automated process to acquire even partial knowledge of these concerns would be highly desirable. This would steer developers towards building a proactive awareness about quality concerns across evolving software artifacts.This thesis adopts a comprehensive approach for detecting system-wide emerging quality-related concerns across various software artifacts. First, I introduce a novel three-pronged approach to detect a diverse set of quality-related concerns in bug report summaries---concerns which are then traced in buggy code. Second, I integrate textual and structural information to improve structural-based refactoring tools by promoting high level human explanations via analysis of commit messages. Finally, I implement a ranked-based bug-fixing search tool that recommends bug-fixing comments from lengthy discussion threads of past solved bugs to fix a new bug. These bug-fixing comments are ranked and recommended in the context of user query relevance, use of positive language, and semantic relevance. In summary, this thesis explores a series solutions by leveraging natural language information with different semantic-based strategies and machine learning-based techniques. Ultimately, these solutions serve as transformative advances for reducing the comprehension gap between how developers reason about quality-related concerns and how such concerns are intertwined and scattered across artifacts.In the broader context, this thesis makes an effort to further enhance comprehension of quality concerns during software maintenance and evolution, software reuse, code reuse, and supports consistency between design and the code.