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)
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 4 years ago.
Improve this question
I'm currently working on a .NET Core 2.1 application in C#. I want to protect my application source code from copy piracy. In general, I know that C# can fairly easy be reverse engineered. I need to ship my final software product to the customer, but I don't want anybody to read my source code. The software will be installed on a Windows Server, I cannot provide remote access as it is hosted in a closed environment (no internet there).
How can I protect my software from reverse engineering?
What do you do or which tools and frameworks do you use to secure your .NET Core 2.1 source code from piracy in 2018?
Is it still worth it to obfuscate your code?
Should I rather just write a secure library for my business logic in C++?
Thanks for sharing some ideas!
Is it still worth it to obfuscate your code?
This is a matter of opinion, but in my opinion, no, it's not worth it.
Have you ever tried decompiling .NET code? Sure, it can be done with tools like JustDecompile, but it doesn't decompile into your original source code. It's actually quite difficult to read. Give it a try.
Even C++ can be "decompiled", although yes, it's even harder to read.
But the bottom line is this: if someone really wants to reverse engineer your code, they can do it and there's nothing you can do to stop them.
In two words, You can't
In more words
There are things that will constrain your application to certain conditions as can be using hardware keys or network boundaries
Take a look
Protect .NET code from reverse engineering?
In a word, no. But you can use a code obfuscator, and if you are really intent, going into unmanaged code and trapping the debug interrupt.
I am assuming you need to protect trade secrets. The use of non-compete agreements protect you to a large extent, along with contracts.
You will almost certainly be protected from all but the most determined with the above safeguards.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 8 years ago.
Improve this question
I am a dot net developer. I recently joined a team where the application is a legacy application build over 4+ years. Now the expectation from my manager is that -
1. I should be more productive cleaning, refactoring old code improving performance problems.
But the thing is - Product Release is very near now and performance is very slow. Also as i joined newly in the team, when i see some complex UN-necessary logic, but i feel fear to change it because it should not break existing functionality or the patch fix made.
Please suggest the best practices to follow in order to tackle such scenario and being more productive
to exceed the expectations.
Even though i feel i am technically sound enough but i am not able to utilize
So one my well wisher suggested me to improve on "Code-Readability". Any similar suggestion or experiences will help me
Thanks
the only suggestion I have is where possible ensure you have unit tests that cover the current functionality - then you are free to improve functions/performance without fear of breaking existing functionality. The investment spent in getting good code coverage often pays dividends when the need to refactor/improve performance arises.
As for readability - ensuring that the code is broken down into coherent functions rather than monolithic code blocks always helps...
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 9 years ago.
Improve this question
I asked about this Q format on meta, and the they said that worded correctly, this should be appropriate. This being said, sorry if I still butchered the wording and just in case I'd like to get this across (as was recommended): I'm not looking for opinions on certain things or how they work, rather just the ways it's possible. I don't mean to sound ignorant and I'm truly sorry if I do, it was just suggested to me to say on Meta.
Now for the Q; What just general language at all would be capable of gathering information from public online websites, then putting it in the program where it could be further processed as just any old variable? I'm new to coding and wanted to do this as a little 'introductory' program, to teach myself some new stuff. Problem being, with my idea, I don't even know where to start. Again, I'm not asking for specific ways to do this, I was just curious what languages are capable of doing this at all? I'd prefer to do it in a Visual Studio's language (no preference of which ones), if that's possible.
In short: Are either Visual C#/C++ capable of gathering information online to be further handled within the program? If not, what languages are?
I agree with the comment that this is a complicated first programming task. However, you'll undoubtedly learn something trying it.
If you already had some experience programming in Python, I'd suggest you took a look at http://scrapy.org/doc/ which is a framework (that is, a bunch of classes and other useful tools) which let you write programs to extract information from web pages. Scrapy does let you concentrate on programming by taking care of some of the nasty details involved in parsing web pages.
Another option is to use a javascript framework, maybe something like node.js.
I've done a fair amount of web scraping, and I usually end up using a combination of utilities which clean up web pages and a variety of XSLT processors. I personally find that combination of technology to be easier to deal with; I don't try to use C-family languages until I've basically wrestled the data into shape. But everyone has their own style.
Good luck!
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.
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.