Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Soft Engg 1

Download as pdf or txt
Download as pdf or txt
You are on page 1of 31

Software Engineering

Unit – 1 The Software Problem


Characteristics of Computer

1. Speed 2. Accuracy 3. Decision Making 4. Versatility

5. Storage 6. Diligence 7. Automation – Repeat 8. Reliability

9. Security 10. Multitasking

Components of Information System

1. Software - is a set of instructions, data or programs used to operate computers and execute
specific tasks.

- Like Brain of human body.


- Programs that run on a device
- Without changing hardware
 H/W functioned by S/W- A program step by step instructions.
 It collects data, organizes and carries procedures

Types of Software

 System software- enables the application S/W to interact with the comp H/W. System software
is designed to run a computer’s hardware and provides a platform for applications to run on top
of. It is collection of programs. In include. OSs, utilities and Device drivers and Compilers.
 General purpose- Browser, WS, DBMS & Excel
 Special application-Graphics, CAD/CAM
 Mobile apps
 Application S/W- fulfills a specific need or perform tasks. An application can be self-contained,
or it can be a group of programs that run the application for the user.

Based on user application software types


o Single user/ Stand Alone
o Multi-user.
o Web Applications
Based of Software Development
o In House Developed Software
o Customized S/w
o Readymade Software

Based on Processing Cycle

o Batch
o Online
o Online Real Time

2. Hardware -physical component-All tangible equipment’s e.g. computer set, printer, UPS,
servers, CD/DVD, external HDD, camera, audio devices, Laptop, tabs, Smart phone, super
computers, pen drive, secondary storage & discs.

3. Data - Heart of the S/W


 S/W cannot function without Data
 Qualitative and quantitative data
 It’s Raw unprocessed facts
 Data base – Relational Data Base Management System – RDBMS – Sql , Oracle etc

Types of data

 Documents files – Memos, term paper letters


 Worksheet Files-XLSX
 Database files – Created by DBMS- structured and organized
 presentation-files.PPT processed. Data yields information

4. People
 Important part of information
 Develop S/W and run it
 Enter the data
 Determines the success or failure of system
 It is easy to overlook people as one of the parts of information system

System Analyst Developer, H/W Engg, System administrator, DBA, Operational user, End users,
Management persons, S/W tester and Deployment Engg are the roles of peoples.

5. Procedures -
Rules, instructions and descriptions how things are done. The rules or guidelines which are to
be followed by people when working on S/W and data are known as procedures.

 Documentation in manuals written by computer specialists.

6. Network and Internet

The connect device/hardware of information system.

 Internet: Almost all in information system connect and interact with other people and computers.

Modem, switches, Cat6 cables, RJ45 Connectors, optic fiber cable

N/W cards, Router etc.

Areas of Software Applications

1. University/ Collages/Schools and Educational Institutes / Online learning / e-learning


2. Libraries
3. Banks
4. Vikas Societies
5. Path Sanstha
6. Financial Institutions
7. Manufacturing Industry - ERP
8. Textile Industry
9. Food processing industry
10. Hospital Management – Blood Bank/ Path Lab / Diagnostics Centre
11. Sugar Factories
12. Milk and Milk Products Manufacturing Dairy
13. Village wise Milk Collection Dairy
14. Village Irrigation Schemes
15. Agriculture Based ICT Projects/App
16. Travel Agencies/ Travel Reservations / Transport Management
17. Air Line Reservation
18. Train Reservations/ Train Scheduling
19. Departmental Stores/ Sales Billing
20. Online Purchase
21. Online Sale
22. Hotel Management / Home Delivery App
23. Marriage Matrimony
24. Life / Health Insurance
25. Vehicle Assurance/
26. Share Marketing/ Investment
27. Govt Various Department/ Maha E-Seva
28. On Line Examination / On Line Job Searching
29. Social Media e.g. WhatsApp/ Facebook/ Insta/ Twitter
30. Video Conferencing
31. Utility Billing – Payment Electricity / Telephone/ Gas/ Mobile
32. Fast Tag
33. Research Organization
34. Entertainment
35. Defense – Security surveillance
36. Police Investigation/ Tracking
37. Engineering Design – Civil & Mechanical
38. Legal – Advocate and Court Work
39. Communication – Email, SMS & File sharing
40. Book Publishing
41. Games
42. Navigation GPS
43. Weather Forecasting
44. Robotics
45. Sports

Evolution of Software Engineering

Software engineering principles have evolved over the last sixty years with contributions from
numerous researchers and software professionals.

To get feel of these contributions and how they have shaped the evolution of the software engineering
discipline, let us recount a few glimpses (partial view) of the past.

