0

Currently our team develops Web Applications and now we are going to Windows Forms applications.

I have created the inception phase for our Windows Forms project structure.

eg:

ApplicationSolution

--> Security Project(Login Authentication) 

         a. Users will be registered with different applications in our application database.
           eg: ProjectApplicationId|ProjectName        | UserId
               1                   |ProjectApplication1| user
               2                   |ProjectApplication2| user 

         b. Execute Application (Start) 
         c. On Security dialog, application automatically get the userid of the user and see all the application it is registered using System.Security.Principal.WindowsIdentity.GetCurrent()
           eg: Prototype
              Welcome User! Please Choose Appliations you are registered on below:
                                 ProjectApplication1 <--this will be a dropdown
                                 ProjectApplication2
              Password: [*********************]
              [Access Application Button] 
         d. User selects the application with its password
         e. If the password is incorrect (application.exit()) else execute Selected Application 
             eg: ProjectApplication1 is selected then execute ProjectApplication1

--> ProjectApplication1

--> ProjectApplication2

--> Many to come ++

        if ProjectApplications has been closed then restart security Application.

My questions on this use case:

  1. Is my use case possible?
  2. Can you give me any recommendations ?

Currently we use setup and deployment to create installer in each Windows Forms application.

yannis
  • 39,547
  • 40
  • 183
  • 216
john ryan
  • 373
  • 2
  • 9
  • 4
    I recommend using [WPF](http://msdn.microsoft.com/en-us/library/aa970268.aspx) to develop your application instead of WinForms. – Bernard Mar 08 '12 at 02:18
  • We are using visual studio 2008..and we haven't experienced yet to develop WPF application. – john ryan Mar 08 '12 at 02:23
  • 1
    I'm sorry to say that you seem to be a bit out of date. You realize that there is a beta out now for [Visual Studio 11](http://www.microsoft.com/visualstudio/11/en-us), right? – Bernard Mar 08 '12 at 02:25
  • 3
    VS 2008 supports WPF. – NoChance Mar 08 '12 at 02:27
  • Yeah we are outdated somehow : ) I already checked Vs 2008 and it also has WPF. Do WPF supports MDIParent like on winform app?. – john ryan Mar 08 '12 at 03:10
  • @john ryan: No MDI windows, at least not out of the box. You could get third-party controls that achieve the same result though. – Bernard Mar 08 '12 at 03:20
  • 1
    You won't need to have MDI windows - sounds strange but it can actually work really well. It'll take quite a while for you to get your head around it, but you definitely should be developing in WPF now - winforms is out of date. – Rocklan Mar 08 '12 at 03:33
  • ..Can you gave any reference for me to start aside from windowsclient.net..Thanks in Regards – john ryan Mar 08 '12 at 04:53
  • 1
    IMHO WPF is a red herring and a potential "holy war starter". WinForms is older, of course, and does not support dpi independent GUIs. WPF is newer, supports Silverlight and may have the better architectural design, of course. On the other hand, the WinForms designer in Visual Studio is still more mature and stable than the WPF designer, and you won't need to buy a second tool like Expression Blend (what you need if you want to do WPF seriously). – Doc Brown Mar 08 '12 at 07:13
  • I have developed apps in both WinForms and WPF and if given the choice I would go with WPF every time, its just a lot cleaner. I only ever used the built in tools of VS 2010 and never needed to use Expression Blend for WPF development. That being said if it is the OPs first ever GUI app, then WinForms is also good choice due to its maturity and wealth of examples. – dodgy_coder Apr 24 '12 at 09:38

4 Answers4

1

Instead of diving into the details of security authentification too soon, I would strongly recommend to focus on the "real" or "business" use cases first, and what kind of application system you have in mind (in terms of number of expected users, expected lifetime of the application, general security requirements depending on the types of data available, general platform considerations like Winforms vs. WPF etc.) Otherwise you take the risk of loosing yourself into unimportant details.

Analysing things like "authentification" first is most often a sign that you have not took enough time to understand the business domain and try start with those things where you don't need any understanding of the domain.

Doc Brown
  • 199,015
  • 33
  • 367
  • 565
0

I see the following with your Use Case:

  1. You have skipped the details for entering userid and the associated validations.

  2. You are getting into details such as the display of the message "welcome user..." - This kind of details is best explored on a GUI prototype not on the use case.

Things that are not clear:

c1 - How does the application start - There is no step showing this.

c2 - Do you assume that the applications displayed are for this userid? If so, your use case should say that.

c3 - Does the user has to enter an Password?

c4 - How many times could the user enter his/her credentials?

c5 - What if the user wants to exit at some point, is it possible - How?

NoChance
  • 12,412
  • 1
  • 22
  • 39
  • Still not clear on C1 (how does the application start from windows?). C4 is still not clear. Also, how many versions of the application would run at the same time? – NoChance Mar 08 '12 at 08:11
  • c1.If all projects can be compressed in only one installer it will only have one executable file(secutiryApllication.exe) c4.only one version on selected application on security – john ryan Mar 08 '12 at 08:26
0

I've developed both desktop applications and web applications and mixture of both (dual interfaces Fat and Thin clients).

So long as you have a good client-server (database back end) architecture.

It should not matter what the front end is (web application, desktop application, mobile application).

After re-reading your question it makes no sense?

EDIT:

Ok, just re-re-read your question.

Basically just have a login screen, once the user logs in you simply store the ID in memory (think session ID).

The user is then presented with a screen that shows ALL Project Applications (that they have access to).

They can then click any any one to access it. Pretty straight forward.

Darknight
  • 12,209
  • 1
  • 38
  • 58
0

c) "On security dialog..."

Automatically pulling a user id from an identity provider is a very convenient attribute of a system from a user's perspective. However, I am not sure I would specify the provider to this level of detail in the use-case, though. In addition, I would also want to specify and provide a fall-back method of providing a user-name to the security dialog in the event that the specified [default] provider is situationally not appropriate or unavailable for the user. More than likely, a manually typed entry-mode of the username.

Are the passwords for users unique to each project? If they are unique for each user on each project, the flow you presented makes sense. Otherwise, if each user has only one password, regardless of project, I would require the password before presenting or suggesting a choice of project.

e) "If the password is incorrect..."

I try to favoring only checking for the positive in the default case. Here, I only want to know whethere the password was validated for the particular username. Besides a common case of the incorrect password, there are be numerous other cases that would need similar handling to the incorrect password. So in short, I would restate the step as:

If Password is validated, execute/present...else notify with reason not validated (incorrect/mismatch, connection issue, maintenance locked, load/license locked, access revoked, etc) and [allow/deny] retry.

JustinC
  • 3,306
  • 17
  • 20