Software development | Software development process | Computer software | History of Software Programming
History of Software Patents | History of software engineering | Spiral model | Software testing
Message to Admin
UACODERS
 
Software QUICK START
Get Quote
Contacts
FAQ
 
Software ABOUT SOFTWARE
History of Software Programming
History of Software Patents
History of software engineering
Computer software
Software development
Software development process
Spiral model
Software testing
Software maintenance
Software documentation
Software deployment
Software configuration management
Software architecture
Programming language
Software and Shareware
 
Software Software Software
Software Software Software
Software Software Software
Software Software Software
 

ABOUT SOFTWARE DEVELOPMENT

Software architecture

Software Development Process

The software architecture of a system comprises its software components, their external properties, and their relationships with one another. The term also refers to documentation of a system's software architecture. Documenting software architecture facilitates communication between stakeholders, documents early decisions about high-level design, and allows reuse of design components and patterns between projects.


Background

The field of computer science has come across problems associated with complexity since its formation. Earlier problems of complexity were solved by developers by choosing the right data structures, developing algorithms, and by applying the concept of separation of concerns. Although the term “software architecture” is relatively new to the industry, the fundamental principles of the field have been applied sporadically by software engineering pioneers since mid s. Early attempts to capture and explain software architecture of a system were imprecise and disorganized - often characterized by a set of box-and-line diagrams. During the ’s there was a concentrated effort to define and codify fundamental aspects of the discipline. Initial sets of design patterns, styles, best practices, description languages, and formal logic were developed during that time.

The software architecture discipline is centered on the idea of reducing complexity through abstraction and separation of concerns. To date there is still no agreement on the precise definition of the term “software architecture”.

As a maturing discipline with no clear rules on the right way to architect a system the action of architecting is still a composition of art and science. The “art” aspect of software architecture is due to the fact that a commercial software system supports some aspect of a business or a mission. How a system supports key business drivers is described via scenarios as non-functional requirements of a system, also known as quality attributes, determine how a system will behave. Every system is unique due to the nature of the business drivers it supports, as such the degree of quality attributes exhibited by a system such as fault-tolerance, backward compatibility, extensibility, reliability, maintainability, availability, security, usability, and such other –ilities will vary with each implementation.

To bring a software architecture user's perspective into the software architecture, it can be said that software architecture gives the direction to take steps and do the tasks involved in each such user's speciality area and interest e.g. the stake holders of software systems, the software developer, the software system operational support group, the software maintenance specialists, the deployer, the tester and also the business end user. In this sense software architecture is really the amalgamation of the multiple perspectives a system always embodies. The fact that those several different perspectives can be put together into a software architecture stands as the vindication of the need and justification of creation of software architecture before the software development in a project attains maturity.



  • Custom Software Development
  • Web Development
  • Web Design
  • Consulting and Support
  • Workgroup building
  • Dedicatedoffices building and support.


  • History

    The origins of software architecture as a concept was first identified in the research work of Edsger Dijkstra in and David Parnas in the early ’s. The scientists emphasized that the structure of a software system matters and getting the structure right is critical. The study of the field increased in popularity since the early s with research work concentrating on architectural styles (patterns), architecture description languages, architecture documentation, and formal methods. Many research institutions such as Carnegie Mellon University and University of California, Irvine are doing a lot of research in the field of software architecture. Mary Shaw and David Garlan of Carnegie Mellon wrote a book titled Software Architecture: Perspectives on an Emerging Discipline in , which brought forward the concepts in Software Architecture, such as components, connectors, styles and so on. UCI's Institute for Software Research's efforts in software architecture research is directed primarily in architectural styles, architecture description languages, and dynamic architectures.

    ANSI/IEEE -: Recommended Practice for Architecture Description of Software-Intensive Systems is the first formal standard in the area of software architecture, and was recently adopted by ISO as ISO/IEC DIS .


    Describing architectures

    Architecture description languages
    Architecture description languages (ADLs) are used to describe a Software Architecture. Several different ADLs have been developed by different organizations, including Wright (developed by Carnegie Mellon), Acme (developed by Carnegie Mellon), xADL (developed by UCI), Darwin (developed by Imperial College London), DAOP-ADL (developed by University of Malaga). Common elements of an ADL are component, connector and configuration.


    Views

    Software architecture is commonly organized in views, which are analogous to the different types of blueprints made in building architecture. Within the ontology established by ANSI/IEEE -,
    views are instances of viewpoints, where a viewpoint exists to describe the architecture in question from the perspective of a given set of stakeholders and their concerns.

    Some possible views (actually, viewpoints in the ontology) are:

    Functional/logic view
    Code view
    Development/structural view
    Concurrency/process/thread view
    Physical/deployment view
    User action/feedback view

    Several languages for describing software architectures have been devised, but no consensus has yet been reached on which symbol-set and view-system should be adopted. Some believe that UML will establish a standard for software architecture views. Others believe that effective development of software relies on understanding unique constraints of each problem, and so universal notations are doomed because each provides a notational bias that necessarily makes the notation useless or dangerous for some set of tasks. They point to the proliferation of programming languages and a succession of failed attempts to impose a single 'universal language' on programmers, as proof that software thrives on diversity and not on standards.


    From Wikipedia

     


    Software development | Software development process | Computer software | History of Software Programming
    History of Software Patents | History of software engineering | Spiral model | Software testing
    Software maintenance
    | Software documentation | Software deployment | Software configuration management
    Software architecture
    | Programming language | Software and Shareware
    FAQ | Prices | Contacts | Terms & Conditions | Privacy Policy