0% found this document useful (0 votes)
12 views55 pages

Imp Que

The document discusses key topics in software engineering including: 1) It defines software engineering and differentiates it from system engineering, describing software engineering as applying scientific and practical knowledge to design, build, maintain and improve software. 2) It covers different types of software products and applications, as well as software engineering ethics, processes, activities and coping with change. 3) It also examines agile software development methods, system modeling, design and implementation issues, testing, and system dependability and security.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views55 pages

Imp Que

The document discusses key topics in software engineering including: 1) It defines software engineering and differentiates it from system engineering, describing software engineering as applying scientific and practical knowledge to design, build, maintain and improve software. 2) It covers different types of software products and applications, as well as software engineering ethics, processes, activities and coping with change. 3) It also examines agile software development methods, system modeling, design and implementation issues, testing, and system dependability and security.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 55

1

Software Engineering
1] Introduction
Q-1] What is Software Engineering?
Q-2] Difference between Software Engineering and system engineering?
Q-3] Explain types of Software Products.
Q-4] Explain types of Software Application.
Q-5] Explain Software Engineering ethics.
Q-6] Explain software process and activities.
Q-7] Explain Coping with change.

Q-8] What is software process models.

Q-9] Explain rational unified process model

2] Agile Software Development


Q-1] Agile Methods and principles
Q-2] Plan driven and agile development
Q-3] Extreme Programming
Q-4] Agile Project management
Q-5] The scrum process
Q-6] Scaling agile methods
Q-7] Functional and non-functional requirements
Q-8] Software requirement document
Q-9] Requirement Specification
Q-10] Requirement Engineering Processes
Q-11] Requirement elicitation and analysis
Q-12] Requirement Validation
Q-13] Requirement Management

3] System Modelling
Q-1] Explain Context model with example.
2

Q-2] Explain Interaction Model with example.


Q-3] Explain Structural model in details.
Q-4] Explain Model Driven Engineering.
Q-5] Explain:
1] Layered Architecture 2] Repository Architecture
3] Client-Server Architecture
Q-6] Explain Application Architecture.

4] Design and Implementation Issues


Q-1] Explain:
1] Student Management System 2] Weather Information System
Q-2] Explain Design Patterns.
Q-3] Explain Implementation Issues.

5] Testing
Q-1] What is Software Testing?
Q-2] Difference between verification and validation?
Q-3] Explain model of software testing process?
Q-4] Explain Development Testing?
Q-5] Explain test driven development?
Q-6] Explain Release testing?
Q-7] Explain user testing.

6] System Dependability and Security


Q-1] Explain Dependability Properties in detail?
Q-2] Explain Availability.
Q-3] Explain Reliability.
Q-4] Explain Safety terminology.
Q-5] Explain Security terminology.
Q-6] Explain Design guidelines.
3

1] INTRODUCTION

Q-1] What is Software Engineering?


Software Engineering:
The term software engineering is the product of two words software, and engineering.

1] The software is a collection of computer programs.

2] Engineering is the application of scientific and practical knowledge to design, build, maintain,
and improve frameworks.

“Software Engineering is an engineering discipline that is concerned with all aspects of


software production.”
Characteristics of a good software engineer:

• Good technical knowledge of the project.


• Good programming abilities.
• Good communication skills. Intelligence.

Need of Software Engineering:

1. Huge Programming
2. Cost
3. Dynamic Nature
4. Quality Management

Attributes of good software:


1] Secure
2] It should be platform independent
3] It should be maintainable
4] It should be usable

Challenges facing by software engineering:


1] coping with increasing diversity
2] developing the trustworthy software

Application:
4

System Software
System Software is used to manage the computer resources and support the execution of
application programs.
E.g., operating systems, compilers

Application Software
Application software is designed to fulfil the user’s requirement by interacting with the user
directly.

Artificial Intelligence Software –


Software like expert systems, pattern recognition software, artificial neural networks, etc.

Scientific Software –
Scientific software satisfies the needs of a scientific user to perform enterprise-specific tasks.
E.g., MATLAB, AUTOCAD etc.

Q-2] Difference between Software Engineering and system engineering?

Sr. System Engineering Software Engineering


No.

A Software Engineer is a person who


A System Engineer is a person who deals with the designing and developing
deals with the overall management of good quality of software applications.
1
engineering projects during their life
cycle.

System Engineers follows an Software Engineers follows a


2
interdisciplinary approach. disciplined approach.

software engineering can learn from system engineering can learn from
3
system engineering. software engineering.

