0% found this document useful (0 votes)
100 views17 pages

What Do You Mean by Software?

Download as pdf or txt
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 17

What do you mean by software?

Software is nothing but a collection of computer programs and related documents that are intended to
provide desired features, functionalities and better performance.

Software products may be-

Generic – That means developed to be sold to a range of different customers.

Custom – That means developed for a single customer according to their specification.

Is there any difference between software engineering and computer science?


Justify your answer
There are difference between software engineering and computer science. Some difference are given
bellow:

Software engineering Computer Science


The software engineering is concerned with the The computer science deals with the theories and
practical problems of product software. methods used by the computers and software
systems.
Some knowledge of computer science is necessary Elegant theories cannot be completely applicable
for the software engineers to develop the to the software engineering when software
software. solution to complex or real world problem has to
be developed.
Focuses on how to design and build software in Focuses on the concept and technologies involved
teams. with how to make a compute do something

What is software engineering?

Or,

Give IEEE definition of software engineering.


Software engineering is a discipline in which theories, methods and tools are applied to develop
professional software product.

IEEE defines software engineering as following:

Software Engineering is the application of a systematic, disciplined, quantifiable approach to the


development, operation, and maintenance of software; that is, the application of engineering to
software.
The definition of software engineering is based on two terms:

Discipline: for finding the solution to the problem an engineer applies appropriate theories, methods
and tools.

Product: The software product gets developed after following systematic theories, methods and tools
along with the appropriate management activities.

State the attribute of good software.

Or,

State and explain some qualities that are used to assess software
Satisfying the user requirement is not the only goal of good software. There are some essential
attributes of good software and those are

Maintainability: Sometimes there is a need to make some modification in the existing software. A good
software is a software which can be easily modified in order to meet the changing needs of the
customer.

Usability: It is the ability of the software being useful. For making the software useful it is necessary that
is necessary that it should have proper GUI and documentation.

Dependability: The dependability is a property that includes reliability, security and safety of software.
In other words the developed software product should be reliable and safe to use; it should not cause
any damage or destruction.

Efficiency: The software should be efficient in its performance and it should not waste the memory.

What are the objectives of software engineering?


While developing software following are common objectives.

1. Satisfy user requirements.


2. High reliability.
3. Low maintenance costs.
4. Delivery on time.
5. Low production costs.
6. High performance.
7. Ease of reuse
What are the differences between software engineering and system
engineering?
System engineering Software engineering
System engineering is concerned with all aspects Software engineering is part if this process
of computer-based systems development concerned with developing the software
including hardware, software and process infrastructure, control, applications and databases
engineering. in the system.
System engineering is not part of software Software engineering is a part of system
engineering engineering.
The system engineering discipline covers the The software engineering discipline covers the
development of total systems, which may or may development of software systems.
not include software.
Focuses on transforming customer needs, Focuses on applying systematic, disciplined, and
expectations, and constraints into production quantifiable approaches to the development,
solutions and supporting those product solutions operation and maintenance of software.
throughout the product life cycle.

State and Explain the generic activities followed in all the software process.
A set of activities whose goal is the development or evolution of software is called Generic software
process. Generic activities in all software processes are:

— Specification-what the system should do and its development constraints


— Development-production of the software system
— Validation-checking that the software is what the customer wants
— Evolution-changing the software in response to changing demands.

Describe each step of System development life cycle (SDLC) / software


development life cycle.
The system development life cycle is the logical process of developing any system. Using SDLC one can
develop a system which satisfies customer needs, can be developed within the predefined schedule and
cost. Normally the system analyst makes use software development life cycle for developing the
information systems. The SDLC is a linier or sequential model in which output of previous phase is given
as input to next subsequence stage.

Various phases of software development life cycle are –

1. Initialization
2. Requirement gathering and analysis
3. Design
4. Coding or implementation
5. Maintenance

Each step is described following:

Initialization: This is the first stage in SDLC in which it is checked whether or not the system will be
within the given budget and whether or not the system will be developed in specific time. Sometime
preliminary survey is made to find the alternative solution. This is the phase of software development in
which the development process is planned out.

