About The Book Fundamentals Of Software Engineering Book Summary: Advancements and rapid developments have led to many ramifications in the ever-changing world of software engineering. This book, in its Fourth Edition, is restructured and extensively revised to trace the advancements made and landmarks achieved in the field. This book not only incorporates latest and enhanced software engineering techniques and practices but also shows how these techniques are applied into the practical software assignments. The chapters are incorporated with illustrative examples to add an analytical insight on the subject. The book is logically organised to cover expanded and revised treatment of all software process activities. New to This Edition The contents and presentation of all chapters have been improved thoroughly.
|Published (Last):||7 December 2010|
|PDF File Size:||15.35 Mb|
|ePub File Size:||10.96 Mb|
|Price:||Free* [*Free Regsitration Required]|
This is done to clearly understand the customer requirements so that incompleteness and inconsistencies are removed. The requirements analysis activity is begun by collecting all relevant data regarding the product to be developed from the users of the product and from the customer through interviews and discussions.
For example, to perform the requirements analysis of a business accounting software required by an organization, the analyst might interview all the accountants of the organization to ascertain their requirements. The data collected from such a group of users usually contain several contradictions and ambiguities, since each user typically has only a partial and incomplete view of the system.
Therefore it is necessary to identify all ambiguities and contradictions in the requirements and resolve them through further discussions with the customer. After all ambiguities, inconsistencies, and incompleteness have been resolved and all the requirements properly understood, the requirements specification activity can start.
During this activity, the user requirements are systematically organized into a Software Requirements Specification SRS document. The customer requirements identified during the requirements gathering and analysis activity are organized into a SRS document. The important components of this document are functional requirements, the nonfunctional requirements, and the goals of implementation.
In technical terms, during the design phase the software architecture is derived from the SRS document. Two distinctly different approaches are available: the traditional design approach and the object-oriented design approach. This is followed by a structured design activity. During structured design, the results of structured analysis are transformed into the software design. The object structure is further refined to obtain the detailed design.
Each component of the design is implemented as a program module. The end-product of this phase is a set of program modules that have been individually tested. During this phase, each module is unit tested to determine the correct working of all the individual modules.
It involves testing each module in isolation as this is the most efficient way to debug the errors identified at this stage. During the integration and system testing phase, the modules are integrated in a planned manner. The different modules making up a software product are almost never integrated in one shot. Integration is normally carried out incrementally over a number of steps. During each integration step, the partially integrated system is tested and Version 2 CSE IIT, Kharagpur a set of previously planned modules are added to it.
Finally, when all the modules have been successfully integrated and tested, system testing is carried out. The goal of system testing is to ensure that the developed system conforms to its requirements laid out in the SRS document. System testing is normally carried out in a planned manner according to the system test plan document.
The system test plan identifies all testingrelated activities that must be performed, specifies the schedule of testing, and allocates resources. It also lists all the test cases and the expected outputs for each test case. Many studies carried out in the past confirm this and indicate that the relative effort of development of a typical software product to its maintenance effort is roughly in the ratio. This is called corrective maintenance.
This is called perfective maintenance. For example, porting may be required to get the software to work on a new computer platform or with a new operating system. This is called adaptive maintenance. Shortcomings of the classical waterfall model The classical waterfall model is an idealistic one since it assumes that no development error is ever committed by the engineers during any of the life cycle phases. However, in practical development environments, the Version 2 CSE IIT, Kharagpur engineers do commit a large number of errors in almost every phase of the life cycle.
The source of the defects can be many: oversight, wrong assumptions, use of inappropriate technology, communication gap among the project engineers, etc. These defects usually get detected much later in the life cycle. For example, a design defect might go unnoticed till we reach the coding or testing phase.
Once a defect is detected, the engineers need to go back to the phase where the defect had occurred and redo some of the work done during that phase and the subsequent phases to correct the defect and its effect on the later phases. Therefore, in any practical software development work, it is not possible to strictly follow the classical waterfall model. Phase-entry and phase-exit criteria of each phase At the starting of the feasibility study, project managers or team leaders try to understand what is the actual problem by visiting the client side.
At the end of that phase they pick the best solution and determine whether the solution is feasible financially and technically. At the starting of requirements analysis and specification phase the required data is collected.
After that requirement specification is carried out. Finally, SRS document is produced. At the starting of design phase, context diagram and different levels of DFDs are produced according to the SRS document. At the end of this phase module structure structure chart is produced.
During the coding phase each module independently compilation unit of the design is coded. Then each module is tested independently as a stand-alone unit and debugged separately. After this each module is documented individually.
The end product of the implementation phase is a set of program modules that have been tested individually but not tested together.
After the implementation phase, different modules which have been tested individually are integrated in a planned manner. After all the modules have been successfully integrated and tested, system testing is carried out. Software maintenance denotes any changes made to a software product after it has been delivered to the customer.
Maintenance is inevitable for almost any kind of product. However, most products need maintenance due to the wear and tear caused by use. Explain why and when a prototype needs to be developed during software development. Identify the situations in which one would prefer to build a prototype. State the activities carried out during each phase of a spiral model. Identify circumstances under which spiral model should be used for software development. Tailor a development process to a specific project.
Prototype A prototype is a toy implementation of the system. A prototype usually exhibits limited functional capabilities, low reliability, and inefficient performance compared to the actual software. A prototype is usually built using several shortcuts. The shortcuts might involve using inefficient, inaccurate, or dummy functions. The shortcut implementation of a function, for example, may produce the desired results by using a table look-up instead of performing the actual computations.
A prototype usually turns out to be a very crude version of the actual system. Need for a prototype in software development There are several uses of a prototype. An important purpose is to illustrate the input data formats, messages, reports, and the interactive dialogues to the customer.
The customer can evaluate whether he likes it or not and the changes that he would need in the actual product. A similar thing happens in the case of a software product and its prototyping model. Another reason for developing a prototype is that it is impossible to get the perfect product in the first attempt. Many researchers and engineers advocate that if you want to develop a good product you must plan to throw away the first version.
The experience gained in developing the prototype can be used to develop the final product. A developed prototype can help engineers to critically examine the technical issues associated with the product development. Often, major design decisions depend on issues like the response time of a hardware controller, or the efficiency of a sorting algorithm, etc. In such circumstances, a prototype may be the best or the only way to resolve the technical issues.
Example 1: User requirements are not complete In any application software like billing in a retail shop, accounting in a firm, etc the users of the software are not clear about the different functionalities required.
Once they are provided with the prototype implementation, they can try to use it and find out the missing functionalities. Example 2: Technical issues are not clear Suppose a project involves writing a compiler and the development team has never written a compiler.
In such a case, the team can consider a simple language, try to build a compiler in order to check the issues that arise in the process and resolve them. After successfully building a small compiler prototype , they would extend it to one that supports a complete language. Spiral model The Spiral model of software development is shown in fig. The diagrammatic representation of this model appears like a spiral with many loops.
The exact number of loops in the spiral is not fixed. Each loop of the spiral represents a phase of the software process. For example, the innermost loop might be concerned with feasibility study. The next loop with requirements specification, the next one with design, and so on. Each phase in this model is split into four sectors or quadrants as shown in fig.
The following activities are carried out during each phase of a spiral model. Examine the risks associated with these objectives. Steps are taken to reduce the risks. For example, if there is a risk that the requirements are inappropriate, a prototype system may be developed. Progressively more complete version of the software gets built with each iteration around the spiral. Risk handling is inherently built into this model. The spiral model is suitable for development of technically challenging software products that are prone to several kinds of risks.
However, this model is much more complex than the other models — this is probably a factor deterring its use in ordinary projects. Comparison of different life-cycle models The classical waterfall model can be considered as the basic model and all other life cycle models as embellishments of this model. However, the classical waterfall model can not be used in practical development projects, since this model supports no mechanism to handle the errors committed during any of the phases.
This problem is overcome in the iterative waterfall model.
Download: Software Engineering By Rajib Mall.pdf
This book, in its third edition, is restructured and revised to trace the advancements made and landmarks achieved in the field. This book not only incorporates latest and enhanced software engineering techniques and practices but also shows how these techniques are applied into the practical software assignments. The chapters are incorporated with illustrative examples to add an analytical insight on the subject. The book is logically organized to cover expanded and revised treatment of all software process activities. New to This Edition : The contents and presentation of all chapters have been improved thoroughly.
Rajib-Mall - CEC FOCES