Peter Birkholm-Buch

Stuff about Software Engineering

Page 11 of 17

Transformation af forretningskrav med fast overfladeareal

Jeg har gennem tiden skrevet et utal af tilbud baseret på udbudsmateriale, der var mere eller mindre gennemarbejdet.

Desværre har de fleste kravspecifikationer en stor fejl:

  1. De funktionelle krav har været skrevet i hvordan-form i stedet for hvad-form

Når man skriver kravspecifikation for funktionelle krav, er det en kunstform kun at beskrive det som systemet skal kunne (altså selve forretningskravene) og ikke hvordan systemet forventes at løse disse krav.

Når funktionelle kravspecifikationer er skrevet i hvordan-form giver det store vanskeligheder at udnytte standardsystemer til at løfte krav der dybest set kan håndteres af standardfunktionalitet, fordi der i kravene er indlagt krav til proces og præsentation.

Capture

Det bedste i sådan en stituation er at indgå i tæt dialog med kunden og gennem workshops søge at forstå selve hvad-essencen i kravene. Herefter er det så muligt via prototyping at vise hvordan krav kan løftes f.eks. via standardfunktionalitet.

Jeg kalder processen for “Transformation af forretningskrav med fast overfladeareal”. Det handler i virkeligheden bare om at forstå de basale forretningskrav og vise hvordan de kan løftes nemmest via standardfunktionalitet. Jeg har gennemført workshops med dette formål med masser af kunder. Senest med Københavns Universitet, hvor vi fik reduceret omkostningerne til projektet med næsten 25% ved, at løse krav med standardfunktionalitet, i stedet for at kode en løsning der opfyldte de oprindelige krav 100% uden brug af standardfunktionalitet.

Processen kan bruges i alle situationer, hvor der er tale om en løsning, hvor det er muligt at bruge et standardsystem til at løse store dele af forretningskravene.

How to navigate an OData compliant service

The Service:

It all starts with a Data Service hosted somewhere:

http://server/service.svc

Basic queries:

You access the Data Service entities through resource sets, like this:

http://server/service.svc/People

You request a specific entity using its key like this:

http://server/service.svc/People(16)

Or by using a reference relationship to something else you know:

http://server/service.svc/People(16)/Mother

This asks for person 16’s mother.

Once you have identified an entity you can refer to it’s properties directly:

http://server/service.svc/People(16)/Mother/Firstname

$value:

But the last query wraps the property value in XML, if you want just the raw property value you append $value to the url like this:

http://server/service.svc/People(16)/Mother/Firstname/$value

$filter:

You can filter resource sets using $filter:

http://server/service.svc/People?$filter=Firstname  eq ‘Fred’

Notice that strings in the filter are single quoted.

Numbers need no quotes though:

http://server/service.svc/Posts?$filter=AuthorId eq 1

To filter by date you have identity the date in the filter, like this:

http://server/service.svc/Posts?$filter=CreatedDate eq DateTime’2009-10-31′

You can filter via reference relationships:

http://server/service.svc/People?$filter=Mother/Firstname eq ‘Wendy’

The basic operators you can use in a filter are:

Operator Description C# equivalent

eq

equals

==

ne

not equal

!=

gt

greater than

>

ge

greater than or equal

>=

lt

less than

<

le

less than or equal

<=

and

and

&&

or

or

||

()

grouping

()

There are also a series of functions that you can use in your filters if needed.

$expand:

If you want to include related items in the results you use $expand like this:

http://server/service.svc/Blogs?$expand=Posts

This returns the matching Blogs and each Blog’s posts.

$select:

Some Data Services allow you to limit the results to just the properties you require – aka projection – for example if you just want the Id and Title of matching Posts you would need something like this:

http://server/service.svc/Posts?$select=Id,Title

You can even project properties of related objects too, like this:

http://server/service.svc/Posts?$expand=Blog&$select=Id,Title,Blog/Name

This projects just the Id, Title and the Name of the Blog for each Post.

$count:

If you just want to know how many records would be returned, without retrieving them you need $count:

http://server/service.svc/Blogs/$count

Notice that $count becomes one of the segments of the URL – it is not part of the query string – so if you want to combine it with another operation like $filter you have to specify $count first, like this:

http://server/service.svc/Posts/$count?$filter=AuthorId eq 6

This query returns the number of posts authored by person 6.

$orderby:

If you need your results ordered you can use $orderby:

http://server/service.svc/Blogs?$orderby=Name

Which returns the results in ascending order, to do descending order you need:

http://server/service.svc/Blogs?$orderby=Name%20desc

To filter by first by one property and then by another you need:

http://server/service.svc/People?$orderby=Surname,Firstname

Which you can combine with desc if necessary.

$top:

If you want just the first 10 items you use $top like this:

http://server/service.svc/People?$top=10

$skip:

If you are only interested in certain page of date, you need $top and $skip together:

http://server/service.svc/People?$top=10&$skip=20

This tells the Data Service to skip the first 20 matches and return the next 10. Useful if you need to display the 3rd page of results when there are 10 items per page.

Note: It is often a good idea to combine $top & $skip with $orderby too, to guarantee the order results are retrieved from the underlying data source is consistent.

$inlinecount & $skiptoken:

Using $top and $skip allows the client to control paging.

But the server also needs a way to control paging – to minimize workload need to service both naive and malicious clients – the OData protocol supports this via Server Driven Paging.

With Server Driven Paging turned on the client might ask for every record, but they will only be given one page of results.

This as you can imagine can make life a little tricky for client application developers.

If the client needs to know how many results there really are, they can append the $inlinecount option to the query, like this:

http://server/service.svc/People?$inlinecount=allpages

The results will include a total count ‘inline’, and a url generated by the server to get the next page of results.
This generated url includes a $skiptoken, that is the equivalent of a cursor or bookmark, that instructs the server where to resume:

http://server/service.svc/People?$skiptoken=4

$links

Sometime you just need to get the urls for entities related to a particular entity, which is where $links comes in:

http://server/service.svc/Blogs(1)/$links/Posts

This tells the Data Service to return links – aka urls – for all the Posts related to Blog 1.

$metadata

If you need to know what model an OData compliant Data Service exposes, you can do this by going to the root of the service and appending $metadata like this:

http://server/service.svc/$metadata

This should return an EDMX file containing the conceptual model (aka EDM) exposed by the Data Service.

Getting started developing for SharePoint 2010