Requirement gathering and analysis: Once it is decided to develop the system, the first essential thing is
to gather and analyze the requirements of the system. The information domain, function, behavioral
requirements of the system are understood.

Design: After collecting and analyzing all the necessary requirements, the design architecture for the
system is prepared. Sometimes this system design can be discussed with the customer for ensuring his
needs and demands.

Coding: after getting approved system design, one can develop the code for the system using sme
suitable programming language. During coding the design is translated into machine readable form.

Testing: Testing is a phase that begins after the coding or the implementation phase. The purpose of
testing is to uncover errors, fix bugs and meet the customer requirements.

Maintenance: When the system is installed and put in practical use then errors may get introduced,
correcting such errors and putting it in use is the major purpose of the phase
Explain waterfall model with merits and demerits.
The waterfall model is also called linear-sequential model or classic life cycle model. It is the oldest
software paradigm. This model suggests a systematic, sequential approach to software development.

The software development starts with requirements gathering phase. Then progresses through analysis,
design, coding, testing and maintenance.

Requirement Gathering and Analysis: In this phase the basic requiremets of the system must be
understood by software engineer called software analyst. The information domain, function, behavioral
requirements of the system are understood. All these requirements are then well documented and
discussed further with the customer, for reviewing.

Design: Th design is an intermediate step between requiremetns analysis and coding.

Design focuses on program attributes such as-

 Data structure
 Software architecture
 Interface representation
 Algorithm details.

The requirements are translated in some easy to represent form using which coding can be done
effectively, and efficiently.

Coding: Coding is a step which design is translated into machine readable form.

Testing: Testing begins when coding is done. While performing testing the major focus is one logical
terminals of the software. The testing ensures execution of all paths, functional behaviors. The purpose
of testing is to uncover errors, fix, the bugs and meet the customer requirements.
Maintenance: Maintenance is the longest life cycle phase. When the system is installed and put in
practical use, then errors may get introduced, correcting such errors and putting it in use is the major
purpose. Similarly enhancing system’s service as new requirements are discovered is again.

Merits of waterfall model:

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


 It is easy to manage due to the rigidity of the model – each phase has specific deliverables and a
review process.
 In this model phases are processed and completed one at a time. Phases do not overlap.
 Waterfall model works well for smaller projects where requirements are very well understood.

Demerits of Waterfall model:

 Once an application is in the testing stage, it is very difficult to go back and change something
that was not well-thought out in the concept stage.
 No working software is produced until late during the life cycle.
 High amounts of risk and uncertainty.
 Not a good model for complex and object-oriented projects.
 Poor model for long and ongoing projects.
 Not suitable for the projects where requirements are at a moderate to high risk of changing.

What are the key challenges facing in software engineering?

The key challenges facing software engineering are:

 Copying with legacy: Old, valuable systems must be maintained and updated. Hardware is
evolved faster than software. Of original developer have moved on managing maintaining or
integrating of software becomes a critical issue.
 Heterogeneity challenge: Sometimes systems are distributed and include a mix of hardware and
software systems must cleanly integrate with other different software systems, built by
different organizations and teams using different hardware and software platforms.
 Delivery time challenge: There is increasing pressure for faster delivery of software. As the
complexity of systems that we develop increases, this challenge becomes harder.

Describe rational Unified process (RUP) model including core disciplines and
phases.
The Unified process is a framework for object oriented models. This model is also called rational Unified
process (RUP). There are 5 phases of unified process model and those are

 Inception
 Elaboration
 Construction
 Transition
 Production

Let us discuss all phases as following

Inception: In this phase there are two major activities that are conducted: communication and planning.
By having customer communication business requirements can be identified. Then a rough architecture
of the system is proposed. Using this rough architecture t then becomes easy to make a plan for the
project.

Elaboration: Elaboration cane be done using two activities: planning and modeling. In this phase using
case model, analysis model, design model, implementation model and development model an
architectural model has represented and a plan is created.

Construction: The main activity in this phase is to make the use cases operational. The analysis and
design activities that are started in elaboration phase are completed and a source code is developed.

