| |
| |
Preface | |
| |
| |
Acknowledgments | |
| |
| |
About the Authors | |
| |
| |
| |
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 | |
| |
| |
| |
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 | |
| |
| |
| |
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 | |
| |
| |
| |
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 | |
| |
| |
| |
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 | |
| |
| |
| |
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 | |
| |
| |
| |
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 | |
| |
| |
| |
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 | |
| |
| |
| |
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 Plnvoke 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 | |
| |
| |
| |
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 | |
| |
| |
| |
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 | |
| |
| |
| |
Security and Database Access | |
| |
| |
| |
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 | |
| |
| |
| |
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 | |