Download Refactoring For Software Design Smells Book PDF

Download full Refactoring For Software Design Smells books PDF, EPUB, Tuebl, Textbook, Mobi or read online Refactoring For Software Design Smells anytime and anywhere on any device. Get free access to the library by create an account, fast download and ads free. We cannot guarantee that every book is in the library.

Refactoring for Software Design Smells

Refactoring for Software Design Smells
  • Author : Girish Suryanarayana,Ganesh Samarthyam,Tushar Sharma
  • Publisher :Unknown
  • Release Date :2014-11-11
  • Total pages :258
  • ISBN : 9780128016466
GET BOOK HERE

Summary : Awareness of design smells – indicators of common design problems – helps developers or software engineers understand mistakes made while designing, what design principles were overlooked or misapplied, and what principles need to be applied properly to address those smells through refactoring. Developers and software engineers may "know" principles and patterns, but are not aware of the "smells" that exist in their design because of wrong or mis-application of principles or patterns. These smells tend to contribute heavily to technical debt – further time owed to fix projects thought to be complete – and need to be addressed via proper refactoring. Refactoring for Software Design Smells presents 25 structural design smells, their role in identifying design issues, and potential refactoring solutions. Organized across common areas of software design, each smell is presented with diagrams and examples illustrating the poor design practices and the problems that result, creating a catalog of nuggets of readily usable information that developers or engineers can apply in their projects. The authors distill their research and experience as consultants and trainers, providing insights that have been used to improve refactoring and reduce the time and costs of managing software projects. Along the way they recount anecdotes from actual projects on which the relevant smell helped address a design issue. Contains a comprehensive catalog of 25 structural design smells (organized around four fundamental design principles) that contribute to technical debt in software projects Presents a unique naming scheme for smells that helps understand the cause of a smell as well as points toward its potential refactoring Includes illustrative examples that showcase the poor design practices underlying a smell and the problems that result Covers pragmatic techniques for refactoring design smells to manage technical debt and to create and maintain high-quality software in practice Presents insightful anecdotes and case studies drawn from the trenches of real-world projects

Refactoring for Software Design Smells

Refactoring for Software Design Smells
  • Author : Girish Suryanarayana,Ganesh Samarthyam,Tushar Sharma
  • Publisher :Unknown
  • Release Date :2014-11-03
  • Total pages :258
  • ISBN : 0128013974
GET BOOK HERE

Summary : Awareness of design smells - indicators of common design problems - helps developers or software engineers understand mistakes made while designing, what design principles were overlooked or misapplied, and what principles need to be applied properly to address those smells through refactoring. Developers and software engineers may "know" principles and patterns, but are not aware of the "smells" that exist in their design because of wrong or mis-application of principles or patterns. These smells tend to contribute heavily to technical debt - further time owed to fix projects thought to be complete - and need to be addressed via proper refactoring. Refactoring for Software Design Smells presents 25 structural design smells, their role in identifying design issues, and potential refactoring solutions. Organized across common areas of software design, each smell is presented with diagrams and examples illustrating the poor design practices and the problems that result, creating a catalog of nuggets of readily usable information that developers or engineers can apply in their projects. The authors distill their research and experience as consultants and trainers, providing insights that have been used to improve refactoring and reduce the time and costs of managing software projects. Along the way they recount anecdotes from actual projects on which the relevant smell helped address a design issue. Contains a comprehensive catalog of 25 structural design smells (organized around four fundamental design principles) that contribute to technical debt in software projects Presents a unique naming scheme for smells that helps understand the cause of a smell as well as points toward its potential refactoring Includes illustrative examples that showcase the poor design practices underlying a smell and the problems that result Covers pragmatic techniques for refactoring design smells to manage technical debt and to create and maintain high-quality software in practice Presents insightful anecdotes and case studies drawn from the trenches of real-world projects

Refactoring

Refactoring
  • Author : Martin Fowler,Kent Beck
  • Publisher :Unknown
  • Release Date :1999
  • Total pages :431
  • ISBN : 9780201485677
GET BOOK HERE

Summary : Users can dramatically improve the design, performance, and manageability of object-oriented code without altering its interfaces or behavior. "Refactoring" shows users exactly how to spot the best opportunities for refactoring and exactly how to do it, step by step.

Refactoring to Patterns