Build and fix programming style – exploratory, normally a poor-quality program is quickly developed
without making any specifications plan, or design. The different imperfections that are subsequently
noticed while using or testing are fixed.

- Informal style of program development approach


- No set rules or recommendations that one has to adhere (stick fast) to
- Every programmer himself evolves his own software development techniques solely guided by
his intuition, experience, whims (sudden change of mind) and fancies.
- Adopted by all students and novice(inexperienced) programmers who do not have any exposure
to software engineering principles.
- Considered it as art- since, any art is mostly guided by the intuition power (Antradyan)
- Write good programs based on some esoteric (understood by only small number of people with
specialized knowledge or interest) knowledge.

Programmers in modern software industry

- Rarely make use esoteric knowledge.


- Develop software by applying some well-understood principles
- Software development styles evolved from an esoteric art form to a craft (activity involving skills)
form
- Solely emerged as an engineering discipline
- All good programmers’ principles (or tricks) along with research innovations have systematically
been organized in to body of knowledge that forms the discipline of software engineering.
- New principles are still continuing to emerge at very rapid rate making this discipline highly
dynamic.
- Facilitates development of high-quality software in a cost-effective and timely manner.

The Software Problem

Cost

Organizations are spending larger portions of their budget on software as compared to hardware.

Software cost based on

 How many engineers are required for project to develop and establish a schedule during
planning stage i. e. manpower employed. Cost of developing software is generally measured in
terms of person-months of effort spent in development.
 Line of code (LOC) or thousands of lines of code (KLOC) delivered is by far the most commonly
used measure of software size in the software industry.
 The productivity in software industry for writing fresh code generally ranges from 300 to 1000
LOC per person-month.

The cost of software has now become dominant

Software crises/ Issues

Increasing software cost is most important symptom of the present software crisis.
Software products are difficult to alter, debug and enhance

Use of resources non-optimally

often fail to meet the user requirements; are far from being reliable

frequently crash

Late delivery and Unreliable - often delivered late –

Survey of 600 firms found more than 35% reported having some computer-related development
project that they categorized runaway. A runaway is not a project that is somewhat late or
somewhat over budget – it is one where budget and schedule out of control. The problem has
become so severe that it has spawned (cause something new) an industry of its own; there are
consultancy companies that advise how to rein (direct with) such projects which additional cost as
software development cost.

Similarly, a large number of instances have been quoted regarding the unreliability of software; the
software does not do what it is supposed to do or does something it is not supposed to do. In one
defense survey; it was reported that more than 70% of all the equipment failures were due to
software! This just indicates that all other engineering disciplines have advanced more than software
engineering, and a system comprising the products of various engineering disciplines find that
software is the weakest component. In software failures occur due to bugs or errors that get
introduced during the design and development process.

Schedule is an important factor in many projects. Business trends are dictating that
the time to market of a product should be reduced; that is, the cycle time from
concept to delivery should be small. Any business also requires that the cycle time
for building a software needed by the business be small. Scheduling includes
following factors: -

1. Compartmentalization: The project must be compartmentalized into a number


of manageable activities and tasks. To accomplish compartmentalization, both the
product and the process are refined.

2. Interdependency: The interdependency of each compartmentalized activity or task


must be determined. Some tasks must occur in sequence, while others can occur
in parallel. Other activities can occur independently.

3. Time allocation: Each task to be scheduled must be allocated some number of


work units (e.g., person‐ days of effort). In addition, each task must be assigned a
start date and a completion date. Whether work will be conducted on a full-time or
part-time basis.

4. Effort validation: Every project has a defined number of people on the software
team. The project manager must ensure that no more than the allocated number of
people have been scheduled at any given time.

5. Defined responsibilities: Every task that is scheduled should be assigned to a


specific team member.

6. Defined outcomes: Every task that is scheduled should have a defined


outcome. For software projects, the outcome is normally a work product (e.g., the
design of a component) or a part of a work product. Work products are often
combined in deliverables.

7. Defined milestones: Every task or group of tasks should be associated with a


project milestone. A milestone is accomplished when one or more work products
has been reviewed for quality and has been approved.

Quality

One of the major factors driving any production discipline is Quality. IEEE defines
“Quality as the degree to which a system, component, or process meets specified
requirements, and customer or user needs or expectations”.

We can view quality of a software as having three dimensions:

• product operation—deals with quality factors such as correctness, reliability,


efficiency and usability.

• product transition—deals with quality factors like portability, reusability, and


interoperability.

• product revision—deals with quality factors such as maintainability,


flexibility, and testability.

The international standard on software product quality [55] suggests that software
quality comprises six main attributes,

1) Functionality: The capability to provide functions which meet stated and