System engineers mostly focus on Software engineers mostly focus on


4
users and domains. developing good software.

Systems Engineering Methods are Software Engineering Methods are


5 Stakeholder Analysis, Requirements Modelling, Agile Methods etc
Engineering etc.

Their salary packages are They receive good amount of salary.


6
comparatively less.
5

Q-3] Explain types of Software Products.


1] Software engineers are concerned with developing software products.

2] Those products can be sold to a customer.

There are two kinds of software product:

1] Generic products-

These products are stand-alone software products that are produced by a development
organization and sold on the open market to any customer who is able to buy them.

Example- Antivirus

1] net protector 2] quick heal

2] Customized products-

These are software products that are commissioned by and developed for a particular
customer.

Example- ERP software system

-VmEdulife company in pune

Q-4] Explain types of Software Application.


1. Stand-alone applications- These are application systems that run on a personal computer
or apps that run on a mobile device.

Examples, PC, computer

2. Interactive transaction-based applications- These are applications that execute on a


remote computer and that are accessed by users from their own computers, phones, or tablets.

3. Embedded control systems- These are software control systems that control and manage
hardware devices.

4. Batch processing systems- These are business systems that are designed to process data in
large batches.

5. Entertainment systems- These are systems for personal use that are intended to entertain
the user. Most of these systems are games.
6

6. Systems for modelling and simulation- These are systems that are developed to model
physical processes or situations.
Q-5] Explain Software Engineering ethics.
As a software engineer, you must behave in an ethical and morally responsible way if you are
to be respected as a professional engineer.
Some of professional responsibility:

1. Confidentiality- You should respect the confidentiality of your employers or clients.


2. Competence- You should not misrepresent your level of competence.
3. Intellectual property rights- You should be careful to ensure that the intellectual property
of employers and clients is protected.
4. Computer misuse- You should not use your technical skills to misuse other people’s
computers.

The software engineer should stick to the following 8 number principle:


1. PUBLIC – Software engineers shall act consistently with the public interest.
2. CLIENT AND EMPLOYER – Software engineers shall act in a manner that is in the best
interests of their client and employer.
3. PRODUCT – Software engineers shall ensure that their products and related modifications
meet the highest professional standards possible.
4. JUDGMENT – Software engineers shall maintain integrity and independence in their
professional judgment.
5. MANAGEMENT – Software engineer should manage effectively the software development
and maintenance processes.
6. PROFESSION – Software engineers shall advance the integrity and reputation of the
profession consistent with the public interest.
7. COLLEAGUES – Software engineers shall be fair to and supportive of their colleagues.
8. SELF – Software engineers shall participate in lifelong learning regarding the practice of their
profession and shall promote an ethical approach to the practice of the profession.

Q-6] Explain software process and activities.


A software process is a set of related activities that leads to the production of a software
system. four fundamental software engineering activities-

1. Software specification- In this activity the customer and software engineer define the
software that is the produce and specify the constraint on its operation.
2. Software development- In this activity the software is designed and programmed by
software development.
3. Software validation- In this activity the software us checked to ensure that it is what the
customer requires.
7

4. Software evolution- In this activity the software is modifying to reflect changing customer
and market requirements.
Q-7] Explain Coping with change.

Change is inevitable in all large software projects.

There are two ways of coping with change.

1] System Prototyping:

The System Prototyping is the Process of building model of a system. It helps the system
designed to build an information System that is easy to manipulate for end users

Advantages.

1] It reduces the development Time

2] reduces development Cost

3] It requires the end user involvement

Incremental Delivery:

It is an approach to the software development where some of developed increments are


delivered to the end customer and deploy for use.

In this, the customer identifies the services to the Provide by Software system. Then they
identify which of services are most important and which are less important to that.

Q-8] What is software process models.

A software process model is a simplified representation of a software process. 1]

The waterfall model-


8

The stages of the waterfall model:

1. Requirements analysis and definition- In this stage software system’s services, constraints,
and goals are established by consultation with system users.

They are then defined in detail and serve as a system specification.

2. System and software design- The systems design process allocates the requirements to
either hardware or software systems. It establishes an overall system architecture.

Software design involves identifying and describing the fundamental software system and
their relationships.

3. Implementation and unit testing- In this stage, the software design is realized as a set of
programs or program units.

Unit testing involves verifying that each unit meets its specification.

4. Integration and system testing- In this stage, the individual program units or programs are
integrated and tested as a complete software system.

After testing, the software system is delivered to the customer.

