DCSIMG
March 2008 - Posts - Maxim

March 2008 - Posts

In previous post I wrote about running WPF-XBAP application on client machine in "Full-Trust Mode".

clip_image002

That worked fine and the post was helpful (I know this from post's talk-backs).

I described how to generate security certificate and how to install it on client machine (thru IE options).

clip_image004

Recently, I worked with XBAP deployment files and required to copy them to new IIS server, during the process I've forgotten to include certificate (ext: "cer") file. I tried to open the application from client machine (in IE or Firefox) and got error message, that tells about security restrictions and that client has refused XBAP application in full-trust mode.

clip_image006

clip_image008

I know another way to generate certificate file without using MS Visual Studio and I'll show it here.

Some Introduction…

What are "deployment files"? – XBAP application BUILD generates assemblies and other resources that required running XBAP application. These files can be placed on IIS virtual folder and being downloaded to remote client machine by using supported Internet browser (IE or Firefox).

To see which files will be included in deployment folder go to "Publish" tab in project settings form and click on "Application Files":

clip_image010

To see options for deployment and how the setup page will look go to "Publish" tab in project settings form and click on "Options":

clip_image011

Check option: "Use '.deploy' file extension". - This is helpful for full-trust mode (some machines don't allow downloading assembly files like EXE and DLL):

clip_image013

If you want to include some additional files for application deployment, go to "Publish" tab in project settings form and click on "Prerequisites":

clip_image015

"Prerequisites" - setup-package files like .Net 2.*-3.* or Windows-Installer 3.*:

clip_image017

To generate deployment files and to publish them in selected folder click "Publish Now" in "Publish" tab in project settings form and click on "Prerequisites":

clip_image019

"Publish Now" generates these files:

clip_image021

"index.htm" is a deployment page, which was build with two options to run XBAP (Click-Once) application. "Run" option opens setup dialog (in case that application runs at first time or deployed with as new version), "launch" opens XBAP directly (without the installation process):

clip_image023

Usually I copy certificate file into this directory and place a link for download on "index.htm", but what can I do if I've forgotten to create the certificate file and already copied deployment files to client's IIS server and I don't have MS Visual Studio to create the new one from sources or event don’t have any sources (project code source files)? Answer: I can extract certificate into file from deployment executables. I can extract it from "setup.exe" file or from original "EXE" or "DLL" file if it wasn’t converted into other unknown file type.

I'll show ho to extract certificate from "setup.exe" (this file includes the same certificate as XBAP-Application EXE files).

1. Go to deployment folder and do right-click on "setup.exe" file:

clip_image025

2. Open "Properties" form and go to "Digital Signatures" tab page, select included digital signature and click on "Details":

clip_image027

3. Click "View Certificate" in "General" tab page:

clip_image029

4. Click on "Copy to File" in "Details" tab page:

clip_image031

5. Proceed with opened "Certificate Export Wizard":

(5.1)

clip_image033

(5.2)

clip_image035

(5.3) you can place extracted "cer" file in deployment folder for future use:

clip_image037

(5.4)

clip_image039

When you'll finish with wizard you'll get "cer" file:

clip_image041

See previous post with instructions that will help you with certificate installation. I found this post that also describes how to run XBAP in Full-Trust mode.

(I'm "cooking" some light application that will help to install certificates automatically on user machines, when I'll finish it, I'll write the post with all sources)

Hope this post was helpful ;-)

מישהו שלח לי היום קטע וידאו כתגובה לפוסט שהעליתי לפני מספר ימים...

זה קטע וידאו שהיה בפוסט:


וזה קטע וידאו שקיבלתי במייל:

העלה לי את חיוך בסוף יום קשה :-) וגם עשה חשק לשתף ...

מספר דברים נוספים:

מאחר שהצעותיי לגבי עיצוב החולצות של בלוגרים לא התקבלו/נענו אני מציע שני פתרונות עיצוביים חילופיים...

חולצה עם אקוולייזר שמשנה את צורתו בהתאם למוסיקה:
 

חוצה עם מסך LCD שניתן להציג עליו את מה שבא לכם:
t_shirt_2

רמקולים שמפיקים סאונד ע"י פלזמה. נראה כרעיון עתידני, אך אינו חדש. הטכנולוגיה קיימת מאז שנות החמישים של מאה העשרים.

תהנו :-)