implied needs when the software is used.

2) Reliability: The capability to provide failure-free service.


3) Usability: The capability to be understood, learned, and used.

4) Efficiency: The capability to provide appropriate performance relative to the


number of resources used.

5) Maintainability: The capability to be modified for purposes of making corrections,

improvements, or adaptation.
6) Portability: The capability to be adapted for different specified environments
without applying actions or means other than those provided for this purpose in the
product.
Maintenance and Rework

Once the software is delivered and deployed, it enters the maintenance phase. Why is
maintenance needed for software, when software does not age? Software needs to be maintained
not because some of its components wear out and need to be replaced, but because there are often
some residual errors, or bugs, in it. Many of these surfaces only after the system has been in
operation, sometimes for a long time. These errors, once discovered, need to be removed, leading
to the software being changed. Sometimes called corrective maintenance.

Even without bugs, software frequently undergo change. The main reason is that, software often
must be upgraded and enhanced to include more features and provide more services. This also
requires modification of the software. It has been argued that once a software system is deployed,
the environment in which it operates changes. Hence, needs that initiated the software development
also change to reflect the needs of the new environment. Hence, the software must adapt to the
needs of the changed environment. The changed software then changes the environment, which in
turn requires further change. This phenomenon is sometimes called the law of software evolution.
Maintenance due to this phenomenon is sometimes called adaptive maintenance.

Though maintenance is not considered a part of software development, it is an extremely


important activity in the life of a software product. If we consider the total life of software, the cost of
maintenance generally exceeds the cost of developing the software! Maintenance-to-development-
cost ratio has been variously suggested as 80:20, 70:30 or 60:40

Maintenance revolves around understanding existing software and maintainers spend most of
their time trying to understand the software they have to modify. Understanding the software involves
understanding not only the code but also the related documents. During the modification of the
software, the effects of the change have to be clearly understood by the maintainer because
introducing undesired side effects in the system during the modification is easy. To test whether
those aspects of the system that are not supposed to be modified are operating as they were before
modification, regression testing is done.

One of the biggest problems in software development, particularly for large and complex
systems, is that what is desired from software (i.e. the requirements) is not understood. To
completely specify the requirements, all the functionality, interfaces and constraints have to be
specified before software development has commenced! In other words, for specifying the
requirements, the clients and the developers have to visualize what the software behavior should
be once it is developed. This is very hard to do, particularly for large and complex systems. So, what
generally happens is that the development proceeds when it is believed that the requirements are
generally in good shape. However, as time goes by and the understanding of the system improves,
the clients frequently discover additional requirements they had not specified earlier. This leads to
requirements getting changed. This change leads to rework; the requirements. The design, the code
all have to be changed to accommodate the new or changed requirements.

Software development of large and complex systems can take few years. And with passage of
time, the needs of the clients change. In fact, changing requirements and associated rework are a
major problem of software industry. It is estimated that re

 project is progressing towards achieving goal according to procedure and whether it takes
corrective action or not.

Factors precipitated(unexpectedly) the present software crises are following -

 Rapidly increasing problem sizes


 Lack of adequate training in software engineering techniques
 Increasing skill shortage
 Low productivity improvements

Consistency and Repeatability

A Key challenge that software engineering faces is how to ensure that successful results can be
repeated, and there can be some degree of consistency in quality and productivity. A goal of software
engineering methods is that system after system can be produced with high quality and productivity.
That are methods that are being used are repeatable across projects leading to consistency in the
quality of software produced. Without consistency, even estimating cost for a project will become
difficult.
Achieving consistency is an important problem that software engineering has to tackle. There are no
globally accepted methodologies and different organizations use different ones.

SCALE AND CHANGE

A fundamental problem of software engineering is the problem of scale; development


of a very large system requires a very different set of methods compared to
developing a small system. In other words, the methods that are used for developing
small systems generally do not scale up to large systems.

Thought there is no universally acceptable definition of what is a “small” project and


what is a “large” project, one can use the definition used in the cost construction
model (COCOMO) cost model to get an idea of scale. According to this model, a
project is small if its size in thousands of delivered lines of code (KDLOC) is 2
KDLOC, intermediate if the size is 8 KLDOC, medium if the size is 32 KDLOC, and
large if the size is 128 KDLOC (or larger).

The support phase focuses on change associated with error correction, adaptations
required as the software’s environment evolves, and changes due to enhancements
brought about by changing customer requirements. The support phase reapplies
the steps of the definition and development phases but does so in the context of
existing software.

Four types of change encountered during the support phase:

1) Correction: The customer will uncover defects in the software. Corrective


Maintenance changes the software to correct defects.