5. Operation and maintenance- In this stage the software system is installed and put into
practical use.

Maintenance involves correcting the errors.

2] Incremental development model-


9

1] Incremental development is based on the idea of developing an initial implementation,


getting feedback from users and others, and evolving the software through several versions
until the required system has been developed.

2] Specification, development, and validation activities are interleaved rather than separate,
with rapid feedback across activities.

3] Reuse oriented software process model-

In this model there are various stages-

1] Component analysis stage-


In this stage Given the requirements specification, a search is made for components to
implement that specification.
2] Requirements modification stage-
10

In this stage the given Requirements are modified to reflect the available components.
Where modifications are impossible, the component analysis activity may be re-entered to search
for alternative solutions.
3] System design with reuse –
In this stage the framework of the system is designed or an existing framework is reused.
4] Development and integration-
The Software that cannot be externally procured is developed, and the components and
COTS systems are integrated to create the new system.

Q-9] Explain rational unified process model


11

4] Transition Phase-
The final phase of RUP model is concerned with moving the software system from the
development area to the end user area.
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

5] Testing

Q-1] What is Software Testing?


Software Testing is a method to check whether the actual software product matches
expected requirements and to ensure that software product is Defect free.
1] The purpose of software testing is to identify errors and missing requirements in actual
requirements.
2] Testing is important because software bugs could be expensive or even dangerous.
Benefits of Software Testing:

• Cost-Effective
• Security
• Product quality
• Customer Satisfaction

Types of Software Testing:

• Functional Testing
• Non-Functional Testing or Performance Testing
• Maintenance

Q-2] Difference between verification and validation?

Sr. Verification Validation


No.

It is a process of checking if a product is


It is a process of ensuring that the product
developed as per the instruction.
1 meets the needs and expectation of
customers.

It tests the requirements, design, It tests the functionality and reliability of


2 architecture and code of the software the end product.
product.

3 It does not require executing the code. It requires executing the code.

4 It comes before validation. It comes after verification.

5 It is low level exercise. It is high level exercise.

6 Verification is the static testing. Validation is the dynamic testing.


42

Target is application and software Target is actually product.


7
architecture.

Sr. Verification Validation


No.

It is computer-based execution of program.


It is human based checking of documents
8
and files.

Q-3] Explain model of software testing process?

Above figure shows abstract model of the traditional testing process.

1] It is used in plan driven development.


2] In this test data are the inputs that have been devised to test a system.
3] Test data can sometimes be generated automatically.

The software testing process has three stages:


1] Development testing- Where the system is tested during development to discover bugs.
2] Release testing- Where a separate testing team tests a complete version of system before
it released to users.
3] User testing-Where users of system test the system in their own environment.

Q-4] Explain Development Testing?


43
Development Testing – It is a method of applying testing practices consistently
throughout the software development life cycle process.
Development testing includes all testing activities that are carried out by the team
developing the system.
1] Unit testing
2] Component testing
3] System testing

1] Unit Testing
Unit Testing is a software testing technique which individual units of software i.e.,
group of computer program modules, usage procedures, and operating procedures are tested
to determine whether they are suitable for use or not.

Objective of Unit Testing:

1. To isolate a section of code.


2. To verify the correctness of the code.
3. To test every function and procedure.
4. To help with code reuse.

Types of Unit Testing:

1] Manual
2] Automated.

Workflow of Unit Testing:


44

Unit Testing Techniques:

1. Black Box Testing


2. White Box Testing
3. Gray Box Testing

Unit Testing Tools:

1. Jtest
2. Junit
3. NUnit
4. EMMA
5. PHPUnit

Advantages of Unit Testing:

1. Unit Testing allows developers to learn what functionality is provided by a unit


and how to use it to gain a basic understanding of the unit API.
2. Unit testing allows the programmer to refine code and make sure the module
works properly.

2] Component Testing
Component Testing is a type of software testing in which usability of each individual
component is tested. Along with the usability test, behavioural evaluation is also done for
each individual component.
Objective of Component Testing:

• To verify the input and output behaviour of the system.


• To check the usability of each component.
• To test the user comprehensibility of the software.

Component Testing Process:


45

1. Requirement Analysis: User requirement related to each component is observed.


2. Test Planning: Test is planned according to the analysis of the requirements of the
user.
3. Test Specification: In this section it is specified that which test case must be run and
which test case should be skipped.
4. Test Execution: Once the test cases are specified according to the user requirements,
test cases are executed.
5. Test Recording: Test recording is the having record of the defects that are detected.
6. Test Verification: Test verification is the process to determine whether the product
meet specification.
7. Completion: This is the last phase of the testing process in which the result is
analysed.

