Intro To Design 1 - Project Overview Elementary School Library: User Sub-System Class Diagrams Software Engineering CSCI-3321 Dr. Tom Hicks Computer Science Department
"Good Design Is Good Design" Language Independent! Data Independent Database Table Direct Access File Text File Should Not Have Multiple Copies Of Redundant Data Never Makes Sense To Lock & Change Multiple Records When We Could Lock & Change One Record!
Take Really Good Notes During Lectures
Your Team Will Do A Prototype Focal Point Team Presentations OVC Credit
Think About: Prototype Look Like?
MDI Containers Can/Should Have A Background Your Protoype must be done in C# Your Prototype Must Professional In Appearance I will help you learn to put together MDI Conatainers with a background
Sub-Systems High Level Architecture Diagrams During the Design Stage, you will partition your project into Sub-Systems Elementary Library Application Your High-Level Architecture Diagram will be a graphic which does nothing more that show the various Sub-Systems for your project. User Media Check-Out Transactional Vendor Purchase Orders Transactional Fine Payment Transactional For Those Of You Who Know Database : These Will Be Tables
Sub-System: User Non-Techie Interface Develop In 5 Tutorials
Non-Techie Interface? 1] Easy To Use! 2] No User Manual Needed! 3] No Training Needed!
Class Diagram - EXCEL - 1 During the Design Stage, you will partition each of your Sub-Systems into a collection of items. You might think of these as Fields if you were using a Database or class items if using a Programming Structure DESIGN GUIDELINES Uniquely Identify Each & Every Record Name May Not Be Unique String Searching Slower Than Numeric Searching
Class Diagram - EXCEL - 2 DESIGN GUIDELINES Even If We Were Willing To Assure That Name Is Unique & If We Were Willing To Tolerate Slower Searching Name BAD CHOICE First & Last in one container Bad Practice to put more than one item in a single container! String Searching Slower Than Numeric Searching Slower Searching Difficult To Order By
Should Be Able To Uniquely Identify Each & Every Record Class Diagram - EXCEL - 3 DESIGN GUIDELINES ID INT Auto Increment No Repeat c Faster Search Rapid/Easy Order By Not Have To Parse Field Name Should Be Able To Uniquely Identify Each & Every Record
Group Of 2-3 What Are UserTypes? Elementary Library Class Diagram - EXCEL - 4 DESIGN GUIDELINES UserType Group Of 2-3 What Are UserTypes? Elementary Library What DataType? c What Do You Think Of This? YUK YUK YUK How Do Users Know What The Choices Are? What Makes You Think Your Users Will Spell Choices Correctly? Order By String Slow Searching String Slow
Suppose UserType VARCHAR(20) Class Diagram - EXCEL - 5 Suppose UserType VARCHAR(20) Suppose UserTypes, at this instant in time, are "Student", "Librarian", "Teacher", "Faculty" We can create a Manual ComboBox to fill a Text Field? We Have Reduced Some Of The Potential Data Entry Errors & Eliminated The Need To Know The Choices!
Class Diagram - EXCEL- 6 Bind Data Suppose UserTypeID INT Suppose UserTypes, at this instant in time, are "Student", "Librarian", "Teacher", "Faculty" Programmatically Populate ComboBox: Code From File From Database Table Bind The Choices Select "Student" return 1 Select "Librarian" return 2 Select "Teacher" return 3 Select "Faculty" return 4
Class Diagram - EXCEL- 7 Next Ten Years Suppose UserTypeID INT Create Software for the "Next Ten Years" Bind The Choices: Select "Student" return 1 Select "Librarian" return 2 Select "Teacher" return 3 Select "Faculty" return 4 Programmatically Populate ComboBox: Code NOT BEST CHOICE From File * From Database Table
Class Diagram - EXCEL- 8 Database Choice Table UserType in UniversityLibrary User Type Data Entry User Type Data Entry
Class Diagram - EXCEL- 9 Administrative Options #1 How Do I Envision This Working?
Class Diagram - EXCEL- 9 Administrative Options #2 How Do I Envision This Working?
Class Diagram - EXCEL- 9 Administrative Options #3 How Do I Envision This Working?
Not Great! Sub-Systems Low Level Architecture Diagrams - 1 F Next btnA,…, btnZ Last First Next Previous Low Level Architecture Diagrams Illustrate Functionality! Communicate Functionality Stakeholder/Developer
Sub-Systems Low Level Architecture Diagrams - 2 Not Great!
User Sub-System Supporting Classes How Does UserType Fit In? Supporting Class Does Not Justify A Sub-System F Add F Departments F Edit F Delete F Add F UserType F Edit F Delete User Sub-System Supporting Classes
UserTypes Interface For Supporting Class ? One Of The Teams, Last Year, Did A Complete Sub-System Interface (Next, Previous, First, Last, Edit, OVER-KILL Too Much Work UserType Is A Supporting Class
Design Is Somewhat Circular Prototype Class Diagrams Architecture Diagrams
Architecture Diagrams Class Diagrams Help Identify Data Architecture Diagrams Help Identify Data
Your Application 3+ Simple Sub-Systems & 1-2 Transactions All applications will need several forms Bound In An MDI Container. There Must Be At Least One Sub-System For Each Team Member There Must Be At Least One Transactional Sub-System
Sub-Systems Must Have Navigation Buttons You Will Need Navigation Buttons Buttons Need Not Look Like = = = = = = = > Must Have: Next: Go To The Next Logical Record Previous: Go To The Next Logical Record First: Go To The First Logical Record Last: Go To The Last Logical Record
Always Save The User As Many Clicks As Is Possible! Minimize Key Strokes For User You Should Often Ask: Why Is The User Here What Do They Need To Do Next? MenuStrips Will Help! Always Save The User As Many Clicks As Is Possible!
Sub-Systems Must Have Navigation Buttons Download/Make Your Own - HOPE THEY ARE BETTER THAN MINE! Use Use Good Tool Tips On Each & Every Button
Sub-Systems Must Have Quick Link Buttons I have found that Users like Quick Link Buttons!
Extra Credit For Advanced Searches Sub-Systems Must Have Simple Searches Search By First Extra Credit For Advanced Searches
Most Software Engineers Include The "Brief Class Diagram" Which Are Required? What Type Of Control On The Screen? Default Values?
Most Software Is Completed By Teams! Software Engineers Have To Wear Many Hats: The Software Engineers, Who Designed The System, May Not Be One Of The Developers Who Are To Implement The Design
Detailed Class Diagram My Preferences When I Do Design, I Constantly Put On My Developer Hat The Goal Is For The Developer To Implement The Prototype & System Envisioned By The Designer
Class Diagrams: Detailed Supporting Class Detailed Class Diagrams Can Occupy A Lot Of Real Estate?
Select Filters Help You Drill Down Into The Data Sub-Systems Must Have At Least One Select Filter Sub-Systems Must Have At Least One Order By SELECT * FROM Users WHERE UserType Like "Students"; Select Filters Help You Drill Down Into The Data