2) Adaptation: Adaptive maintenance results in modification to the software to


accommodate changes to its external environment. For Example - CPU, OS,
business rules, external product characteristics.

3) Enhancement: The user will recognize additional functions that will provide
benefit. Perfective Maintenance extends the software beyond its original functional
requirements.

4) Prevention: Software engineering must be conducted to enable the software to


serve the needs of its end user. Preventive maintenance makes changes to computer
programs so that they can be more easily corrected, adapted, and enhanced.
What is remedy/Solution to present software crisis?

 Spread of software engineering practices among the engineers


 Further advancements to the software engineering discipline

What is Software Engineering

The essence of all past programming experiences and innovations for writing good quality program
in cost-effective and efficient ways have systematically organized into body of knowledge. This
knowledge from the foundation of the software engineering principles.

IEEE defines software engineering as: -


“Software Engineering is a systematic, disciplined, quantifiable study and
approach to the design, development, operation, and maintenance of a software
system”.
Software engineering is the process of designing, developing, testing, and
maintaining software. software engineering aims to create high-quality, reliable, and
maintainable software. Software engineering includes a variety of techniques,
tools, and methodologies, including requirements analysis, design, testing, and
maintenance.
The main goal of software Engineering is to develop software application for
improving the quality, budget and time efficiency. Software Engineering ensures
that the software that has to build should be consistent, correct, also on budget, on
time and within the required requirements.
Scope of Software engineering

 Systematic and cost-effective techniques to software development.


 These techniques have resulted from innovations as well as lessons learnt from past mistakes.
 Engineering approach to develop software
 Agriculture Based ICT Projects/App

Important issues/reasons why it is Software engineering neither a form of science nor art?

 Make heavy use of past experience.


 Several conflicting goals might have to be optimized
 Pragmatic(practical) approach to cost-effectiveness
 Based on well understood and quantitative principles

Principles of software engineering


1) Modularity: Breaking the software into smaller, reusable components that can
be developed and tested independently.
2) Reusability: Creating components that can be used in multiple projects,
which can save time and resources.
3) Maintenance: Regularly updating and improving the software to fix bugs, add
new features, and address security vulnerabilities.
4) Testing: Verifying that the software meets its requirements and is free of bugs.
5) Continuous Integration & Deployment: Continuously integrating the code
changes and deploying them into the production environment.
Objectives of Software Engineering

1) Maintainability

It should be feasible for the software to evolve to meet changing requirements.


2) Efficiency

The software should not make wasteful use of computing devices such as
memory, processor cycles, etc.

3) Correctness

A software product is correct if the different requirements as specified in the SRS


document have been correctly implemented.

4) Reusability

A software product has good reusability if the different modules of the product can
easily be reused to develop new products.

5) Testability
Here software facilitates both the establishment of test criteria and the evaluation
of the software with respect to those criteria.

6) Portability
In this case, the software can be transferred from one computer system or
environment to another.

Advantages of Software Engineering


1) Improved quality: By following established software engineering principles
and techniques, software can be developed with fewer bugs and higher reliability.
2) Increased productivity: Using modern tools and methodologies can streamline the
development process, allowing developers to be more productive and complete
projects faster.
3) Better maintainability: Software that is designed and developed using
sound software engineering practices is easier to maintain and update over time.
4) Reduced costs: By identifying and addressing potential problems early in the
development process, software engineering can help to reduce the cost of fixing
bugs and adding new features later on.
5) Increased customer satisfaction: By involving customers in the development
process and developing software that meets their needs, software engineering can
help to increase customer satisfaction.

6) Better Security: By following the software development life cycle (SDLC) and
performing security testing, software engineering can help to prevent security breaches
and protect sensitive data.

Disadvantages of Software Engineering

1) High upfront costs: Implementing a systematic and disciplined approach to


software development can be resource-intensive and require a significant
investment in tools and training.

2) Limited flexibility: Following established software engineering principles and


methodologies can be rigid and may limit the ability to quickly adapt to changing
requirements.
3) Complexity: With the increase in the number of tools and methodologies,
software engineering can be complex and difficult to navigate.
4) Limited creativity: The focus on structure and process can stifle creativity
and innovation among developers.
5) High learning curve: The development process can be complex, and it
requires a lot of learning and training, which can be challenging for new
developers.
6) High dependence on tools: Software engineering heavily depends on the tools,
and if the tools are not properly configured or are not compatible with the software,
it can cause issues.
SOFTWARE PROCESSES

Process and Project

● A process is the sequence of steps executed to achieve a goal. A process is


defined by cycles. A process has a beginning, middle, and end; however, this cycle
repeats itself over an average period of time.