Refactoring to Patterns
  • Author : Joshua Kerievsky
  • Publisher :Unknown
  • Release Date :2004-08-05
  • Total pages :400
  • ISBN : 0321630017
GET BOOK HERE

Summary : In 1994, Design Patterns changed the landscape of object-oriented development by introducing classic solutions to recurring design problems. In 1999, Refactoring revolutionized design by introducing an effective process for improving code. With the highly anticipated Refactoring to Patterns , Joshua Kerievsky has changed our approach to design by forever uniting patterns with the evolutionary process of refactoring. This book introduces the theory and practice of pattern-directed refactorings: sequences of low-level refactorings that allow designers to safely move designs to, towards, or away from pattern implementations. Using code from real-world projects, Kerievsky documents the thinking and steps underlying over two dozen pattern-based design transformations. Along the way he offers insights into pattern differences and how to implement patterns in the simplest possible ways. Coverage includes: A catalog of twenty-seven pattern-directed refactorings, featuring real-world code examples Descriptions of twelve design smells that indicate the need for this book’s refactorings General information and new insights about patterns and refactoring Detailed implementation mechanics: how low-level refactorings are combined to implement high-level patterns Multiple ways to implement the same pattern–and when to use each Practical ways to get started even if you have little experience with patterns or refactoring Refactoring to Patterns reflects three years of refinement and the insights of more than sixty software engineering thought leaders in the global patterns, refactoring, and agile development communities. Whether you’re focused on legacy or “greenfield” development, this book will make you a better software designer by helping you learn how to make important design changes safely and effectively.

Refactoring Workbook

Refactoring Workbook
  • Author : William C. Wake
  • Publisher :Unknown
  • Release Date :2004
  • Total pages :235
  • ISBN : 0321109295
GET BOOK HERE

Summary : & Most software practitioners deal with inherited code; this book teaches them how to optimize it & & Workbook approach facilitates the learning process & & Helps you identify where problems in a software application exist or are likely to exist

Refactoring in Large Software Projects

Refactoring in Large Software Projects
  • Author : Martin Lippert,Stephen Roock
  • Publisher :Unknown
  • Release Date :2006-05-01
  • Total pages :286
  • ISBN : 9780470858936
GET BOOK HERE

Summary : Large Refactorings looks at methods of establish design improvements as an important and independent activity during development of software, and will help to ensure that software continues to adapt, improve and remain easy to read and modify without altering its observable behaviour. It provides real-world experience from real refactored projects and shows how to refactor software to ensure that it is efficient, fresh and adaptable.

xUnit Test Patterns

xUnit Test Patterns
  • Author : Gerard Meszaros
  • Publisher :Unknown
  • Release Date :2007-05-21
  • Total pages :944
  • ISBN : 9780132797467
GET BOOK HERE

Summary : Automated testing is a cornerstone of agile development. An effective testing strategy will deliver new functionality more aggressively, accelerate user feedback, and improve quality. However, for many developers, creating effective automated tests is a unique and unfamiliar challenge. xUnit Test Patterns is the definitive guide to writing automated tests using xUnit, the most popular unit testing framework in use today. Agile coach and test automation expert Gerard Meszaros describes 68 proven patterns for making tests easier to write, understand, and maintain. He then shows you how to make them more robust and repeatable--and far more cost-effective. Loaded with information, this book feels like three books in one. The first part is a detailed tutorial on test automation that covers everything from test strategy to in-depth test coding. The second part, a catalog of 18 frequently encountered "test smells," provides trouble-shooting guidelines to help you determine the root cause of problems and the most applicable patterns. The third part contains detailed descriptions of each pattern, including refactoring instructions illustrated by extensive code samples in multiple programming languages.

Managing Technical Debt

Managing Technical Debt
  • Author : Philippe Kruchten,Robert Nord,Ipek Ozkaya
  • Publisher :Unknown
  • Release Date :2019-04-15
  • Total pages :229
  • ISBN : 9780135645963
GET BOOK HERE

