Software is all about helping people get more done easier and faster. When you get down to it, software is where people and technology meet. Creating quality software isn't easy; It requires foresight, patience, honesty, and a commitment to quality; creating a team, maintaining a vision, communicating it, and carefully listening; attention to details and big-picture thinking.
Quality software is the right solution for the right problem. It is robust, understandable, efficient, and easy to change. Quality software provides a reliable and simple conceptual model to the user and developer alike; It is built with care and attention to details. External Quality is quality as observed by the user - features, performance, bugs. Internal Quality is the quality of the design and impplementation, which can be considered a technical debt that will impact External Quality in future releases or maintenance cycles.
Software architecture describes the set of concepts that allow reasoning about a system. As such, common patterns of succesful software construction can be incorporated, better communication between stakeholders can take place, and the resulting systems are more stable, easier to build, maintain, and modify, and perform better.
Waterfall, or SDLC-style project management proposes advance planning, requirements, specification, estimation, and architecture. In contrast, Scrum, Agile, and Lean all focus on quick iterations, building software wit minimal planning and before the requirements are fully elicited. Both approaches have limitations. SDLC does not perform well when requirements are murky or changing, and may require a high overhead. Agile has challenges in providing date commitments and therefore makes the business go-no-go decisions difficult. The key to successful software development is to choose a methodology variant that fits your industry, organization, team, and business conditions.