08.09.2013 Views

Microsoft .NET: Architecting Applications for the Enterprise ... - BattleIT

Microsoft .NET: Architecting Applications for the Enterprise ... - BattleIT

Microsoft .NET: Architecting Applications for the Enterprise ... - BattleIT

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Ga<strong>the</strong>ring Requirements<br />

Chapter 1 Architects and Architecture Today 15<br />

The analyst is usually a person who is very familiar with <strong>the</strong> problem’s domain. He ga<strong>the</strong>rs<br />

requirements and writes <strong>the</strong>m down to guarantee <strong>the</strong> quality and suitability of <strong>the</strong> system.<br />

The analyst usually composes requirements in a document—even a <strong>Microsoft</strong> Offi ce Word<br />

document—in a <strong>for</strong>mat that varies with <strong>the</strong> environment, project, and people involved.<br />

Typically, <strong>the</strong> analyst writes requirements using casual language and adds any wording that is<br />

specifi c to <strong>the</strong> domain. For example, it is acceptable to have in a requirement words such as<br />

Fund, Stock, Bond, and Insurance Policy because <strong>the</strong>y are technical terms. It is less acceptable<br />

<strong>for</strong> a requirement to use terms such as table or column because <strong>the</strong>se technical terms are<br />

likely to be <strong>for</strong>eign terms in <strong>the</strong> problem’s domain.<br />

Again, requirements need to be clear and verifi able. Most importantly, <strong>the</strong>y must be<br />

understandable, without ambiguity, to all stakeholders—users, buyers, analysts, architects,<br />

testers, documentation developers, and <strong>the</strong> like.<br />

Note It is not uncommon that analysts write functional requirements using relatively abstract<br />

use cases. As we’ll see in a moment, a use case is a document that describes a <strong>for</strong>m of interaction<br />

between <strong>the</strong> system and its clients. Use cases created by <strong>the</strong> analysis team are not usually really<br />

detailed and focus on what <strong>the</strong> system does ra<strong>the</strong>r than how <strong>the</strong> system does it. In any case, it<br />

must come out in a <strong>for</strong>m that stakeholders can understand. In this regard, a use case describes<br />

all <strong>the</strong> possible ways <strong>for</strong> an actor to obtain a value, or achieve a goal, and all possible exceptions<br />

that might result from that.<br />

Specifi cations<br />

Based on functional and nonfunctional requirements, specifi cations offer a development<br />

view of <strong>the</strong> architecture and are essentially any documentation <strong>the</strong> architect uses to<br />

communicate details about <strong>the</strong> architecture to <strong>the</strong> development team. The main purpose<br />

of specifi cations is to reach an understanding within <strong>the</strong> development team as to how <strong>the</strong><br />

program is going to per<strong>for</strong>m its tasks.<br />

Note Typically, an architect won’t start working on specifi cations until some requirements<br />

are known. In <strong>the</strong> real world, it is unlikely that requirements will be entirely known be<strong>for</strong>e<br />

specifi cations are made. The actual mass of requirements that triggers <strong>the</strong> generation of<br />

specifi cations depends mostly on <strong>the</strong> methodology selected <strong>for</strong> <strong>the</strong> process. In an agile<br />

context, you start working on specifi cations quite soon, even with a largely incomplete set of<br />

requirements.<br />

Specifi cations <strong>for</strong> functional requirements are commonly expressed through user stories or<br />

use cases.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!