As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I'm sure this depends heavily on a few variables. Here are the ones I can think of:
-Desktop, mobile, web, or server application
-With GUI, without GUI
-Object-oriented, non-object-oriented
-Choice of language
So what design patterns are the most prevalent? Which designs are most advanced? Thanks
This question is quite academic. But I'll give the best answer I can:
The software development process first involves obtaining the set of high level goals, and functional requirements from the stakeholders.
Stakeholders are defined as, the paying client, the end users, your bosses and co-workers involved with the project, and anyone else whom the project will have a direct influence upon.
High level goals are things like, "It needs to be easy to use, because our end users are volunteers with limited computer knowledge" or, "It needs to be completely secure because we are storing sensitive personal information".
Functional requirements are the nitty-gritties. "We need to store information about people. First Name and Surname need to be at least 50 characters... etc.".
And from there you consider the relative strengths and weaknesses of each approach.
You want a mobile app? Strengths include portable and versatile. Weaknesses: Will the end-users even have a phone capable of running the app? Or does the client intend their end-users to only be people with a smartphone?
Without reference to a specific project, I would say that the Goals of the project would affect what platform the application will run upon, and the choice of GUI. And the Functional Requirements would influence the choice of programming language.
So I hope I got my point across: You would be better off getting a broad understanding of the strengths and weaknesses of each technology and approach, and it is simply a mark of a professional to be able to correctly apply them to each project you came across, often negotiating these strengths, weaknesses and associated costs with the client.
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I'm looking for an efficient, easy-to-learn tool for Scrum project management not for proffesional use but to use it in my thesis concerning the use of Scrum in game development. Basically I want to visualize a production process of a hypothetical game. Some fragments of the production process should be really detailed to make my point, so basically user stories, tasks, burndown charts etc. are a must.
I'm using Scrum, Kanban and some Lean practices for eliminating waste. I also want to use Extreme Programming practices in this production process including TDD and Continuous Integration.
I have zero experience in proffesional project management so I need something that's fairly simple to use for a newb like me.
Anyone can recommend a tool like that? For now I was thinking about TargetProcess and ScrumWorks. Thanks.
Whiteboards and Post-Its.
No... Seriously.
:-)
Throw in Excel for your charting. This combination is drop dead easy to keep up to date and use.
Brandon
I would recommend these I am familiar with, in this order:
If you are collocated, use whiteboard and Post-its and Excel charting as in the answer above.
If you are not, you may opt for Trello, which is basically... a whiteboard with post-its. No charting though.
Or Pivotal Tracker, which is aimed specifically to Scrum project management (building some functionality for Kanban, too). It does all the story-points-and-velocity calculations for you and some charting. Somtimes it's too "prescriptive". You don't do Scrum by the book, you might have some difficulties to overcome the built-in lifecycle.
Both are very intuitive and easy-to-use. Trello is free, Pivotal Tracker is free for individual use only. The bigger your team of collaborator the higher the monthly subscription.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I am curious about this. I must learn Prolog for my course, but the applications that I seen mostly are written using C++, C# or Java. Applications written by Prolog, to me is very very rare application.
So, I wonder how Prolog is used and implement the real-world application?
SWI-Prolog website is served from... SWI-prolog, using just a small subset of the libraries available.
Well, it's not a commercial application, but it's rather real world.
Much effort was required to make the runtime able to perform 24x7 service (mainly garbage collection) and required performance scalability (among other multithreading).
Several libraries were developed driven by real world applications needs.
I once asked my supervisor a similar question, when he is giving us a Prological lecture.
And he told me that people do not really use prolog to implement a whole huge system. Instead, people write the main part with other language(which is more sane and trivial), and link it to a "decision procedure" or something written in Prolog.
Not sure about other Prolog implementation, we were using BProlog and it provides C/Java interface.
Microsoft Windows NT Networking Installation and Configuration applet
One of the notorious and in a way notable examples is Microsoft Windows NT OS network interface configuration code that involved a Small Prolog interpreter built in. Here is a link to the story written by David Hovel for Dr. Dobbs. (The often cited Microsoft Research link seems to be gone.)
Expert systems
Once Prolog was considered as THE language for a class of software systems called Expert Systems. These were interactive knowledge management systems often with a relational database backend.
Beyond Prolog
In general rule-based programming, resolution and different automated reasoning systems are widely used beyond Prolog.
According to the Tiobe Software Index, Prolog is currently #36: between Haskell and FoxPro:
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
What's it used for?
I first heard of it with respect to Japan's (now defunct) "Fifth Generation" project:
http://en.wikipedia.org/wiki/Fifth_generation_computer
Frankly, I'm not really aware of anybody using Prolog for any serious commercial development.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
We in our organization are trying to implement a source code quality management tool. SonarQube is one such tool that we have come across, and it's quite full of features and is phenomenal. We want to compare it with its peers, if there are any, before we actually implement it.
Are there any good contenders to Sonar's capabilities and features?
Squale (free)
Kalistick
MetrixWare
Cast
Panopticode is a good opensource alternative.
if you are concerned only about quality of code, then Sonar is a great tool and it is a way to go.
Though, I would recommend you to also look at the quality from a broader perspective. For example your customer would not care a lot about your code quality and instead would evaluate quality as number of bugs he encounters in your product releases. So in addition to code, you may analyse your defects, quality of your development process and probably many other aspects.
You may take a look at programeter, if you are interested in quality of the product as a whole, and not just the code quality (disclaimer: I am the co-founder at Programeter).
Since you are just starting out in that field simply go with sonar and re-evaluate in 1 year.
You don't indicate your platform. If you're an Eclipse shop, there's CodePro Analytix.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
I would like to know, from your expertise, what you consider to be the main differences and/or similarities of managing the development of products and software in large teams.
By products, I'm referring to physical engineered objects like a printer, cellphone, car.
It's my assumption that both go through a similar cycle of:
feature definition
architecture definition
design and integration
release
The obvious difference is that software has no or insignificant portion of manufacturing (printing CDs and boxing) when compared to the large factory shops putting out a physical product.
Both processes have resource management, blueprint documents, review sessions, error tracking and on the human side, team coordination issues, pool of skills, and so on.
What methods are unique to software development that make it (or not) a completely different beast?
Software IS a product. However, usually product development refers to the process of defining what the product is, its intended market, motivation, etc. Software development usually assumes that the product has been defined, and that the job is to implement it to meet the requirements/specifications of the product.
One of the big differences I have seen is that physical things need more ramp up time to
Get the thing designed correctly on paper.
Get the prototypes actually built.
I am thinking embedded stuff. It is not like a software only project where you can code up a prototype and send it off. With a product you get all the hardware design, get it built, usually have the firmware and then maybe a software piece.
The other piece is developing/testing hardware and software at the same time. You may be working hard to fix a "bug" in your code but turns out the hardware was either built incorrectly or the hardware design may have been bad.
Software devlopment is the software developed depending on a specific customer requirements is called as application or project .
Product devlopment is a software developed depending on overall requirements in market is called as software product.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
We recently built a large ASP.NET web forms application for a client and the main point of contact has told me he wants to learn more about the technical side of web applications. He has no programming experience and has a primarily business background.
I have provided him with many online resources, however he would like to get some book recommendations. After searching myself, I can't seem to find any that fit the bill.
I am looking for a book that will:
Provide a high-level introduction to internet tecnologies (HTTP, TCP/IP, servers, web farms, hosting, scripting languages etc).
Cover issues that commonly affect the success/failure of web applications (performance & scalability, security, data integrity, server maintainence).
Give a very basic introduction to web development (ideally in the ASP.NET world, but not important).
Introduce typical web application architectures (for example describing N-Tier systems, SOA)
I can obviously find tons of books on each of the topics mentioned above, however I can't seem to find any that would be targeted at people that are not (would-be) web developers.
Anyone have any recommendations?
How about this one? Learning Web Design: A Beginner's Guide to (X)HTML, StyleSheets, and Web Graphics by O'Reilly?
It covers most of your topics, but unfortunately doesn't really cover the programming aspect - just the scripting. A good start nonetheless.
Then, if he's still up for it, you can hit him with Beginning Web Development, Silverlight, and ASP.NET AJAX: From Novice to Professional by Apress, which would finish the job and introduce them to MS technologies. "It adopts a “zero to hero” approach..." which is what you are looking for.
You might get better responses on ServerFault since you're asking about a book that mainly centers on server administration rather than the programming aspect.