Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 5 years ago.
Improve this question
Can anyone clearly explain the difference between Software Testing and Software Evaluation?
I think I have pretty clear what Testing is, but I don't have that clear what Evaluation is, so can you please provide an example?
And finally, if I wanted to include a list of the previously defined requirements of the project, establishing whether each of them has been achieved, and in the case it's not been achieved, a discussion of why not... where does this fit?
Software Testing:
Software Testing is the Process of Executing a program instant of finding error.
Software Evaluation:
A software evaluation is a type of assessment that seeks to determine if software or a combination of software programs is the best possible fit for the needs of a given client.
First of all, these terms are not related. Software testing is the process to make sure that the software that you are coding meets client's requirements and it is relatively free from bugs. Software evaluation on the other hand is to identify an already available software which might suit your need.
Assume your need is for a database compare tool. You have 2 options - either you create your own custom made software (or get some vendor to create one for you) or you can look to buy an off-the-shelf or ready-made tool. In case you are creating your own custom made tool, it would mean that it needs to be planned, designed, coded, tested and then implemented. This would involve a complete software development life-cycle. Here, testing comes into the picture.
If you choose to purchase an already developed tool, then you might look for different vendors to quote their projects, the tools capability. You might want to try out all of them to see which one is the best tool for you w.r.t. your need and pricing. This is software evaluation.
Software Evaluation is a widespread relative term.
According to Wikipedia:
Evaluation is a systematic determination of a subject's merit, worth
and significance, using criteria governed by a set of standards. It
can assist an organization to assess any aim, realisable
concept/proposal, or any alternative, to help in decision-making; or
to ascertain the degree of achievement or value in regard to the aim
and objectives and results of any such action that has been completed.
The primary purpose of evaluation, in addition to gaining insight into
prior or existing initiatives, is to enable reflection and assist in
the identification of future change.
As you see, it's complex and related to business administration B.A.
I think you are looking for a procedure model, like Quantitative Methods for Software Selection and Evaluation. There's no standard model or guidelines for evaluation handling in software.
Software Testing is a method of finding out whether a software is working as it should, e.g. giving correct output, working fast enough, handling expected loads, responding to user inputs properly.
Software Evaluation is a process of judging how well the Software’s original intended goals have been achieved.
Evaluation happens after the Software has been developed, and its users have used it long enough to become familiar with it and can use it effectively.
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
I have recently discovered the amazing world of automated debugging, where your tool try to automatically isolate the part of the code that causes a bug. Since then, I have found some tools, like these:
delta debugging (implementation in DD.py) using scientific methodology applied to debugging.
static and dynamic program slicing extracting a subprogram trace highlighting the variables you want to observe.
git-bisect using bisection applied to code history and mixed with delta debugging to quickly find what change caused the bug.
I'm interested into finding more algorithms for automated debugging, which can automate some part (or all?) of the debugging process and where a pratical working implementation exists, particularly:
approaches such as delta debugging (which can precisely pinpoint where and why a bug happens in the code by using a systematic/automated approach).
is there a software that can automatically generate a minimal program that reproduces a bug from a full program?
NB: some tools I cited are mainly geared towards Python but I am looking for automated debugging tools on any language, what is interesting me is the approach and algorithms, not the specific implementation, but I require an implementation (even a proof of concept) because I would like algorithms which have already been practically applied to real problems (ie, they work, that's just not computer science philosophy).
Clarification: I'm not looking for automated testing tools (which automatically test to find a new bug), but automated debugging approaches where you have a specific bug you want to find the origin in your code.
I have found a few softwares that can generate a minimal program that reproduces a bug:
DD.py has in fact two functions: dd() to find the minimal change that introduced a bug, and ddmin() which finds the minimal configuration (ie, minimal test case).
Delta, a program specifically tailored for that purpose.
I also found a course on Udacity called Software Debugging which is presented by Andreas Zeller, the original author of delta debugging.
Side note: these are also somewhat related tools (although they are mainly unit testing tools, they can be used in combination with automated debugging so it's kind of related):
coveralls
coverage
automated unit test generator Pythoscope
I am still looking for alternative approaches to automated debugging.
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I have the triplet WIN/MAC/Ubuntu machines in my company.
I'm constantly getting security updates messages for all of them.
My questions are:
how do Microsoft and the other companies find so many security holes?
Sometimes I find out that I forgot to update a machine for a long time, how really vulnerable am I during this time?
Don't hackers can just study the security updates on a daily basis and try to exploit
the machines that haven't updates yet?
Thanks
how do Microsoft and the other companies find so many security holes?
Usually, they don't. From my experience, vendors themselves often don't put a lot of effort into actively finding and fixing their own vulnerabilities.
However, there are a lot of security researchers who try to find vulnerabilities using some combination of reverse engineering (static binary analysis and dynamic run-time analysis) and fuzz testing to provoke misbehaviour, then evaluating the exploitability of the observed crashes.
The Zero Day Initiative is an example of a company that pays researchers and leaves vendors the time to fix found vulnerabilities before releasing details about them to the public (this process is called responsible disclosure).
Sometimes I find out that I forgot to update a machine for a long
time, how really vulnerable am I during this time?
It depends on the type of vulnerability, but usually the answer is "Very, very much".
Don't hackers can just study the security updates on a daily basis and
try to exploit the machines that haven't updates yet?
That's what they do. Often this is really easy, as proof-of-concept exploits for the patched vulnerabilities are publicly available. If this is not the case, it's at least possible to reverse-engineer the patches to get an idea of what the fixed vulnerability is. There's a BitBlaze subproject that presents a proof-of-concept of how this process can be automated.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
I have a specific goal in mind: I want to make a to-do-list-type app for my group at work to use. My key requirements are to have very easy entry and removal of items, as well as work in an OS X environment. The first requirement is because anything that is easy to use is more likely to be used, and the second is because that's what we're on. The application will need to be live-updating among multiple users, but authentication is not a requirement. Distribution of the same app to other remote teams is a plus, but not required. Just a shared to-do list, with task-specific things to be added. It doesn't have to be a web app; native is great but the world at large seems to be more and more web-related these days.
I've been looking at a number of technologies such as Ruby (and Rails), PHP, MAMP, Cappuccino, FileMaker, Trac, and a few other options - but the paradox of choice means that I don't really know what is "best" to use. Looking at that list it is obvious that I don't really know what I should be looking at, let alone how to decide on things. I'm drowning in a sea of opportunities and a surplus if "good enough."
I am a somewhat-experienced with Objective-C and Cocoa, but excluding Cappuccino, those skills don't directly relate. I'm rather excited to learn new things, so my existing skill set is not especially important.
What sounds natural for this? I'm fully prepared for the fact there is no "right" option. Who here has a favorite methodology? What's a good application stack that has proven itself in rapid development time and future flexibility?
TL;DR: I want to make a concurrently-updated todo app for a small work team. It specifically does not need to be feature-filled, but should be "simple" to build and maintain. What is the right tool for the job?
EDIT: My team does nothing related to software dev, but my own personal mindset is that of a software dev. Part of the reason I am not afraid to roll up my sleeves and learn something new is a matter of personal development.
I would highly recommend that you use an existing solution rather than build your own. Teams building their own management software has a long history of sucking up lots of time, energy and talent for little benefit.
As for which solution you should use, it depends on the kind of work your team does. If they do software development, as I suspect they might based on your question, Trac is an excellent option.
Based on your requirements, IMHO, the GoogleTask is the best one for you. If want desktop (not web) app, check Things (commercial).
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 5 years ago.
Improve this question
I understand that it is better to discover requirements through iterative approaches in Agile, however I often hear of people rejecting projects on the basis that they are given up-front requirements.
Why is this the case? Why can't up-front requirements just be taken as-is, e.g. just added to a product backlog and then prioritized and implemented?
There's nothing wrong with up-front requirements. In fact it helps to know where you're heading before you set sail!
Agile is a lot about being able to be adaptable, so that should requirements change you're not locked into something you don't want.
The kind of up front requirements that would cause a developer to think twice about a project, would be those which indicate that the client are likely to be a nightmare to work with:
an obsession with one particular, unsuitable technology or presentation style
insisting on 'security' with glaringly obvious vulnerabilities
In an agile project, it's good to show a client the current state of the partially working system at an early stage, and get feedback, using this information to help design the subsequent parts of the system. If a client is too fixed on ideas of the final product then they might not be able to give useful feedback at this stage, and the final product may be not as good as it could have been.
This something that can be quite problematic with Agile. Some teams will use it as an excuse to not have a plan as they want to be 'adaptable'. Requirements can help to focus on the software architecture, which is something else that is not always given much focus in some Agile teams. It is points like these that lead me to believe that Agile should just be principles but not a methodology. Digital Animal wrote an interesting article about how Agile can be used in such a way that it stops being effective. For some teams, it is better to learn from what is great about Agile and use it to build a methodology that works for them. http://digitalanimal.com/blog/slaying-the-agile-dragon-the-game-of-thrones-methodology/?AT=CZcb6f
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
What are some good tools for designing & modeling complex systems?
I'll leave the question open to some interpretation, to allow for a variety of answers.
Complex System:
A complex system is a system composed of interconnected parts that as a whole exhibit one or more properties (behavior among the possible properties) not obvious from the properties of the individual parts.
- [Wikipedia - Complex Systems]
If NetLogo alone does not meet your needs, look at the available extensions.
Unless you are fluent in writing discrete-event simulation code, or you have a particular subject-matter area for which there exists domain-specific simulation libraries, i would strongly suggest NetLogo.
NetLogo is a platform for Agent-based simulation; the term also describes the DSL used in this platform. Aside from the documentation supplied in NetLogo itself, Seth Tisue and Uri Wilensky have written an excellent introduction to NetLogo.
NetLogo is widely used among the community of Agent-Based modelers--for instance, it was featured in a 2010 Conference Proceedings paper titled Software Tools for Analysis and Modelling in Complex Systems. (The link to the paper is here--careful it's a direct link to the pdf file).
Over the past decade, NetLogo has been used in a large variety of practical applications, including Financial Markets, Clinical Medicine, Network Architecture and Diagnostics, and Traffic Simulation.
A few facts about NetLogo:
a GUI-driven integrated simulation
environment
free and open source
stable and mature (development began
in 1999)
actively supported (by Northwestern University, for coursework use)
excellent and large body of
documentation
many working code examples (complete
models) are bundled with the base install of NetLogo
To me, the last bullet was the most compelling reason to try NetLogo--this large and diverse library of pre-built, complete simulations meant a relatively painless learning path. In addition, these served as a valuable library of template models from which i could select a few and modify rather than starting from a blank page.
You can also consider Wolfram Mathematica or System Modeler. Not only does Mathematica have a very nice cellular automata modeling capability built-in, but there is also a large body of Demonstrations that will help you as you try to build agent-based or cellular automata modeling. In addition, Mathematica can also model dynamical networks. Finally, here is a website listing how Mathematica has been used to model complexity in conference proceedings and other applications.