Monday, February 22, 2010

1.2 Scale and Change

Though cost, schedule, and quality are the main driving forces for a project in our problem domain (of industry strength software), there are some other characteristics of the problem domain that also influence the solution approaches employed. We focus on two such characteristics—scale and change.

Most industrial-strength software systems tend to be large and complex, requiring tens of thousands of lines of code. Sizes of some of the well-known software products are given in Table 1.1. As can be expected, development of a large system requires a different set of methods compared to developing a small system, as the methods that are used for developing small systems often do not scale up to large systems. An example will illustrate this point. Consider the problem of counting people in a room versus taking a census of a country. Both are essentially counting problems. But the methods used for counting people in a room will just not work when  taking a census. A different set of methods will have to be used for conducting a census, and the census problem will require considerably more management, organization, and validation, in addition to counting.

Table 1.1: Size in KLOC of some well-known products

 

Similarly, methods that one can use to develop programs of a few hundred lines cannot be expected to work when software of a few hundred thousand lines needs to be developed. A different set of methods must be used for developing large software.

Any software project involves the use of engineering and project management. In small projects, informal methods for development and management can be used. However, for large projects, both have to be much more rigorous, as illustrated in Figure 1.2. In other words, to successfully execute a project, a proper method for engineering the system has to be employed and the project has to be tightly managed to make sure that cost, schedule, and quality are under control. Large scale is a key characteristic of the problem domain and the solution approaches should employ tools and techniques that have the ability to build large software systems. Change is another characteristic of the problem domain which the approaches for development must handle. As the complete set of requirements for the system is generally not known (often cannot be known at the start of the project) or stated, as development proceeds and time passes, additional requirements are identified, which need to be incorporated in the software being developed. This need for changes requires that methods for development embrace change and accommodate it efficiently. Change requests can be quite disruptive to a project, and if not handled properly, can consume up to 30 to 40% of the development cost [14].

As discussed above, software has to be changed even after it has been deployed. Though traditionally changes in software during maintenance have been distinguished from changes that occur while the development is taking place, these lines are blurring, as fundamentally the changes in both of these scenarios are similar—existing source code needs to be changed due to some changes in the requirements or due to some defects that need to be removed. 


Figure 1.2: The problem of scale.


Overall, as the world changes faster, software has to change faster, even while under development. Changes in requirements are therefore a characteristic of the problem domain. In today’s world, approaches that cannot accept and accommodate change are of little use—they can solve only those few problems that are change resistant.

6 comments:

  1. this is nice article, thank you for sharing important information

    ReplyDelete
  2. thanks for sharing such a great post. content marketing takes time but is really important for a long run. keep sharing.

    ReplyDelete
  3. That's really interesting! Software development isn't really my thing, so I decided to save my time and focus on what's the most important for my business. Thanks, Pro4People, for amazing service! To find out more, click here.

    ReplyDelete
  4. THANK YOU FOR THE INFORMATION .HI GUYS IF YOU SEARCHING FOR software application development services

    PLEASE VISIT US
    software application development services



    ReplyDelete
  5. Nice explanations of the software development basics, it's good to know that! A friend of mine has implemented a company which is the ERP software in Hyderabad right now, she provides cloud based ERP software in Hyderabad, so I hope it goes well for her.
    Best Regards

    ReplyDelete
  6. I will use such information now. Great and capable recommendation by the creator of this blog are truly useful to lessen our hack-tic life Logistics and Freight Forwarding Software Kuwait

    ReplyDelete

Pages