3] System Testing
System Testing is a type of software testing that is performed on a complete integrated
system to evaluate the compliance of the system with the corresponding requirements.

System Testing Process

Types of System Testing:


46
• Performance Testing
• Load Testing
• Stress Testing
• Scalability Testing

Tools used for System Testing:


1. JMeter
2. Gallen Framework
3. Selenium

Advantages of System Testing:


• Less programming knowledge.
• Test the entire software
Q-5] Explain test driven development?
1] Test Driven Development (TDD) is a software development practice that focuses on
creating unit test cases before developing the actual code.
2] It is an iterative approach that combines programming, the creation of unit tests, and
refactoring.

Three phases of Test-Driven Development:


1] Create precise tests: Developers need to create precise unit tests to verify the
functionality of specific features.
2] Correcting the Code: Once a test fails, developers need to make the minimal changes
required to correct the code so that it can run successfully when re-executed.
47
3] Refactor the Code: Once the test runs successfully, check for redundancy or any
possible code optimizations to enhance overall performance.

There are two levels of TDD:

1] Acceptance TDD (ATDD)

2] Developer TDD (DTDD)

Q-6] Explain Release testing?


1] Release testing is the process of testing a particular release of a system that is intended for
use outside of the development team.
2] The primary goal of the release testing process is to convince the customer of the system
that it is good enough for use.
3] Release testing is a form of system testing.

1] Requirements-based testing:
It is a testing approach in which test cases, conditions and data are derived from
requirements.
Stages in requirement-based testing-
1] Defining test completion criteria
48
2] Design test cases
3] Execute tests
4] Verify test
5] Track and manage defects
2] Scenario testing
It a method in which actual scenarios are used for tasting the software application
instead of test cases.
Test scenarios are created for following reasons-
1] ensures complete test coverage
2] real use of software application

3] Performance testing
It is a software testing process used for testing the speed, response time, reliability,
scalability of software application under particular workload.
Performance testing is checking a software program-
1] speed- determines application responds quickly
2] scalability- determines maximum user load the software application can handle
3] stability- determines if the application is stable under varying loads

Q-7] Explain user testing.


User or customer testing is a stage in the testing process in which users or customers
provide input and advice on system testing
Types of user testing include:
1] Alpha testing-
1] Alpha Testing is a type of software testing performed to identify bugs before
releasing the product to real users or to the public.
2] alpha testing involves both the white box and black testing
3] alpha testing is performed at developer site
4] alpha testing requires a testing lab.
5] alpha testing may require long execution cycle Alpha Testing Process:

1. Review the design specification and functional requirements.


2. Develop comprehensive test cases and test plans.
3. Execute test plan
4. Log defects
5. Retest once the issues have been fixed
49

Phases of Alpha Testing:

1st Phase: The first phase of testing is done by in-house developers or software engineers.

2nd Phase: The second phase of alpha testing is done by software quality assurance staff for
additional testing in an environment.

Advantages of Alpha Testing:

• Software’s reliability
• Free up your team for other projects.

2] Beta testing-
1] Beta Testing is performed by real users of the software application in a real
environment.
2] beta testing uses black box testing
3] beta testing is performed at end user of the product
4] beta testing doesn’t require a testing lab
5] beta testing requires only few weeks of execution Types of Beta Testing:

1. Traditional Beta testing


2. Public Beta Testing
3. Technical Beta Testing

Advantages of Beta Testing:

• It reduces product failure risk via customer validation.


• Beta Testing allows a company to test post-launch infrastructure.
50
3] Acceptance testing
Acceptance testing, a testing technique performed to determine whether or not the
software system has met the requirement specifications.
There are various forms of acceptance testing:
• User acceptance Testing
• Business acceptance Testing
• Alpha Testing
• Beta Testing

Stages of acceptance testing process-


1] define acceptance criteria
2] plan acceptance testing
3] derive acceptance tests
4] run acceptance tests
5] negotiate test results
6] reject/accept system.

6] System Dependability and Security


51
Q-1] Explain Dependability Properties in detail?
Dependability is the ability to provide services that can defensibly be trusted within
time-period.
1] The system attributes that lead to dependability.
2] For many computer-based systems, the most important system property is the
dependability of the system.
3] Dependability covers the related systems attributes of reliability, availability and security.
These are all interdependent.