Summary : “This is an incredibly wise and useful book. The authors have considerable real-world experience in delivering quality systems that matter, and their expertise shines through in these pages. Here you will learn what technical debt is, what is it not, how to manage it, and how to pay it down in responsible ways. This is a book I wish I had when I was just beginning my career. The authors present a myriad of case studies, born from years of experience, and offer a multitude of actionable insights for how to apply it to your project.” –Grady Booch, IBM Fellow Master Best Practices for Managing Technical Debt to Promote Software Quality and Productivity As software systems mature, earlier design or code decisions made in the context of budget or schedule constraints increasingly impede evolution and innovation. This phenomenon is called technical debt, and practical solutions exist. In Managing Technical Debt, three leading experts introduce integrated, empirically developed principles and practices that any software professional can use to gain control of technical debt in any software system. Using real-life examples, the authors explain the forms of technical debt that afflict software-intensive systems, their root causes, and their impacts. They introduce proven approaches for identifying and assessing specific sources of technical debt, limiting new debt, and “paying off” debt over time. They describe how to establish managing technical debt as a core software engineering practice in your organization. Discover how technical debt damages manageability, quality, productivity, and morale–and what you can do about it Clarify root causes of debt, including the linked roles of business goals, source code, architecture, testing, and infrastructure Identify technical debt items, and analyze their costs so you can prioritize action Choose the right solution for each technical debt item: eliminate, reduce, or mitigate Integrate software engineering practices that minimize new debt Managing Technical Debt will be a valuable resource for every software professional who wants to accelerate innovation in existing systems, or build new systems that will be easier to maintain and evolve.

Managing Software Debt

Managing Software Debt
  • Author : Chris Sterling
  • Publisher :Unknown
  • Release Date :2010-12-10
  • Total pages :288
  • ISBN : 0321700554
GET BOOK HERE

Summary : Shipping imperfect software is like going into debt. When you incur debt, the illusion of doing things faster can lead to exponential growth in the cost of maintaining software. Software debt takes five major forms: technical, quality, configuration management, design, and platform experience. In today’s rush to market, software debt is inevitable. And that’s okay—if you’re careful about the debt you incur, and if you quickly pay it back. In Managing Software Debt, leading Agile expert Chris Sterling shows how understanding software debt can help you move products to market faster, with a realistic plan for refactoring them based on experience. Writing for all Agile software professionals, Sterling explains why you’re going into software debt whether you know it or not—and why the interest on that debt can bring projects to a standstill. Next, he thoroughly explains each form of software debt, showing how to plan for it intelligently and repay it successfully. You’ll learn why accepting software debt is not the same as deliberate sloppiness, and you’ll learn how to use the software debt concept to systematically improve architectural agility. Coverage includes Managing tensions between speed and perfection and recognizing that you’ll inevitably ship some “not quite right” code Planning to minimize interest payments by paying debts quickly Building architectures that respond to change and help enterprises run more smoothly Incorporating emergent architecture concepts into daily activities, using Agile collaboration and refactoring techniques Delivering code and other software internals that reduce the friction of future change Using early, automated testing to move past the “break/fix” mentality Scripting and streamlining both deployment and rollback Implementing team configuration patterns and knowledge sharing approaches that make software debt easier to repay Clearing away technical impediments in existing architectures Using the YAGNI (“you ain’t gonna need it”) approach to strip away unnecessary complexity Using this book’s techniques, senior software leadership can deliver more business value; managers can organize and support development teams more effectively; and teams and team members can improve their performance throughout the development lifecycle.

Principle-Based Refactoring

Principle-Based Refactoring
  • Author : Steve Halladay
  • Publisher :Unknown
  • Release Date :2012-08-31
  • Total pages :214
  • ISBN : 061569022X
GET BOOK HERE

Summary : You know good software when you see it, but how do you explain what good software is? Experienced software developers have pet practices and techniques that make their software easier to test, maintain and understand. But when you ask them how to make your software like theirs, they give you a seemingly endless list of rules. How can they remember all those rules? The secret is that they don't! Instead, experienced software developers understand a handful of basic principles. The rules are merely manifestations of these basic principles. But, principles are hard to explain; so experienced developers resort to explaining rules instead.In Principle-Based Refactoring, Halladay explains a set of software refactoring rules and links the refactoring rules back to the basic principles that drive robust software design. The book identifies eight fundamental design principles and also includes a set of approximately fifty refactoring rules that illustrate the principles. Each rule has a summary description, a discussion, including references back to the driving principles, and examples of the rules' applications. In addition, this book discusses refactoring mechanics including test strategies that guide software developers in verifying the quality of refactored code.

Refactoring

Refactoring
  • Author : Jay Fields,Shane Harvie,Martin Fowler,Kent Beck
  • Publisher :Unknown
  • Release Date :2009-10-15
  • Total pages :480
  • ISBN : 9780321604170
