Page 34 - DCAP305_PRINCIPLES_OF_SOFTWARE_ENGINEERING
P. 34
Principles of Software Engineering
Notes The Project Costs and Benefits: Reimbursement and costs can be both touchable as well as 10
Software Engineering insubstantial. Touchable costs and benefits are the ones which can be easily
measured whereas intangible ones cannot be easily measured. Examples of tangible benefits
are reduced errors, improved planning and control, reduced costs etc. Insubstantial benefits
include timely information, better resource control, improved information processing, better
assets utilization and many more. Similarly tangible costs include cost of hardware and software
required in the project, training costs, operational costs and labor costs whereas intangible costs
include loss of customer goodwill, decreased operation efficiency and many more. Economic
feasibility uses the concept of time-value of money (TVM) which compares the present cash
outlays to future expected returns. Technical feasibility focuses on organization’s ability to
construct the proposed system in terms of hardware, software, operating environments, project
size, complexity, experience of the organization in handling the similar types of projects and the
risk analysis. Operational feasibility deals with assessing the degree to which a proposed system
solve business problems. Similarly schedule feasibility ensures that the project will be completed
well in time. Legal and contractual feasibility relates to issue like intellectual property rights,
copyright laws, labor laws and different trade regulations. Political feasibility finally evaluates
how the key stakeholders within the organization view the proposed system.
Requirements Analysis: This phase focuses on understanding the problem domain and
representing the requirements in a form which are understandable by all the stakeholders of the
project i.e. analyst, user, programmer, tester etc. The output of this stage is a document called
Requirements Specification Document (RSD) or Software Requirements Specification (SRS). All
the successive stages of software life cycle are dependent on this stage as SRS produced here is
used in all the other stages of the software lifecycle.
System Design: This phase translates the SRS into the design document which depicts the overall
modular structure of the program and the interaction between these modules. This phase focuses
on the high level design and low level design of the software. High level design describes the
main components of software and their externals and internals. Low level design focuses on
transforming the high level design into a more detailed level in terms of an algorithms used,
data structures used etc.
Implementation: This phase transforms the low level design part of software design description
into a working software product by writing the code.
Testing Phase: It is responsible for testing the code written during implementation phase. This
phase can be broadly divided into unit testing (tests individual modules), integration testing (tests
groups of interrelated modules) and system testing (testing of system as a whole). Unit testing
verifies the code against the component’s high level and low level design. It also ensures that all
the statements in the code are executed at least once and branches are executed in all directions.
Additionally it also checks the correctness of the logic. Integration testing tests the inter modular
interfaces and ensures that the module drivers are functionally complete and are of acceptable
quality. System testing validates the product and verifies that the final product is ready to be
delivered to the customers. Additionally several tests like volume tests, stress tests, performance
tests etc., are also done at the system testing level.
Deployment Phase: It makes the system operational through installation of system and also
focuses on training of user.
Operations and Maintenance: This phase resolves the software .errors, failures etc. enhances the
requirements if required and modifies the functionality to meet the customer demands. This is
something which continues throughout the use of product by the customer.
2.3.1 Advantages and Disadvantages
Advantages and disadvantages of the Waterfall model are listed as:
Advantages
• Easy to understand even by non-technical persons i.e. customers.
28 LOVELY PROFESSIONAL UNIVERSITY