Professional Documents
Culture Documents
The term software engineering is the product of two words, software, and engineering.
Computer programs and related documentation such as requirements, design models and
user manuals. Engineering is the application of scientific and practical knowledge to
invent, design, build, maintain, and improve frameworks.
1
Cost Management
To manage the dynamic nature of software
For better quality Management
Need of Software Engineering
The necessity of software engineering appears because of a higher rate of progress in user
requirements and the environment on which the program is working.
The features that good software engineers should possess are as follows:
2
Software Engineering Process:
It is an engineering process which is mainly related to computers and
programming and developing different kinds of applications through the use
of information technology’s
Traditional Engineering Process:
It is an engineering process which is highly based on empirical knowledge
and is about building cars, machines and hardware
Difference between Software Engineering Process and Traditional Engineering Process:
S.No. Software Engineering Process traditional Engineering Process
It is mainly related with computers, programming and It is about building cars, machines, hardwar
2. writing codes for building applications. buildings etc.
It can involve the application of new and untested It usually applies only known and teste
4. elements in software projects. principles to meet product requirements.
3
Hardware and Software. Hardware refers to the physical and visible components of the
system such as a monitor, CPU, keyboard and mouse
2. Differentiate between the characteristics of Hardware and Software with real example
Hardware Software
Hardware is further divided into four main Software is further divided into two main
categories: categories:
Developed using electronic and other Developed writing using instructions using a
materials programming language
When damaged, it can be replaced with a new When damaged it can be installed once more
component using a backup copy
Hardware is physical in nature and hence one The software cannot be physically touched
can touch and see hardware but still can be used and seen
Hardware will physically wear out over time Software does not wear out but it can be
affected by bugs and glitches
4
3. Explain the waterfall model software development model in details.
The waterfall model is a classical model used in system development life cycle to create a system
with a linear and sequential approach. It is termed as waterfall because the model develops
systematically from one phase to another in a downward fashion
The Waterfall Model was the first Process Model to be introduced. It is also referred to as a linear-
sequential life cycle model. It is very simple to understand and use. In a waterfall model, each
phase must be completed before the next phase can begin and there is no overlapping in the
phases.
The Waterfall model is the earliest SDLC approach that was used for software development
Waterfall Model - Design
Waterfall approach was first SDLC Model to be used widely in Software Engineering to ensure
success of the project. In "The Waterfall" approach, the whole process of software development
is divided into separate phases. In this Waterfall model, typically, the outcome of one phase acts
as the input for the next phase sequentially.
The following illustration is a representation of the different phases of the Waterfall
5
The sequential phases in Waterfall model are −
Requirement Gathering and analysis − All possible requirements of the system to be
developed are captured in this phase and documented in a requirement specification
document.
System Design − the requirement specifications from first phase are studied in this phase
and the system design is prepared. This system design helps in specifying hardware and
system requirements and helps in defining the overall system architecture.
Implementation − with inputs from the system design, the system is first developed in
small programs called units, which are integrated in the next phase. Each unit is developed
and tested for its functionality, which is referred to as Unit Testing.
Integration and Testing − All the units developed in the implementation phase are
integrated into a system after testing of each unit. Post integration the entire system is
tested for any faults and failures.
Deployment of system − Once the functional and non-functional testing is done; the
product is deployed in the customer environment or released into the market.
Maintenance − There are some issues which come up in the client environment. To fix those
issues, patches are released. Also to enhance the product some better versions are released.
Maintenance is done to deliver these changes in the customer environment
4. State the merits and demerits of spiral model software development model.
What is Spiral Model?
Spiral Model: - is a risk-driven software development process model. It is a combination of
waterfall model and iterative model.
Each phase of spiral model in software engineering begins with a design goal and ends with the
client reviewing the progress. The spiral model in software engineering was first mentioned by
Barry Boehm in his 1986 paper.
The development process in Spiral model in SDLC, starts with a small set of requirement and goes
through each development phase for those set of requirements. The software engineering team
adds functionality for the additional requirement in every-increasing spirals until the application
is ready for the production phase.
6
Spiral Model Advantages and Disadvantages
Advantages Disadvantages
Cost estimation becomes easy as the Spiral development works best for
prototype building is done in small large projects only also demands risk
fragments assessment expertise
7
There is always a space for customer Spiral software development is not
feedback advisable for smaller project, it might
cost them a lot
5. Discuss the software engineering practices for both software product and for
software development (process – software to use and after software product
delivered).
The Software Practice is a technology company based in Singapore that builds software
applications for clients as well as for its own business. Our core strength is in building
large and complex web and mobile applications. We’re a full service development firm
who’ve launched several products working with clients from an idea to a prototype to
production with real world users
The Software Practice is a Singapore based technology development firm that builds
software for clients and its own business. Our core strength is in developing large and
complex web and mobile applications by architecting and implementing robust, scalable
and performant software
The software engineering best practice such as
Develop iterative
Control change
Verify quality
Mange requirement
Model software visually
Use component architecture
Software development is the process of conceiving, specifying ,designing, programming,
, documenting, testing, and bug fixing involved in creating and
maintaining applications, frameworks, or other software components. Software development is a
process of writing and maintaining the source code, but in a broader sense, it includes all that is
involved between the conception of the desired software through to the final manifestation of the
software, sometimes in a planned and structured process. Therefore, software development may
include research, new development, prototyping, modification, reuse, re-engineering,
maintenance, or any other activities that result in software products
Software Products are nothing but software systems delivered to the customer with the
documentation that describes how to install and use the system. In certain cases, software
products may be part of system products where hardware, as well as software, is delivered to a
8
customer. Software products are produced with the help of the software process. The software
process is a way in which we produce software.
Types of software products:
Software products fall into two broad categories:
Generic products:
Generic products are stand-alone systems that are developed by a production unit
and sold on the open market to any customer who is able to buy them.
Customized Products:
Customized products are the systems that are commissioned by a particular
customer. Some contractor develops the software for that customer
Essential characteristics of Well-Engineered Software Product:
A well-engineered software product should possess the following essential
characteristics:
Efficiency:
The software should not make wasteful use of system resources such as memory
and processor cycles.
Maintainability:
It should be possible to evolve the software to meet the changing requirements of
customers.
Dependability:
It is the flexibility of the software that ought to not cause any physical or economic
injury within the event of system failure. It includes a range of characteristics
such as reliability, security, and safety.
In time:
Software should be developed well in time.
Within Budget:
The software development costs should not overrun and it should be within the
budgetary limit.
Functionality:
The software system should exhibit the proper functionality, i.e. it should perform
all the functions it is supposed to perform.
Adaptability:
The software system should have the ability to get adapted to a reasonable extent
with the changing requirements
Software engineering process is the model chosen for managing the creation of software from
initial customer inception to the release of the finished product. The chosen process usually
involves techniques such as
• Analysis,
• Design,
9
• Coding,
• Testing
• Maintenance
Several different process models exist and vary mainly in the frequency, application and
implementation of the above techniques, for example, different process models use different
analysis techniques, other models attempt to implement the solution to a problem in one big-
bang approach, while others adopt an iterative approach whereby successively larger and more
complete versions of the software are built with each iteration of the process model
.
10
The basic principles are:[2]
Project is divided into sequential phases, with some overlap and splash back acceptable
between phases.
Emphasis is on planning, time schedules, target dates, budgets and implementation of an entire
system at one time.
Tight control is maintained over the life of the project via extensive written documentation,
formal reviews, and approval/signoff by the user and information technology management
occurring at the end of most phases before beginning the next phase.
Prototyping
Software prototyping, is the development approach of activities during software development, the
creation of prototypes, i.e., incomplete versions of the software program being developed.
The basic principles are:
A series of Mini-Waterfalls are performed, where all phases of the Waterfall are completed
for a small part of a system, before proceeding to the next increment, or
Overall requirements are defined before proceeding to evolutionary, Mini-Waterfall
development of individual increments of a system, or
The initial software concept, requirements analysis, and design of architecture and system core
are defined via Waterfall, followed by iterative Prototyping, which culminates in installing the
final prototype, a working system.
Spiral development
11
The spiral model.
The spiral model is a software development process combining elements of both design and
prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts.
The basic principles are:[2]
Focus is on risk assessment and on minimizing project risk by breaking a project into smaller
segments and providing more ease-of-change during the development process, as well as
providing the opportunity to evaluate risks and weigh consideration of project continuation
throughout the life cycle.
"Each cycle involves a progression through the same sequence of steps, for each part of the
product and for each of its levels of elaboration, from an overall concept-of-operation
document down to the coding of each individual program."[4]
Each trip around the spiral traverses four basic quadrants: (1) determine objectives,
alternatives, and constraints of the iteration; (2) evaluate alternatives; Identify and resolve
risks; (3) develop and verify deliverables from the iteration; and (4) plan the next iteration. [4][5]
Begin each cycle with an identification of stakeholders and their win conditions, and end each
cycle with review and commitment. [6]
Rapid application development[edit | edit source]
Rapid application development (RAD) is a software development methodology, which involves
iterative development and the construction of prototypes. Rapid application development is a term
originally used to describe a software development process introduced by James Martin in 1991.
The basic principles are:[2]
Key objective is for fast development and delivery of a high quality system at a relatively low
investment cost.
Attempts to reduce inherent project risk by breaking a project into smaller segments and
providing more ease-of-change during the development process.
Aims to produce high quality systems quickly, primarily via iterative Prototyping (at any stage
of development), active user involvement, and computerized development tools. These tools
may include Graphical User Interface (GUI) builders, Computer Aided Software Engineering
(CASE) tools, Database Management Systems (DBMS), fourth-generation programming
languages, code generators, and object-oriented techniques.
12
Key emphasis is on fulfilling the business need, while technological or engineering excellence
is of lesser importance.
Project control involves prioritizing development and defining delivery deadlines or “time
boxes”. If the project starts to slip, emphasis is on reducing requirements to fit the time box,
not in increasing the deadline.
Generally, includes joint application design (JAD), where users are intensely involved in
system design, via consensus building in either structured workshops, or electronically
facilitated interaction.
Active user involvement is imperative.
Iteratively produces production software, as opposed to a throwaway prototype.
Produces documentation necessary to facilitate future development and maintenance.
Standard systems analysis and design methods can be fitted into this framework.
Software tools: -A software tool is a program that automates some of the labor involved in the
management, design, coding, testing, inspection, or maintenance of other programs. Commercially
available tools range in size and complexity from simple aids for individual programmers and end
users to complex tools that can support many software projects simultaneously. The following are
some common tools: Preprocessors-Preprocessors perform preliminary work on a draft computer
program before it is completely tested on the computer. Types of preprocessors include filters (also
known as code auditors), which allow management to determine quickly whether programmers
are adhering to specifications and standards, and shorthand preprocessors, which allow
programmers and end users to write the programs in an abbreviated form that is then expanded by
the preprocessor before it is tested on the computer. Shorthand preprocessors reduce writing,
keypunching, and proofreading effort. Programmer or user support libraries-These automated
filing systems can support the programming development projects of entire installations. Such a
support library maintains files of draft programs, data, and documentation and can be used to
provide management with progress reports. Program analyzers-These tools modify or monitor the
operation of an applications program to allow information about its operating characteristics to be
collected automatically. This information can then be used to help modify the program to reduce
its run cost or to verify that the program operates correctly. Online programming support
programs-These tools enable programmers and users to quickly correct and modify applications
programs and test program results. Test data generators-These tools analyze a program and
produce files of data needed to test the logic of the program.
Soft techniques: - Soft$&e techniques are methods or procedures for designing, developing,
documenting, and maintaining programs, or for managing these activities. There are generally two
types of software techniques: those used by personnel who work on programs and those used by
managers to control the work. Examples of software techniques useful to workers include:
Structured Programming-Developing programs in a certain style with standard constructs so that
they will be more easily understood by others who must later maintain and modify them, which
facilitates documentation, testing, and correction.
Software Development Tools that will make you more productive
GitHub. The world's leading software development platform. ...
Git. ...
13
GitLab. ...
IntelliJ IDEA. ...
Stack Overflow. ...
Docker. ...
Jira. ...
Jenkins
7. What is the role of Software Requirements Specification in Software Engineering?
A software requirements specification (SRS) is a description of a software system to be developed.
Used appropriately, software requirements specifications can help prevent software project
failure. The software requirements specification document lists sufficient and
necessary requirements for the project development
It defines functional and non-functional requirement. It eliminates any confusion or
misunderstanding on initial stage. It reduces development effort. It reduces the chances
of requirement creep
A software requirements specification is the basis for your entire project. It lays the framework
that every team involved in development will follow. It's used to provide critical information to
multiple teams — development, quality assurance, operations, and maintenance. A software
requirements specification is a document that describes requirements for a software product,
program or set of programs.
8. Briefly explain Software Requirements Specification and Business Requirements
Specification?
Software Requirements Specification
Requirement Specification (SRS) is a descriptive note about the software that is under
development. It is documented by the developer of the software for the clients and users and
describes the purpose of the software. It gives a detailed overview of the software product, its
parameters and goals.
A software requirements specification (SRS) is a description of a software system to be developed.
It is modeled after business requirements specification (CONOPS), also known as a stakeholder
requirements specification (StRS). The software requirements specification lays out functional and
non-functional requirements, and it may include a set of use cases that describe user interactions
that the software must provide to the user for perfect interaction.
14
It includes the set of use cases that describe interactions of users
Moreover, it establishes the basis for an agreement between clients and suppliers.
Hence it provides a realistic basis for estimating product costs, schedules and risks.
Here, we enlist necessary requirements required for the product development.
Business Requirements Specification?
Use this Business Requirements Specification to: Establish what needs to change in order for
the business to achieve its objectives Determine what information is needed to support the
organization’s business activities and to measure its performance Define the requirements for
change at a high-level
Business requirements, also known as stakeholder requirements specifications (StRS), describe
the characteristics of a proposed system from the viewpoint of the system's end user like a
CONOPS. Products, systems, software, and processes are ways of how to deliver, satisfy, or meet
business requirements. Consequently, business requirements are often discussed in the context of
developing or procuring software or other systems
Business requirements in the context of software engineering or the software development life
cycle, is the concept of eliciting and documenting business requirements of business users such as
customers, employees, and vendors early in the development cycle of a system to guide the design
of the future system. Business requirements are often captured by business analysts, who analyze
business activities and processes, and often study "as-is" process to define a target "to-be" process.
9. What is the use of a change management system for tracking software defect?
Change management tools are pieces of software that companies use during periods of
organizational change to make the process as smooth and seamless as possible for employees,
managers, and customers. Of course, just as there are different types of organizational change,
there are also many different types of change management tools.
Finding the right tool will partly depend on what type of change you’re implementing and where
in the change management cycle you are. For example, if you recently split a large department into
several small departments, you might want a feedback tool to survey your teams and see how you
can make each department run more smoothly.
Empower your IT Operations Teams with Richer Contextual Information to Minimize
Risks. Jira Service Management Empowers Dev & Ops Teams to Deliver Value Fast. Start
Free Today. Transparent Pricing. 25% Fewer Tickets. For High-Velocity Teams
10. What is revision management and its role in software development?
Revision control manages changes: - to a set of data over time. These changes can be structured
in various ways. Often the data is thought of as a collection of many individual items, such as files
15
or documents, and changes to individual files are tracked. A look at how a code revision control
tool can help keep automation project development efficient and organize.
To make change management easy you need a simple method of tracking, evaluating and recording
changes. This can be a simple database or log but in large projects it has evolved into a customized
information system in its own right.
As such the system needs to be able to handle:
Logging requests for changes against products and documentation Recording and managing the
priority of a particular change Logging the decision of a change management authority Recording
the method and implementation of change. Tracking implemented changes against a particular
version of the product or document
In many projects the change management system can be linked to (or is part of) a defect tracking
system. Since resolution of a defect is, in effect, a request for change both can often be handled by
the same system. The change and defect tracking system can also be linked with version control
software to form what is commonly known as a Software Configuration Management (SCM)
system. This integrated system directly references changes in the software against specific versions
of the product or system as contained in its version control system. The direct one-to-one reference
cuts down on management overhead and maintenance and allows the enforcement of strict security
on allowable changes
11. What are meta-languages, scripts, rules, targets and actions and their role in
software engineering development life cycle?
Rule - a collection of terminal and non-terminal symbols describing a part of the language.
Non Terminal - a part of the rule which is further defined as another rule.
16
12. Explain version control and history of version control with their features in detail
explanation
Version control, also known as source control, is the practice of tracking and managing changes
to software code. Version control for software mimicked the established techniques of the drawing
office, but only the parts that were possible within the crude technology of the time. Back in the
days of punch cards, once the programmers had finished with their routine, they would take the
punched cards, change cards, or coding forms to the version-control or configuration-management
team who would duly update the library, and build the customer-ready product from the official
version.
At the same time, there was an office process that recorded the work and managed the versioning
task. The work was treated as if it were a technical drawing. To alter a version, you checked the
code in and out as though it were a technical drawing that had to be altered. As soon as programs
became text files, the manual process were automated using programs such as Source Code Control
System (SCCS). At this stage, there wasn’t the concept of storing just the difference between file
versions. The technology was there but we weren’t culturally ready.
This practice of delta-storage became mainstream in the 1980s with Revision Control System
(RCS), but the whole process still used the analogy of the file being the unit of work, as if it were
a technical drawing.
The idea of being able to deal with a whole lot of files at once took a long time to catch on, as did
having more than one person working on a file at the same time. Although Concurrent Versions
Systems (CVS) was the first to break free from the idea of locking out the file to work on it, it was
unreliable until the introduction of Subversion. Even now, it is only too easy for the version control
system to fail to sort out the merging of two simultaneous alterations of a version file, and ‘merge
failure’ is still a phrase dreaded by most developers.
The original version control software was mainframe-based, and individual programmers accessed
the system via a terminal. UNIX systems were the first to introduce server-based, or centralized
version control systems that relied on a single, shared repository, and these eventually became
17
available on MS-DOS and Windows. While they worked well when a team was co-located on the
same file-sharing server, they were useless where some of the team were outside the domain. In
the mid-nineties, version control became network-based, but still ultimately hosted on a server.
From this point, the idea of a hosted service on the Internet was just a short step.
More fundamental was the change to a distributed model for version control, in which no single
computer held the master copy. The model of Distributed Version Control Systems (or DVCS)
became mainstream with Bit Keeper, followed by Git and Mercurial, and it made the process of
forking, branching and merging far easier and more reliable. Distributed version control systems
don’t necessarily rely on a central server to store all the files. Instead, every developer ‘clones’ a
copy of the repository and has the full history of the project on their own machine. When
developers get new changes from a repository, they ‘pull’ them. When they commit their own
changes to the repository to make them available for the rest of the team, they now ‘push’ them.
Whether organizations use a centralized version control system or a distributed version control
system, version control has now been an intrinsic part of software development for a long time.
The advances in version control have led to a fundamental change in the way we develop software.
It has made possible the surge of collaborative work and the increasingly rapid delivery of
software.
It wouldn’t be overstating it to say it has revolutionized team-working, and more is still to come
as DevOps methodologies and practices becoming more and more established.
Where version control has previously largely been used to manage application code within or
across development teams, operations teams are now working much more closely with
development and the need to include database changes alongside code changes in version control
is becoming accepted.
13. What are the software Engineering Tools used in software development with their
categories of their application?
Recommended Tool
18
RAD Studio
RAD Studio is a Powerful IDE For Building Native Apps on Windows, Android, iOS, macOS and
Linux. It enables you to design Beautiful Desktop and Mobile App UIs with less coding effort.
Write once, compile everywhere.
Embold
Fixing bugs before deployment saves a lot of time and energy in the long run. Embold is a software
analytics platform that analyses source code and uncovers issues that impact stability, robustness,
security, and maintainability.
Kite
Kite is IDE for Software Development that automatically completes multiple line codes. This
editor supports more than 16 languages. It helps you to code faster with no hassle.
NetBeans is a popular, Free, open-source IDE. It allows developing desktop, mobile and web
applications.
Cloud9 IDE:
Atom:
Atom is a solid all-around text-editor. It is fully free and open source. It can be customized to do
anything but without a need of modifying the confit file.
Code Charge Studio offers the fastest way to build applications. This tool helps to develop data-
driven Web sites or enterprise Internet and Intranet systems.
Frameworks
Bootstrap:
19
Bootstrap is a responsive framework for developing with HTML, CSS, and JS. It has many in-
builds components, which you can easily drag and drop to assemble responsive web pages.
HTML5 Builder:
HTML5 Builder is a software solution for building the web and mobile apps. It can develop an
app using a single HTML5, CSS3, JavaScript and PHP codebase. It helps to target multiple mobile
operating systems, devices and Web browsers.
Visual Online:
Visual Studio Online is a collection of services. It is fast and easy to plan, build and ship software
across a variety of platforms. These software development tools allow the organization to create
the perfect development environment.
Cloud Tools
Kwatee:
Azure
Microsoft Azure is widely used by developers to build, deploy and manage web applications.
Data Science
Data studio:
Dataiku DSS is a collaborative data science software platform. It is used by data scientists, data
analysts, and engineers to explore, prototype, build and deliver their data products.
Source Control
Github:
GitHub allows developers to review code, manage projects, and build software. It offers right tool
for different development jobs.
Cloudforge:
20
CloudForge is a software-as-a-service product for application development. It Integrates and
manages various development tools.
Prototyping
Axure
Axure provides the capability to produce wireframes, prototypes, and create documentation. This
tool is used by business analysts, product managers, and IT consultants around the world.
DevOps
Codenvy:
Codenvy automates applications or micro services to any number of servers. It fully automates
deployments of text and binary files from any number of target servers.
Notifications
SendBird:
Sendbird is used as a messaging and Chat API for Mobile Apps and Websites. It offers scalability
for a massive audience. It also prevents spam flooding of chat rooms.
UML
Enterprise Architect:
14. Discuss the performance, load and non-functional testing tools with their lists and
explain them.
What is Performance /load Testing? Performance Testing is a type of software testing which
ensures that the application is performing well under the workload. The goal of performance
testing is not to find bugs but to eliminate performance bottlenecks. It measures the quality
attributes of the system.
AppLoader
21
AppLoader is a load testing solution designed for business applications. It allows you to test any
application by reproducing the same user experience from all your access points.
Silk Performer
Silk Performer tool is an enterprise class load and stress testing tool and has the ability to test
multiple application environments with the thousands of concurrent users. It also supports the
widest range of protocols.
NeoLoad
LoadView
LoadView utilizes real browser-based load testing for websites, web applications, and APIs. It
creates multi-step scripts that simulate users interacting with your website or application. With
LoadView by Dotcom-Monitor, you can show the actual performance of your applications under
load.
LoadUI Pro
LoadUI Pro allows you to quickly create script less sophisticated load tests, distribute them on
cloud using load agents and monitor the performance of your servers as you increase the load on
them. You can access detailed reports and quickly automate your load tests.
WebLOAD
Apache JMeter
JMeter is an open source tool that can be used for performance and load testing for analyzing and
measuring the performance of a variety of services. This tool is mainly used for web and web
service applications.
22
LoadNinja
It allows you to create script less sophisticated load tests and reduces testing time by half. It also
replaces load emulators with real browsers and gets actionable, browser-based metrics at ninja
speed. LoadNinja empowers teams to increase their test coverage without giving up on the quality
by removing the tedious efforts of dynamic correlation, script translation, and script scrubbing.
Non-functional testing :-is defined as a type of Software testing to check non-functional aspects
(performance, usability, reliability, etc) of a software application. It is designed to test the readiness
of a system as per nonfunctional parameters which are never addressed by functional testing
JMeter
JMeter is one of the widely used tools in the market to perform reliability testing and automation
testing. The tool is available for free of cost and is generally used in web and FTP Applications
JMeter is an Apache product, which has a good reputation for compatibility testing. The tool is
highly used for measuring and analyzing the performance of programs.
Forecast
Forecast is one of the most popular applications, which offers a wide range of options. Therefore,
it is important for users to consider having input data in detail.A detailed set of data related to
scalability testing and recovery testing play a major role for results. Hence, forecast provides an
easy to use interface to enjoy maximum mileage.
Loadrunner
The reputation of the testing tool is one of the supreme factors because it defines
quality. LoadRunner is a fabulous tool because it offers accurate results in performance testing.
The tool has gained a lot of reputation in offering stress test results with quality.
LoadRunner is a Micro Focus product, which has the capacity to simulate a lot of users at the same
time. The special analyzing strategy in the tool provides a wide room to enjoy the performance.
Loadster
23
The modern-day tools and applications are coming with extra features to attract. Loadster is a new
tool, which comes with cloud hybrid load testing technique. The technique allows users to test
large scale applications and high-performance websites. The tool offers quality results in volume
testing parameters of the software system. Loadster allows users to improve the technique because
it helps in improving stability.
Loadstorm
There are huge benefits of non-functional testing tools. it is vital for testers to know the actual
objective of the testing process before starting. A strong set of functional requirements enable the
tool to complete the process with productive results. Loadstormis a powerful tool, which is
available to test various program components. So, the hybrid set of features enables testers to save
time without affecting the performance.
Neoload
Automation Testing is a modern concept, which allows people to save a lot of money. Hence, It is
obvious that testers find automated ways to save time without compromising on productivity.
NeoLoad is a fine application, which offers Automation Options to enhance performance. The tool
provides quality results while testing various kinds of projects. Projects include APIs, web
applications and so on.
24
Creately :- is a cloud-based diagramming and design application service operated by
Cinergix, Pty Ltd. It is built on Adobe's Flex/Flash technologies and provides a visual
communication platform for virtual teams. It can be used to create informational diagrams,
flowcharts, organizational charts, website wireframes, UML designs, mind maps and many
other diagram types.
Gliffy :-This tools permits collaboration among distributed team members. It is possible to
invite team members to a session in order to view or edit diagrams.
GroupUML :-This research tool supports distributed modeling with UML. It provides a
shared UML editor which is accessible from a Smart board.
Libra-on-chat:- is a collaborative modeling support system that enables to share UML
diagrams created by each developer, associate conversation contents with the specific
elements in a UML diagram that is created by synchronous collaboration.
Rational Software Modeler :-IBM Rational Software Modeler, (RSM) made by IBM's
Rational Software division, is a Unified Modeling Language (UML) 2.0-based visual
modeling and design tool. Rational Software Modeler is built on the Eclipse open source
software framework and is used for visual modeling and model-driven development
(MDD) with UML for creating applications and web services.
STEVE :-(Synchronous collaborative modelling Tool Enhanced with VErsioning) is a
collaborative tool supporting distributed Unified Modelling Language (UML) modelling
of software systems. The tool allows communication infrastructure enabling the concurrent
editing of the same UML diagram at the same time by distributed developers.
Sysiphus:- This research tool provides an environment for distributed modeling and
collaboration. It also provides traceability and awareness mechanisms through which to
facilitate collaboration.
Together Borland Together 2008 technologies enable you to analyze, design and
implement flexible and maintainable software architectures that can be easily modified as
requirements change. A common visual understanding of important decisions also keeps
business and system analysts, architects, data modelers and developers in sync—whether
they’re changing business processes, creating new applications or extracting design
information from existing systems.
25
16. What is the main objective of code generation or forward engineering in software
development life cycle?
in computing, code generation is the process by which a compiler's code generator converts some
intermediate representation of source code into a form (e.g., machine code) that can be readily
executed by a machine. Sophisticated compilers typically perform multiple passes over various
intermediate forms its main objective are listed bellow
The first part of a compiler analyzes the source code into a structure that carries the meaning of
the program; this structure is generally the abstract syntax tree that’s been checked and decorated.
(Remember decorated means all identifier references have been resolved.)
From this structure we can generate the corresponding code in some other language, the target
language. This is what a code generator does.
Some compilers generate twice: they first generate code in some “intermediate language” like SIL,
LLVM IR, HIR, MIR, CIL, etc. Then they do the “real” code generation into a target language that
is directly runnable (or really close to it), like virtual machine code, assembly language, or machine
language.
26
Sequence diagrams are sometimes called event diagrams or event scenarios. A sequence
diagram shows, as parallel vertical lines (lifelines), different processes or objects that live
simultaneously, and, as horizontal arrows, the messages exchanged between them, in the
order in which they occur.
27
In reverse engineering, production is started by
taking existing product.
In forward engineering, production is started with
given requirements. The example of backward engineering are
The example of forward engineering are construction research on Instruments etc
of electronic kit, construction of DC MOTOR etc.
28
improve overall speed of the execution in multi-processor and multi-core systems.
In more technical terms, concurrency refers to the decomposability of a program,
algorithm, or problem into order-independent or partially-ordered components or
units of computation.[1]
According to Rob Pike, concurrency is the composition of independently executing
computations,[2] and concurrency is not parallelism: concurrency is about dealing
with lots of things at once but parallelism is about doing lots of things at once.
Concurrency is about structure, parallelism is about execution, concurrency
provides a way to structure a solution to solve a problem that may (but not
necessarily) be parallelizable
20. What are the issues in the design of the software? Explain its need for the software
engineering?
Some of the major challenges include requirements volatility, design process,
quality issues (e.g., performance, usability, security, etc.), distributed software
development, efficient allocation of human resources to development tasks,
limited budgets, unreasonable expectations and schedules, fast-changing
technology,
Consistency: There should not be any inconsistency in the design.
Maintainability: The design should be so simple so that it can be easily
maintainable by other designers
Correctness: Software design should be correct as per requirement.
Completeness: The design should have all components like data structures,
modules, and external interfaces, etc.
Efficiency: Resources should be used efficiently by the program.
Flexibility: Able to modify on changing needs.
21. What is 'design review’? How design review can uncover deficiencies in SRS?
A design review is a technical meeting that is held at an early stage in the software development
process. A design review generally involves a presentation of a planned software design, at a time
early enough in the process to allow for changes is necessary, to an audience of stakeholders.
29
Ensuring that the design can be implemented in the required time
Ensuring that the design will have the needed interfaces with other systems
Ensuring the design will be consistent with technical goals of the organization
Ensuring the design will follow established software design principles
22. Explain 'Coupling' and 'Cohesion' in briefly with their objective in software
engineering.
Coupling
Coupling:- is the measure of the degree of interdependence between the modules. A good
software will have low coupling.
Types of Coupling:
Data Coupling: If the dependency between the modules is based on the fact that they
communicate by passing only data, then the modules are said to be data coupled. In data
coupling, the components are independent to each other and communicating through data.
Module communications don’t contain tramp data. Example-customer billing system.
Stamp Coupling in stamp coupling, the complete data structure is passed from one module
to another module. Therefore, it involves tramp data. It may be necessary due to efficiency
factors- this choice made by the insightful designer, not a lazy programmer.
Control Coupling: If the modules communicate by passing control information, then they are
said to be control coupled. It can be bad if parameters indicate completely different behavior
and good if parameters allow factoring and reuse of functionality. Example- sort function
that takes comparison function as an argument.
External Coupling: In external coupling, the modules depend on other modules, external to
the software being developed or to a particular type of hardware. Ex- protocol, external file,
device format, etc.
Common Coupling: The modules have shared data such as global data structures. The
changes in global data mean tracing back to all modules which access that data to evaluate
the effect of the change. So it has got disadvantages like difficulty in reusing modules,
reduced ability to control data accesses and reduced maintainability.
30
Content Coupling: In a content coupling, one module can modify the data of another module
or control flow is passed from one module to the other module. This is the worst form of
coupling and should be avoided.
Cohesion:
Cohesion is a measure of the degree to which the elements of the module are functionally
related. It is the degree to which all elements directed towards performing a single task are
contained in the component. Basically, cohesion is the internal glue that keeps the module
together. A good software design will have high cohesion.
31
Types of Cohesion:
Functional Cohesion: Every essential element for a single computation is contained in the
component. A functional cohesion performs the task and functions. It is an ideal situation.
Sequential Cohesion: An element outputs some data that becomes the input for other
element, i.e., data flow between the parts. It occurs naturally in functional programming
languages.
Communicational Cohesion: Two elements operate on the same input data or contribute
towards the same output data. Example- update record into the database and send it to the
printer.
Procedural Cohesion: Elements of procedural cohesion ensure the order of execution.
Actions are still weakly connected and unlikely to be reusable. Ex- calculate student GPA,
print student record, calculate cumulative GPA, print cumulative GPA.
Temporal Cohesion: The elements are related by their timing involved. A module connected
with temporal cohesion all the tasks must be executed in the same time-span. This cohesion
contains the code for initializing all the parts of the system. Lots of different activities occur,
all at init time.
32
Logical Cohesion: The elements are logically related and not functionally. Ex- A component
reads inputs from tape, disk, and network. All the code for these functions is in the same
component. Operations are related, but the functions are significantly different.
Coincidental Cohesion: The elements are not related(unrelated). The elements have no
conceptual relationship other than location in source code. It is accidental and the worst form
of cohesion. Ex- print next line and reverse the characters of a string in a single component.
objective
To Increase module reusability
To increase system maintainability due to logical changes in the domain affecting fewer modules
33
Backtracking:
This is additionally a reasonably common approach. during this approach, starting from
the statement at which an error symptom has been discovered, the source code is derived
backward till the error is discovered. sadly, because the variety of supply lines to be
derived back will increase, the quantity of potential backward methods will increase and
should become unimaginably large so limiting the utilization of this approach.
Cause Elimination Method:
In this approach, a listing of causes that may presumably have contributed to the error
symptom is developed and tests are conducted to eliminate every error. A connected
technique of identification of the error from the error symptom is that the package fault
tree analysis.
Program Slicing:
This technique is analogous to backtracking. Here the search house is reduced by process
slices. A slice of a program for a specific variable at a particular statement is that the set
of supply lines preceding this statement which will influence the worth of that variable
24. Explain the Entity - Relationship diagram & its notations in software design.
34
An E-R diagram constitutes of following Components
A. Entity: - Any real-world object can be represented as an entity about which data can be stored
in a database. All the real world objects like a book, an organization, a product, a car, a person are
the examples of an entity. Any living or non-living objects can be represented by an entity. An
entity is symbolically represented by a rectangle enclosing its name.
Strong entity: A strong entity has a primary key attribute which uniquely identifies each
entity. Symbol of strong entity is same as an entity.
Weak entity: A weak entity does not have a primary key attribute and depends on other
entity via a foreign key attribute.
B. Attribute: - Each entity has a set of properties. These properties of each entity are termed as
attributes. For example, a car entity would be described by attributes such as price, registration
number, model number, color etc. Attributes are indicated by ovals in an e-r diagram.
Simple attribute: - An attribute is classified as a simple attribute if it cannot be partitioned into
smaller components.
Composite attribute: - A composite attribute can be subdivided into smaller components which
further form attributes.
C. Relationships: - A relationship is defined as bond or attachment between 2 or more entities.
Normally, a verb in a sentence signifies a relationship.
35
25. Describe the different types of CASE tools used in Software Engineering
industry?
CASE stands for Computer Aided Software Engineering. It means, development
and maintenance of software projects with help of various automated software
tools.
It is the implementation of computer facilitated tools and methods in software
development? CASE is used to ensure a high-quality and defect-free software.
CASE ensures a check-pointed and disciplined approach and helps designers,
developers, testers, managers and others to see the project milestones during
development.
CASE Tools: -The essential idea of CASE tools is that in-built programs can help
to analyze developing systems in order to enhance quality and provide better
outcomes.
Types of CASE Tools:
Diagramming Tools: -
It helps in diagrammatic and graphical representations of the data and system processes.
It represents system elements, control flow and data flow among different software
components and system structure in a pictorial form.
For example, Flow Chart Maker tool for making state-of-the-art flowcharts.
Analysis Tools:-
It focuses on inconsistent, incorrect specifications involved in the diagram and data
flow. It helps in collecting requirements, automatically check for any irregularity,
imprecision in the diagrams, data redundancies or erroneous omissions.
Central Repository:-
It provides the single point of storage for data diagrams, reports and documents
related to project management.
Documentation Generators: -
It helps in generating user and technical documentation as per standards. It creates
documents for technical users and end users.
For example, Dioxygen, DrExplain, Adobe RoboHelp for documentation.
Code Generators: -
It aids in the auto generation of code, including definitions, with the help of the
designs, documents and diagrams.
26. Define Design Concepts and Design Objective in software development?
36
Software Design Concepts: -
Concepts are defined as a principal idea or invention that comes in our mind or in thought
to understand something. The software design concept simply means the idea or
principle behind the design. It describes how you plan to solve the problem of designing
software, the logic, or thinking behind how you will design software. It allows the
software engineer to create the model of the system or software or product that is to be
developed or built. The software design concept provides a supporting and essential
structure or model for developing the right software. There are many concepts of software
design and some of them are given below: -
Abstraction
A solution is stated in large terms using the language of the problem environment at the
highest level abstraction.
The lower level of abstraction provides a more detail description of the solution.
A sequence of instruction that contain a specific and limited function refers in a procedural
abstraction.
37
A collection of data that describes a data object is a data abstraction.
Architecture
Modularity
software is separately divided into name and addressable components. Sometime they are
called as modules which integrate to satisfy the problem requirements.
Modularity is the single attribute of a software that permits a program to be managed
easily.
Information hiding
Modules must be specified and designed so that the information like algorithm and data
presented in a module is not accessible for other modules not requiring that information.
Functional independence
The functional independence is the concept of separation and related to the concept of
modularity, abstraction and information hiding.
The functional independence is accessed using two criteria i.e. Cohesion and coupling.
Cohesion
Refinement
Refinement is a top-down design approach.
38
It is a process of elaboration.
A program is established for refining levels of procedural details.
A hierarchy is established by decomposing a statement of function in a stepwise manner
till the programming language statement are reached.
Refactoring
39
Select the least weight member minimize(weight)
41
conceptual model is called a logical data model. To implement one conceptual data
model may require multiple logical data models. Data modeling defines the
relationships between data elements and structures
42