GET BOOK HERE

Summary : The Definitive Refactoring Guide, Fully Revamped for Ruby With refactoring, programmers can transform even the most chaotic software into well-designed systems that are far easier to evolve and maintain. What’s more, they can do it one step at a time, through a series of simple, proven steps. Now, there’s an authoritative and extensively updated version of Martin Fowler’s classic refactoring book that utilizes Ruby examples and idioms throughout–not code adapted from Java or any other environment. The authors introduce a detailed catalog of more than 70 proven Ruby refactorings, with specific guidance on when to apply each of them, step-by-step instructions for using them, and example code illustrating how they work. Many of the authors’ refactorings use powerful Ruby-specific features, and all code samples are available for download. Leveraging Fowler’s original concepts, the authors show how to perform refactoring in a controlled, efficient, incremental manner, so you methodically improve your code’s structure without introducing new bugs. Whatever your role in writing or maintaining Ruby code, this book will be an indispensable resource. This book will help you Understand the core principles of refactoring and the reasons for doing it Recognize “bad smells” in your Ruby code Rework bad designs into well-designed code, one step at a time Build tests to make sure your refactorings work properly Understand the challenges of refactoring and how they can be overcome Compose methods to package code properly Move features between objects to place responsibilities where they fit best Organize data to make it easier to work with Simplify conditional expressions and make more effective use of polymorphism Create interfaces that are easier to understand and use Generalize more effectively Perform larger refactorings that transform entire software systems and may take months or years Successfully refactor Ruby on Rails code

Software Design X-Rays

Software Design X-Rays
  • Author : Adam Tornhill
  • Publisher :Unknown
  • Release Date :2018-03-08
  • Total pages :276
  • ISBN : 9781680505801
GET BOOK HERE

Summary : Are you working on a codebase where cost overruns, death marches, and heroic fights with legacy code monsters are the norm? Battle these adversaries with novel ways to identify and prioritize technical debt, based on behavioral data from how developers work with code. And that's just for starters. Because good code involves social design, as well as technical design, you can find surprising dependencies between people and code to resolve coordination bottlenecks among teams. Best of all, the techniques build on behavioral data that you already have: your version-control system. Join the fight for better code! Use statistics and data science to uncover both problematic code and the behavioral patterns of the developers who build your software. This combination gives you insights you can't get from the code alone. Use these insights to prioritize refactoring needs, measure their effect, find implicit dependencies between different modules, and automatically create knowledge maps of your system based on actual code contributions. In a radical, much-needed change from common practice, guide organizational decisions with objective data by measuring how well your development teams align with the software architecture. Discover a comprehensive set of practical analysis techniques based on version-control data, where each point is illustrated with a case study from a real-world codebase. Because the techniques are language neutral, you can apply them to your own code no matter what programming language you use. Guide organizational decisions with objective data by measuring how well your development teams align with the software architecture. Apply research findings from social psychology to software development, ensuring you get the tools you need to coach your organization towards better code. If you're an experienced programmer, software architect, or technical manager, you'll get a new perspective that will change how you work with code. What You Need: You don't have to install anything to follow along in the book. TThe case studies in the book use well-known open source projects hosted on GitHub. You'll use CodeScene, a free software analysis tool for open source projects, for the case studies. We also discuss alternative tooling options where they exist.

The Art of Agile Development

The Art of Agile Development
  • Author : James Shore,Chromatic,Shane Warden
  • Publisher :Unknown
  • Release Date :2008-01-21
  • Total pages :409
  • ISBN : 9780596527679
GET BOOK HERE

Summary : For those considering Extreme Programming, this book provides no-nonsense advice on agile planning, development, delivery, and management taken from the authors' many years of experience. While plenty of books address the what and why of agile development, very few offer the information users can apply directly.

Code Reading

Code Reading
  • Author : Diomidis Spinellis
  • Publisher :Unknown
  • Release Date :2003
  • Total pages :495
  • ISBN : 0201799405
GET BOOK HERE

Summary : CD-ROM contains cross-referenced code.

Object-oriented Reengineering Patterns

Object-oriented Reengineering Patterns
  • Author : Serge Demeyer,Stéphane Ducasse,Oscar Nierstrasz
  • Publisher :Unknown
  • Release Date :2009-10
  • Total pages :342
  • ISBN : 9783952334126
