Envisioning and Designing an ApplicationEdit
Evaluate the technical feasibility of an application design concept.Edit
Evaluate the proof of concept. Recommend the best technologies for the features and goals of the application. Weigh implementation considerations. Investigate existing solutions for similar business problems.
Create a proof-of-concept prototype.Edit
Evaluate the risks associated with ASP.NET 2.0 technology or implementation. Validate that the proposed technology can be used in the application. Demonstrate to stakeholders that the proposed solution will address their needs.
Evaluate the technical specifications for an application to ensure that the business requirements are met.Edit
Translate the functional specification into developer terminology, such as pseudo code and UML diagrams. Suggest component type and layer.
Evaluate the design of a database.Edit
Recommend a database schema. Identify the stored procedures that are required for an application.
Evaluate the logical design of an application.Edit
Evaluate the logical design for performance. Evaluate the logical design for maintainability. Evaluate the logical design for extensibility. Evaluate the logical design for scalability. Evaluate the logical design for availability. Evaluate the logical design for security. Evaluate the logical design against use cases. Evaluate the logical design for recoverability. Evaluate the logical design for data integrity.
Evaluate the physical design of an application. Considerations include the design of the project structure, the number of files, the number of assemblies, and the location of these resources on the server.Edit
Evaluate the physical design for performance. Evaluate the physical design for maintainability. Evaluate how the physical location of files affects the extensibility of the application. Evaluate the physical design for scalability. Evaluate the physical design for availability. Evaluate the physical design for security. Evaluate the physical design for recoverability. Evaluate the physical design for data integrity.
Application Architecture for .NET: Designing Applications and Services ASP.NET Web Application Security Chapter 14 — Improving SQL Server Performance Creating Stored Procedures (Database Engine) Introduction to Data Concurrency in ADO.NET
Designing and Developing a User InterfaceEdit
Choose an appropriate layout for the visual interface.Edit
Decide the content flow across pages. Evaluate user navigation needs. Identify the goal of the page. Ensure the congruency and consistency of the user experience throughout the application.
Evaluate a strategy for implementing a common layout throughout the UI.Edit
Suggest when to use style sheets, master pages, Web parts, custom controls, scripting, and user controls. Suggest an applicable UI standard based on the intended client environment. Considerations include chosen operating systems, technologies, and browser types.
Choose an appropriate control based on design specifications.Edit
Evaluate the type of data that must be captured or displayed. Evaluate available controls. Considerations include standard .NET Framework controls and custom, internally developed, and third-party controls. Evaluate how available controls are implemented in previous and ongoing projects or applications. Evaluate the user demographic. Considerations include localization concerns. Evaluate the user environment. Considerations include screen size and browser type and version.
Choose an appropriate data validation method at the UI layer.Edit
Choose a validation method based on the data type provided. Decide how to report the feedback. Considerations include callbacks, exceptions, and writing to an event log. Identify the source of invalid data. Identify the cause of an invalid entry. Evaluate whether invalid data can be prevented. Evaluate whether an exception must be thrown. Evaluate whether an exception must be logged. Evaluate whether visual feedback, such as a message box or color, is required.
Choose appropriate user assistance and application status feedback techniques.Edit
Design a user assistance mechanism. Choose an appropriate application status feedback technique based on available control types. Choose an appropriate application status feedback technique to support accessibility. Design an application status feedback mechanism.
Choose an appropriate mechanism to deliver multimedia data from an application.Edit
Evaluate available multimedia delivery mechanisms. Considerations include bandwidth problems, file formats, frames per second, and streaming types. Design a multimedia delivery mechanism.
ASP.NET Master Pages Overview Building ASP.NET 2.0 Web Sites Using Web Standards Comparing the GridView and DataGrid Web Server Controls DataList Web Server Control Deciding When to Use the DataGrid, DataList or Repeater How to: Define ASP.NET Themes Wizard Web Server Control Overview XmlDataSource Control Overview
Designing and Developing a ComponentEdit
Establish the required characteristics of a component.Edit
Decide when to create a single component or multiple components. Decide which tier of the application a component should be located. Decide which type of object to build.
Create the high-level design of a component.Edit
Establish the life cycle of a component. Decide whether to use established design patterns for the component. Decide whether to create a prototype for the component. Document the design of a component by using pseudo code, class diagrams, sequence diagrams, activity diagrams, and state diagrams. Evaluate tradeoff decisions. Considerations include security vs. performance, performance vs. maintainability, and so on.
Develop the public API of a component.Edit
Decide the types of clients that can consume a component. Establish the required component interfaces. Decide whether to require constructor input.
Develop the features of a component.Edit
Decide whether existing functionality can be implemented or inherited. Decide how to handle unmanaged and managed resources. Decide which extensibility features are required. Decide whether a component must be stateful or stateless. Decide whether a component must be multithreaded. Decide which functions to implement in the base class, abstract class, or sealed class.
Develop an exception handling mechanism.Edit
Decide when it is appropriate to raise an exception. Decide how a component will handle exceptions. Considerations include catching and throwing a new exception; catching, wrapping, and throwing the wrapped exception; catching and terminating, and so on.
Develop the data access and data handling features of a component.Edit
Analyze data relationships. Analyze the data handling requirements of a component.
Develop a component to include profiling requirements.Edit
Identify potential issues, such as resource leaks and performance gaps, by profiling a component. Decide when to stop profiling on a component. Decide whether to redesign a component after analyzing the profiling results.
Designing and Developing an Application FrameworkEdit
Consume a reusable software component.Edit
Identify a reusable software component from available components to meet the requirements. Identify whether the reusable software component needs to be extended. Identify whether the reusable software component needs to be wrapped. Identify whether any existing functionality needs to be hidden. Test the identified component that is based on the requirements.
Choose an appropriate exception handling mechanism.Edit
Evaluate the current exception handling mechanism. Design a new exception handling technique.
Choose an appropriate implementation approach for the application design logic.Edit
Choose an appropriate data storage mechanism. Choose an appropriate data flow structure. Choose an appropriate decision flow structure.
Choose an appropriate event logging method for the application.Edit
Decide whether to log data. Considerations include policies, security, requirements, and debugging. Choose a storage mechanism for logged events. For example, database, flat file, event log, or XML file. Choose a systemwide event logging method. For example, centralized logging, distributed logging, and so on. Decide logging levels based on severity and priority.
Monitor specific characteristics or aspects of an application.Edit
Decide whether to monitor data. Considerations include administration, auditing, and application support. Decide which characteristics to monitor. For example, application performance, memory consumption, security auditing, usability metrics, and possible bugs. Choose event monitoring mechanisms, such as System Monitor and logs. Decide monitoring levels based on requirements. Choose a systemwide monitoring method from the available monitoring mechanisms.
Evaluate the application configuration architecture.Edit
Decide which configuration attributes to store. Choose the physical storage location for the configuration attributes. Decide in which format to store the configuration attributes. Choose when to use ASP.NET Administrative tools.
Testing and Stabilizing an ApplicationEdit
Perform a code review.Edit
Evaluate the testing strategy.Edit
Create the unit testing strategy. Evaluate the integration testing strategy. Evaluate the stress testing strategy. Evaluate the performance testing strategy. Evaluate the test environment specification.
Design a unit test.Edit
Describe the testing scenarios. Decide coverage requirements. Evaluate when to use boundary condition testing. Decide the type of assertion tests to conduct.
Perform integration testing.Edit
Determine if the component works as intended in the target environment. Identify component interactions and dependencies. Verify results.
Resolve a bug.Edit
Investigate a reported bug. Reproduce a bug. Evaluate the affect of the bug and the associated cost and timeline for fixing the bug. Fix a bug.
Deploying and Supporting an ApplicationEdit
Evaluate the performance of an application that is based on the performance analysis strategy.Edit
Identify performance spikes. Analyze performance trends. Track page response times. Track logon times.
Analyze the data received when monitoring an application.Edit
Monitor and analyze resource usage. Monitor and analyze security aspects. Track bugs that result from customer activity. Choose when to use ASP.NET 2.0 Health Monitoring APIs.
Evaluate the deployment plan.Edit
Identify component-level deployment dependencies. Identify scripting requirements for deployment.
Create an application flow-logic diagram.Edit
Evaluate the complexity of components. Evaluate the complexity of interactions with other components.
Validate the production configuration environment. Considerations include load balancing, Web farms, and Web gardens.Edit
Verify networking settings. Verify the deployment environment.