Microsoft has defined eight attributes of constant focus for application architects/developers to consider during each phase of development:
How can you draw information relevant to these factors from a case study? Ask yourself the sorts of questions posed in the following sections. PerformanceHave existing systems already set users' expectations for response times?
Can it be determined at what tier the application will need to maintain state (data, business, user)? Are there any bandwidth requirements? A byte holds 8 bits, so a 56Kb line (a lowercase b is bits, and an uppercase B is bytes) can transmit 7,000 bytes in a second. Therefore, a 14KB text string would take 2 seconds to transmit. (This is approximate; there are, of course, checksum bits and other pieces of protocol overhead that consume parts of the available bandwidth.) AvailabilityAre any availability requirements stated outright in the case study? If not, based on your personal knowledge of the business described in the case study, what would your expectations be for application availability? Does the case study mention "24/7" or "100% uptime"? If so, you need to consider redundancy at both the logical and physical design levels. SecurityMicrosoft is mirroring its focus on secure computing in its exams. Security mostly boils down to the following areas, although each major area has sub-areas that need to be considered:
What "roles" exist? What level of access should each role have? Analyze access in terms of CRUD (create new records, read records, update record data, delete records). To do this, analyze access in terms of "need to know" and based on explicit statements in the case study. One way to do this is to attach a role from the previously created list to another noun (an object) with a verb in between. For BSC, you see three roles, as detailed in Table 12.1.
ScalabilityWhat is the expectation for concurrent users? What is the potential for that number to increase? If the number of concurrent users hits the highest possible value, how will the application respond? Is that acceptable? Is the design "client heavy," requiring the installation of complete application packages on your client machines? Or is it "client thin," perhaps running as VBScript in a Web browser? MaintainabilityAre good coding practices in place that will make the application easy to maintain? Has component technology been used effectively to abstract the complexity of the entire application? Is the deployment strategy the easiest to maintain in regards to versioning issues? AccessibilityAny mention of disabled users (for example, hearing, visual, or physical impairments) is a clue to consider accessibility features in your solution. In fact, any application exposed to the Internet is, by default, a candidate for accessibility. Is there a requirement for text as speech? Speech to text? DeployabilityThe range of deployment options changes dramatically with .NET. In the 70-300 exam, the questions on deployment revolve around the use of the Global Assembly Cache (GAC), "side-by-side" DLLs, and versioning. ExtensibilityWith fast-paced changes in business objectives, can the application design respond easily to changes in scope, both during the development cycle and after? |