זהו פוסט המשך לפוסט הקודם, אשר שייך לסדרת הפוסטים בנושא UI . כאן אנסה לתאר את הטרנד של אפקט WOW - כיצד עיצוב יכול להשפיע על שווק המוצר ומה תפקידו של מעצב תעשייתי (ניתן לקרוא את הפוסט הזה גם ללא קשר לפוסטים הקודמים).


מתודולוגיה בפיתוח ממשקי משתמש - אפקט WOW


 עיצוב מוכר - לעיצוב המוצר חלק חשוב בהצלחת השיווק שלו, בין אם זה טנק או מוצר צריכה המוני כיום עיצוב המוצר נעשה תוך מתן דגש על הפיכת המוצר למושך יותר ושיווקי יותר, כל זאת בנוסף להתמקדות בצדדים הטכניים והנדסיים של המוצר.

תפקיד של מעצב תעשייתי הנו משמעותי, מושג "סקסי" כיום מיוחס גם למוצרי הצריכה שבעבר לא היינו מעלים בדעתנו לקרוא להם כך.

 

ראו מה קורה כאשר מעצב מחליט לתת את ה- "touch" שלו למקדלת:

optimus_keyboard1 optimus_keyboard2

מקלדת זו עוצבה בסטודיו של ארטיום לבדב (Artyom Lebedev - מעצב ידוע ממוסקבה).

עוד מקלדת:

fairlightx_keyboard

במקרה זה ניתן לראות ש- Fairlight הלכו יותר על פונקציונאליות. המקלדת נראת פחות סקסית, פונה לקהל ספיציפי (אנשי סאונד, גראפיקה, טלויזיה).


"עיצוב תעשייתי" (AS-IS מתוך ויקיפדיה):

עיצוב תעשייתי הוא אמנות שימושית שבאמצעותו ניתן לשפר ולשבח את האסתטיקה והשמישות של תוצרת מיוצרת. עיצוב זה מתאפיין בתהליך של מחקר, חשיבה קונצפטואלית, חדשנות רעיונית, אפיון צורני, פיתוח ותכנון ועד לבקרה של תהליכי הייצור, השיווק המכירה והשימוש של המוצר. העוסק בעיצוב תעשייתי קרוי מעצב תעשייתי.

עיצוב המוצר הוא תחום נלווה בעיצוב תעשייתי. עיצוב המוצר מתמקד במוצרים בלבד ואילו לעיצוב תעשייתי יש פוקוס רחב יותר על רעיונות, מוצרים ושיטות. בנוסף להתחשבות באסתטיקה, שמישות והנדסת האנוש, תחום זה מתחשב בהנדסת העצם, תועלת כמו גם שמישות, השתלבות בשוק ועניינים אחרים.

העיצוב האיכותי הפך להיות אחד המרכיבים המשמעותיים באסטרטגיה של חברות כלכליות כדוגמתן של חברות הרכב, חברות מוצרי האלקטרוניקה ומוצרי הצריכה השונים. סוני, פיליפס, אפל, סימנס, סמסונג וחברות גדולות אחרות מעסיקות מאות מעצבים תעשייתיים הפעילים באפיון ובעיצוב קונספטים עתידיים חדשים כל הזמן.

בשנים האחרונות עבר העיצוב התעשייתי ממרכיב בדרגה שנייה בתהליך פיתוח המוצר, למרכיב משמעותי מדרגה ראשונה. הבנה חדשה זו של הערך הגבוה שמעניק העיצוב למוצר בעיני הצרכן נובעת מהתחרות העזה בין תאגידים והאפשרות להשוות פערים טכנולוגיים והנדסיים בזמן קצר. במצב שבו אין הבדל בין מוצרים על המדף, העיצוב האיכותי הוא זה שיכול לפתוח את הפער ולייצר ערך חדש.

