Software Development Methodology [closed] - terminology

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'd like to know the difference between Software Development Process and Software Development Methodology if there is any.

A process is only a component of a methodology. A methodology has:
A process aspect: what tasks are to be carried out?
A product aspect: what things are to be used and/or created?
A people aspect: what people and teams are going to do all this?
A time aspect: how does all this get organised in time?
A modelling aspect: what modelling units (language) are used to capture all this?
This is a simplified interpretation of the more formal definitions that you can find in ISO/IEC 24744 Software Engineering - Metamodel for Development Methodologies.
Still, the terms "method", "methodology" and "process" are used by different people with different meanings. After 20 years working in this field, I think that trying to agree on a standard use is futile. :-)

It's the same as the difference between process and methodology in any other discipline. I think of the processes as the implementation of the methodology.

The methodology is more a general mindset which sets basic parameters. A process is a concrete manifestation within the given borders of the methodology. You can think of agile as methodology and Scrum as concrete implementation.
Sometimes it's hard to distinguish between the two. As rule of thumb: If you can immediately start to work with it, it's probably a process. A methodology requires more adaptation .

A more wide term would be Software Development Philosophies.
http://en.wikipedia.org/wiki/List_of_software_development_philosophies

Related

Difference between structured programming and structured approach to development? [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 6 years ago.
Improve this question
I'm looking for clarification -
The terms 'structured programming' and 'structured development approach' refer to different things. Is this correct?
My understanding is that 'structured programming' is programming which is clear and well set out, using subroutines and modules etc. to keep 'structure' in software. This is different to the 'structured software development approach' which refers to the methodology of completing the stages of development (defining the problem, planning, creating, testing and maintenance) sequentially and not starting one until the previous is finished.
I'm a student and need to have these terms clear. Am I on the right track? Are there any important details I'm missing?
Yes, you are on the right track, these are different things.
Both of these terms are very broad. All programming paradigms that have been in use during the last 50 years (procedural, object oriented, functional etc.) are structured. And I would also say that every development methodology (waterfall, v model, agile etc.) is also structured in some way. Of course there are different grades.

If one has an aim of being a good programmer, what should one prefer, contributing to open source projects or solving codechef.com problems? [closed]

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 8 years ago.
Improve this question
I am a college student keen to improve my Programming skills. I have two pathways to follow:
Contributing to OpenSource Projects
Solving puzzles at codechef.com
Which one should I follow?
A good programmer is one who cares about his or her ACE - Accuracy, Clarity, Effectiveness.
A good programmer cares about the Accuracy of code. The easy part is coding the "happy path" because this is always in the forefront of our minds when we design and write the code. But what about potential the exception paths that exist when presented with unexpected input and edge case behaviours of the chosen implementation provided? Care is shown by taking the time to think through all the code paths, investing time in testing, submitting the code for peer review, and having the willingness to accept other's suggestions and make changes when appropriate.
A good programmer cares about the Clarity of code. Whether the code is well structured, expressive, adheres to the Open-Closed Principle, the Single Responsibility Principle, the executing machine doesn't care one bit. But, these are all very important to the next programmer, or yourself, who has to read and understand your code at a later date in order to fix bugs, modify behaviours, or add features.
A good programmer cares about the Effectiveness of code. Does it satisfy all the constraints imposed on it? Not only performance and space constraints, but also aspects that make it acceptable to the end user, the demands on the development and testing timelines by your clients, boss, family. Professional software development is not a precise circumscribed task, like "calculate the determinant of an NxN matrix". It has many constraints and demands, and good programmers are mindful of all of these, and will do their best to manage the them, especially when there is not enough time to satisfy all constraints completely.
So! To answer your immediate question, Open Source or codechef, I'd say that being involved in an Open Source project provides much greater opportunities to practice being a good software developer. So go choose an Open Source project that you care about, and ACE it!

Where do Open Source projects hold their design files? [closed]

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 have seen many opensource project on github, sourceforge etc.
Went through the code on many big projects.
I have never seen ANY design diagrams, from simple class diagrams to sequence diagrams.
Also, many projects (not all) don't actually have any comments on their code.
How is this even possible? No design and some comments only.
This depends on the project at hand; design diagrams could be found in the source tree, or on the project's website, or any number of places. There may not even be design diagrams at all -- they're not strictly necessary for software development.
The reality is that most industry strength software is written without design diagrams, class diagrams and/or other UML style documentation.
Why? Because most experienced developers (including me) do not see enough value/cost benefits from doing it.
Developers are relatively quick to adapt tools that are practical and helpful (test tools, source control, code analyzers, profilers etc.) so it is not a question of developers being "old dogs" and/or not wanting to improve the tools they use. If design diagrams etc. actually helped speed up development and/or improved product quality then it would be used a lot more than it is. However it doesn't so it isn't. And this is despite 30+ years of "guru" after "guru" trying to push yet another box/sphere/line tool down developers throat :-)

Disadvantages of First-class functions [closed]

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 4 years ago.
Improve this question
Are there any disadvantages to having first class functions in a language?
Joel in this entry says
Object-oriented programming languages aren't completely convinced that
you should be allowed to do anything with functions.
I might be naïve here, but why don’t all languages support first class functions if there aren’t much issues
In an ideal world where there was never a cost associated with developing new features, the only downside I can see to including functional programming techniques would be confusion to developers who are not familiar with functional techniques (and I don't really see that as much of a downside).
In reality, treating functions as first-class typically requires significant rewrites to the compiler itself. The cost of doing this has to be weighed against the long-term gain.
Adding this feature might be a disadvantage if introducing the change requires a costly re-write of language compilers, interpreters, and other tools. It might also be a disadvantage if the language's culture is not familiar enough with the advantages provided by this feature in which case adding the feature is a waste of effort.
Additionally, first class functions require runtime interpretation of code and some form of garbage collection. Both of these add overhead that might not be suitable for certain problems and languages.

How do you estimate a EAI project using Function point? [closed]

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 2 years ago.
Improve this question
How do you estimate a EAI project using Function point?
FP analysis is inappropriate for integration projects of any sort as it presupposes that you can specify the application up-front. Most of the work in any integration project of non-trivial complexity is reverse-engineering the nuances of the environment. Typically the environment will not be exhaustively documented in the sort of cases you would expect to use an EAI system in.
By the time you have actually done this level of reverse engineering to the point of having a complete specification you have done most of the work in the project - the actual development is fairly short and sweet by comparison. Therefore the function point analysis is only providing an estimate for a small part of the system.
As an aside, much of the work I do is data warehouse systems in Commercial insurance companies, where extensive prototyping and reconciliation exercises to produce detailed specification documents are actually quite appropriate to the environment. Typically this takes longer than actually developing the production system as most of the data issues are resolved in the prototyping work. EAI systems have a similar class of implementation issues.
Well given that FP counting is based on storage and end user interface, not sure if its even meaningful for EAI (from what little I remember).
I would say you can't, at least not in a useful way. FP counting is generally viewed as a dubious practice of varying accuracy, doing it to an integration project would just add more fuzzyness.