Microsoft har udgivet 10 screencasts der kan bruges som udgangspunkt for at komme i gang med at udvikle løsninger på SharePoint 2010:

  • Module 1: Getting Started: Building Web Parts in SharePoint 2010
  • Module 2: What Developers Need to Know About SharePoint 2010
  • Module 3: Building Blocks for Web Part Development in SharePoint 2010
  • Module 4: Accessing SharePoint 2010 Data and Objects with Server-Side APIs
  • Module 5: Accessing SharePoint 2010 Data and Objects with Client-Side APIs
  • Module 6: Accessing External Data with Business Connectivity Services in SharePoint 2010
  • Module 7: Developing Business Processes with SharePoint 2010 Workflows
  • Module 8: Creating Silverlight User Interfaces for SharePoint 2010 Solutions
  • Module 9: Sandboxed Solutions for Web Parts in SharePoint 2010
  • Module 10: Creating Dialog Boxes and Ribbon Controls for SharePoint 2010
  • Intranet vs. Internet

    imageVi har lige netop afleveret materiale til prækvalifikation på et kommende udbud om ny hjemmeside. I materialet bedes leverandørerne beskrive referencer på Intranet og Internet.

    På et møde hvor vi kort gik vores referencer igennem var der en person der mente at vi var lidt tynde på referencer på Internet – altså eksterne hjemmesider.

    Så var det jeg anførte at de sidste 3 Intranet vi har leveret langt overgår de foregående 3 Internet i kompleksitet og samtidigt er baseret på samme teknologi.

    Normalt skelner man mellem tre forskellige typer af web-løsninger:

    1. Intranet
    2. Extranet
    3. Internet

    1). Intranet dækker over en løsning der udelukkende kan tilgås af brugere på ”indersiden” af firewallen, dvs. typisk personer der har et ansættelsesforhold til en virksomhed eller organisation.

    2). Extranet dækker over en løsning der både kan tilgås af Intranet-brugere samt brugere der kommer udefra som f.eks. samarbejdspartnere eller kunder. En forudsætning for at tilgå et Extranet er oprettelsen af dedikeret brugerkonti og kodeord.

    3). Internet dækker over en løsning der kan tilgås af alle uanset forholdet til en virksomhed eller organisation. Et typisk eksempel på en Internet løsning er en hjemmeside for en virksomhed som f.eks. www.traen.com eller for en organisation som www.regionsjaelland.dk.

    Traditionelt bruger man mange resourcer på at sikre at grafisk design og layout på en Internet løsning er i overensstemmelse med en virksomheds visuelle identitet. Det er naturligt da hjemmesider for mange virksomheder udgør den primære kommunikationskanal til kunder og brugere. Samtidigt har man traditionelt ikke lagt så meget vægt på grafisk design og layout på Intranet og Extranet løsninger, da det primære fokus var indholdet og funktionaliteten. Indhold skal være målrettet eller personaliseret til den enkelte bruger, så man ikke skal bruge unødig tid på at søge efter indhold.

    Over de sidste par år har vi set en forandring, eller rettere en sammensmeltning, af kravene til Intranet, Extranet og Internet. Hvis en virksomhed har en vis størrelse så er det vigtigt at kunne kommunikere vision, mission osv. til medarbejderne mha. den visuelle identitet. Det kræver at man til Intranet nu også skal have fokus på grafisk design og layout – samtidigt med at indholdet skal være målrettet. For Internet er tendensen at indhold til målrettes til den aktuelle bruger, så brugeren ikke skal spilde tid på at finde indhold.

    Et moderne Intranet, Extranet og/eller Internet skilles stort set kun af om brugerdatabasen indeholder ansatte eller ej.

    Vi har netop leveret et nyt Intranet til et stort universitet i København. Det er en løsning med skarp fokus på visuel identitet og kommunikation (som et Internet), mulighed for adgang for eksterne registrerede brugere (som et ekstranet) samt personaliseret og målrettet indhold til alle baseret på automatiske og personlige indstillinger (som et Intranet).

    Fra min stol er der ikke så stor forskel på Intranet og Internet projekter som der har været.

    Internet fraud email #03

    And the hits just keep on coming. Now this from the honorable Mr. Shukri Mohammed Ghanem from Libya, the Oil Minister and owner of Zulaytini International Contracting Co:

    Am wondering if Captain Lawrence Baber and Shukri Mohammed Ghanem are friends?

    Vivek Kundra træder tilbage som CIO for USA

    I sidste uge kom det frem at den amerikanske føderale CIO Vivek Kundra træder tilbage.

    Jeg kan kun begræde beslutningen og ønske alt mulig held og lykke fremover. Vivek kommer til at efterlade noget af et hul og det bliver nærmest umuligt at slå initiativer som:

    Bare lige for at nævne et par stykker.

    Jeg tror, at de fleste internationale og især globale virksomheder både kan spare penge og effektivisere ved at anlægge en Enterprise Strategi med udgangspunkt i “Federal Cloud Strategy”.

    Alene fakta som:

    • 30% af udgifterne til nye IT-systemer går til etablering af driftcentre (inkl. hardware og software) og
    • Et driftcenter udnyttes i gennemsnit ikke mere end 30%

    Må få det til at løbe koldt ned ad ryggen på enhver CFO. Det er et klasse-eksempel på hvordan strategisk Enterprise Arkitektur kan sikre bedre udnyttelse af IT og dermed være med til at skabe en bedre forretning.

    Internet fraud email #02

    Clearly Captain Barber doesn’t want to go away:

    Hello Peter
    I do understand how you feel about receiving such mails.Your reply has made me understand that you are an intelligent person and can be trusted to keep my share of the money safely.I can have the money sent to you where ever you want me to.Below are some of my personal information. I am United States Marine.. My full name is Capt. Lawrence Barber. I am from Hartford,CT.Age 38 now, serving in Al-Basrah, Iraq for the United States war against terrorism. I think with time you will know more about me. Let me share with you a BIG dream of mine that made me contacted you in this deal.. In the car site there is this provision for ‘PRIVATE PERSONS’, and for ‘DEALERS’, I went for private persons because I do not want a dealer in this issue because my mail might be read by a secretary and thus the secrecy might be no more. I told you that if I do not read from you in 3 days I will contact someone else. I have a dream to be a senator.Your friend can put a stop to that. In this world the only person that can destroy you is someone that knows all about you. I have a lot of good friends that I can trust, but what about the future. what does it hold for the relationship? I am a soldier but more of a politician. I cannot let this deal ruin my career and dream for me.. If you decide tomorrow to talk about this deal I think I can always deny it because the FBI can never get a link between the us. I have not known you from Adam and my share of the money will be paid to an account that cannot be traced. I know if I deal with someone I do not know, it is either he/she thinks it is a joke and then will not be interested or will believe me and then deal with me. There are no two ways about it. Nobody will ever find out about this deal except one of us lets the cat out of the bag and definitely will not be me. Will it be you? So let join our hands together like brothers and get this money so that our dreams can come true. If you are ready to work with me, I will give you all the details you need to carry out this transaction in my next mail. I need an urgent reply of this mail. Hope to hear from you soon. Attached is a pic of one of my junior officers on guard with the money.keep this pic as confidential as possible.

    Best Regards.

    Capt. Lawrence Barber


    All right, what should we write back? I’m thinking about getting a deposit in my PayPal account.

    Internet fraud email #01

    I then get this reply:

    Hello Peter
    Thanks for the detailed information about the car.I want to inform you that I will buy your car with cash but I have a business proposal for you. I am a captain with the United States troop in Iraq,on war against terrorism. Based on the United States legislative and executive decision for withdrawing troops from Iraq come this year,I have just been redeployed. Our mission is to help secure terrorist targeted states,for the United states and the European Union war against terrorism.I will need a car for myself and that is why I am contacting you.I want to inform you that I have 16.2million USD. which was recovered from one of our raids on terrorists here in Iraq because they keep most of their money at home for evil activities which they normally get through illegal deals on crude oil. Based on the suffering we undergo here some of us do meet such luck. It happened that I went for this raid with the men in my unit and I decided to take it as my share for my stress here in this evil land filled with suicide bombers. I deposited this money with a red cross agent informing him that we are making contact for the real owner of the money.It is under my power to decide who owns the money. I wish to use this money for charity purposes in Turkey,where we have about 3 million Iraqi refugees and Sudan where we have currently the highest numbers of refugees displaced as a result of war. You need to visit such places.I want to invest the money on stock fish from Norway to this refugees because based on my experience on battle ground in this places,they lack a lot of fish and meat to add to their meager and unpalatable meals which they get in little quantity just to keep them living until God knows when the problem ends. Instead of allowing this terrorists to get the money and spend it on purchasing arms illegally from Russia and North Korea it is better used in saving the world. I cannot move this money to the United states because I will be in Europe for about 3years,so I need someone I could deal with.If you accept,I will transfer the money to Europe where you will be the beneficiary because I am a military officer and cannot be parading such an amount so I need to present someone as the beneficiary. I am an American and an intelligence officer at that so I have a 100% authentic means of transferring the money through diplomatic courier service.I just need your acceptance and all is done.I will give you the complete details you need for us to carry out this transaction successfully.I decided to find someone that is real and not imaginary and that is why I went to a secured car site where I can be sure that the person is real. I believe I can trust you.We can only communicate through our military system,which is secured so that nobody can monitor our mails,then I will explain in details to you.I will only reach you through email,because our calls might be monitored,I just have to be sure whom I am dealing with. If you are interested please send me your personal mobile number so I can call you for further inquiries when I am out of our military network. I am using a fresh email account so if you are not interested do not reply to this email and please delete this message,if i don’t get a reply from you after 3days I will look for someone else.I am doing this on trust,you should know that as a trained military expert I will always play safe in case you are the bad type,but I pray you are not.16.2million USD is a lot of money,my life depends on it. I will be looking forward to expecting a reply from you as soon as possible,so we can proceed with the deal.The money should be in your possession in 7days and I will come over.I will give you 20% share and 80% is for my dream. I hope I am been fair on this deal.  Regards, Capt. Lawrence Barber

    To which I reply:

    Hi Captn,
    This is the worst and most stupid attempt at phising and internetfraud I’ve ever experienced.
    Please go away.
    Best regards,Peter

    I then mark the conversation as spam in Gmail and forget it ever happened.

    Internet fraud email #00

    Just received this email after posting my car for sales on www.bilbasen.dk:

    Navn : Lawrence Barber
    telefon : 34741756
    Email : captlawrencebarber@gmail.com
    I want to buy your car.What is the last price,car history and location?

    Being a non-suspecting citizen I replied with the following:

    Hi Lawrence,
    I’ve owned the car from new and have driven it daily to and from work.
    The car is at:
    Folemarksvej 49
    2605 Brøndby
    http://goo.gl/maps/b4K5
    I have a buyer coming today at 5PM.
    Best regards,
    Peter

    « Older posts Newer posts »

    © 2026 Peter Birkholm-Buch

    Theme by Anders NorenUp ↑