העיצוב התעשייתי בשנים האחרונות אינו עוסק רק בצורה הכללית אלא מטפל בכל מהלך התסריט של חווית המשתמש. הוא עוסק בקשר בין האובייקט למותג, ולערך הסמלי של המוצר בעיני המשתמש כמרכיב של זהות.

- "אפל" מודגשת בכוונה: לחברה זו יש "Record" עשיר בתחום החדשנות, החדשות אינה רק בתחום הטכנולוגי אלא גם בתחום העיצוב של המוצר. אפל בין הראשונות הבינה שעל מנת למכור יש לעצב מוצר כך שיהיה מושך (סקסי). לכל מוצר יש עיצוב בהתאם למגזר אליו הוא מיועד ובהתאם לפונקציונאליות שהוא מיישם.

האם ניתן לשלב פונקציונאליות עם יופי?

nokia_vs_iphone 


אפקט WOW

מושג אופנתי חדש (טרנד מאז סוף שנות התשעים של מאה העשרים) המתאר מצב התפלאות מהחוויה אותה חווה אדם (חלק מאנשים נוהגים לצעוק WOW כתגובה למשהו "מגניב" שהם חווים). מוצר עם עיצוב שנותן חוויית WOW יימכר, ללא קשר לקהל היעד שלו. לכל סוג משתמש יש את ה-WOW שלו, ז"א כל אחד מאיתנו מתלהב ממשהו. יצרן צריך למצוא את ה-WOW שיש להשיג בעיצוב המוצר.

WOW – גם בעיצוב מרהיב/מגניב או מעניין של ממשק התוכנה. אם עיצוב ייעשה בהתאם לתפקיד התוכנה ובנוסף יהיה גם נקי, יפה ושימושי הוא יגרום לאחוז הצלחה מסויים במכירה/הפצה של המוצר. מלים "נקי" ו"שימושי" הודגשו בכוונה, ישנם יצרנים מסויימים שתופסים את אפקט WOW באופן שגוי. לא מספיק לעשות מוצר יפה ועם המון זוהר ואפקטים מרהיבים ולא מספיק לתת לו מראה חדשני, מוצר צריך להיות שימושי ובעל עיצוב נקי. עיצוב "נקי" - המשמעות היא לשמור על פונקציונאליות המוצר ולא להתעסק יותר מדי בפירוטכניקה. עיצוב "שימושי" - ניתן לפגוש מוצרים מתקדמים ומעוצבים מצוין, אך הם אינם נכנסים להגדרה של שמישות. אתם יכולים לקנות אופניים מבריקות, נוצצות ועם מנגנון הנעה הכי מתקדם, אבל אם לא יהיה לו הגה נוח או כיסא יהיה כזה שלא ניתן יהיה לשבת עליו יותר מעשר דקות לא תשתמשו במוצר זה ולא תמליצו עליו לחברים שלכם. לדוגמא: אם המוצר שלכם נועד לאוכלוסיה של אנשים מבוגרים אז הוא צריך להיות מעוצב בהתאם למגבלות הידועות של הגיל.

במקרה זה לפי דעתי לקחו את עניין האפקטים של ה- GUI קשה מדי:

("הכל עניין של פרופורציות" - צריכים לדעת לשלב עיצוב עם פונקציונאליות בטעם טוב)