Transition: In this phase all the activities that are required at the time of deployment of the software
product are carried out. Beta testing, user feedback report is used to remove defects. This makes the
software more usable at the time of release.
Production: This is the final phase of this model. In this mainly maintenance activities are conducted in
order to support the user in operational environment.

Explain incremental software process model with merits and demerits.


The incremental model has same phase that are in waterfall model. But it is iterative in nature. The
incremental model has following phases.

1. Analysis
2. Design
3. Code
4. Test

The incremental model delivers series of releases to the customer. These releases are called increments.
More and more functionality is associated with each increment. The first increment is called core
product. In this release the basic requirements are implemented and then in subsequent increments,
new requirements are added.

[Add description of phases from waterfall model]

Advantages of Incremental model:

 Generates working software quickly and early during the software life cycle.
 This model is more flexible – less costly to change scope and requirements.
 It is easier to test and debug during a smaller iteration.
 In this model customer can respond to each built.
 Lowers initial delivery cost.
 Easier to manage risk because risky pieces are identified and handled during it’d iteration.

Disadvantages of Incremental model:

 Needs good planning and design.


 Needs a clear and complete definition of the whole system before it can be broken down and
built incrementally.
 Total cost is higher than waterfall.

Write down the principle of agile process method.

Discuss about the professional and ethical responsibilities of a software


engineer.
Software engineering involves wider responsibilities than simply the application of technical skills.
Software engineers must behave in an honest and ethical responsible way if they are to be respected as
professionals. Ethical behavior is are than simply upholding the law. Some issues of professional and
ethical responsibilities are

 Confidentiality: Engineers should normally respect the confidentiality of their employers or


clients irrespective of whether or not a formal confidentiality agreement has been signed.
 Competence: Engineers should not misrepresent their levels of competence. They should not
knowingly accept work which is outwith their competence.
 Intellectual property rights: Engineers should be aware of local laws governing the use of
intellectual property such as patents, copyright etc. They should be careful to ensure that the
intellectual property of employers and clients is protected.
 Computer misuse: Software engineers should not use their technical skills to misuse other
people’s computers. Computer misuse ranges from relatively trivial to extremely serious.

Chapter – 2

Write down the umbrella activities of software engineering.


Umbrella activities: The umbrella activities are some steps in software process which focuses on project
management, tracking and control. The umbrella activities are:
1. Software project tracking and control: This is an activity in which software team can assess
progress and take corrective action to maintain schedule.
2. Risk management: The risks that may affect project outcomes or quality can be analyzed.
3. Software quality assurance: These activities required to maintain software quality.
4. Formal technical reviews: It is required to assess engineering work products to uncover and
remove errors before they propagate to next activity.
5. Software configuration management: managing of configuration process when any changes in
the software occur.
6. Work product preparation and production: The activities to create models, documents, logs,
forms and lists are carried out.
7. Reusability management: It defines criteria for work product reuse.
8. Measurement: In this activity, the process can be defined and collected. Also project and
product measures are used to assist he software team in delivering the required software.

Brief the process activities of requirements elicitation and analysis with figure.
The requirement elicitation means requirements discovery. This involves technical staff working with
customers to find out about the application domain, the services that the system should provide and the
system’s operational constraints. Process activities of requirement elicitation and analysis are as
following:
 Requirements discovery: Interacting with stakeholders to discover their requirements. Domain
requirements are also discovered at this stage.
 Requirements classification and organization: Groups related requirements and organizes them
into some class.
 Prioritization and negotiation: Prioritizing requirements and resolving requirements conflicts.
 Requirements documentation: Requirements are documented and input into the next round of
the spiral.

Explain non-functional and functional requirements of software.

Or,

What are the different types of user requirement process?

User requirements are two of types; functional and non-functional.

Non-functional requirement: The non-functional requirements define system properties and constraints.
Various properties of a system can be: Reliability, response time, storage requirements. And constraints
of the system can be Input and output device capability, system representations. Non-functional
requirements are three of types.

Product requirement: These requirements specify how a delivered product should behave in a particular
way.