GET BOOK HERE

Summary : Object-Oriented Reengineering Patterns collects and distills successful techniques in planning a reengineering project, reverse-engineering, problem detection, migration strategies and software redesign. This book is made available under the Creative Commons Attribution-ShareAlike 3.0 license. You can either download the PDF for free, or you can buy a softcover copy from lulu.com. Additional material is available from the book's web page at http://scg.unibe.ch/oorp

Code Quality

Code Quality
  • Author : Diomidis Spinellis
  • Publisher :Unknown
  • Release Date :2006-04-03
  • Total pages :608
  • ISBN : 0768685125
GET BOOK HERE

Summary : Page 26: How can I avoid off-by-one errors? Page 143: Are Trojan Horse attacks for real? Page 158: Where should I look when my application can't handle its workload? Page 256: How can I detect memory leaks? Page 309: How do I target my application to international markets? Page 394: How should I name my code's identifiers? Page 441: How can I find and improve the code coverage of my tests? Diomidis Spinellis' first book, Code Reading, showed programmers how to understand and modify key functional properties of software. Code Quality focuses on non-functional properties, demonstrating how to meet such critical requirements as reliability, security, portability, and maintainability, as well as efficiency in time and space. Spinellis draws on hundreds of examples from open source projects--such as the Apache web and application servers, the BSD Unix systems, and the HSQLDB Java database--to illustrate concepts and techniques that every professional software developer will be able to appreciate and apply immediately. Complete files for the open source code illustrated in this book are available online at: http://www.spinellis.gr/codequality/

AntiPatterns

AntiPatterns
  • Author : William J. Brown,Raphael C. Malveau,Hays W. "Skip" McCormick,Thomas J. Mowbray
  • Publisher :Unknown
  • Release Date :1998-04-03
  • Total pages :309
  • ISBN : UOM:39015040153457
GET BOOK HERE

Summary : "The AntiPatterns authors have clearly been there and done that when it comes to managing software development efforts. I resonated with one insight after another, having witnessed too many wayward projects myself. The experience in this book is palpable." -John Vlissides, IBM Research "This book allows managers, architects, and developers to learn from the painful mistakes of others. The high-level AntiPatterns on software architecture are a particularly valuable contribution to software engineering. Highly recommended!" -Kyle Brown Author of The Design Patterns Smalltalk Companion "AntiPatterns continues the trend started in Design Patterns. The authors have discovered and named common problem situations resulting from poor management or architecture control, mistakes which most experienced practitioners will recognize. Should you find yourself with one of the AntiPatterns, they even provide some clues on how to get yourself out of the situation." -Gerard Meszaros, Chief Architect, Object Systems Group Are you headed into the software development mine field? Follow someone if you can, but if you're on your own-better get the map! AntiPatterns is the map. This book helps you navigate through today's dangerous software development projects. Just look at the statistics: * Nearly one-third of all software projects are cancelled. * Two-thirds of all software projects encounter cost overruns in excess of 200%. * Over 80% of all software projects are deemed failures. While patterns help you to identify and implement procedures, designs, and codes that work, AntiPatterns do the exact opposite; they let you zero-in on the development detonators, architectural tripwires, and personality booby traps that can spell doom for your project. Written by an all-star team of object-oriented systems developers, AntiPatterns identifies 40 of the most common AntiPatterns in the areas of software development, architecture, and project management. The authors then show you how to detect and defuse AntiPatterns as well as supply refactored solutions for each AntiPattern presented.

Object-Oriented Metrics in Practice

Object-Oriented Metrics in Practice
  • Author : Michele Lanza,Radu Marinescu
  • Publisher :Unknown
  • Release Date :2007-05-16
  • Total pages :207
  • ISBN : 9783540395386
GET BOOK HERE

Summary : Presents a novel metrics-based approach for detecting design problems in object-oriented software. Introduces an important suite of detection strategies for the identification of different well-known design flaws as well as some rarely mentioned ones.

Refactoring in Ruby

Refactoring in Ruby
  • Author : William C. Wake,Kevin Rutherford
  • Publisher :Unknown
  • Release Date :2009-10-15
  • Total pages :288
  • ISBN : 0321647904
GET BOOK HERE