חבילת פיתוח חדשה של מיקרוסופט מאפשרת לבנות ממשקים גראפיים מרהיבים בצורה נוחה וכאן אין גבול לדימיון. חבילת WPF נותנת כלים שהיו לרשות מפתחי משחקי מחשב: גראפיקה תלת-ממדית, איכות של תמונה וקטורית, כלים לניגון קבצי מדיה (שמע/וידאו), פקדים חדשים ויכולות עיצוב רבות. בעבר הלא רחוק (בעידן של דוט-נט 2.0 או קודמיה), מפתחים השקיעו המון שעות בפיתוח פקדים מותאמים אישית ועדיין לא יכלו להגיע ליכולות שניתן לקבל בקלות ב- WPF. זו אינה פרסומת ל- WPF, קיימות חבילות פיתוח חילופיות דומות (אולי לדעת אחרים טובות יותר).

WPF in Action:

בנוסף ליכולת לעצב ממשק לא סטנדרטי ניתן לעצב ממשקים עם מראה קלאסי (בדומה להגדרה "Look and Feel" שיש ב-Swing של ג'אווה, ז"א פקדים מקבלים מראה סטנדרטי של פקדים במערכת ההפעלה – בהתאם לערכה גראפית המותקנת). יישומים שנועדו למגזרים מיוחדים (כמו: תעשיית ייצור מכונות, חדרי בקרה ורפואה) יכולים להיות מצויידים בפקדים מיוחדים כמו שעונים, מדי לחץ , גרפים דינאמיים (דו-ממדיים או תלת-ממדיים) ועוד.

דוגמאות ליישומים שנבנו ב-WPF ניתן למצוא באתר: http://channel9.msdn.com/wiki/default.aspx/WPF.ApplicationPortfolio.


ראו בהמשך פוסט על "טכנולוגיות תצוגת ממשק משתמש - סקירה", אשמח לקבל הערות/תיקונים לגבי הפוסט. לרשימת הפוסטים של הסדרה לחצו כאן.

 

PS

מחכה בכיליון עיניים להרצאות, פגישות ועוד דברים מעניינים בקט-אד 2008 (תמצאו אותי יושב גם בהרצאות על WPF) .

Posted by Maxim | with no comments

בהמשך לפוסט הקודם שלי שבו הצגתי סרטון עם ריקוד הרובוטים של סוני אני רוצה להציג סרטון נוסף שמציג יכולות מדהימות של "רובוכלב" (Big Dog):

חברת Boston Dynamics המפתחת מערכות מתקדמות לצבא, עוסקת בפיתוח רובוטים מתקדמים בעלי יכולות מדהימות (כבר אמרתי: "העתיד כבר כאן"). שימו לב ליכולות הפנטסטיות של הרובוט, חיכוי מדהים של תנועות בעל חיים (כלב, סוס או כל בעל חיים בעל ארבעה רגליים). שווי המשקל נשמר ע"י מנגנון מיוחד המשלב בינה מלאכותית (שימו לב ליציאה מהחלקה של הרובוט בקטע של קרח בירידה על הכביש).

תארו לכם: אתם מטיילים באיזה יער ופתאום פוגשים כזה דבר בלי לדעת שזה רובוט :)

Posted by Maxim | with no comments

חג שמח לכוווולם!

אני רוצה לשתף אותכם בסרטון מגניב שמראה ריקוד מגניב של רובוטים יפניים:

 בעייניי זה ממש מגניב, פריצה טכנולוגית מדהימה. שימו לב לתנועה סינכרונית, תזוזות גפיים חלקות, התנועה הכמעט אנושית של הרובוטים. נעשתה כאן עבודה ענקית, מכאניקה, אלקטרוניקה, תוכנה ועוד; זה ממש מדע בדיוני.

העתיד כבר כאן, תהנו :)

Posted by Maxim | 1 comment(s)
תגים:, , ,

Recently I required to create some simple control that shows 'wait process' (like this image in Vista). MS Blend allows you to create cool animated control in one minute or even less.
I want to show how to create very simple continuous animation and some tips in quick animation creation.

Minimum requirements before you'll continue: this post wasn't written as 'Kit for Beginners', means that you must have a basic knowledge/experience in MS Blend application.

 

Open MS Blend (ver. can be 1+ or 2+) and create new WPF (EXE) project.