● A project is defined by a fixed time, scope, and resources. When implementing a


project, the goal is to execute change, and to incorporate that change into the day-to-
day processes of the company.

●Both projects and process are important for running and improving a business. It’s
depending on the end result trying to be achieved, one may be more suited than
the other.

● The actual process is what is actually done in the project. Note that the
actual process can be different from the planned process.

●A software process is the set of activities and associated outcome that produce a
software product. These are four key process activities, which are common to all
software processes. These activities are:

1) Software specifications: The functionality of the software and constraints on


its operation must be defined.

2) Software development: The software to meet the requirement must be


produced.

3) Software validation: The software must be validated to ensure that it does


what the customer wants.

4) Software evolution: The software must evolve to meet changing client needs.
►software development process model defines the following:
■ A set of tasks that need to be performed.
■ The input to and output from each task.

■ The preconditions and postconditions for each task.


■ The sequence and flow of these tasks.
The goal of a software process model is to provide guidance for systematically
coordinating and controlling the tasks that must be performed in order to achieve
the end product and the project objectives.
 COMPONENT OF SOFTWARE PROCESSES

The processes that deal with the technical and management issues of software
development are collectively called the software process.

 As a software project will have to engineer a solution and properly manage


the project, there are clearly two major components in a software process—a
development process and a project management process.
 The development process specifies all the engineering activities that need to
be performed, whereas the management process specifies how to plan and
control these activities so that cost, schedule, quality, and other objectives
are met.
 As development processes generally do not focus on evolution and changes, to
handle them another process called software configuration control process is
often used. The objective of this component process is to primarily deal with
managing change, so that the integrity of the products is not violated despite
changes.
 product engineering processes, their main objective is to produce the desired
product.
 The basic objective of the process management process is to improve the
software process. By improvement, we mean that the capability of the process
to produce quality goods at low cost is improved. For this, the current software
process is studied, frequently by studying the projects that have been done
using the process. The whole process of understanding the current process,
analyzing its properties, determining how to improve, and then affecting the
improvement is dealt with by the process management process.
 These component processes are distinct not only in the type of activities
performed in them, but typically also in the people who perform the activities
specified by the process. In a typical project, development activities are
performed by programmers, designers, testers, etc.; the project management

process activities are performed by the project management; configuration


control process activities are performed by a group generally called the
configuration controller; and the process management process activities are
performed by the software engineering process group (SEPG).
SOFTWARE DEVELOPMENT LIFE CYCLE PROCESS

What is SDLC?

SDLC is a process followed for a software project, within a software organization. It


consists of a detailed plan describing how to develop, maintain, replace and alter or
enhance specific software. The life cycle defines a methodology for improving the
quality of software and the overall development process.
The following figure is a graphical representation of the various stages of a typical
SDLC.

A typical Software Development Life Cycle consists of the following stages –

Stage 1: Planning and Requirement Analysis

● Requirement analysis is the most important and fundamental stage in SDLC. It is


performed by the senior members of the team with inputs from the customer, the
sales department, market surveys and domain experts in the industry.
● This information is then used to plan the basic project approach and to conduct
product feasibility study in the economical, operational and technical areas.
● Planning for the quality assurance requirements and identification of the risks
associated with the project is also done in the planning stage.
● The outcome of the technical feasibility study is to define the various technical
approaches that can be followed to implement the project successfully with minimum
risks.
Stage 2: Defining Requirements

● Once the requirement analysis is done the next step is to clearly define and document
the product requirements and get them approved from the customer or the market
analysts.

● This is done through an SRS (Software Requirement Specification) document which


consists of all the product requirements to be designed and developed during the
project life cycle.

Stage 3: Designing the Product Architecture

● SRS is the reference for product architects to come out with the best architecture
for the product to be developed. Based on the requirements specified in SRS,
usually more than one design approach for the product architecture is proposed and
documented in a DDS - Design Document Specification.

● This DDS is reviewed by all the important stakeholders and based on various
parameters as risk assessment, product robustness, design modularity, budget and
time constraints, the best design approach is selected for the product.

● A design approach clearly defines all the architectural modules of the product along
with its communication and data flow representation with the external and third- party
modules (if any). The internal design of all the modules of the proposed architecture
should be clearly defined with the minutest of the details in DDS.
Stage 4: Building or Developing the Product

● In this stage of SDLC the actual development starts and the product is built. The
programming code is generated as per DDS during this stage. If the design is
performed in a detailed and organized manner, code generation can be
accomplished without much hassle.

● Developers must follow the coding guidelines defined by their organization and
programming tools like compilers, interpreters, debuggers, etc. are used to generate
the code. Different high-level programming languages such as C, C++, Pascal,
Java and PHP are used for coding. The programming language is chosen with
respect to the type of software being developed.
Stage 5: Testing the Product