Summary : The First Hands-On, Practical, All-Ruby Refactoring Workbook! Refactoring—the art of improving the design of existing code—has taken the world by storm. So has Ruby. Now, for the first time, there’s a refactoring workbook designed from the ground up for the dynamic Ruby language. Refactoring in Ruby gives you all the realistic, hands-on practice you need to refactor Ruby code quickly and effectively. You’ll discover how to recognize “code smells,” which signal opportunities for improvement, and then perfect your program’s design one small, safe step at a time. The book shows you when and how to refactor with both legacy code and during new test-driven development, and walks you through real-world refactoring in detail. The workbook concludes with several applications designed to help practice refactoring in realistic domains, plus a handy code review checklist you’ll refer to again and again. Along the way, you’ll learn powerful lessons about designing higher quality Ruby software—lessons that will enable you to experience the joy of writing consistently great code. Refactoring in Ruby will help you Recognize why poor code design occurs, so you can prevent it from occurring in your own code Master better design techniques that lead to more efficient, reliable, and maintainable software Fix code that’s too long, large, or difficult to follow Ferret out duplication, and express each idea “once and only once” Recognize missing or inadequately formed classes Simplify overly complex relationships between classes and their subclasses Achieve the right balance of responsibilities among objects Make your code easier to test and change Cope with incomplete library modules, and fix runaway dependencies Learn the next steps to take after you refactor

Introduction to Software Design with Java

Introduction to Software Design with Java
  • Author : Martin P. Robillard
  • Publisher :Unknown
  • Release Date :2019-07-12
  • Total pages :297
  • ISBN : 9783030240943
GET BOOK HERE

Summary : This textbook provides an in-depth introduction to software design, with a focus on object-oriented design, and using the Java programming language. Its goal is to help readers learn software design by discovering the experience of the design process. To this end, a narrative is used that introduces each element of design know-how in context, and explores alternative solutions in that context. The narrative is supported by hundreds of code fragments and design diagrams. The first chapter is a general introduction to software design. The subsequent chapters cover design concepts and techniques, which are presented as a continuous narrative anchored in specific design problems. The design concepts and techniques covered include effective use of types and interfaces, encapsulation, composition, inheritance, design patterns, unit testing, and many more. A major emphasis is placed on coding and experimentation as a necessary complement to reading the text. To support this aspect of the learning process, a companion website with practice problems is provided, and three sample applications that capture numerous design decisions are included. Guidance on these sample applications is provided in a section called “Code Exploration” at the end of each chapter. Although the Java language is used as a means of conveying design-related ideas, the book’s main goal is to address concepts and techniques that are applicable in a host of technologies. This book is intended for readers who have a minimum of programming experience and want to move from writing small programs and scripts to tackling the development of larger systems. This audience naturally includes students in university-level computer science and software engineering programs. As the prerequisites to specific computing concepts are kept to a minimum, the content is also accessible to programmers without a primary training in computing. In a similar vein, understanding the code fragments requires only a minimal grasp of the language, such as would be taught in an introductory programming course.

Architectures for Adaptive Software Systems

Architectures for Adaptive Software Systems
  • Author : Raffaela Mirandola,Ian Gorton,Christine Hofmeister
  • Publisher :Unknown
  • Release Date :2009-06-08
  • Total pages :213
  • ISBN : 9783642023507
GET BOOK HERE

Summary : Much of a software architect’s life is spent designing software systems to meet a set of quality requirements. General software quality attributes include scalability, security, performance or reliability. Quality attribute requirements are part of an application’s non-functional requirements, which capture the many facets of how the functional - quirements of an application are achieved. Understanding, modeling and continually evaluating quality attributes throughout a project lifecycle are all complex engineering tasks whichcontinuetochallengethe softwareengineeringscienti ccommunity. While we search for improved approaches, methods, formalisms and tools that are usable in practice and can scale to large systems, the complexity of the applications that the so- ware industry is challenged to build is ever increasing. Thus, as a research community, there is little opportunity for us to rest on our laurels, as our innovations that address new aspects of system complexity must be deployed and validated. To this end the 5th International Conference on the Quality of Software Archit- tures (QoSA) 2009 focused on architectures for adaptive software systems. Modern software systems must often recon guretheir structure and behavior to respond to c- tinuous changes in requirements and in their execution environment. In these settings, quality models are helpful at an architectural level to guide systematic model-driven software development strategies by evaluating the impact of competing architectural choices.