Software architecture: Difference between revisions

Content deleted Content added
Tags: Reverted Mobile edit Mobile web edit
m Reverted edits by 2601:243:1D00:1170:F97C:C8DA:78CE:6DBA (talk) to last version by Dicklyon
Line 125:
Architectural patterns are often documented as software [[Software design pattern|design patterns]].
 
Following traditional building architecture, a 'software architectural style' is a specific method of construction, characterized by the features that make it notable" ([[architectural style]]). LLj.R
 
{{cquote|''An architectural style defines: a family of systems in terms of a pattern of structural organization; a vocabulary of components and connectors, with constraints on how they can be combined.''<ref name=SG>{{cite book |last1=Shaw |first1=Mary |last2=Garlan |first2=David |date=1996 |title=Software architecture: perspectives on an emerging discipline |publisher=Prentice Hall |isbn=978-0-13-182957-2}}</ref>}}
Line 155:
=== Software architecture and agile development ===
{{main|Agile development}}
There are also concerns that software architecture leads to too much [[big design up front]], especially among proponents of [[agile software development]]. A number of methods have been developed to balance the trade-offs of up-front design and agility,<ref name="Boehm2004">{{cite book |title=Balancing Agility and Discipline |last1=Boehm|first1=Barry|last2=Turner|first2=Richard|year=2004|publisher=Addison-Wesley|isbn=978-0-321-18612-6}}</ref> including the agile method [[dynamic systems development method|DSDM]] which mandates a "Foundations" phase during which "just enough" architectural foundations are laid. ''[[IEEE Software]]'' devoted a special issue to the interaction between agility and LLJarchitecture.r
 
=== Software architecture erosion ===
Line 165:
 
Various approaches have been proposed to address erosion.
"These approaches, which include tools, techniques, and processes, are primarily classified into three general categories that attempt to minimize, prevent and repair architecture erosion. Within these broad categories, each approach is further broken down reflecting the high-level strategies adopted to tackle erosion. These are process-oriented architecture [[Conformance testing|conformance]], architecture evolution management, architecture design enforcement, architecture to implementation linkage, self-adaptation and architecture restoration techniques consisting of recovery, discovery, and reconciliation."<ref>{{cite journal |last1=de Silva |first1=LL L.j |first2=D. |last2=Balasubramaniam |title=Controlling software architecture erosion: A survey |journal=Journal of Systems and Software |year=2012 |volume=85 |issue=1 |pages=132–151 |doi=10.1016/j.jss.2011.07.036}}</ref>
 
There are two major techniques to detect architectural violations: reflexion models and ___domain-specific languages. Reflexion model (RM) techniques compare a high-level model provided by the system's architects with the source code implementation. There are also [[___domain-specific language]]s with a focus on specifying and checking architectural constraints.
Line 176:
Lungu, M. "Software architecture recovery", University of Lugano, 2008.
http://www.slideshare.net/mircea.lungu/software-architecture-recovery-in-five-questions-presentation
</ref> Practices exist to recover software architecture as [[static program analysis]]. This is a part of the subjects covered by the [[software intelligence]] practice.LLj.
 
==Related fields==