Software Engineering
Software Engineering
The term software specifies to the set of computer programs, procedures and
associated documents (Flowcharts, manuals, etc.) that describe the program and how
they are to be used.
A software process is the set of activities and associated outcome that produce a
software product. Software engineers mostly carry out these activities. These are four
key process activities, which are common to all software processes. These activities
are:
1. A workflow model: This shows the series of activities in the process along with
their inputs, outputs and dependencies. The activities in this model perform
human actions.
2. 2. A dataflow or activity model: This represents the process as a set of
activities, each of which carries out some data transformations. It shows how the
input to the process, such as a specification is converted to an output such as a
design. The activities here may be at a lower level than activities in a workflow
model. They may perform transformations carried out by people or by computers.
3. 3. A role/action model: This means the roles of the people involved in the
software process and the activities for which they are responsible.
1. The waterfall approach: This takes the above activities and produces them as
separate process phases such as requirements specification, software design,
implementation, testing, and so on. After each stage is defined, it is "signed off"
and development goes onto the following stage.
2. Evolutionary development: This method interleaves the activities of
specification, development, and validation. An initial system is rapidly developed
from a very abstract specification.
3. Formal transformation: This method is based on producing a formal
mathematical system specification and transforming this specification, using
mathematical methods to a program. These transformations are 'correctness
preserving.' This means that you can be sure that the developed programs meet
its specification.
4. System assembly from reusable components: This method assumes the
parts of the system already exist. The system development process target on
integrating these parts rather than developing them from scratch.
Waterfall model
Winston Royce introduced the Waterfall Model in 1970.This model has five phases:
Requirements analysis and specification, design, implementation, and unit testing,
integration and system testing, and operation and maintenance. The steps always
follow in this order and do not overlap. The developer must complete every phase
before the next phase begins. This model is named "Waterfall Model", because its
diagrammatic representation resembles a cascade of waterfalls.
3. Implementation and unit testing: During this phase, design is implemented. 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 thoroughly examined and modified. Small modules are tested
in isolation initially. After that these modules are tested by writing some overhead code
to check the interaction between these modules and the flow of intermediate 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.
Unit 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.
V-Model
V-Model also referred to as the Verification and Validation Model. In this, each phase of
SDLC must complete before the next phase starts. It follows a sequential design
process same as the waterfall model. Testing of the device is planned in parallel with a
corresponding stage of development.
Verification: It involves a static analysis method (review) done without executing code.
It is the process of evaluation of the product development process to find whether
specified requirements meet.
So V-Model contains Verification phases on one side of the Validation phases on the
other side. Verification and Validation process is joined by coding phase in V-shape.
Thus it is known as V-Model.
1. Unit Testing: In the V-Model, Unit Test Plans (UTPs) are developed during the
module design phase. These UTPs are executed to eliminate errors at code level
or unit level. A unit is the smallest entity which can independently exist, e.g., a
program module. Unit testing verifies that the smallest entity can function
correctly when isolated from the rest of the codes/ units.
2. Integration Testing: Integration Test Plans are developed during the
Architectural Design Phase. These tests verify that groups created and tested
independently can coexist and communicate among themselves.
3. System Testing: System Tests Plans are developed during System Design
Phase. Unlike Unit and Integration Test Plans, System Tests Plans are
composed by the client?s business team. System Test ensures that expectations
from an application developer are met.
4. Acceptance Testing: Acceptance testing is related to the business requirement
analysis part. It includes testing the software product in user atmosphere.
Acceptance tests reveal the compatibility problems with the different systems,
which is available within the user atmosphere. It conjointly discovers the non-
functional problems like load and performance defects within the real user
atmosphere.
1. Easy to Understand.
2. Testing Methods like planning, test designing happens well before coding.
3. This saves a lot of time. Hence a higher chance of success over the waterfall
model.
4. Avoids the downward flow of the defects.
5. Works well for small plans where requirements are easily understood.
Incremental Model
Incremental Model is a process of software development where requirements divided
into multiple standalone modules of the software development cycle. In this model, each
module goes through the requirements, design, implementation and testing phases.
Every subsequent release of the module adds function to the previous release. The
process continues until the complete system achieved.
3. Testing: In the incremental model, the testing phase checks the performance of each
existing function as well as additional functionality. In the testing phase, the various
methods are used to test the behavior of each task.
Objective setting: Each cycle in the spiral starts with the identification of purpose for
that cycle, the various alternatives that are possible for achieving the targets, and the
constraints that exists.
Risk Assessment and reduction: The next phase in the cycle is to calculate these
various alternatives based on the goals and constraints. The focus of evaluation in this
stage is located on the risk perception for the project.
Development and validation: The next phase is to develop strategies that resolve
uncertainties and risks. This process may include activities such as benchmarking,
simulation, and prototyping.
Planning: Finally, the next step is planned. The project is reviewed, and a choice made
whether to continue with a further period of the spiral. If it is determined to keep, plans
are drawn up for the next step of the project.
The development phase depends on the remaining risks. For example, if performance
or user-interface risks are treated more essential than the program development risks,
the next phase may be an evolutionary development that includes developing a more
detailed prototype for solving the risks.
The risk-driven feature of the spiral model allows it to accommodate any mixture of a
specification-oriented, prototype-oriented, simulation-oriented, or another type of
approach. An essential element of the model is that each period of the spiral is
completed by a review that includes all the products developed during that cycle,
including plans for the next cycle. The spiral model works for development as well as
enhancement projects.
Advantages
Disadvantages
For example, in a simple database application, one cycle might implement the graphical
user Interface (GUI), another file manipulation, another queries and another updates. All
four cycles must complete before there is a working product available. GUI allows the
users to interact with the system, file manipulation allow the data to be saved and
retrieved, queries allow user to get out of the system, and updates allows users to put
data into the system.
EVO allows the marketing department access to early deliveries, facilitating the
development of documentation and demonstration.
Prototype Model
The prototype model requires that before carrying out the development of actual
software, a working prototype of the system should be built. A prototype is a toy
implementation of the system. A prototype usually turns out to be a very crude version
of the actual system, possible exhibiting limited functional capabilities, low reliability,
and inefficient performance as compared to actual software. In many instances, the
client only has a general view of what is expected from the software product. In such a
scenario where there is an absence of detailed information regarding the input to the
system, the processing needs, and the output requirement, the prototyping model may
be employed.
Agile Model
The meaning of Agile is swift or versatile."Agile process model" refers to a software
development approach based on iterative development. Agile methods break tasks into
smaller iterations, or parts do not directly involve long term planning. The project scope
and requirements are laid down at the beginning of the development process. Plans
regarding the number of iterations, the duration and the scope of each iteration are
clearly defined in advance.
Each iteration is considered as a short time "frame" in the Agile process model, which
typically lasts from one to four weeks. The division of the entire project into smaller parts
helps to minimize the project risk and to reduce the overall project delivery time
requirements. Each iteration involves a team working through a full software
development life cycle including planning, requirements analysis, design, coding, and
testing before a working product is demonstrated to the client.
Phases of Agile Model:
Following are the phases in the Agile model are as follows:
1. Requirements gathering
2. Design the requirements
3. Construction/ iteration
4. Testing/ Quality assurance
5. Deployment
6. Feedback
1. Requirements gathering: In this phase, you must define the requirements. You
should explain business opportunities and plan the time and effort needed to build the
project. Based on this information, you can evaluate technical and economic feasibility.
2. Design the requirements: When you have identified the project, work with
stakeholders to define requirements. You can use the user flow diagram or the high-
level UML diagram to show the work of new features and show how it will apply to your
existing system.
3. Construction/ iteration: When the team defines the requirements, the work begins.
Designers and developers start working on their project, which aims to deploy a working
product. The product will undergo various stages of improvement, so it includes simple,
minimal functionality.
4. Testing: In this phase, the Quality Assurance team examines the product's
performance and looks for the bug.
5. Deployment: In this phase, the team issues a product for the user's work
environment.
6. Feedback: After releasing the product, the last step is feedback. In this, the team
receives feedback about the product and works through the feedback.
Agility Principles:
1. Our highest priority is to satisfy the customer through early and continuous delivery of
valuable software.
4. Business people and developers must work together daily throughout the project.
5. Build projects around motivated individuals. Give them the environment and support
they need, and trust them to get the job done.
6. The most efficient and effective method of conveying information to and within a
development team is face–to–face conversation.
10. Simplicity – the art of maximizing the amount of work not done – is essential.
11. The best architectures, requirements, and designs emerge from self–organizing
teams.
12. At regular intervals, the team reflects on how to become more effective, then tunes
and adjusts its behavior accordingly.
Scrum
SCRUM is an agile development process focused primarily on ways to manage tasks in
team-based development conditions.
o Scrum Master: The scrum can set up the master team, arrange the meeting and
remove obstacles for the process
o Product owner: The product owner makes the product backlog, prioritizes the delay
and is responsible for the distribution of functionality on each repetition.
o Scrum Team: The team manages its work and organizes the work to complete the
sprint or cycle.
extreme Programming(XP)
This type of methodology is used when customers are constantly changing demands or
requirements, or when they are not sure about the system's performance.
Crystal:
There are three concepts of this method-
1. Chartering: Multi activities are involved in this phase such as making a development
team, performing feasibility analysis, developing plans, etc.
2. Cyclic delivery: under this, two more cycles consist, these are:
3. Wrap up: According to the user environment, this phase performs deployment, post-
deployment.
1. Time Boxing
2. MoSCoW Rules
3. Prototyping
1. Pre-project
2. Feasibility Study
3. Business Study
4. Functional Model Iteration
5. Design and build Iteration
6. Implementation
7. Post-project
1. Eliminating Waste
2. Amplifying learning
3. Defer commitment (deciding as late as possible)
4. Early delivery
5. Empowering the team
6. Building Integrity
7. Optimize the whole
Data modeling
What is data modeling?
Data modeling is the process of creating a simplified diagram of a software
system and the data elements it contains, using text and symbols to represent
the data and how it flows. Data models provide a blueprint for designing a new
database or reengineering a legacy application. Overall, data modeling helps
an organization use its data effectively to meet business needs for
information.
Data modeling can also help establish common data definitions and internal
data standards, often in connection with data governance programs. In
addition, it plays a big role in data architecture processes that document data
assets, map how data moves through IT systems and create a conceptual
data management framework. Data models are a key data architecture
component, along with data flow diagrams, architectural blueprints, a unified
data vocabulary and other artifacts.
3. Physical data model. A logical model serves as the basis for the creation
of a physical data model. Physical models are specific to the database
management system (DBMS) or application software that will be
implemented. They define the structures that the database or a file system
will use to store and manage the data. That includes tables, columns,
fields, indexes, constraints, triggers and other DBMS elements. Database
designers use physical data models to create designs and generate
schema for databases.
These three types of data models fit together as part of the overall modeling process.
Data modeling techniques
Data modeling emerged in the 1960s as databases became more widely used
on mainframes and then minicomputers. It enabled organizations to bring
consistency, repeatability and disciplined development to data processing and
management. That's still the case, but the techniques used to create data
models have evolved along with the development of new types of databases
and computer systems.
These are the data modeling approaches used most widely over the years,
including several that have largely been supplanted by newer techniques.
NEO4J
This is an example of a graph data model with nodes connected by edges.
Identify the business entities that are represented in the data set.
Identify the data attributes that need to be incorporated into the model.
Even after that, the process typically isn't finished: Data models often must be
updated and revised as an organization's data assets and business needs
change.
These are six steps to take when designing a data model.
Modeling complexity and scope creep. Data models often are big and
complex, and modeling projects can become unwieldy if teams continue to
create new iterations without finalizing the designs. It's important to set
priorities and stick to an achievable project scope.
Undefined or unclear business requirements. Particularly with new
applications, the business side may not have fully formed information
needs. Data modelers often must ask a series of questions to gather or
clarify requirements and identify the necessary data.
Principles of Testing:-
It focuses on the smallest unit of software design. In this, we test an individual unit or
group of interrelated units. It is often done by the programmer by using sample input
and observing its corresponding outputs.
Example:
The objective is to take unit-tested components and build a program structure that has
been dictated by design. Integration testing is testing in which a group of components is
combined to produce output.
Integration testing is of four types: (i) Top-down (ii) Bottom-up (iii) Sandwich (iv) Big-
Bang
Example:
Every time a new module is added leads to changes in the program. This type of testing
makes sure that the whole component works properly even after adding components to
the complete program.
Example
This test is done to make sure that the software under testing is ready or stable for
further testing
It is called a smoke test as the testing of an initial pass is done to check if it did not
catch the fire or smoke in the initial switch on.
Example:
The beta test is conducted at one or more customer sites by the end-user of the
software. This version is released for a limited number of users for testing in a real-time
environment
Example:
This software is tested such that it works fine for the different operating systems. It is
covered under the black box testing technique. In this, we just focus on the required
input and output without focusing on internal working.
In this, we have security testing, recovery testing, stress testing, and performance
testing
Example:
In this, we give unfavorable conditions to the system and check how they perform in
those conditions.
Example:
(a) Test cases that require maximum memory or other
resources are executed
(b) Test cases that may cause thrashing in a virtual
operating system
(c) Test cases that may cause excessive disk requirement
9. Performance Testing
This testing is a combination of various testing techniques that help to verify and
validate object-oriented software. This testing is done in the following manner:
Testing of Requirements,
Design and Analysis of Testing,
Testing of Code,
Integration testing,
System testing,
User Testing.
Acceptance testing is done by the customers to check whether the delivered products
perform the desired tasks or not, as stated in requirements.
We use this OOT, for discussing test plans and for executing the projects.
Strategic planning
What is strategic planning?
Strategic planning is a process in which an organization's leaders define their
vision for the future and identify their organization's goals and objectives. The
process includes establishing the sequence in which those goals should be
realized so that the organization can reach its stated vision.
Strategic planning typically represents mid- to long-term goals with a life span
of three to five years, though it can go longer. This is different than business
planning, which typically focuses on short-term, tactical goals, such as how a
budget is divided up. The time covered by a business plan can range from
several months to several years.
Prioritize. Next, strategic planners set objectives and initiatives that line up
with the company mission and goals and will move the business toward
achieving its goals. There may be many potential goals, so planning prioritizes
the most important, relevant and urgent ones. Goals may include a
consideration of resource requirements -- such as budgets and equipment --
and they often involve a timeline and business metrics or KPIs for measuring
progress.
Implement. Once the strategic plan is developed, it's time to put it in motion.
This requires clear communication across the organization to set
responsibilities, make investments, adjust policies and processes, and
establish measurement and reporting. Implementation typically
includes strategic management with regular strategic reviews to ensure that
plans stay on track.
Update. A strategic plan is periodically reviewed and revised to adjust
priorities and reevaluate goals as business conditions change and new
opportunities emerge. Quick reviews of metrics can happen quarterly, and
adjustments to the strategic plan can occur annually. Stakeholders may
use balanced scorecards and other tools to assess performance against
goals.
Annual reviews. A yearly review lets business leaders assess metrics for
the previous four quarters and make informed adjustments to the plan.
In most cases, a strategic plan will involve elements of all three focus areas.
But the plan may lean toward one focus area depending on the needs and
type of business
While a map can be drawn in a number of ways, all strategy maps focus on
four major business areas or categories: financial, customer, internal business
processes (IBPs), and learning and growth. Goals sort into those four areas,
and relationships or dependencies among those goals can be established.
For example, a strategy map might include a financial goal of reducing costs
and an IBP goal to improve operational efficiency. These two goals are related
and can help stakeholders understand that tasks such as improving
operational workflows can reduce company costs and meet two elements of
the strategic plan.
A strategy map can help translate overarching goals into an action plan and
goals that can be aligned and implemented.
Strategy mapping can also help to identify strategic challenges that might not
be obvious. For example, one learning and growth goal may be to increase
employee expertise but that may expose unexpected challenges in employee
retention and compensation, which affects cost reduction goals.
SWOT Analysis
Strengths
Strength is something a company possesses or is good at doing.
Examples include a skill, valuable assets, alliances or cooperative ventures,
experienced sales force, easy access to raw materials, brand reputation etc.
Strengths are not a growing market, new products, etc.
Weaknesses
A weakness is something a company lacks or does poorly.
Examples include lack of skills or expertise, deficiencies in assets, inferior
capabilities in functional areas etc. Though weaknesses are often seen as the
logical ‘inverse’ of the company’s threats, the company’s lack of strength in a
particular area or market is not necessarily a relative weakness because
competitors may also lack this particular strength.
Opportunities
An opportunity is a major favorable situation in a firm’s environment.
Examples include market growth, favorable changes in the competitive or
regulatory framework, technological developments or demographic changes,
increase in demand, opportunity to introduce products in new markets, turning
R&D into cash by licensing or selling patents etc.
The level of detail and perceived degree of realism determine the extent of
opportunity analysis.
Threats
A threat is a major unfavorable situation in a firm’s environment.
Examples include an increase in competition; slow market growth, increased
power of buyers or suppliers, changes in regulations etc.
These forces pose serious threats to a company because they may cause
lower sales, higher cost of operations, higher cost of capital, inability to make
break-even, shrinking margins or profitability etc. Your competitor’s
opportunity may well be a threat to you.
Carrying out SWOT Analysis
The first thing that a SWOT analysis does is to evaluate the strengths and
weaknesses in terms of skills, resources and competencies. The analyst then
should see whether the internal capabilities match with the demands of the
key success factors.
The job of a strategist is to capitalize on the organization’s strengths while
minimizing the effects of its weaknesses in order to take advantage of
opportunities and overcome threats in the environment. SWOT analysis for a
typical firm is given below
Identification
Identify company resource strengths and competitive capabilities
Identify company resource weaknesses and competitive deficiencies
Identify the company’s opportunities
Identify external threats
Conclusion
Draw conclusions about the company’s overall situation.
Translation
Translate the conclusions into strategic actions by acting on them:
Match the company’s strategy to its strengths and opportunities
Correct important weaknesses
Defend against external threats
In devising a SWOT analysis, there are several factors that will enhance the
quality of the material:
Keep it brief, pages of analysis are usually not required.
Relate strengths and weaknesses, wherever possible, to industry key factors
for success.
Strengths and weaknesses should also be stated in competitive terms, that is,
in comparison with competitors.
Statements should be specific and avoid blandness.
Analysis should reflect the gap, that is, where the company wishes to be and
where it is now.
It is important to be realistic about the strengths and weaknesses of one’s own
and competitive organizations.
Probably the biggest mistake that is commonly made in SWOT analysis is to
provide a long list of points but little logic, argument and evidence. A short list
with each point well-argued is more likely to be convincing.
ST Strategies
ST strategies use a company’s strengths as a way to avoid threats. A
company may use its technological, financial and marketing strengths to
combat a new competition.
For example, Hindustan Lever has been employing this strategy to fight the
increasing competition from companies like Nirma, Procter & Gamble etc.
WO Strategies
WO Strategies attempt to take advantage of opportunities by overcoming its
weaknesses.
For example, for textile machinery manufacturers in India the main weakness
was dependence on foreign firms for technology and the long-time taken to
execute an order. The strategy followed was the thrust given to R&D to
develop indigenous technology so as to be in a better position to exploit the
opportunity of growing demand for textile machinery.
WT Strategies
WT Strategies are basically defensive strategies and primarily aimed at
minimizing weaknesses and avoiding threats.
For example, managerial weakness may be solved by a change of
managerial personnel, training and development etc. Weakness due to
excess manpower may be addressed by restructuring, downsizing, delayering
and voluntary retirement schemes.
External threats may be met by joint ventures and other types of strategic
alliances. In some cases, an unprofitable business that cannot be revived may
be divested. Strategies which utilize a strength to take advantage of an
opportunity are generally referred toas “exploitative” or “developmental
strategies”.
Strategies which use a strength to eliminate a weakness may be referred to
as “blocking strategies”. Strategies which overcome a weakness to take
advantage of an opportunity or eliminate a threat may be referred to as
“remedial strategies”.
Together with other techniques like Value Chain Analysis and RBV,
SWOT analysis improves the quality of the internal analysis.
Layered architecture:
Define the interaction modes in such a way that does not force
the user into unnecessary or undesired actions: The user
should be able to easily enter and exit the mode with little or no
effort.
Provide for flexible interaction: Different people will use
different interaction mechanisms, some might use keyboard
commands, some might use mouse, some might use touch
screen, etc, Hence all interaction mechanisms should be
provided.
Allow user interaction to be interruptible and undoable: When a
user is doing a sequence of actions the user must be able to
interrupt the sequence to do some other work without losing
the work that had been done. The user should also be able to
do undo operation.
Streamline interaction as skill level advances and allow the
interaction to be customized: Advanced or highly skilled user
should be provided a chance to customize the interface as user
wants which allows different interaction mechanisms so that
user doesn’t feel bored while using the same interaction
mechanism.
Hide technical internals from casual users: The user should not
be aware of the internal technical details of the system. He
should interact with the interface just to do his work.
Design for direct interaction with objects that appear on screen:
The user should be able to use the objects and manipulate the
objects that are present on the screen to perform a necessary
task. By this, the user feels easy to control over the screen.
Reduce the user’s memory load:
Reduce demand on short-term memory: When users are
involved in some complex tasks the demand on short-term
memory is significant. So the interface should be designed in
such a way to reduce the remembering of previously done
actions, given inputs and results.
Establish meaningful defaults: Always initial set of defaults
should be provided to the average user, if a user needs to add
some new features then he should be able to add the required
features.
Define shortcuts that are intuitive: Mnemonics should be used
by the user. Mnemonics means the keyboard shortcuts to do
some action on the screen.
The visual layout of the interface should be based on a real-
world metaphor: Anything you represent on a screen if it is a
metaphor for real-world entity then users would easily
understand.
Disclose information in a progressive fashion: The interface
should be organized hierarchically i.e. on the main screen the
information about the task, an object or some behavior should
be presented first at a high level of abstraction. More detail
should be presented after the user indicates interest with a
mouse pick.
Make the interface consistent:
Allow the user to put the current task into a meaningful context:
Many interfaces have dozens of screens. So it is important to
provide indicators consistently so that the user know about the
doing work. The user should also know from which page has
navigated to the current page and from the current page where
can navigate.
Maintain consistency across a family of applications: The
development of some set of applications all should follow and
implement the same design, rules so that consistency is
maintained among applications.
If past interactive models have created user expectations do
not make changes unless there is a compelling reason.
The generic process model is an abstraction of the software development process. It is used in
1. Communication
2. Planning
3. Modelling
4. Construction
5. Deployment
Communication
The users give suggestions on the project. If any changes are difficult to implement, we work
on alternative ideas.
Planning
In this step, we plan the steps for project development. After completing the final discussion, we
Modelling
In this step, we create a model to understand the project in the real world. We showcase the model
to all the developers. If changes are required, we implement them in this step.
Construction
If any code is required for the project development, we implement it in this phase.
Deployment
In this phase, we submit the project to the clients for their feedback and add any missing
requirements.
Software Maintenance
Software maintenance is widely accepted part of SDLC now a days. It stands for all the
modifications and updations done after the delivery of software product. There are number of
reasons, why modifications are required, some of them are briefly mentioned below:
Market Conditions - Policies, which changes over the time, such as taxation and newly
introduced constraints like, how to maintain bookkeeping, may trigger need for modification.
Client Requirements - Over the time, customer may ask for new features or functions in the
software.
Host Modifications - If any of the hardware and/or platform (such as operating system) of
the target host changes, software changes are needed to keep adaptability.
Organization Changes - If there is any business level change at client end, such as
Types of maintenance
In a software lifetime, type of maintenance may vary based on its nature. It may be just a routine
maintenance tasks as some bug discovered by some user or it may be a large event in itself based
on maintenance size or nature. Following are some types of maintenance based on their
characteristics:h
Corrective Maintenance - This includes modifications and updations done in order to correct
or fix problems, which are either discovered by user or concluded by user error reports.
Adaptive Maintenance - This includes modifications and updations applied to keep the
software product up-to date and tuned to the ever changing world of technology and business
environment.
Perfective Maintenance - This includes modifications and updates done in order to keep the
software usable over long period of time. It includes new features, new user requirements for
problems of the software. It aims to attend problems, which are not significant at this moment
Cost of Maintenance
Reports suggest that the cost of maintenance is high. A study on estimating software maintenance
found that the cost of maintenance is as high as 67% of the cost of entire software process cycle.
Older softwares, which were meant to work on slow machines with less memory and storage
capacity cannot keep themselves challenging against newly coming enhanced softwares on
modern hardware.
Most maintenance engineers are newbie and use trial and error method to rectify problem.
Often, changes made can easily hurt the original structure of the software, making it hard for
Changes are often left undocumented which may cause more conflicts in future.
Programming Language
Maintenance Activities
IEEE provides a framework for sequential maintenance process activities. It can be used in iterative
manner and can be extended so that customized items and processes can be included.
These activities go hand-in-hand with each of the following phase:
modification or maintenance. It is generated by user or system may itself report via logs or
Analysis - The modification is analyzed for its impact on the system including safety and
security implications. If probable impact is severe, alternative solution is looked for. A set of
Design - New modules, which need to be replaced or modified, are designed against
requirement specifications set in the previous stage. Test cases are created for validation
and verification.
Implementation - The new modules are coded with the help of structured design created in
System Testing - Integration testing is done among newly created modules. Integration
testing is also carried out between new modules and the system. Finally the system is tested
Acceptance Testing - After testing the system internally, it is tested for acceptance with the
help of users. If at this state, user complaints some issues they are addressed or noted to
Delivery - After acceptance test, the system is deployed all over the organization either by
small update package or fresh installation of the system. The final testing takes place at client
Training facility is provided if required, in addition to the hard copy of user manual.
maintenance. It is aided with version control tools to control versions, semi-version or patch
management
.
Software Re-engineering
When we need to update the software to keep it to the current market, without impacting its
Legacy software cannot keep tuning with the latest technology available in the market. As the
hardware become obsolete, updating of software becomes a headache. Even if software grows old
For example, initially Unix was developed in assembly language. When language C came into
existence, Unix was re-engineered in C, because working in assembly language was difficult.
Other than this, sometimes programmers notice that few parts of software need more maintenance
Re-Engineering Process
object-oriented programs.
Reverse Engineering
system. This process can be seen as reverse SDLC model, i.e. we try to get higher abstraction level
An existing system is previously implemented design, about which we know nothing. Designers then
do reverse engineering by looking at the code and try to get the design. With design in hand, they try
to conclude the specifications. Thus, going in reverse from code to system specification.
Program Restructuring
It is a process to re-structure and re-construct the existing software. It is all about re-arranging the
source code, either in same programming language or from one programming language to a
different one. Restructuring can have either source code-restructuring and data-restructuring or both.
Re-structuring does not impact the functionality of the software but enhance reliability and
maintainability. Program components, which cause errors very frequently can be changed, or
The dependability of software on obsolete hardware platform can be removed via re-structuring.
Forward Engineering
Forward engineering is a process of obtaining desired software from the specifications in hand which
were brought down by means of reverse engineering. It assumes that there was some software
Forward engineering is same as software engineering process with only one difference – it is carried
Reuse Process
Two kinds of method can be adopted: either by keeping requirements same and adjusting
which a software product must comply to, with the help of existing system, user input or both.
Design - This is also a standard SDLC process step, where requirements are defined in
terms of software parlance. Basic architecture of system as a whole and its sub-systems are
created.
Specify Components - By studying the software design, the designers segregate the entire
system into smaller components or sub-systems. One complete software design turns into a
to search for the matching component, on the basis of functionality and intended software
requirements..
Incorporate Components - All matched components are packed together to shape them as
complete software.
In the early days of the World Wide Web, websites were just a set of linked hypertext files which
presented information using text and limited graphics. The augmentation of HTML by development
tools like Java, XML enabled web engineers to provide computing capability along with informational
content. Web-based systems and applications (WebApps) are sophisticated tools that not only
present stand-alone information but also integrate databases and business applications. Web-based
systems and applications “involve a mixture between print publishing and software development,
between marketing and computing, between internal communications and external relations, and
● Concurrency: A large number of users may access the WebApp at one time.
● Unpredictable load. The number of users of the WebApp may vary by orders of magnitude from
day to day.
● Performance: If a WebApp user must wait too long, he or she may decide to go elsewhere.
● Availability: Although the expectation of 100 percent availability is unreasonable, users of popular
● Data driven: The primary function of many WebApps is to use hypermedia to present text,
● Content sensitive: The quality and aesthetic nature of content remains an important determinant
● Continuous evolution: Unlike conventional application software that evolves over a series of
● Immediacy: WebApps often exhibit a time-to-market that can be a matter of a few days or weeks.
● Security: Because WebApps are available via network access sensitive content must be
● Aesthetics: An undeniable part of the appeal of a WebApp is its look and feel