Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
I am wondering whether there's a good tutorial that walks you through the development of a full business application that is comparable to the real ones. I have learned the basics of C#, WPF, and programming and web development in general. All the books I have read only shows the syntax and code snippets but very rare shows you the development of a full business application from planning to testing to deployment.
What is the first step when creating a business application using C#/WPF? I know I need to have a plan first. Should I use UML?
What methodologies or techniques should I consider when starting to code. I have read about Domain Driven Design but there is also MVVM patterm. Which one should I use? Should I learn both of them.
I am currently searching for a work in .NET but I really need to know how the developer's workflow in a real life software development team. I have found some books that walks you through the creation of a full software such as Wrox's Problem-Design-Solution books. Does the content of this book comparable to the workflows of a real-life software development?
Thanks a lot in advance and I hope I can find an answer as I am planning to practice my skills to be ready in a corporate environment.
Um, the platform is irrelevant at this point. If you were doing a winform or a web app, would you use UML? If so, then you would also use it in a WPF. If not, fuggedaboutit.
The first step is to careful gather business requirements.
The methodologies or techniques you should consider when starting to code will be handed down to you by the lead of the project. You sound very inexperienced, so the decision will not be up to you, most likely. Every business is different. Heck, every project is different. You may use a different methodology on each of your first 5 projects. Brush up on them, read what you can, but you will always have a learning curve to climb.
You don't need to learn every methodology or paradigm. Learn as you go. Understand the basic premises of a few, especially the standard waterfall, but don't deep dive until you get assigned to a project. Most places I have been don't follow their own methodologies anyway. It's one of those "The Sabbath was made for man, not man for the Sabbath" type things. Organizations will deviate for a slew of reasons.
This is the book I had in college. It has served me well. You car order it for $0.33. Ain't that something. http://www.amazon.com/Software-Engineering-7th-Ian-Sommerville/dp/0321210263/ref=sr_1_25?s=books&ie=UTF8&qid=1342506249&sr=1-25&keywords=software+engineering
Good luck in the field. Just dive in, and work hard. You should be fine.
Related
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
Edit - [Solved]
So recently I have been learning how in integrate MySql Database to Visual C so I tryed finding the documentation to better understand each line of code. I ended up finding its on the MySql website but does not go into much detail.
I then found out through other users questions that some/most of the methods used are actaully inherited from a base interface/class
Example: IDataReader - is the base class
Then programs would inherit from it then make things such as XmlReader and MySqlDataReader
Which can be found here
https://msdn.microsoft.com/en-us/library/system.data.idatareader.aspx
Now here is where my questions starts
How would I have known/figured out where to start looking? If someone did not link me to the exact URL spot how would I have navigated microsofts site to find it in the first place?
What is a ".NET framework" and how would I have known that integrating a database would use it? - It says its Window Based so does that mean different operating system have there own ".Net framework"?
Is it safe to assume if we are trying to combine different applications together they have to have something binding them together hence need of ".Net framework"
MSDN (Microsoft Developer Network) is the umbrella in which all (or at least very most) Microsoft documentation lies. However, this is a huge conglomeration of information, and navigating it is not really an easy thing to give step-by-step instructions for, or even a general overall approach.
What you're facing is a large part "general learning curve", and the other part is a skillset for finding answers, usually starting with google and often ending at StackOverflow or MSDN or various blogs. In time, as the skill grows (and it is very much a skill), you will learn to be skeptical of articles based on various clues, and learn to tell upon reading them whether the author really knew what they were doing (Microsoft's articles themselves aren't without some measure of this variance in quality). Some sites become known as "stay away, they teach bad practices"
"Google-Fu" is an unofficial term that some people use to describe how well they can coerce google into returning relevant information. Often times it's easy, and often times it's quite difficult.
In short, there's no clear answer. Research is a skill to be honed, not unlike programming itself. Start as you are and keep pushing forward, and eventually you'll get a feel for it and get good at it.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
I was working with Windows Forms for a while now, and due to certain limitations on Forms, I want to work my way up to a better way of making GUIs. I found WPF, which looks pretty promising, but I'm asking you guys, if there are any better ways for doing nice GUIs for Windows with C#?
Thanks in advance!
I would look for MS roadmaps and instructions where they plan to drive the platform. For example:
.NET Technology Guide for Business Applications
This is since nov 2013 but still valid to a large degree. Among other things it states that (emphasis mine):
.NET Windows Presentation Foundation
This is the preferred technology for Windows-based desktop applications that require UI complexity, styles
customization, and graphics-intensive scenarios for the desktop. WPF also takes advantage of XAML views.
And WPF development skills are similar to Windows Store development skills, so migration from WPF to
Windows Store apps is easier than migration from Windows Forms.
HTML5&JS-based apps is an alternate route but I consider it inferior for development efficiency and maintainability reasons. If you are a scripting fella, then it's worth a look.
By my experience WPF is definitely the way to go for desktop development.
There is definitely a learning curve migrating from Forms development to WPF, but in my opinion the effort is well worth it, and not simply because WPF is aesthetically different to Windows Forms.
WPF encourages you along the MVVM ("Model-View-View model") path and a separation of concerns between UI, logic and data elements. As an aside, MVVM is one of a number of MV* architectural patterns - there's some debate about what constitutes the difference between the different patterns, but consensus that separation of concerns is absolutely a good thing. For example:
http://www.infoworld.com/article/2926003/microsoft-net/exploring-the-mvc-mvp-and-mvvm-design-patterns.html
https://nirajrules.wordpress.com/2009/07/18/mvc-vs-mvp-vs-mvvm/
What is difference between MVC, MVP & MVVM design pattern in terms of coding c#
In terms of specific advantages over Forms, there's a lot of stuff you get out-of-the-box with WPF, like two-way data-binding and UI threading for instance. But I found that the change in thinking about problems is equally valuable; when I started thinking in MVVM, things like asynchronous programming (e.g. calling web services from windows-based client applications) just became much easier to conceptualise and reason about.
MV* is all the rage in web development, too, so the skills (and, in an ideal world, some of the code) are transferable to the web.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
I am about to break a monolithic WPF/C# application into manageable modules. Please let me know what are the points i need to remember before breaking the software. Any tools that would be handy,etc.
Thanks in advance.
Regards,
JOhn.
Depending on your tool set there are a couple of things which generally help when analyzing a code base from an architectural or structural viewpoint.
In VS 2010 Ultimate or with a tool like nDepend you can generate dependency graphs which help you see you application's dependencies and code usage can be useful when trying to break large code into smaller api's or services.
Also unit tests and integration tests can help ensure that functionality is maintained without introducing bugs and using refactoring tools like resharper, justCode or coderush can really help to adjust your namespaces, code file physical locations and class/method signatures when dealing with a large codebases into smaller more manageable libraries and projects.
On the planning side you really need to establish the key elements of the application from a separation of concerns point of view to define the boundaries of each module.
Probably the worst thing you can do though is just launch in and start hacking the code into chunks. Mapping out a phased migration for one module at a time would be my strategy of choice.
Agree with the above comment though that the question is too broad to get any meaningful answers.
Your question is very broad as there are many techniques (e.g. heavily unit testing your code) that are of help. It is probably best to read a book on that topic. I can highly recommend you Michael C. Feathers
Working Effectively with Legacy Code
Although this book is mostly Java-centric the described techniques are generally applicable. It will definitely change the way you write and think about code and will be of help when working with existing applications.
Feathers' book is also one of the books that are most recommended in this SO post.
To complete Mac answer on tooling such as NDepend (Disclaimer: I am a developer of the tool NDepend) I'd advise to read these 2 white books on how to partition your code in assemblies, layers and components. This is certainly the key to break your monolithic code base.
Partitioning code base through .NET assemblies and Visual Studio projects (8 pages)
Defining .NET Components with Namespaces (7 pages)
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
Okay, sorry if I'm a bit vague or little specific. First of all, I'm really new to the business of programming and that kind of things, so excuse my non-knowledge of much of this. :)
Anyways; I've been reading a lot around on the internet on what technology to use and so forth when it comes to application development on the desktop (mainly Windows, since it's my preferred OS). And most of the answers I found said that C# was the way to go and it was the preferred language of choice for Windows (alongside with .NET of course).
Then, I read something about Adobe Air (don't remember where) but at least it interested me. And I then looked around for info about it but sadly there weren't much. But what I found was at least mainly optimistic (and then you have the I HATE FLASH-fan club).
But; since I'm new to this I started wondering about what technology was best and all that, but I just can't make up my mind. But I do understand that for applications that rely on high performance C# is better then Adobe Air.
But since I'm no power user and just want to create simple applications (like to-do lists, sudoku solvers and similar stuff) I'm not sure which one would be preferred or "the best". As far as I've seen Adobe Air have a lot of the good lookin' stuff while C# is the suited-up business stuff.
So, well, basically my question is what language/platform would you prefer for a complete beginner when it comes to simple, not really heavy performance applications? Any kind of answer would be nice. And sorry if the question is bad or something alike, I'm new to Stack Overflow as well. :)
There is no best way - use whatever interests you the most. Keeping up your motivation to learn is the most important thing at this stage.
One thing you might want to be aware of though is that there is a much larger C# community and it will be easier for your to find examples online and get help for C# here than it will be for Adobe Air.
You can create simple to-do list app using both technologies. That can be a great experience for you and give you a closer look at both technologies.
I would say go for C# since you are starting from ground zero. If you already had a bunch of web programming experience then I would say go for Air, but with C# and .Net there are lots of cool things you can do with what you learn.
I would tay start out with a simple "Hello World" WPF application. Once you do that, add a button that changes the text to "weeeeeeeeeeee!" Then add in a slider that changes the text size. Play around. Pick one small step at a time that grabs your attention, and don't give up until it works exactly how you envisioned it. Soon you will be on your way to developing your To-Do app.
Once you get the basics down, the programming world really opens up to you. You can use your C# skills to make a game in XNA. You can buy some inexpensive servo controllers and make physical stuff move around with your programming. You can port your To-Do app over to Windows Phone 7 without having to recode anything. The programming world will be your sandbox. Have fun!
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I am still visiting school and will finish my exams next year. Since two years I am working as (the only :-( ) in-house dev for a company providing financial services to Laboratories and doctors. After spending the first year fixing their existing Application and realizing, communicating and agreeing that it won't meet future requirements i rewrote it from scratch. This is my first LOB application.
I needed a "IEnumerable.ToDataTable()" method to do simplify certain things in the Application. I realized that existing solutions wouldn't meet my performance and flexibility requirements, so i came up with a solution based on Dynamically injected IL code myself.
I thought that this might be a good way to contribute to the community, thats why i asked my employer if i may take some of those code and release it under LGPL. They agreed and that's where my first project is:
ModelShredder
Since this is my first OSS project and i am relatively unexperienced with running an OSS project on my own I am asking you for some "best-pratices" and what i can improve on it.
First read this book:
You can download it free of charge here: http://producingoss.com/ There are also some nice screencasts there that may be some use too.
It covers everything you need to know about looking for, contributing to, starting and maintaining an open source project,
It all depends on if you're going to have a team help you or not. It'll be simpler to start doing it yourself if you have the time if for no other reason than you can work out how you want to proceed without worrying about politics.
For a start, any code used as a framework or a library typically needs to be developed to a much higher standard than what you might write for an internal application. This means you need:
Sufficient user and developer docuemtnation;
Unit tests with decent coverage;
A license;
Tagged versions in source control; and
Released binaries and source code with checksums.
Additionally you'll need a method of:
Communicating your project status (release notes, goals, etc); and
A means to allow people to raise and track issues.
Google Code (as just one example) can do pretty much all of this for you.
I would also suggest you register the domain name for your project (typically projectname.org for open source). If the one you want is taken already, you may want to change the project name, particularly as there might be cause for confusion.
The google code pages look pretty good to me. You might want to think about adding a support group on Google Groups.