Help for estimate the development time

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • shuisheng

    #1

    Help for estimate the development time

    Dear All,

    I have little experience in coding. For a c++ code with 30,000 lines,
    It is large or small? For two average programmers, usually how long
    does it take to finish the code? The code should have no algorithm
    difficulties. But It indeed need some design because we hope to
    maintian and extend it in the future.

    Any suggestion and comments are welcome !

    Thanks a lot ! ! !

    Shuisheng

  • Victor Bazarov

    #2
    Re: Help for estimate the development time

    shuisheng wrote:
    I have little experience in coding.
    Where is the emphasis? "Little" or "experience "? Are you being
    modest or are you admitting to being green?
    For a c++ code with 30,000 lines,
    It is large or small?
    Small.
    For two average programmers, usually how long
    does it take to finish the code?
    Coding is not a process, it's a state. You cannot finish it,
    you can only move onto a different state.

    Many years ago IBM estimated the productivity of an average
    programmer to be about 10 LOC/day. With the advent of new and
    improved tools nowadays some can argue that 100 LOC/day is not
    unheard of. So, for two people it would take about 150 days
    to get 30K LOC into a shippable condition. That involves design
    and coding/debugging, of course.
    The code should have no algorithm
    difficulties. But It indeed need some design because we hope to
    maintian and extend it in the future.
    Add documentation to that and you might need to stretch the time
    30-50%.

    But what does it all have to do with C++?

    V
    --
    Please remove capital 'A's when replying by e-mail
    I do not respond to top-posted replies, please don't ask


    Comment

    • Mark P

      #3
      Re: Help for estimate the development time

      shuisheng wrote:
      Dear All,
      >
      I have little experience in coding. For a c++ code with 30,000 lines,
      It is large or small? For two average programmers, usually how long
      does it take to finish the code? The code should have no algorithm
      difficulties. But It indeed need some design because we hope to
      maintian and extend it in the future.
      >
      Any suggestion and comments are welcome !
      >
      Thanks a lot ! ! !
      >
      Shuisheng
      >
      I suspect your question is too vaguely specified to generate any useful
      responses. 30k lines is fairly small for a project, but a substantial
      amount of work for two people. Especially if they're merely "average".

      But I don't understand what it is that they're to do? Is the code
      already written? (How else do you know it's 30k lines?) Is this a
      maintenance job?

      Comment

      • dave_mikesell@fastmail.fm

        #4
        Re: Help for estimate the development time

        On Feb 27, 2:55 pm, "shuisheng" <shuishen...@ya hoo.comwrote:
        Dear All,
        >
        I have little experience in coding. For a c++ code with 30,000 lines,
        It is large or small? For two average programmers, usually how long
        does it take to finish the code? The code should have no algorithm
        difficulties. But It indeed need some design because we hope to
        maintian and extend it in the future.
        What is the application? Are there existing libraries that can do
        some of what you're planning to write?


        Comment

        • shuisheng

          #5
          Re: Help for estimate the development time

          On Feb 27, 4:39 pm, Mark P <use...@fall200 5REMOVE.fastmai lCAPS.fm>
          wrote:
          shuisheng wrote:
          Dear All,
          >
          I have little experience in coding. For a c++ code with 30,000 lines,
          It is large or small? For two average programmers, usually how long
          does it take to finish the code? The code should have no algorithm
          difficulties. But It indeed need some design because we hope to
          maintian and extend it in the future.
          >
          Any suggestion and comments are welcome !
          >
          Thanks a lot ! ! !
          >
          Shuisheng
          >
          I suspect your question is too vaguely specified to generate any useful
          responses. 30k lines is fairly small for a project, but a substantial
          amount of work for two people. Especially if they're merely "average".
          >
          But I don't understand what it is that they're to do? Is the code
          already written? (How else do you know it's 30k lines?) Is this a
          maintenance job?
          Your guess is right. I posted a message in the comp.software-eng group
          to ask for suggestion. Please see below. And I appreciate your kind
          help.



          Dear All,

          We major in computational electromagnetic s. Our research object is to
          develop efficient algorithms to model electromagnetic waves in complex
          media. After years of reserach, we developed some good algorithms. We
          tried to commercialize our research. So we started a software project
          a year ago.

          We hired two guys. One worked on GUI, and the other on Kernel. We
          hoped to finish the project in three months. But the results was not
          as we expected. Even now, the project is not finished. We just have a
          coarse version to run some simple cases. And the code is full of bugs
          and bad smells (repeated code, switch/case on type id, large classes,
          large functions (some have more than 1000 lines), no consistent coding
          style ). In fact, the code size is not very large. It is about 60,000
          lines. And we think it can be compressed into less than 30,000 lines
          if removing the repeated codes.

          Now we are reading some project management and software design books.
          And we found that our project in fact has no management. We are just
          coding, repeatedly give a task deadline and ask the developers to
          finish it, though the deadlines can never be met. There is no
          requirement analysis, no system design, no testing, and so on.

          We don't want the project fail. What should we do in the next step?
          Modify our current ugly version, or renew one and do it accroding to
          what the software project books teach us (we still have no experience
          on it)?

          We appreciate your kind help!

          Shuisheng

          Comment

          • Michael DOUBEZ

            #6
            Re: Help for estimate the development time

            shuisheng a écrit :
            [snip]
            We major in computational electromagnetic s. Our research object is to
            develop efficient algorithms to model electromagnetic waves in complex
            media. After years of reserach, we developed some good algorithms. We
            tried to commercialize our research. So we started a software project
            a year ago.
            >
            We hired two guys. One worked on GUI, and the other on Kernel. We
            hoped to finish the project in three months. But the results was not
            as we expected. Even now, the project is not finished. We just have a
            coarse version to run some simple cases. And the code is full of bugs
            and bad smells (repeated code, switch/case on type id, large classes,
            large functions (some have more than 1000 lines), no consistent coding
            style ). In fact, the code size is not very large. It is about 60,000
            lines. And we think it can be compressed into less than 30,000 lines
            if removing the repeated codes.
            >
            Now we are reading some project management and software design books.
            And we found that our project in fact has no management. We are just
            coding, repeatedly give a task deadline and ask the developers to
            finish it, though the deadlines can never be met. There is no
            requirement analysis, no system design, no testing, and so on.
            >
            We don't want the project fail. What should we do in the next step?
            Modify our current ugly version, or renew one and do it accroding to
            what the software project books teach us (we still have no experience
            on it)?
            Without seeing the code and the general design, who can tell.
            Now, if it is badly designed, it can poison your project for years;
            don't be afraid to throw bad code (though it is hard for those who
            worked on it and for the project manager).

            A good approach would be to hire an experienced C++ consultant for a few
            months (depending on your cash and on your needs) and *learn from
            him*; good software engineering is caught, not learned, especially in C++.
            Idealy, once he has set the project back on sound foundation and good
            tracks, you can continue on your own.
            In order to gain time, prepare specs for him to build from and some
            background reading if he is not in your application field.


            Michael

            Comment

            • John Harrison

              #7
              Re: Help for estimate the development time

              shuisheng wrote:
              Dear All,
              >
              I have little experience in coding. For a c++ code with 30,000 lines,
              It is large or small? For two average programmers, usually how long
              does it take to finish the code? The code should have no algorithm
              difficulties. But It indeed need some design because we hope to
              maintian and extend it in the future.
              >
              Any suggestion and comments are welcome !
              >
              Thanks a lot ! ! !
              >
              Shuisheng
              >
              When I was at uni we were told that the average programmer managed 10
              lines of code a day.

              john

              Comment

              • dave_mikesell@fastmail.fm

                #8
                Re: Help for estimate the development time

                On Feb 28, 12:58 pm, "shuisheng" <shuishen...@ya hoo.comwrote:
                <snip>
                >
                We don't want the project fail. What should we do in the next step?
                Modify our current ugly version, or renew one and do it accroding to
                what the software project books teach us (we still have no experience
                on it)?
                - Download CPPUnit (http://cppunit.sourceforge.net/cppunit-wiki/
                FrontPage)

                - Cover the code base with working unit tests and make sure they all
                pass

                - Refactor, test, repeat

                You used the term "bad smells", so it sounds like you already have a
                copy of "Refactorin g" by Fowler. If not, that would be a good
                purchase to make as well.

                There's a business model here. The C++ code you describe is more the
                norm in my experience.

                Comment

                • JussiJ

                  #9
                  Re: Help for estimate the development time

                  On Feb 28, 6:55 am, "shuisheng" <shuishen...@ya hoo.comwrote:
                  For a c++ code with 30,000 lines, It is large or small? For two
                  average programmers, usually how long does it take to finish
                  the code?
                  FWIW back in the days when I worked on IBM projects, if I recall
                  correctly, they assumed an average developer produced about 50
                  lines of tried and test code per day.

                  This means 30,000 lines of code is about 600 man days of work.

                  Now assuming a programmer works 5 days a week, 52 weeks a year this
                  comes in at 2.3 man years.

                  So two IBM programmers will have the job done in about 1.15 years ;)
                  But It indeed need some design because we hope to maintian
                  and extend it in the future.
                  At IBM design time would have been extra.

                  Jussi Jumppanen
                  Author: Zeus for Windows IDE


                  Comment

                  • Jerry Coffin

                    #10
                    Re: Help for estimate the development time

                    In article <1172606103.317 875.194650@a75g 2000cwd.googleg roups.com>,
                    shuisheng75@yah oo.com says...
                    Dear All,
                    >
                    I have little experience in coding. For a c++ code with 30,000 lines,
                    It is large or small? For two average programmers, usually how long
                    does it take to finish the code? The code should have no algorithm
                    difficulties. But It indeed need some design because we hope to
                    maintian and extend it in the future.
                    The amount of time it takes to write code is related to the size of the
                    project -- in a small project, you can crank out the code in a hurry. As
                    the codebase grows, so does the amount of time it takes to write a
                    particular amount of code.

                    If you really want to get into this in detail, Barry Boehm is the guru
                    of software estimating. His COCOMO and COCOMO II models are probably the
                    most widely recognized in the industry. His book (_Software Estimating
                    with COCOMO II_) includes a CD-ROM. You can also find various other
                    implementations (E.g. Cosmos) that work quite nicely.

                    My own take is that you're generally better off basing your estimates on
                    function points than lines of code. They're a lot easier to figure from
                    a functional specification, and they help to factor out some factors
                    such as coding style that affect the number of lines of code without
                    materially affecting effort.

                    Cosmos will allow you to just enter 30000 SLOC, and tell you that it
                    should take 135.4 person months of effort and a schedule of 13.9
                    calendar months. You can also enter various factors such as required
                    level of dependability, level of experience with the language, etc., to
                    refine that estimate -- claiming superb personnel, minimal requirements,
                    etc., would reduce the estimate to 14.7 person-months of effort, and 6.4
                    calendar months. Going in the opposite direction, it would increase to
                    8913 person-months of effort and 60.3 calendar months for the schedule
                    (and all of these are ignoring some things such as the type of project
                    -- for example, an embedded system with the same parameters otherwise
                    would increase the estimated effort to 10920.1 person months).

                    This may help explain some of the wild variation in the numbers that
                    have been thrown around here -- they really do vary pretty widely,
                    depending on requirements, capabilities, tools avialability, and so on.
                    Fortunately, quite a bit of work has been put into figuring out how each
                    factor affects the overall amount of effort and time needed to finish
                    the project -- in fact, as far as I can tell, Barry Boehm has virtually
                    devoted his life to it. Of course, he's not the only one.

                    There are other estimation models out there too -- though many (if not
                    most) are fairly directly based on Boehm's work, with various minor
                    enhancements in particular parts (e.g. some allow you to include reuse
                    of exising code, which would probably be helpful in your situation).

                    --
                    Later,
                    Jerry.

                    The universe is a figment of its own imagination.

                    Comment

                    Working...