I cannot believe It took me close to three years until I descovered that.
and I keep my changes in Tortoise patches, so I can reaply them after an
update -- or at least that's what I planned to do. Yesterday I found an
ugly (and allready known) bug in Tortoise 1.4.3, Build 8645. When files
occure more than once in a patch, the error message "The file ... was
found twice!?!" appears. The only solution I've found is to remove the
duplicate entries from the path.
After laying some groundwork to understand C# and a tiny bit of .NET I would like to go more hands on. As the requirements are not as far as they should be (remember: NO ON SITE CUSTMER YET) I was thinking of picking a playground scenario my self and take it over the hurdles.
Here are the things I would like to do in the order I intent to do them
- Pick two features.
- Define Acceptance Tests.
- Implement Acceptance Tests with FIT (not Fitnesse - I don't see an easy way to manage it in revision control).
- Set up Continuous Integration running the FIT Tests - which will be all red at that point.
- Implement the features with automated developer tests.
- Enhance the CI to do the actual build, test and the packaging.
- Demo the result to the Management.
So we will build some simple app that allows a user to enter, view, change, delete and query the goods. No fancy stuff. A good is described by its number, description, wholesale price, and retail price.
As the application we will build will be running as a SmartClient in a Windows environment, it makes sense to use integrated security. So if some user is logged on we just believe he is who Windows claims him to be. So this takes care of authentication. For authorization we would like to use memberships in Windows groups: You can print that really_secret_report only if you are a member of the ourapplication_ReportingLevel2 group. But there will be situations where integrated security will not work. There might be some customers that do not use a Windows Domain or there might be POS terminals which are used by more than one person without actually logging on as themselves. I've seen systems used in restaurants where the waiters were using some key - either a real key or something like a chip - to identify themselves on the terminal. If our application is running in such an environment we would like to switch our authentication and authorization provider.
And even if we would aim only for integrated security, we would like to keep our software decoupled from the actual implementation of the provider: It would be absolutely impossible to run either our unit tests nor out acceptance tests against a Windows domain providing the auth-info. There is no way we would be able to gain enough direct access to the Windows domain to set it up in the way we need it.
This is an ideal reason to introduce the team to the concepts of IoC and Testability. It pays to be able to switch implementations without affecting the application. It pays while developing because we can work in parallel on both features and can run tests for the app even if the auth-provider is under development. And it pays while in production because we can enhance our application to work in an environment that does not have integrated authentication.
Even if we are able to switch the auth-provider, the first implementation I expect to ship is the one for Windows integrated security. We will start to work on a module that handles the management of users and roles when we face the first environment where we need it. This defers the work on a user management module until some later time. No need to pay interest rates until then, no need to delay other features that are more important for the application and the vast majority of customers.
Please give your feedback...
So now it's the second day of my new project and there are more things to do that I have exspected.
These are the problems:
- There no on site customer in sight
- From the four people assigned to my project three are still working on the old product
- Visual Studio 2005 (so they do not know about ReSharper or ViEmu)
- Design Patterns
- Source control
- Automated builds
- Continuous Integration
- OO programming
- Domain Driven Design (well, I didn't dare to ask)
- Automated developer tests
- Automated acceptance tests
- IoC and containers
- Layered architectures
- Quick intro into VS 2005
- Hands on: How to write Hello World in C#
- Hands on: Hello World 2007: Greeting is comming from a ClassLibrary
- Wrap up References: Binary, Project, COM, WebServices
- C# 1 - Types: Classes, Interfaces, Enums, Structs || Value Types -- Reference Types || Build in Value Types
- C# 2 - Statements: method call, if..else, Nested if statements, switch statment, goto, while loop, do..while loop, for loop, continue and break, block statement.
- C# 3 - Operators: Assignment, +-*/, %, += -= *= /= %=, Prefix and Postfix ++ --, Relational == < <= > >= !=, Logical && || !, Short Circuit Evaluation, Ternary Operator ? :, Precedence of Operators
when it comes to software projects. More often than not this triangle
turns into a rectangle when you are working as a freelance consultant.
The people are not only hiring you to produce a certain amount of
features within a given time frame while using a certain amount of
resources, they expect you to train their internal staff on the way.
This can take some work and it will result in less features, or more
time or resources used.
In the past I often forgot to point that out to the people who are
hiring me. Thankfully my new assignment is mostly about knowledge
transfer, even if we will be developing useful software on the way.
You're asking why I am doing such nonsense. Well, I exspect to be
commuting for an hour every day by train for my new assignment. And I
will be offline while on the train, I want to be able to write down my
thoughts in my email client and send it off when I am online again.
Books to Read
- Microsoft Surface
- Peli's Farm - Production Grammar Framework for .NE...
- Annoying TortoiseSVN Bug while Patching "The file ...
- Educating the Team II (follow up to >>It's harder ...
- It's harder than I thought
- When the Iron Triangle becomes an Iron Rectangle
- Trying to Post via Email - Take 2
- Blogging via Email - Does it really work?
- ▼ May (8)