Draw two circles (in main window).

Select 'Ellipse' shape and hold 'Shift' key to draw perfect circles (the radius of small circle is about ~60% radius of big).

image  image image 

Align small circle in center of big.

Select both circles and do right-click, when click on 'Horizontal Centers' and 'Vertical Centers' to align circles under 'Align' menu.

image image

Combine circles into one shape (ring like donates).

Select both circles and press on right mouse key. Click on 'Exclude Overlap' under 'Combine' menu.

image image

Fill background color.

Use gradient brush with preferred colors. One side can be darker, lighter side can be semitransparent.

image image image

Fill outline (stroke) color.

Use solid or gradient brush (can be semitransparent).

image image

Convert shape (ring) into user control.

Right-Click on shape and click on 'Make Control...'

image image

Blend  generates new user control from defined shape (and replaces shape path in 'Window1' with instance of 'ucWaiting').

image image 
     (appeared in 'Window1.xaml')

Rebuild project before you'll proceed to next paragraphs. 

Create simple rotation animation.

Because the control must be with continues animation from the moment when its loading event is fired, I suggest to create new stroryboard from adding new event in triggers panel.

Click on '+ Event' button in 'Triggers' panel, Blend will add default event 'Loaded' (fired when control is loaded in parent's visual container).
Click on '+' and 'OK' in message box that asks you if you want to create new stroryboard (animation).

image image

These actions are leading to creation of new timeline with storyboard (animation) named 'OnLoaded1'.
The Blend is switched into recording mode, turn it off by clicking on red circle (see marks):

image 

Save current shape position in timeline by recording new keyframe. Zoom-In the timeline and move it position of 0.5 seconds. Select shape (ring) and click on red circle to start recording.

image image

Rotate shape 360 degrees (hold 'Shift' button for 45 deg. rotation for each movement). After one round is completed, turn-off the recording. You can preview animation by pressing 'play' button.

image image

Storyboard contains animation with two keyframes, animation makes simple rotation of the shape. Animation will be started when 'Load' event is fired.


Continuous Animation

Last step in animation is to set continuous rotation.

Expand 'path' object in objects and timeline tree and expand 'RenderTransform' and 'Rotation' animation. Do right-click on 'Angle' item and click on 'Edit Repeat Count' in context-menu.
When 'Edit Repeat' window is opened click on marked button 'Set to Forever', click on 'OK' to close the dialog.

image image

The animation will be played forever.

Adjust size of control in main window and test project.

Set control's size 24x24 and press <F5> key.

image

Now it is ready!

>> Of course you can improve this control by adding new functionality, properties (like boolean 'EnableAnimation' or 'ContinuouseAnimation'), by defining more sexy design of shape(s) and/or colors.

PS

Additional tips for animations.


This sub-menu allows to create animations in easy way:

image
Many beginners unfamiliar with these options:

[Duplicate] - duplicates selected animation, very useful in case you want to save extra work by duplication existing animation

[Reverse] - reverses keyframes, very useful in case you want to switch keyframes or to create duplicated animation with reversed keyframes, for example: one animation is used to show some GUI element, another is used to hide this element; you can create one animation for showing of element and another animation will be duplicate (copy) with reversed keyframes.


Hope this post was helpful ;-)

Technorati Tags: ,,,

Recently I work on WPF-XBAP application that will run from intranet website:

 xbap project type

This application must have unrestricted access to client's OS resources (that is unusual for XBAP projects):

full trust app

I publish it on local website by using "Click-Once" deployment mechanism:

app publish

User can launch the application from deployment page (also can run application setup):

run app from website


I get security error ("User has refused to grant required permissions to the application"):

trust not granted


Means that application tried to perform some restricted action, beyond of XBAP sandbox. Actually it tried to read local video file:

xaml code

(It reads video file from local source, for preview option before uploading it to FTP server)

After some research I found how to fix that:


(1) Project must be signed with "Click-Once" manifest (security certificate file):

