background preloader

Software architecture

Software architecture
Software architecture is the high level structure of a software system, the discipline of creating such structures, and the documentation of these structures. It is the set of structures needed to reason about the software system, and comprises the software elements, the relations between them, and the properties of both elements and relations.[1] The architecture of a software system is a metaphor, analogous to the architecture of a building.[2] Software architecture choices include specific structural options from possibilities in the design of software. Scope[edit] Opinions vary as to the scope of software architecture:[4] There is no sharp distinction between software architecture versus design and requirements engineering (see Related fields below). Characteristics[edit] Software architecture exhibits the following: Multitude of stakeholders: software systems have to cater to a variety of stakeholders such as business managers, owners, users and operators. Motivation[edit] History[edit]

How Old Spice Revived a Campaign That No One Wanted to Touch The Modern Media Agency Series is supported by IDG. Ad agency JWT has used mobile marketing for two brand name clients. During a marketers’ panel discussion, John Baker explained the important role mobile played in a promotion for Zyrtec and for a campaign across media for Macy’s. Maybe advertisers should stop hoping that their new campaigns should be super-successful and instead wish for them to be moderately well-received. After all, almost no one has been able to create a second act for ad campaigns that become cultural touchstones. If anything, adding a social media layer to a successful campaign only raises the stakes as bloggers, Tweeters and Facebookers pile on to celebrate and watch to see if new ads live up to the set standard, then mercilessly scold it for not doing so. "It was definitely daunting," says Jason Bagley, a creative director at Wieden. But who would play Mustafa's foe? Upon meeting Fabio, Bagley and Allen soon discovered why. Eventually, they found a rhythm.

What is a software architecture? There is no doubt that the world is becoming increasingly dependent on software. Software is an essential element of the ubiquitous cell phone, as well as complex air traffic control systems. In fact, many of the innovations that we now take for granted -- including organizations such as eBay or Amazon -- simply wouldn't exist if it weren't for software. Even traditional organizations, such as those found in the finance, retail, and public sectors, depend heavily on software. In this day and age, it's difficult to find an organization that isn't, in some way, in the software business. In order for such innovations and organizations to survive, the software they depend on must provide the required capability, be of sufficient quality, be available when promised, and be delivered at an acceptable price. All these characteristics are influenced by the architecture of the software, the subject of this article. Architecture defined An architecture defines structure And in terms of the UML:

Component-based software engineering An example of two components expressed in UML 2.0. The checkout component, responsible for facilitating the customer's order, requires the card processing component to charge the customer's credit/debit card (functionality that the latter provides). Component-based software engineering (CBSE) (also known as component-based development (CBD)) is a branch of software engineering that emphasizes the separation of concerns in respect of the wide-ranging functionality available throughout a given software system. It is a reuse-based approach to defining, implementing and composing loosely coupled independent components into systems. This practice aims to bring about an equally wide-ranging degree of benefits in both the short-term and the long-term for the software itself and for organizations that sponsor such software. Software engineering practitioners regard components as part of the starting platform for service-orientation. Definition and characteristics of components[edit] History[edit]

The influence of non-functional requirements As technical people, it's really easy for us to think about software as a purely technical endeavour when we should always remember that software is really about solving business problems or providing some benefit to somebody. Over the past few years, more and more emphasis has been placed on this, evident from concepts such as enhanced customer collaboration, BPMN and SOA. Clearly the functional requirements are important because they ultimately govern what the system does. But as I've said before, the non-functional requirements are equally as important and part of the software architect's role is to balance these often competing forces to come up with a solution that meets the needs. Sometimes, the non-functional requirements will have more of an influence on the solution definition than the functional requirements. A simple case in point is an Internet search engine.

Just Don't Go, the Sequel? - Innovations I regularly teach a graduate seminar on academic labor, but I’ve always hesitated to teach William Pannapacker’s, aka “Thomas H. Benton’s” inflammatory—and now classic Chronicle article—“Graduate School in the Humanities: Just Don’t Go” (January 30, 2009). I always felt that its compelling combination of cold logic and cynicism would depress my graduate students beyond recovery. But a Ph.D. student recently did a presentation on it in my current seminar, working up the courage to look into the abyss. Graduate school aside, I believe one now has to wonder if going to college is a sensible decision. First, the economy and consequent employment outlook for college graduates. So here’s my somewhat obvious question: Is it worthwhile for high-school graduates to go to college right now? Return to Top

Ontology (information science) In computer science and information science, an ontology formally represents knowledge as a hierarchy of concepts within a domain, using a shared vocabulary to denote the types, properties and interrelationships of those concepts.[1][2] Ontologies are the structural frameworks for organizing information and are used in artificial intelligence, the Semantic Web, systems engineering, software engineering, biomedical informatics, library science, enterprise bookmarking, and information architecture as a form of knowledge representation about the world or some part of it. The creation of domain ontologies is also fundamental to the definition and use of an enterprise architecture framework. The term ontology has its origin in philosophy and has been applied in many different ways. The word element onto- comes from the Greek ὤν, ὄντος, ("being", "that which is"), present participle of the verb εἰμί ("be"). According to Gruber (1993): Common components of ontologies include:

Software architectural model An architectural model (in software) is a rich and rigorous diagram, created using available standards, in which the primary concern is to illustrate a specific set of tradeoffs inherent in the structure and design of a system or ecosystem. Software architects use architectural models to communicate with others and seek peer feedback. An architectural model is an expression of a viewpoint in software architecture. Some key elements in software architectural model are: rich: for the viewpoint in question, there should be sufficient information to describe the area in detail. References[edit] External links[edit] See also[edit] Service-oriented modeling framework (SOMF) Software Architecture Management - define software architecture, control architectural complexity

Four Destructive Myths Most Companies Still Live By - Tony Schwartz by Tony Schwartz | 11:17 AM November 1, 2011 Myth #1: Multitasking is critical in a world of infinite demand. This myth is based on the assumption that human beings are capable of doing two cognitive tasks at the same time. We’re not. Instead, we learn to move rapidly between tasks. If you’re on a conference call, for example, and you turn your attention to an incoming email, you’re missing what’s happening on the call as long as you’re checking your email. On average, according to researcher David Meyer, switching time increases the amount of time it takes to finish the primary task you were working on by an average of 25 percent. Difficult as it is to focus in the face of the endless distractions we all now face, it’s far and away the most effective way to get work done. Myth #2: A little bit of anxiety helps us perform better. Think for a moment about how you feel when you’re performing at your best. Myth #3: Creativity is genetically inherited, and it’s impossible to teach.

Related: