Page 50 - DCAP305_PRINCIPLES_OF_SOFTWARE_ENGINEERING
P. 50

Principles of Software Engineering



                   Notes         Introduction

                                 Before starting to design a software product, it is extremely important to understand the precise
                                 requirements of the customer and to document them properly. In the past, many projects have
                                 suffered because the developers started implementing something ‘without determining whether
                                 they  were  building  what  the  customer  exactly  wanted.  Starting  development  activities  with
                                 improperly documented requirements is possibly the biggest mistake that one can commit
                                 during a product development. Improperly documented requirements increase the number of
                                 iterative changes required during the life cycle phases, and thereby push up the development
                                 costs  tremendously.  They also set the ground for bitter customer-developer  disputes  and
                                 protracted legal battles. Therefore, requirements analysis and specification is considered to be a
                                 very important phase of software development and has to be undertaken with utmost care. Even
                                 experienced analysts take considerable time to understand the exact requirements of the customer
                                 and to document them. They know that without a clear understanding of proper documentation
                                 of the problem, it is impossible to develop a satisfactory solution. The requirements analysis and
                                 specification phase starts once the feasibility study phase is complete and the project is found to be
                                 financially sound and technically feasible. The goal of the requirements analysis and specification
                                 phase is to clearly understand the customer requirements and to systematically organize these
                                 requirements in a specification document. This phase consists of the following two activities:

                                    •  Requirements gathering and analysis.
                                    •  Requirements specification.
                                 To carry out the requirements gathering and analysis activity, a few members of the development
                                 team usually visit the customer site. The engineers who gather and analyze customer requirements
                                 and write the requirements specification document are known as System analysts in the software
                                 industry parlance. System analysts collect data pertaining to the product to be developed
                                 and analyze these data to conceptualize what exactly needs to be done. He then proceeds to
                                 write the Software Requirements Specification (SRS) document. The SRS document the final
                                 output of the requirements analysis and specification phase. Once the SRS document is ready,
                                 it is first reviewed internally by the project team ensure that it is understandable, consistent,
                                 unambiguous, and complete. The SRS document is then given to the customer for review.
                                 After the customer has reviewed the document and approved it, the same forms the basis for
                                 all future development activities also serves as a contract document between the customer and
                                 the development organization. With this brief introduction to the requirements analysis and
                                 specification phase, let examine the various activities performed in this phase in greater depth.

                                 3.1 Problem Analysis


                                 As basic aspire of problem analysis is to obtain a clear sympathetic of the needs of the clients
                                 and the users, regularly the client and the users do not understand or know all their needs,
                                 because the potential of the new system is often not fully appreciated. The analysts have to
                                 ensure that the real needs of the clients and the users are uncovered, even if they do not know
                                 them clearly. That is, the analysts are not just collecting and organizing information about the
                                 client’s organization and its processes, but they also act as consultants who play an active role
                                 of helping the clients and users identify their needs. For solving larger problems, the basic
                                 principle is the time-tested principle of “divide and conquer”. For software design, partition the
                                 problem into sub problems and then try to understand each sub problem and its relationship
                                 to other sub problems in an effort to understand the total problem. That is goal is to divide the
                                 problem into manageably small pieces that can be solved separately, because the cost of solving
                                 the entire problem is more than the sum of the cost of solving all the pieces. The different pieces
                                 cannot be entirely independent of each other, as they together form the system. The different


        44                                LOVELY PROFESSIONAL UNIVERSITY
   45   46   47   48   49   50   51   52   53   54   55