certificate

(If project doesn't contain "Test Certificate" click on rounded button to create a new one)

(2) After temporary certificate was created we'll save it into file (click on "More Details"):

save certificate 01


File export wizard (step A):

save certificate 02

File export wizard (step B):

save certificate 03

File export wizard (step C):
(Enter username and password, only if you did so while "Test Certificate" creation in par. 1)

save certificate 04

File export wizard (step D):

save certificate 05

File export wizard (step E):

save certificate 06

File export wizard (step F):

save certificate 07

(Now project certificate is saved as external file)

(3) Now we'll go to Internet Explorer and will register this certificate:
(Open "Internet Options" from "Tools" menu)

ie options

Click on "Certificates" in "Content" tab:

ie options - content tab

Import certificate file from "Trusted Root Certification Authorities" tab:

ie options - certificates

File import wizard (step A):

certificate import wizard 01

File import wizard (step B):

certificate import wizard 02

File import wizard (step C):

certificate import wizard 03

File import wizard (step D):

certificate import wizard 04

Confirm importing:

certificate import wizard 05

If succeed you'll get this window:

 certificate import wizard 06

And will see certificate here:

certificate imported - ok

Do same in "Trusted Publishers" tab:

ie options - certificates - publishers

Close IE options:

 ie options - ok


(6) No we'll go to "Signing" tab in project options and will select registered certificate:

app resign

Select registered certificate from local store:

certificate from store

(5) Republish the application:

app publish again

app publish again - msg

Now XBAP can run in "Full Trusted" mode:

xbap video player

Hope this post was helpful ;-)

 

PS: see this post about certificate extraction for XBAP applications.


זהו פוסט המשך לפוסט הקודם, אשר שייך לסדרת הפוסטים בנושא UI . בפוסט זה אדגים את ההבדל בין מפתח תוכנה לבין מעצב ממשק משתמש ואנסה לתאר גישה חדשה בפיתוח ממשקי משתמש בעזרת טכנולוגיות חדשות כמו- WPF (ניתן לקרוא את הפוסט הזה גם ללא קשר לפוסטים הקודמים).


מתודולוגיה בפיתוח ממשקי משתמש - שיטות בהנדסת תוכנה:

מעצב vs. מפתח

 

designer_vs_developer

הזכרתי פעם: "למעצב המוצר יש תפקיד מכריע כמו למפתח". בפיתוח מוצר יש להתחשב במספר גורמים מכריעים, חלק מהם: קהל היעד (למי נועד המוצר), פונקציונאליות, נגישות ושמישות.

