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.
Related
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
I want to process a list of data parallelly; processing of each element of the data won't affect other.
With for example google pub/sub + cloud functions, I could achieve something scalable and parallel, which looks like a distributed system.
I have little knowledge about distributed programming, and it seems that it takes a lot of time to master.
So I would like to know is this a replacement or a valid implementation of distributed system?
For the specific use case you're talking about - dividing work among function invocations to run in parallel - yes, it sounds like that would be adequate.
I would be very hesitant to call it a full "distributed system" (at least not without your very strict definition of what that really is). If you take wikipedeia's explanation of distributed computing, you might have a very basic system in place, but lack of a peer-to-peer direct messaging system probably makes it unsuitable for many of the listed applications you see on that page.
The bottom line I think you should really consider is if it satisfies the requirements of the problem at hand. Whether or not it's a "distributed system" is mostly irrelevant - either it works or it doesn't for that use case.
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!
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
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
We develop scientific software and I manage a small group of applied scientists who write great code. A lot of our products depend on stable development tools which we've been using for developing a stable code base. Now the issue is, someone from the management visited an open source conference and was too pleased to see a lot of great tools which can be used internally for free in place of the commercial ones we've been using so far. So he suggested to the management to remove costs of buying the tools we've using and shift to the open source ones. Now I do not have anything against the open source movement but through a small experiment I found that my team is spending a lot more time debugging and maintaining stable code bases for those open source tools .
I'm sure a lot of other program manager's have had this problem so far. Would people relate their experiences and let me know of any studies made on this subject ? i want to present a cost benefit analysis to the management by giving some statistical facts not just empirical evidence. I'll be glad to know some case studies thereof.
I think open source is terrific, but I use a commercial IDE (IntelliJ) for Java development, even though there are popular open source alternates Eclipse and NetBeans. In my experience, IntelliJ is the best IDE, hands down, with a measurable impact on my productivity.
I can't say that it's true of all tools, but in this case it is.
I don't believe that either open source or commercial tools can claim the high ground here, because I can cite good and bad examples on both sides. Blanket statements and "me, too" thinking are usually a bad idea.
Statistics will be hard to come by. 86% of all statistics are made up on the spot.
I would expect managers in a company whose products are based on science to be more rational. You're a small firm - talk it through. If it's not possible in your situation, then no one has a chance.
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
This is not a question with a precise answer (strictly speaking the answer would be best captured by a poll, but that functionality is not available), but I am genuinely interested in the answer, so I will ask it anyway.
Over the course of your career, how much time have you spent on greenfield development compared with brownfield?
Over the last 10 years I would estimate that I have spent 20% on greenfield and 80% on brownfield. Is this typical?
I think it's typical for professionals who deal with customers to spend more time in brownfield development. The reason is that customers typically aren't willing to throw out their existing software to adopt the "latest and greatest" (green) software.
Developers in research or academics, however, may be more likely to do greenfield development. Start-ups as well.
I think that your ratio 20:80 is representative of many/most developers. As to new development: if you are building software incrementally (Scrum, XP, etc) then one could argue that you spend almost all of your time in brownfield development. Except for the initial iteration/exploratory work, prototyping, even when you are building something new, you are already working on an established code base, refactoring and extending. So how much greenfield development is actually green?
Often the problem doesn't just boil down to brownfield vs greenfield. In some cases there is a valid opportunity for a hybrid greenfield/brownfield approach.
I have written an article called "Classic software mistakes: To Greenfield or Refactor Legacy Code" which discusses this exact subject and outlines a range of possible combinations then evaluates the consequences of each.
http://stepaheadsoftware.blogspot.com.au/2012/09/greenfield-or-refactor-legacy-code-base.html
What may surprise some people is that a non technical attribute, company size, will be a big determinant in the choice of strategy and the likelihood of success of that strategy.
Over the past decade or so, I've always worked on software that was used as the center of my company's business. (Both SaaS and a software product.) And while I've always come into the with an existing system (so brownfield), we've usually put out a ground-up redesign/rewrite (so greenfield.) So, to break to down:
about 60/40 brown/green for the big projects, in number
about 20/80 brown/green for the big projects, in time spent on them
and nearly 0/100 brown green for little side projects
So, that is seems to be the opposite of you. It is the nature of the companies I've sought out, and hence the projects. My software is our company's main product, and that means I work on the same code base for years, usually after having created it from scratch myself/ourselves.
And I like it that way.