● This stage is usually a subset of all the stages as in the modern SDLC models,
the testing activities are mostly involved in all the stages of SDLC. However, this
stage refers to the testing only stage of the product where product defects are
reported, tracked, fixed and retested, until the product reaches the quality
standards defined in the SRS.

Stage 6: Deployment in the Market and Maintenance

● Once the product is tested and ready to be deployed it is released formally in the
appropriate market. Sometimes product deployment happens in stages as per the
business strategy of that organization.

● The product may first be released in a limited segment and tested in the real
business environment (UAT- User acceptance testing).

● Then based on the feedback, the product may be released as it is or with


suggested enhancements in the targeting market segment. After the product is
released in the market, its maintenance is done for the existing customer base.

SDLC MODELS

1) WATERFALL MODEL

● Sometimes called the classic life cycle or the waterfall model, the linear sequential
model.

● It suggests a systematic, sequential approach to software development that begins


at the system level and progresses through analysis, design, coding, testing, and
support.
18
● In "The Waterfall" approach, the whole process of software development is
divided into separate phases. The outcome of one phase acts as the input for the
next phase sequentially. Thus, each phase must be completed before the next
phase can begin and there is no overlapping in the phases.
Pictorial representation of waterfall model-

1. Requirements analysis and specification phase:

● The aim of this phase is to understand the exact requirements of the customer
and to document them properly.

● Both the customer and the software developer work together so as to document
all the functions, performance, and interfacing requirement of the software “In this
phase, a large document called Software Requirement Specification

(SRS) document is created which contained a detailed description of what the


system will do in the common language.

2. Design Phase:

● This phase aims to transform the requirements gathered in the SRS into a
suitable form which permits further coding in a programming language.

● It defines the overall software architecture together with high level and
detailed design. All this work is documented as a Software Design Document
(SDD).
19
3. Implementation and unit testing:

● If the SDD is complete, the implementation or coding phase proceeds smoothly,


because all the information needed by software developers is contained in the
SDD.

● During testing, the code is examined and modified. Small modules are tested.
After that these modules are tested by writing some code to check the interaction
between these modules and the flow of output.

4. Integration and System Testing:

● This phase is highly crucial as the quality of the end product is determined by the
effectiveness of the testing carried out. The better output will lead to satisfied
customers, lower maintenance costs, and accurate results.

● System testing determines the efficiency of individual modules. However, in this


phase, the modules are tested for their interactions with each other and with the
system.

5. Operation and maintenance phase: Maintenance is the task performed by


every user once the software has been delivered to the customer, installed, and
operational.

Advantages of waterfall model:

• This model is simple and easy to understand and use.


• It is easy to manage due to the rigidity of the model- each phase has specific
output and a review process.

• In this model phases are processed and completed one at a time. Phases do not
overlap.

• waterfall model works well for smaller projects where requirements are very
well understood.

Disadvantages of waterfall model:

• once an application is in the testing stage, it is very difficult to


go back and change something that was not well.

• no working software is produced until late during the life cycle.


• High amounts of risk and uncertainty.
• Not a good model for complex and object-oriented projects.

20
• Poor model for long and ongoing projects.

2) PROTOTYPING MODEL

● Prototype methodology is defined as a Software Development model in which a


prototype is built, test, and then reworked when needed until an acceptable
prototype is achieved.

● Software prototyping model works best in scenarios where the project's


requirement is not known.

● It is an iterative, trial, and error method which take place between the
developer and the client.

Pictorial representation of Prototyping Model

Code Test

Requirements Analysis 15

Prototyping Model has following six SDLC phases as follow:

Step 1: Requirements gathering and analysis:

● A prototyping model starts with requirement analysis. In this phase, the requirements
of the system are defined in detail. During the process, the users of the system are
interviewed to know what is their expectation from the system.

Step 2: Quick design:

● In this stage, a simple design of the system is created. However, it is not a complete
design. It gives a brief idea of the system to the user. The quick design helps in

21
developing the prototype.

Step 3: Build a Prototype:

● In this phase, an actual prototype is designed based on the information gathered


from quick design. It is a small working model of the required system.

Step 4: Initial user evaluation:

● In this stage, the proposed system is presented to the client for an initial
evaluation. It helps to find out the strength and weakness of the working model.
Comment and suggestion are collected from the customer and provided to the
developer.

Step 5: Refining prototype:

● If the user is not happy with the current prototype, you need to refine the prototype
according to the user's feedback and suggestions. This phase will not over until all the
requirements specified by the user are met.

