|
Hi Jack,
here is my basic approach:
- write initial documentation (basic design and information flow)
- write unit tests (at least a few, because you will need them after next step)
- refactor (there are many books about it, see also code refactoring[^])
- test extensively that functionality is still working and you haven't broken anything
- complete your documentation (to the extend needed)
Now you are ready to redesign and extend where needed. Btw, in some cases it is easier to just rewrite the whole mess from scratch, in any case keep the outer interfaces in the first refactoring round so you don't end up rewriting the whole application.
Hope this helps!
/M
|
|
|
|
|
Hi All,
We are using SOA for our windows Application.However we are confused with DAl layer.
First we started with Entity Framework,and it was dropped for some reason.
Second we decide to use the Linq , but microsoft stop the support.
third we are planning to use the Enterprise Library.
May I get some suggestion regarding Enterprise Library? or
suggest best technology for DAL Layer.
Thanks in advance.
Ramkumar
("When you build bridges you can keep crossing them. ")
http://ramkumarishere.blogspot.com
|
|
|
|
|
Ramkumar_S wrote: Second we decide to use the Linq , but microsoft stop the support
Microsoft scored a big own goal here - they haven't stopped support for LINQ, but they haven't been very effective in communicating this fact to people.
I suspect your team dropped Enterprise Library because it is very complex and still a bit erratic in its behaviour.
Now, if you want to go with something other than Enterprise Library, then I think you need to take a look into something like nhybernate - it's possibly the most popular .NET ORM out there right now.
"WPF has many lovers. It's a veritable porn star!" - Josh Smith As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
My blog | My articles | MoXAML PowerToys | Onyx
|
|
|
|
|
Pete O'Hanlon wrote: I suspect your team dropped Enterprise Library because it is very complex and still a bit erratic in its behaviour
They didn't drop the Enterprise Library. They dropped the Entity Framework. The Enterprise Library is what they are considering next.
I've never used NHibernate, but I have used its Java big brother, Hibernate. It's good for small projects, or if your team isn't strong on SQL skills. But we found that once the application began to get more complex and the database grew in size it became harder to manage through Hibernate and some of the many-to-many relationships in particular were hard to model correctly. Overall, I would say I'm positive about Hibernate but it's not the panacea that some people think.
|
|
|
|
|
David Skelly wrote: They didn't drop the Enterprise Library. They dropped the Entity Framework. The Enterprise Library is what they are considering next.
I actually meant to put Entity Framework - the brain was thinking EF, the fingers were typing EL.
I've used nhibernate on larger scale projects, and it's very flexible. It seems to be significantly diverging from hibernate.
"WPF has many lovers. It's a veritable porn star!" - Josh Smith As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
My blog | My articles | MoXAML PowerToys | Onyx
|
|
|
|
|
I'm a great believer in roll your own, mainly because I'm an old fart who has all the tools/framework already built.
However one of our teams recently did some work in both EL and nHibernate. Its was concluded that the only reason for a framework was to maintain database agnostic code. There was approx a 50% speed penalty when moving from stored procedure to framework (we do batch processing rather than transactional systems).
As we have strong SQL skills (you don't get a job if you can code TSQL) we have retained the procedures and a fairly simple framework where each table is represented by a generated class (our own classbuilder app).
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Hi,
We are in the process of building a new enterprise application, that would comprise of an Oracle database, and a VB.NET application. Now my request to you all is to suggest the optimal architecture, in terms of technology, stability, maintenance, etc, bearing in mind that we would like to have a multi-tier application, with a thin client, and 1 to n business/persistence layers.
The application would be used by users who might be geographically separated.
Would appreciate your inputs on:
Winforms Vs ASP.NET?
Communication,
Data persistence,
Performance,
Any other criterion that you might consider important.
Your inputs would be highly appreciated.
Cheers/RB
|
|
|
|
|
RajeevBhatt wrote: Winforms Vs ASP.NET
Winforms does not really qualify as thin client, and will require setup and deployment. This increases the cost of operations.
RajeevBhatt wrote: Communication,
It depends on your network architecture. If you have a homogenous corporate network, with well configured internal firewalls, go for the framework that gives you the most functionality, like WCF. If on the other hand, you will have to deal with different authentication mechanisms or domains, or with firewalls that only allow certain types of communication, you may have to kick down to a lower level of in-built functionality.
RajeevBhatt wrote: Data persistence,
Again, it depends: you may use a persistence framework like the entity framework, but if your data is not well suited to relational operations (and is large enough), you may have to deviate a lot from standard mappings, in order to optimise performance, to the point where a persistence framework becomes more a burden than an asset.
RajeevBhatt wrote: Performance,
Architecting for performance will again depend on the functionality of the app. Will you be able to scale on different servers, or are the operations single-threaded by nature? Will you be able partition your database, or will the queries by their nature prohibit partitioning.
As you see there is no 'right' architecture. Architecture depends on what you want to do. It's the same with building architecture: If you want a lighthouse, you'll probably design a tower-like structure close by the sea.
It will probably be unusable as a soccer stadium though
|
|
|
|
|
Hello,
I want to design a C (Not C++) library for NLP (some thing like WINDOWS API but for NLP).
Is there any references for "API Design Guidelines"?
Some things like:
* How to choose name of API functions
* Memory management
* ...
Thanks
|
|
|
|
|
"Clean Code A Handbook of Agile Software Craftsmanship" may be what you are looking for [^]
|
|
|
|
|
|
Hi all.
I develop a software based on an open source software in VC++ (Base software is "TrueCrypt version 4.3" )
I want to update my software when new version of base software ("TrueCrypt") released.
How I can walk with that software version with low cost and attempt? Are there any framework or method for this?
Thanks a'lot.
|
|
|
|
|
There's a few points to consider if you derive a new product from the TrueCrypt base, like removing the text "A TrueCrypt Foundation Release". You can find a complete list in the license agreement[^]. There's no framework that does this for you.
I are Troll
|
|
|
|
|
I'm developing an app that allows the user to create custom data structures (which are stored in an underlying database). Currently, I'm in the proccess of designing a module that will generate reports from the user's custom data structures. (This way the user can obtain some quick output without having to design a report from scratch)
My question is: If the amount of fields in the custom data structure exceeds the width of the page, is it customary to continue the report columns onto another page or rearrange the fields so that all fields reside on the same page?
If my answer has helped you, one of my articles may also be a help. Also remember that your best friend's name is google.
|
|
|
|
|
I'm not sure whether you mean a page on a screen view or the printed page, but isn't this a question to be put to the potential users? or based on 'Lessons learned'? Whatever you decide, possibly based on advice from CP, it may not be what your users want.
On the other hand, as this is a design question, If the only way the user can get the information they want is to include data fields in a report that either: Doesn't fit on the page (printed or otherwise), or is: Rearranged so the info in the columns is perhaps dificult to read, maybe a single report with that many columns is not the best design choice?
|
|
|
|
|
I'd be more inclined to go with data dump type functionality, you no longer control the content therefore you lose control of the output. Display the data in a grid (if possible) and output via csv.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Thanks in advance
Is there any website from where we can find out the Business Processes , Data Flow Diagrams or something related to a Flow of a business or any Business.
SOFTDEV
If you have knowledge, let others light their candles at it. [ Let's work to help developers, not make them feel stupid ]
|
|
|
|
|
Hi..
Modern day application design seems to always lean towards a decoupled architecture: you have a dumb view, which is independent of your data model. This makes sense as it allows you to reuse the controller/model independently from the view. Seemingly contradicting this is modern controls which seem to lean more and more towards databound designs.
How do we reconcile this kind of architecture with the controls at our disposal? For example, I am creating an application following a Passive View MVP architecture that, at some point, will have to manipulate items in a grid, and the grid works best if it is directly databound to the database. Am I using the wrong design architecture? Or should I be super-abstracting my data? (Database -> Dataset -> Classes -> Dataset -> View)
Design patterns always sound so good in theory...
|
|
|
|
|
I don't know, and I'm interested in the replies you will get.
I guess the fitting quote will be this one:
In theory there is no difference between theory and practice. In practice there is. [Yogi Berra]
|
|
|
|
|
ruanr wrote: should I be super-abstracting my data?
This is exactly what I recently found I needed to do using a MS TreeView and a STL-like Tree container.
I set out wanting a series of low level instructions to be sequentially sent to a cell of electro/mechanical devices including a robot arm and other automated bits of laboratory kit. But wanted to give the User control of this instruction sequence by presenting them with simple control buttons much like those of a Video or DVD player: Forward, Pause, Step and Stop. But critically I also wanted to be able to undo/redo the instructions and add Back and Step-Back to those options presented to the User.
I also wanted to be able to eventually throw away my development GUI and have someone then integrate what was left into a nice shiny Application GUI alongside all the other bells and whistles needed.
I found a tree view was the 'natural' way to display to the User and the MS TreeView Control did this, but it didn't do other things I wanted so found another STL type Tree container class that I could use to accomplish the other things.
ruanr wrote: Design patterns always sound so good in theory
I based each instruction to a device on a combination of Design Patterns: Command and Do/Undo so that a Do-instruction could be loaded into a Leaf (of the STL-type tree) with a corresponding Undo-instruction. Of course I had to link the corresponding nodes on the View tree to the Container tree but this wasn't that difficult.
Though non-'super-abstraction' is tempting, separating the view from the the actual data like this I've found to be an essential development approach. From so many perspectives: Project-Management; Maintenance or Further-Development, separation like this turns one problem to two nicely defined smaller ones, reduces the overall complexity and makes the whole much cleaner, more likely to actually work and much more understandable to others.
|
|
|
|
|
ruanr wrote: Am I using the wrong design architecture?
Only if you are overdesigning. It's ideal if you have a complex datasource, lots of developers, and/or lots of different ways of visualizing the data. If you're only displaying a list from Microsoft Access and asking the user to select an item therefrom; by all means, just databind it.
As a question to you; what benefits do you gain from using an MVC/MVP pattern, and what benefits would you have without this design?
I are Troll
|
|
|
|
|
ruanr wrote: at some point, will have to manipulate items in a grid
As I understand it, to perform tasks like manipulating items in a grid, we will be using constructs like Commands and Attached Behaviours (at least in WPF and Silverlight).
However, I would be curious to know the best ways to do this in ASP.Net.
Me, I'm dishonest. And a dishonest man you can always trust to be dishonest. Honestly. It's the honest ones you want to watch out for...
|
modified on Sunday, March 28, 2010 11:43 AM
|
|
|
|
|
I think there are 2 distinct levels of understanding with data binding. The newbie uses the MS wizardy things and is led into the mire of controls bound directly to the dataset/table etc.
This lasst until they actually want to do something beyond displaying an Access list for the user to select from, at which point the new dev finds a whole new universe of DAL, object layer, OOP and all the stuff a more seasoned developer already deals with. Then the learning really begins.
IMHO tightly coupled controls have absolutely no place in anything but a learning/prototype application. MS is doing the newbie a great disservice even creating the wizardy things.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Looking for any good software development magazines to help keep me informed. Anyone have any suggestions?
|
|
|
|
|
www.code-magazine.com
Everything makes sense in someone's mind
|
|
|
|