Principal dependability properties:


1] Availability: The ability of system to deliver services when requested.
2] Reliability: The ability of system to deliver services as specified.
3] Safety: The ability of system to operate without catastrophic failure.
4] Security: The ability of system to protect itself against accidental or deliberate intrusion.

Q-2] Explain Availability.

Availability is the probability that the system is operational, and ready to use.

OR

Availability, also known as operational availability, is the ability of a system to deliver

required services that are requested to do so.

1] It can also be described as the time an asset is expected to function.


2] Availability ensures that an application or service is continuously available to its users.

3] 3] Service availability can be quantified via a simple equation as service uptime


52
divided by the sum of service uptime and service downtime. Availability =

Uptime/ Uptime + Downtime Here’s the availability formula:

Q-3] Explain Reliability.

1] Reliability is the probability a system will produce the correct output, which is not

the same as being available.

2] Reliability can only be defined formally with respect to a system specification i.e., a

failure is a deviation from a specification.

3] Usually, an increase in reliability means increased availability This is a

simplified way to calculate reliability:

4] Improving reliability means avoiding failures or malfunctions with customised

plans, which is also known as reliability cantered maintenance.

Improve the reliability of system:

1] Fault avoidance

Development technique are used that either minimise the possibility of mistakes or trap

mistakes before they result in the introduction of system faults.

2] Fault detection and removal

Verification and validation techniques that increase the probability of detecting and

correcting errors before the system goes into service are used.

3] Fault tolerance
53
Run-time techniques are used to ensure that system faults do not result in system

errors and/or that system errors do not lead to system failures.

Reliability measurement:

Statistical testing for reliability measurement

Q-4] Explain Safety terminology.


1] Safety is a property of a system that reflects the system’s ability to operate,
normally or abnormally, without danger of causing human injury or death and
without damage to the system’s environment.
2] It is important to consider software safety as most devices whose failure is
critical now incorporate software-based control systems.
Safety criticality:
1] Primary safety-critical systems-
This is software that is embedded as controller in a system.
Example is the insulin pump control system.
2] Secondary safety-critical systems-
This is software that can indirectly result in an injury.
Safety Cases-

• System description
• Safety requirement
• Design analysis
• Verification and validation

Q-5] Explain Security terminology.


1] Security is a property that denotes the ability for a system to shield itself from attack.
2] Security is an essential pre-requisite for availability, reliability and safety.
54
Dimensions of security:

• Confidentiality- Access is only granted to authorized users.


• Integrity- You can’t alter data if you are not the owner.
• Availability- The data in the system is consistently accessible.

Three levels of security:

• Infrastructure security is concerned with maintaining the security of all systems


and networks that provide an infrastructure.
• Application security is concerned with the security of individual application
systems or related groups of systems.
• Operational security is concerned with the secure operation and use of the
organization's systems.

Four types of security threats:

• Interception threats that allow an attacker to gain access to an asset.


• Interruption threats that allow an attacker to make part of the system unavailable.
• Modification threats that allow an attacker to tamper with a system asset.
• Fabrication threats that allow an attacker to insert false information into a
system.

Security risk assessment:

Q-6] Explain Design guidelines.


Design guidelines encapsulate good practice in secure systems design.
Design guidelines here are applicable during software specification and design.
Base decisions on an explicit security policy-
Define a security policy for the organization that sets out the fundamental security
requirements that should apply to all organizational systems.
Avoid a single point of failure-
Ensure that a security failure can only result when there is more than one failure in
security procedures. For example, have password and question-based authentication.
55
Fail securely-
When systems fail, for whatever reason, ensure that sensitive information cannot be
accessed by unauthorized users even although normal security procedures are
unavailable.
Balance security and usability-
Try to avoid security procedures that make the system difficult to use. Sometimes
you have to accept weaker security to make the system more usable.
Log user actions-
Maintain a log of user actions that can be analysed to discover who did what. If users
know about such a log, they are less likely to behave in an irresponsible way.
Use redundancy and diversity to reduce risk-
Keep multiple copies of data and use diverse infrastructure so that an infrastructure
vulnerability cannot be the single point of failure.
Specify the format of all system inputs-
If input formats are known then you can check that all inputs are within range so that
unexpected inputs don't cause problems.
Compartmentalize your assets-
Organize the system so that assets are in separate areas and users only have access to
the information that they need rather than all system information.
Design for deployment-
Design the system to avoid deployment problems
Design for recoverability-
Design the system to simplify recoverability after a successful attack.

You might also like