● Once the user is satisfied with the developed prototype, a final system is
developed based on the approved final prototype.

Step 6: Implement Product and Maintain:

● Once the final system is developed based on the final prototype, it is tested and
deployed to production. The system undergoes routine maintenance for minimizing
downtime and prevent large-scale failures.

Advantages of the Prototyping Model

 Users are actively involved in development. Therefore, errors can be detected in


the initial stage of the software development process.

 Customer satisfaction exists because the customer can feel the product at a
very early stage.
 Quicker user feedback helps you to achieve better software development
solutions.
 It also identifies the complex or difficult functions.
 It is a straightforward model, so it is easy to understand.
 The prototype helps to gain a better understanding of the customer's needs.

22
 Prototypes can be changed and even discarded.

 Prototypes may offer early training for future users of the software system.

Disadvantages of the Prototyping Model

 Prototyping is a slow and time taking process.

 Prototyping may encourage excessive change requests.

 Sometimes customers may not be willing to participate in the iteration cycle for
the longer time duration.

 Poor documentation because the requirements of the customers are changing.

 The client may lose interest in the final product when he or she is not happy
with the initial prototype.
3) ITERATIVE DEVELOPMENT MODEL

● In this Model, you can start with some of the software specifications and develop
the first version of the software. After the first version if there is a need to change
the software, then a new version of the software is created with a new iteration.
Every release of the Iterative Model finishes in an exact and fixed period that is
called iteration.

● The Iterative Model allows the accessing earlier phases, in which the variations
made respectively. The final output of the project renewed at the end of the Software
Development Life Cycle (SDLC) process.

Pictorial representation of Iterative Development Model

23
1. Planning Phase:

● This is the first stage of the iterative model, where proper planning is done by the
team, which helps them in mapping out the specification’s documents, establish
software or hardware requirements and generally prepare for the upcoming stages
of the cycle.

2. Analysis and Design Phase:

● Once the planning is complete for the cycle, an analysis is performed to point out the
appropriate business logic, database models and to know any other requirements of
this particular stage.

● The design stage also occurs in this phase of iterative model, where the technical
requirements are established that will be utilized in order to meet the need of analysis
stage.

3. Implementation Phase:

● This is the third and the most important phase of the iterative model. Here, the actual
implementation and coding process is executed. All planning, specification, and design
documents up to this point are coded and implemented into this initial iteration of the
project.

24
4. Testing Phase:

● After the current build iteration is coded and implemented, testing is initiated in
the cycle to identify and locate any potential bugs or issues that may have been
in the software.

5. Evaluation Phase:

● The final phase of the Iterative life cycle is the evaluation phase, where the entire
team along with the client, examine the status of the project and validate whether
it is as per the suggested requirements.

Advantages of Iterative Model:

1) It is easily adaptable to the ever-changing needs of the project as well as the


client.

2) It is more cost effective to change the scope or requirements in Iterative model.

3) Parallel development can be planned.

4) Testing and debugging during smaller iteration is easy.

5) Risks are identified and resolved during iteration; and each iteration is an easily
managed.

Disadvantages of Iterative Model:

1) More resources may be required.


2) More management attention is required.
3) It is not suitable for smaller projects.
4) Highly skilled resources are required for skill analysis.
5) Project progress is highly dependent upon the risk analysis phase.

3) RATIONAL UNIFIED PROCESS MODEL

RUP Stands for "Rational Unified Process." RUP is a software development process
from Rational, a division of IBM. It divides the development process into four distinct
phases that each involve business modelling, analysis and design, implementation,
testing, and deployment. The four phases are:

1. Inception - The idea for the project is stated. The development team determines
if the project is worth pursuing and what resources will be needed.

2. Elaboration - The project's architecture and required resources are further


evaluated. Developers consider possible applications of the software and costs

25
associated with the development.

3. Construction - The project is developed and completed. The software is


designed, written, and tested.

4. Transition - The software is released to the public. Final adjustments or


updates are made based on feedback from end users.

The RUP development methodology provides a structured way for companies to


envision create software programs. Since it provides a specific plan for each step
of the development process, it helps prevent resources from being wasted and reduces
unexpected development costs.

Pictorial representation of Rational Unified Process Model-

Advantages of Rational Unified Process Model:

1) It provides good documentation; it completes the process in itself.

2) It provides risk-management support.

3) It reuses the components, and hence total time duration is less.

26
4) Good online support is available in the form of tutorials and training.
Disadvantages of Rational Unified Process Model:

1) Team of expert professional is required, as the process is complex.

2) Complex and not properly organized process.

3) More dependency on risk management.

4) Hard to integrate again and again.


 4) TIMEBOXING MODEL