Organizational requirements: The requirements which are consequences of organizational policies and
procedures come under this category.

External requirements: These requirements arise due to the factors that are external to the system and
its development process.

Functional requirement: Functional requirement should describe all the required functionality system
services. Functional requirements are heavily dependent upon the type of software expected users and
the type of system where the software is used. This may be high-level statements of what the system
should do but functional system requirements should describe the system services in detail.

State and explain maturity levels in SEIs CMM


The Software Engineering Institute (SEI) has developed a process model emphasizing process maturity. It
is called capability maturity model (CMM). This is used in assessing how well an organization’s processes
allow to compete and manage new software projects.

There are 5 levels in SEIs capability maturity model (CMM) to measure quality. These are:

 Initial
 Repeatable
 Defined
 Managed
 Optimizing

These levels are described following:

Initial: Few processes are defined and individual efforts are taken.

Repeatable: To track cost schedule and functionality basic project management processes are
established. Depending on earlier successes of projects with similar applications, necessary discipline
can be repeated.

Defined: The process is standardized, documented and followed in developing and supporting software.

Managed: Both the software process and product are quantitatively understood and controlled using
detailed measures.

Optimizing: Establish mechanisms to plan and implement change.

What are the objectives of software design?


Design is essentially the bridge between requirements specification and the final solution for satisfying
the requirements. The objective of the design process is to produce a model or representation of a
system, which can be used later to build that system. The produced model is called the design of the
system. The design of a system is essentially a blueprint or a plan for a solution for the system. The
purpose of the software design phase is to specify the components for this transformation function, so
that each component is also a transformation function.

How do we transform an informal design to a detailed design?


Software designer do not arrive at a finished design document immediately but developed the design
iteratively through a number of different phases. The design process involves adding details as the
design is developed with consistent backtracking to correct earlier, less formal, designs. The starting
point is an informal design which is refined by adding information to make it consistent and complete
detailed design.
How is software design different from coding?
“Design is not coding and coding is not design” this is one of the design principles that are to be applied
while designing the software systems. This means that level of abstraction of design model should be
higher that the source code. At the time of coding, whatever design, decisions are made can be
implemented. Hence design should be such that it can be transformed into source code. Similarly,
during coding it is not desired to do the design to fulfill the requirements. This is how software design is
different from coding.

What problem arises if two modules have high coupling?


Coupling means the interconnection of dissimilar modules with each other or we can say, it tells about
the interrelationship of dissimilar modules of a system. A system with high coupling means there are
strong interconnections among its modules. If two modules are concerned in high coupling, it means
their interdependence will be very high. Any changes applied to single module will affect the
functionality of the other module. As per the type of coupling, the test coverage and structural analysis
becomes more difficult especially when one component is having any issue or problem other module
also faces some problem.

What are the factors consider in the case of requirement validation?


Requirement validation is a process in which it is checked that whether the gathered requirements
represent the same system that customer really wants. Following factors are consider in requirement
validation:

 Validity: Does the system provide the functions which best support the customer’s needs?
 Consistency: Are there any requirements conflicts?
 Realism: Can the requirements be implemented according to budget technology?
 Verifiability: Can the requirements be checked?
Explain different types of design principles of software.
Software design principles represent a set of guidelines that helps us to avoid having a bad design.
General design principles are

1. Modularization: Modularization is the process of continuous decomposition of the software


system until fine-grained components are created.
2. Abstraction: Abstraction is a view of an object that focuses on the information relevant to a
particular purpose and ignores the remainder of the information.
3. Encapsulation: Encapsulation deals with providing access to services of abstracted entities by
exposing only the information that is essential to carry out such services while hiding details of
how the services are carried out.
4. Coupling: Coupling refers to the manner and degree of interdependence between software
modules. Measurement of dependency between units.
5. Cohesion: The manner and degree to which the tasks performed by single software modules
related to one another. Measures how well design units are put together for achieving a
particular tasks.
6. Separation of interface and implementation: The principle involves defining a component by
specifying a public interface that is separate from the details of how the component is realized.
7. Completeness and sufficiency: Completeness measures how well designed units provide the
required services to achieve the intent. Sufficiency measures how well the designed units are at
providing only the services that are sufficient for achieving the intent.