לדוגמא מכשיר טלפון סלולארי: כיום טלפונים ניידים כוללים המון תכונות (פיצ'רים) ובעלי יכולות רבות. חוץ מיכולת העברת השמע (שזו אמורה להיות המטרה המרכזית שלו) הוא מצויד ברכיבים כמו מודם סלולארי, מערכת ניווט (GPS), ספר טלפונים, פנקס, מחשבון, מצלמה, נגן מדיה, מקלט רדיו, דפדפן אינטרנט ועוד פיצ'רים רבים. לפני עשור לא היינו מדמיינים שכל זה היה ניתן להכניס לגוף הקטן של טלפון נייד. הבעיה בפיתוח מוצר כזה - זה לבנות ממשק פונקציונאלי, אך נוח לשימוש עבור המשתמשים שעבורם נועד המכשיר. דוגמא פרטית: לסבתא שלי יש טלפון סלולארי (לא הכי חדיש), כל שימוש שהיא עושה עימו זה רק שיחות (בעיקר עם בני משפחה), טלפון מצויד בחלק מהתכונות אשר פירטתי מקודם, המכשיר קטן במימדים ומכך נובע שיש לו כפתורי הפעלה קטנים וצג קטן עם טקסטים בגודל קטן. מכשיר זה יכול להתאם לדור צעיר יותר, אך לאנשים זקנים ולאנשים עם מוגבלויות מסוימות אינו שימושי (עובדה מצערת - אין הרבה יצרנים שמפתחים מכשירים למבוגרים או עבור אוכלוסיות מוגבלות או עבור ילדים, אין גם הרבה חברות סלולאר שרוצות להתעסק עם זה).


אחזור לנושא...

מיקרוסופט שמה דגש על תחום פיתוח המוצרים מכל ההיבטים ויחד עם חבילת WPF מביאה מודל פיתוח תוכנה שמערב מעצבים ומפתחים, מודל זה נועד לתת מענה לפעולה הדדית בין מפתח תוכנה למעצב גראפי.

הכלים החדשים לפיתוח תוכנה ב- WPF נותנים אפשרות לבצע עבודה על ממשק המשתמש במקביל - ז"א מעצב גראפי יכול לעצב חלקים מסוימים של ממשק גראפי ב-MS Expression Designer ואחר כך, ובמקביל, עם מפתח תוכנה לעבוד ב- MS Expression Blend ומפתח יעבוד ב-MS Visual Studio 2005/8. זה אפשרי אודות מתודולוגיה של פיתוח שמושתת על הכלים הללו והקשר ביניהם מתבצע דרך XAML. לאחר תכנון נכון של הפרויקט רוב המודולים שצריך לפתח כבר ידועים מראש וניתן להתחיל לעבוד על כל אחד מהם (בתנאי שיש מודל שכבתי שעושה הפרדה בין שכבת הממשק הגראפי - GUI ליתר השכבות בתוכנה).

 

שיתוף פעולה בין מעצב למפתח

השיטה הישנה:

עיצוב ממשק התוכנה נעשה בתוכנה גראפית כלשהי. רכיבי הממשק (כמו פקדים מעוצבים) היו מומרים לקבצי תמונה (מפת סיביות - Bitmap) מהסוג שנתמך ע"י סביבת פיתוח תוכנה בה היו משלימים בניית ה-GUI. תהליך זה ארך המון זמן ולא יכול היה להתבצע במקביל. תוצאות הייצוא של הרכיבים הגראפיים מתוך תוכנת עיצוב גראפי אל תוכנת פיתוח GUI היו באיכות נמוכה, כפי שניתן לראות באיור של השיטה: תיבת-קומבו שנבנתה ע"י המעצב שונה מתיבת-קומבו שיצאה לאחר שהמפתח התאים אותה ל-GUI.

מכוון שתהליך פיתוח הממשק לא יכול להתבצע במקביל, זמן הפיתוח היה ארוך, העבודה לא יכולה להתבצע במקביל מסיבות שונות כמו: GUI ניתן לעצב רק לאחר ששכבת המידע או שכבת לוגיקה העסקית מוכנה, GUI ניתן לעצב רק לאחר שכל הרכיבים הגראפיים הוכנו ע"י המעצב אחר. בד"כ חברות לא העסיקו מעצבים גראפיים, עיצוב הGUI נעשו ע"י מפתחי התוכנה (למען האמת גם אומר שלחלק גדול ממפתחי התוכנה חסר חוש עיצובי/ציורי או רקע בתחום, הם גם לא חייבים להיות מעצבים מתוקף תפקידם).

 

השיטה החדשה:

בשיטה החדשה ניתן להתחיל עבודה על GUI במקביל, מעצב יכול להתחיל עבודה על הרכיבים הגראפיים של הממשק במקביל מפתח התוכנה יעבוד על הקוד, יכתוב את לוגיקת ההפעלה של הממשק וייתן פונקציונאליות לאותם רכיבים הגראפיים שמעצב בונה.

ניתן ליישם מתודולוגיה חדשה תודות לכלים החדשים ושפת ההתקשרות שלהם -  XAML. למשל: מעצב יבנה ממשק על כל רכיביו (או רק רכיבים) בתוכנה MS Expression Designer או בכל תוכנה שתומכת בפורמט ייצוא של XAML, בו הזמן מפתח יוכל לעבוד על "code behind" של GUI, מפתח יכול לעבוד ב-MS Expression Blend ו/או ב-MS Visual Studio 2005/8 או בכל כלי פיתוח אחר שתומך בפורמט ייבוא של XAML.


XAML:

  • מהווה גורם מקשר בין תוכנה לעריכה גראפית לבין תוכנת פיתוח הקוד; ניתן לבנות רכיב גראפי (כמו כפתור, למשל) עם כל המאפיינים החיוניים, ולשמור אותו בפורמט של קובץ XAML. קובץ יתאר מאפיינים שונים של האובייקט (כמו: גודל, צבע, שקיפות, הצללה ועוד).

  • את רכיב הגראפי אשר שמור בקובץ XAML ניתן לייבא לתוך סביבת פיתוח של GUI ולתת לו פונקציונאליות דרושה. ניתן להשתמש בכל שפת תכנות שנתמכת ע"י חבילת דוט-נט או להמשיך לפתח ב-XAML, זה תלוי תכנון הממשק.

בעזרת XAML, מעצבים ומפתחים יכולים לפשט תהליכי פיתוח:

כפי שניתן לראות באיור ראשון של השיטה, איכותם ועיצובם של רכיבים גראפיים לא נפגם במעבר בין סביבות שונות, כוון שנעשה שימוש בפורמט אחיד (XAML) שמפורש באופן מדויק בצד המייבא.

קיימים מספר כלים המאפשרים לעצב רכיבי GUI ולייצא כקובץ XAML, בנוסף לכך רוב היצרנים של תוכנות לעיצוב גראפי מאמצים את הפורמט, כך למשל ניתן לעצב רכיב גראפי בתוכנה תלת-ממד מסוימת לייצא אותו כ-XAML אל סביבת פיתוח.

לסיכום אומר: תנו לכל אחד לבצע את העבודה שהוא יודע לעשות הכי טוב (בהקשר של "מעצב vs. מפתח"). כל אחד למד את התחום שלו ולכל אחד יש התמחות בתחום שלו. מקצוע העיצוב הולך ותופס תאוצה בשנים האחרונות. מפתח תוכנה יכול להיות בעל כישרון עיצובי, אך אין זה יהיה נכון שהוא יעמיס על עצמו משימה של עיצוב GUI שאותה יכול לבצע בקלות המעצב. מודל פיתוח זה כבר עובד בתחום האינטרנט, לכן אין שום סיבה שלא יצליח בתחום היישומים החלונאיים.

מה יש לנו היום:

::: כלים של מיקרוסופט עבור מעצבים ומפתחים
::: תכנות הצהרתי ב- XAML
::: כלי פיתוח של צד שלישי: Aurora by Mobiform, ZAM 3D by Electric Rain, e.g.

 

הערות: ניתן לנהל ויקוחים/דיונים רבים לגבי נכונות הגישה או המצב במציאות. השילוב של מעצב ומפתח באותו הפרויקט די מסובך ודורש מיומנות בניהול פרויקטים. שימוש בכלים חדשים כמו MS Expression Blend במקביל ל- MS Visual Studio 2005/8 גם אינו פשוט, לפי ניסיוני אומר שאין עבודה חלקה בעיצוב הממשק כאשר עובדים במקביל עם כלים אלה ועוד ע"י שני אנשים ויותר, בפרויקטים גדולים זה יכול להיות מסובך עד בלתי אפשרי. כעת מתבשל פוסט בנושא, שבו אנסה לתאר את המצב היום ואת השיטות לעיצוב ממשקים גראפיים בעזרת כלים אלה וע"י שילוב מעצב בצוות המפתחים.


ראו בהמשך פוסט על "מבוא למתודולוגיה בפיתוח ממשקי משתמש - אפקט WOW", אשמח לקבל הערות/תיקונים לגבי הפוסט. לרשימת הפוסטים של הסדרה לחצו כאן.