Explain how an architect can determine qualitative requirements.
Architecture and Qualitative Requirements
An architect translates the concerns of stakeholders into requirements by identifying the "quality factors" valued by each constituency. You have probably experienced quality factors yourself when using a system.
Is the system reliable?
Is it fast?
How many concurrent users can the system handle before response time drops off?
What makes a system good or good enough?
Who is asking?
Software quality is improved by separating concerns into tiers.
Fourth-generation Web Application
Most of the software has been moved to the application server. Large websites implement the application server as a collection of application servers that operate in parallel. Likewise, web servers are often clusters of computers that work together to serve requests from large numbers of users.
Application servers interact with one or more database servers, often running a commercial database such as Oracle or DB2. The client–server interaction uses the Internet. The Web servers and application servers are connected by middleware
(such as Corba), which are packages obtained from software vendors to handle functions such as communication, data translation, and process distribution. Middleware is sometimes as simple as (JDBC) Java Data Base Connectivity, whereas other middleware packages are large and solve complicated problems. Likewise, the application-database servers often interact through middleware.
Figure 2 -6 illustrates a typical configuration for a fourth-generation Web application.
Web Software Engineering Quality Factors
Although software engineering researchers, educators, and practitioners have spent years focusing on developing processes and technologies to improve software quality attributes, much of the software industry has had little motivation to improve the quality of their software.
Software is often sold with relatively low-quality requirements. The combination of 1) user expectations and 2) market realities has been such that increasing quality usually has not increased profits. A combination of time-to-market and marketing strategies has almost always determined whether traditional software products succeed competitively.
As an example, software contractors for government agencies are often paid the same regardless of the quality of the delivered software. Despite the positive impacts of the capability maturity model, many contractors are still given additional resources to correct problems of their own making. Commercial software companies are usually driven almost entirely by time-to-market.
It is almost invariably more lucrative to deliver poor-quality products sooner than high-quality products later. It is a well-known truism that companies can often sell poor-quality first versions of software applications and then make more money by charging for upgrades that contain more bug fixes than new features. For most applications, there has traditionally been little economic motivation for producing high quality software. In fact, there have often been economic disincentives for creating high-quality software products.
Separation of Concerns | Architect's Definition of Quality
Specification of the "right" architecture depends on the accuracy of translation from qualitative stakeholder expectations into objective "quality" requirements.
In today's marketplace, solution functionality and affordability are rarely differentiating; when they are it is only for a short period of time.
Quality is the attribute that drives individuals to select one alternative over another despite relative similarities i functionality and cost.
Architects must be able to establish and promote the definition of "quality" for a given set of objectives.
Some of the factors that drive Architecture and Design Quality are:
Architecture Stability and Flexibility: The quality of the architecture definitions that are defined in architecture documents and supported by system management.
Analysis and Design Capability: The skill and experience level of architecture and design teams. This includes the capability of communication and cooperation between the teams.
Root Cause Analysis: Capability to learn from defects found during development, (e.g., analyzing defects, determining common causes (related to processes, tools and development environment, capabilities, management and organization, etc), and defining actions to prevent them from recurring).
Requirements Performance: Result of the previous phase (i.e., specifying the products to be developed and the supporting activities such as requirements clarifications, reviews and inspections, and tracing).
Project Management Performance: Definition, planning, tracking, and control of quality in the development projects and the delivered products.
Process Management Performance: Defining and baselining the processes to be used for management and technical work. The support in operational usage of the processes for training, instructions,
tools and templates and the availability of websites and experienced personnel.
Architecture and Design Process Maturity: The quality of the defined and baselined architecture and design processes, including all supporting material such as training and templates.
These quality factors ultimately translate into quantitative requirements. They are the performance metrics by which the solution is evaluated.
The architect must manage trade-offs between ideal quality requirements and other factors such as schedule, cost, or feasibility.
For example, high availability is a quality factor often sacrificed to cost and schedule considerations. Achievement of 99.99 percent availability usually presents a cost burden few organizations are willing to bear. But 99.5 percent availability may be good enough. Architects can explain the impact of these alternatives on the business. They can also determine whether the investment to achieve the higher availability is cost-justified.
As mentioned earlier, "The extra effort and expense associated with architecture almost always results in lower downstream operation costs." By identifying quality factors up front, the architect prevents conflicts later on— conflicts which often result in re-design, delays, and a potentially unhappy client/customer. It is often difficult to determine quality factors, for the following reasons:
Quality is a moving target. In e-Business the bar is raised weekly, sometimes daily.
Are we adding new products and services as quickly as we can?
Some quality factors are unique to e-Business. How secure does it need to be? What is the penetration risk?
Some quality factors are not very intuitive. Is your portal site similar to Yahoo, AOL, MSNBC?
The architect articulates a common vision based on the quality factors important to each stakeholder.
In so doing, she provides some insurance against the evolutionary nature of the e-Business world.