Define requirement engineering.


Requirement engineering is the process of establishing the services that the customer requires from a
system and the constraints under which it operates and is developed.

What do you know about software requirements specification (SRS)?


The software requirements document is the specification of the system. It should include both a
definition and a specification of requirements. It is not a design document. As far as possible, it should
set of what the system should do rather than how it should do it. The system requirements provide a
basis for creating the software requirements specification. The SRS is useful in estimating cost, planning
team activities, performing tasks and tracking the team’s progress throughout the development activity.
The standard template for writing SRS is given below:
Document Title
Author(s)

Affiliation

Address

Date

Document Version

Why software architecture is needed?


The software architecture of a program or computing system is the structure or structures of the
system, which comprise software elements, the externally visible properties of those elements and the
relationships among them. Here are the three main reasons why good software architecture is so
important when it comes to development.

A basis for communication: Software architecture is a sort of plan of the system for the
understanding and the communication between all the stakeholders. In fact, it makes it easier to
understand the whole system and therefore makes the decisions process more efficient.

The earliest decisions: The first decisions taken are at this stage. Those early decisions have a huge
importance on the rest of the project and become very difficult to change the more we advance in the
process

Transferability of the model: Software architecture defines the model of the software and how it will
function. Having it makes it possible to reuse this model for other softwares; code can be reused as well
as the requirements. All the experience we get while doing that architecture is also transferred. This
mean that we know and can reuse the consequences of the early decisions we took on the first place.

In other words, the architecture will define the problems you might encounter when it comes to
implementation. It also shows the organizational structure and makes it much easier to take decisions
and manage all sort of change.

Describe layer based software architecture model.


Software engineering is a layered technology. Any software can be developed using these layered
approaches. Various layers on which the technology is based are quality focus layer, process layer,
method layer, tools layer.

Quality focus: A disciplined quality management is backbone of software engineering technology.

Process layer: Process layer is a foundation of software engineering. Basically, process defines the
framework for timely delivery of software.

Method layer: In Method layer the actual method of implementation is carried out with the help of
requirement analysis, designing, coding using desired programming constructs and testing.

Tools: Software tools are used to bring automation in software development process.

What do you mean by CASE? Show with diagram the basic building blocks of
CASE.
CASE: The Computer Aided Software Engineering (CASE) tools automate the project management
activities, manage all the work products. The CASE tools assist to perform various activities such as
analysis, design, coding and testing.

Basic Building Blocks:

CASE

Integration
Framework

Probability Services

Operating System

Hardware Platform

Environment Architecture
There are six blocks in building structure of CASE. Each building blocks forms a foundation for the next,
with tools sitting at the top of the heap. Each blocks are described below:

Environment Architecture & Hardware Platform: The environment architecture composed of the
hardware platform and system support. It lays the ground work for CASE.

Operating System: Operating system supports database and object management services.

Probability Services: This allows CASE tools and their integration framework to migrate across different
operating systems and hardware platforms without significant adoptive maintenance.

Integration framework: This is specialized programs allowing CASE tools to communicate with one
another.

All of these blocks build CASE tools.

Mention CASE tools with brief description.


CASE: The Computer Aided Software Engineering (CASE) tools automate the project management
activities, manage all the work products. The CASE tools assist to perform various activities such as
analysis, design, coding and testing. Software engineers and project managers make use of CASE tools.
The use of CASE tools in the software development process reduces the significant amount of efforts.
Case tools help software engineers to produce the high quality software efficiently.

The CASE tools are classified using three approaches. Fuggetta has suggested a classification of CASE
tools as

1. Tools
2. Workbenches
3. Environments
 The tools may be general purpose tools for checking the consistency in the design, compiling
the program or result.
 The CASE tools for workbenches are for supporting various activities of software
development life cycle
 The CASE tools for environments support the substantial part of the software process. It
generally includes the integrated environment.

Explain each term of the CASE life cycle in an organization.

Suggest potential benefits and practical problems of integrating CASE tools.

You might also like