● The Timeboxing method is the best way to increase productivity and split
projects into fixed periods.

● This time management technique offers the opportunity to limit the amount of
time one wants to spend on a certain activity in advance.

● The final goal is to define and limit the amount of time allotted for a specific
activity.

● Timeboxing is the cure for preventing exceeding time limits. This technique
ensures a timely delivery and offers a progressive insight by allotting maximum time
units. These time units are also called ‘periods ‘, ‘time boxes ‘or ‘iterations ‘.

Pictorial representation of Timeboxing Model

Step 1: Evaluation of the amount of time that every sub-activity will take.
Step 2: Allot a set amount of time to every sub-activity; this is a time box.
Step 3: Include breaks in the schedule of the different time boxes.

27
Step 4: In the schedule of all-time boxes together, also consider unforeseen
circumstances, such as interruptions and unexpected visits.

Step 5: Get to work and use a timer to closely monitor the separate time boxes.
Step 6: Evaluate every time box; for the instances when a sub-activity was
interrupted or did not fit in a time box, it shall need to be considered what the
reason(s) was/were for this.

This evaluation is important in order not to lose sight of the end goal. The progress
of the entire project can be monitored through analyzing.

Benefits of timeboxing

● Employees will also be able to focus better and to concentrate on their activities.
● It even ensures that the perfectionist, who takes a long time to finish an activity, is
forced’ to complete their task within the time box.

● People tend to occupy themselves with multiple tasks at the same time. This
usually means that they will not be able to complete everything in time.

● Timeboxing can especially help with this, because only a single activity will need
to be completed per period.

● Timeboxing is a way to measure the final productivity. This information and


experience may then help in creating better priorities in busy periods.

 PROJECT MANAGEMENT PROCESS

● Project management is one of the critical processes of any project. This is due
to the fact that project management is the core process that connects all other
project activities and processes together.

● When it comes to the activities of project management, there are plenty. However,
these plenty of project management activities can be categorized into five main
processes.

28
1. Project Initiation

● Project initiation is the starting point of any project. In this process, all the activities
related to winning a project takes place. Usually, the main activity of this phase is the
pre-sale.

● During the pre-sale period, the service provider proves the eligibility and ability of
completing the project to the client and eventually wins the business. Then, it is the
detailed requirements gathering which comes next.

● During the requirements gathering activity, all the client requirements are
gathered and analyzed for implementation. In this activity, negotiations may take
place to change certain requirements or remove certain requirements altogether.

2. Project Planning

● Project planning is one of the main project management processes. If the project
management team gets this step wrong, there could be heavy negative effect during
the next phases of the project. Therefore, the project management team will have
to pay detailed attention to this process of the project.

● In this process, the project plan is derived in order to address the project
requirements such as, requirements scope, budget and timelines. Once the project
plan is derived, then the project schedule is developed.

● Depending on the budget and the schedule, the resources are then allocated to
the project. This phase is the most important phase when it comes to project cost
and effort.

29
3. Project Execution

● After all paperwork is done, in this phase, the project management executes the
project in order to achieve project objectives.

● When it comes to execution, each member of the team carries out their own
assignments within the given deadline for each activity. The detailed project
schedule will be used for tracking the project progress.

● During the project execution, there are many reporting activities to be done. The
senior management of the company will require daily or weekly status updates on
the project progress.

● During the project execution, it is a must to track the effort and cost of the
project in order to determine whether the project is progressing in the right
direction or not.
4. Control and Validation

● During the project life cycle, the project activities should be thoroughly controlled
and validated. The controlling can be mainly done by adhering to the initial protocols
such as project plan, quality assurance test plan and communication plan for the
project.

● Sometimes, there can be instances that are not covered by such protocols. In
such cases, the project manager should use adequate and necessary
measurements in order to control such situations.

● Validation is a supporting activity that runs from first day to the last day of a project.
Each and every activity and delivery should have its own validation criteria in order to
verify the successful outcome or the successful completion.

● When it comes to project deliveries and requirements, a separate team called


'quality assurance team' will assist the project team for validation and verification
functions.
5. Closeout and Evaluation

● Once all the project requirements are achieved, it is time to hand over the
implemented system and closeout the project. If the project deliveries are in par
with

30
the acceptance criteria defined by the client, the project will be duly accepted and
paid by the customer.

● Once the project closeout takes place, it is time to evaluate the entire project.
In this evaluation, the mistakes made by the project team will be identified and will
take necessary steps to avoid them in the future projects.

● During the project evaluation process, the service provider may notice that they
haven't gained the expected margins for the project and may have exceeded
the timelines planned at the beginning.

31

You might also like