.NET—A Complete Development Cycle is the first guide to
combining the best software-engineering practices of the Unified Process with
the ins and outs of the .NET architecture. The book begins with an overview of
the principles of software engineering and then introduces Microsoft
technologies such as Visual C#, Windows Forms (WinForms), ADO.NET, and ASP.NET.
Central to this practical guide is a case study of the development of a
working imaging application. As the authors lead readers through the complete
lifecycle of this .NET development project, they teach effective
software-engineering methodologies, including top strategies for requirements
engineering, functional breakdown, design reviews, implementation, testing, and
deployment. Readers will also learn how to make the most of tools such as the
Unified Modeling Language (UML), GDI+, multithreading, Web Services Description
Language (WSDL), Simple Object Access Protocol (SOAP), UDDI (Universal
Description, Discovery and Integration), and versioning.
By actively participating in this example, readers become working members of
the development team. They will be able to use their newly acquired knowledge to
accomplish tasks critical to the successful creation of the Web-based
smart-client application. Readers can verify their work against the solutions
provided on the book's accompanying CD-ROM, which also contains all of the
source code, additional tools, process documentation (including mechanisms for
requirements tracing), and examples as well as additional tips on extending and
enhancing the imaging application.
Whether you are making the transition to .NET architecture or are an
experienced Microsoft developer, project lead or software quality engineer who
wants to learn effective software-engineering techniques, .NET—A Complete
Development Cycle is an invaluable resource. Readers will come away with
the foundation needed to use .NET technologies to design and build complete
applications, a solid understanding of good software-engineering practices, and
a working Web-based imaging application that easily can be expanded or
customized.
Table of Contents
Preface.
Acknowledgments.
About the Authors.
1. Introducing .NET.
The Need for .NET.
The .NET Framework.
The Common Language Runtime.
The Framework Class Library (FCL).
The C# Language.
Debugging and the IDE.
References for Further Reading.
2. Introducing Software Engineering.
Introducing Software Engineering
Practices.
Choosing a Software Development Model.
Commonly Used Software Development Models.
Code and Fix Software Development Model.
The Waterfall Software Development Model.
The V Software Development Model.
The Spiral Software Development Model.
The Staged Delivery Software Development
Model.
The Evolutionary Prototyping Software
Development Model.
The Scrum Software Development Model.
The Adaptive Software Development Model.
The Unified Process Software Development
Model.
The Extreme Programming Software Development
Model.
Conclusion.
References for Further Reading.
3. A .NET Prototype.
Getting Started.
Evaluating .NET for Windows Client
Applications.
Our First .NET Application.
Prototyping.
Implementing the SmartNotes Application.
Creating a New Project.
Modifying Form Properties.
Adding Controls to a Form.
Adding a Form to the Project.
Creating an Event Handler.
Implementing a Timer.
Visual Studio.NET: Platform of Choice.
4. Project Planning.
The Project Vision and Business Case.
The Initial Use Case Model.
Requirements Keys.
Using XML for Requirements Documents.
Project Requirements.
Initial Project Planning.
Project Management Planning.
Project Implementation Planning.
Initial Risk Analysis.
Initial Requirements Analysis and Design.
The Photo Editor.
The Image-Processing Library.
The Online Shop.
Defining Architectural Requirements.
Conclusion.
References for Further Reading.
5. The Photo Editor Application.
The Refined Project Vision and Business
Case.
Refined Requirements for Online Photo
Shop.
Refined Use Case Diagram.
Refined Requirements List.
Analysis of the Photo Editor Requirements.
The photo_editor Requirement.
The error_handling Requirement.
The picture_load_and_save Requirement.
The image_crop Requirement.
The image_rotate Requirement.
The image_flip Requirement.
The image_format Requirement.
The platform_os Requirement.
Design of the Photo Editor Application.
Brief Introduction to UML Class Diagrams.
Design of the Photo Editor Application.
The Detailed Project Schedule.
Implementation of the Photo Editor
Application.
The Basic Photo Editor Application.
Using Version Control.
The Exception-Handling Application Block.
Customized Exception Handling.
Loading an Image.
Scrolling and Basic Image Operations.
Refactoring of the Current Code.
Creating a Custom Control for Smooth
Scrolling.
Implementation of CustomScrollableControl.
Configuring the Custom Control for Use in Visual
Studio.NET.
Cropping an Image.
Rotate and Flip an Image.
Save an Image.
Unit Tests.
The NUnit Test Framework.
Unit Test Implementation.
Conclusion.
Review.
References for Further Reading.
6. GDI+ Graphics Extensions.
Requirements for the GDI+ Extensions.
Analysis of the GDI+ Extensions
Requirements.
The photo_editor Requirement.
The image_graphics_annotations
Requirement.
The image_text_annotations Requirement.
Design of the GDI+ Extensions.
Using Design Patterns.
Project Management Issues.
Schedule Issues.
Reported Defects.
GDI+ Programming.
What Is GDI+?
GDI+ Namespaces.
The Basics of GDI+.
Drawing GDI+ Primitives.
The Infrastructure Implementation.
Drawing GDI+ Graphics Primitives: Lines,
Rectangles, and Ellipses.
Handling Mouse Events and Interactive
Drawing.
Drawing Text in GDI+.
The Region of Interest, Erase, Reset, and Apply
Functionality.
Debugging and Defect Resolution.
Unit Tests.
Conclusion.
Review.
References for Further Reading.
7. Advanced GDI+ Operations.
Advanced GDI+ Extensions.
Analysis of the Advanced GDI+ Extensions
Requirements.
The photo_editor Requirement.
The image_graphics_annotations
Requirement.
The image_graphics_special_effects
Requirement.
Design of the Advanced GDI+ Extensions.
Project Management Issues.
Request for Additional Features.
Resolution of the Request.
Using Pens and Brushes in GDI+.
Color in GDI+: Using the RGB and ARGB
Formats.
More on Pens and Brushes.
The GraphicsPath Class.
The Region Class.
Implementation of Regions, Pens, and
Brushes.
Using Regions for the Frame
Implementation.
Unit Tests.
Conclusion.
Review.
References for Further Reading.
8. Dynamic Loading of Components.
Requirements for Image Postprocessing
Components.
Analysis of the Image Postprocessing
Requirements.
The photo_editor Requirement.
The image_brightness Requirement.
The image_contrast_and_color Requirement.
The image_special_effects Requirement.
Design of the Image-Processing Components Using
Late Binding.
Design of the Language Extension
Components.
Project Management Issues.
Improving Project Visibility.
Implementing Dynamically Loadable Image
Postprocessing Plugins.
Late Binding and Reflection.
Adding a PictureBox for Previewing Image
Operations.
Implementation of a TrackBar Control.
The Language-Independent Plugin
Implementation.
Unit Tests.
The Contrast Plugin Unit Test.
The Color Plugin Unit Test.
The Red Eye Plugin Unit Test.
Conclusion.
Review.
References for Further Reading.
9. Accessing System Resources.
Refining Requirements for 3D Text Display.
Three-Dimensional Rendering Technologies.
GDI+ and DirectX.
OpenGL.
Software versus Hardware Rendering.
Analyzing User Interface Needs.
Using OpenGL.NET.
Rendering Three-Dimensional Text with
OpenGL.
Three-Dimensional Text DLL Interfaces.
Adding 3D Text to the Photo Editor
Application.
The 3D Text DLL Extension.
Using PInvoke to Integrate the 3D Text DLL into
.NET.
First 3D Text: A Unit Test.
Implementing the User Interface.
Conclusion: Don't Reinvent the Wheel.
References for Further Reading.
10. Performance Optimization, Multithreading, and Profiling.
Requirements for Performance Optimization.
Analysis of the Editor Optimization
Requirement.
Profiling the Photo Editor Application.
Optimization Possibilities and
Prototyping.
Design of the Optimizations.
Performance Optimization Options.
Multithreading and Symmetric
Multiprocessing.
Design of the Multithreaded GUI.
Project Management Issues.
Relation of Project Scope, Cost, Quality, and
Time.
Early Delivery Possibilities.
Other Actions.
Multithreading and Optimization
Implementation.
Prototyping Solutions for Performance
Optimization.
Implementing the Contrast Plugin Using Pointer
Arithmetic for Pixel Access.
Multithreading Implementation to Increase GUI
Responsiveness.
Using Thread Pools and Locks.
Unit Tests.
Conclusion.
Review.
References for Further Reading.
11. Building the Web Application with ASP.NET.
Online Store Requirements.
Analyzing Interfaces and Activities.
The XML Product Catalog.
Online Store Activities.
Web Forms.
Breakdown of the Code Modules.
The Product Parser.
The Shopping Cart.
Web Forms.
Calculators.
Implementation of Online Photo Shop.
Creating a New Web Application.
Parsing the XML Product Catalog.
The Online Shop Portal.
The Shopping Cart.
Conclusion.
Reference for Further Reading.
12. Security and Database Acccess.
Secure Checkout.
Integrating Externally Supplied Software.
Validation of Externally Supplied Software
Products.
E-mail, Password, Credit Card: Creating a
Customer Profile.
User Interfaces.
Database Records.
Tax and Shipping.
Finalizing an Order.
Secure Web Applications.
Authentication.
Authorization.
Encryption.
Database Access with ADO.NET.
Putting It All Together.
Creating the Data Source.
The Data Access Layer.
The Database Singleton.
The Login Page.
The Checkout Form.
No Longer Under Construction.
References for Further Reading.
13. Product Release.
Deployment.
Options for Distributing .NET
Applications/
Creating a Setup Program.
Deploying Web Applications.
Online Photo Shop Installation Notes.
Integration Test.
Test Automation.
Creating a Test Book.
Requirements Tracing.
Software Maintanance.
Change Request Management.
Maintenance Strategies.
Wrap-Up.
Project Planning.
Requirements Refinement and Customer
Feedback.
Prototyping.
Use of Unified Modeling Language and Design
Patterns.
Documentation.
Automated Testing.
Error Handling through Exceptions.
Designing for Extensibility.
Code Reuse.
References for Further Reading.
Index.