Professional Documents
Culture Documents
Assignment PGD-2103: Software Engineering
Assignment PGD-2103: Software Engineering
Assignment PGD-2103: Software Engineering
Software Engineering
USOL-PGDCA
Ans. In earlier times, software was simple in nature and hence, software development was a
simple activity. However, as technology improved, software became more complex and
software projects grew larger. Software development now necessitated the presence of a team,
which could prepare detailed plans and designs, carry out testing, develop intuitive user
interfaces, and integrate all these activities into a system. This new approach led to the
emergence of a discipline known as software engineering.
Software engineering provides methods to handle complexities in a software system and
enables the development of reliable software systems, which maximize productivity. In addition
to the technical aspects of the software development, it also covers management activities
which include guiding the team, budgeting, preparing schedules, etc. The notion of software
engineering was first proposed in 1968. Since then, software engineering has evolved as a
full-fledged engineering discipline, which is accepted as a field involving in-depth study and
research. Software engineering methods and tools have been successfully implemented in
various applications spread across different walks of life.
Software is defined as a collection of programs, documentation and operating procedures.
The Institute of Electrical and Electronic Engineers (IEEE) defines software as a 'collection
of computer programs, procedures, rules and associated documentation and data.' It possesses
no mass, no volume, and no colour, which makes it a non-degradable entity over a long period.
Software does not wear out or get tired.
Software controls, integrates, and manages the hardware components of a computer system. It
also instructs the computer what needs to be done to perform a specific task and how it is to be
done. For example, software instructs the hardware how to print a document, take input from
the user, and display the output.
Computer works only in response to instructions provided externally. Usually, the instructions
to perform some intended tasks are organized into a program using a programming language
like C, C++, Java, etc., and submitted to computer. Computer interprets and executes these
instructions and provides response to the user accordingly. A set of programs intended to
provide users with a set of interrelated functionalities is known as a software package. For
example, an accounting software package such as Tally provides users the functionality to
perform accounting-related activities.
Software Characteristics
Different individuals judge software on different basis. This is because they are involved with
the software in different ways. For example, users want the software to perform according to
their requirements. Similarly, developers involved in designing, coding, and maintenance of the
software evaluate the software by looking at its internal characteristics, before delivering it to
the user. Software characteristics are classified into six major components.
Ans. A set of fundamental principles can act as an enabler in the establishment of a discipline;
however, software engineering still lacks a set of universally recognized fundamental principles.
A fundamental principle is less specific and more enduring than methodologies and techniques.
It should be phrased to withstand the test of time. It should not contradict a more general
engineering principle and should have some correspondence with “best practice”. It should be
precise enough to be capable of support and contradiction and should not conceal a trade off.
It should also relate to one or more computer science or engineering concepts. [1]
Principles are common and conceptual statements describing desirable properties of software
products and processes. Principles become practice through methods and techniques, often
methods and techniques are packaged in a methodology. Methodologies can be enforced by
tools.
Principles of Software Engineering have a good impact on the process of software engineering
and also on the final product. These principles facilitate to develop software in such a manner
that it posses all the qualities like: efficiency, functionality, adaptability, maintainability, and
usability. Principles are general, abstract statements describing desirable properties of software
processes and products. The principles are applicable throughout the lifecycle of the software.
Principles are the set of statements which describe the advantageous features of the product
and process. Focus on both process and product is needed to deliver software systems. These
principles help in controlling process which in turn helps to control the quality of the product.
As said earlier there are no fundamentally recognized principles of Software Engineering but we
can list down few that may be used in all phases of software development.
Q3: Explain the various activities of Software Project management Plan in detail.
● Project Planning
● Scope Management
● Project Estimation
Project Planning
Software project planning is task, which is performed before the production of software
actually starts. It is there for the software production but involves no concrete activity that has
any direction connection with software production; rather it is a set of multiple processes,
which facilitates software production. Project planning may include the following:
Scope Management
It defines the scope of project; this includes all the activities, process need to be done in order
to make a deliverable software product. Scope management is essential because it creates
boundaries of the project by clearly defining what would be done in the project and what
would not be done. This makes project to contain limited and quantifiable tasks, which can
easily be documented and in turn avoids cost and time overrun.
During Project Scope management, it is necessary to -
● Effort estimation
The managers estimate efforts in terms of personnel requirement and man-hour
required to produce the software. For effort estimation software size should be known.
This can either be derived by managers’ experience, organization’s historical data or
software size can be converted into efforts by using some standard formulae.
● Time estimation
Once size and efforts are estimated, the time required to produce the software can be
estimated. Efforts required is segregated into sub categories as per the requirement
specifications and interdependency of various components of software. Software tasks
are divided into smaller tasks, activities or events by Work Breakthrough Structure
(WBS). The tasks are scheduled on day-to-day basis or in calendar months.
The sum of time required to complete all tasks in hours or days is the total time
invested to complete the project.
● Cost estimation
This might be considered as the most difficult of all because it depends on more
elements than any of the previous ones. For estimating project cost, it is required to
consider -
o Size of software
o Software quality
o Hardware
Ans: Software Development Life Cycle (SDLC) is a process used by the software industry to
design, develop and test high quality softwares. The SDLC aims to produce a high-quality
software that meets or exceeds customer expectations, reaches completion within times and
cost estimates.
● SDLC is the acronym of Software Development Life Cycle.
● It is also called as Software Development Process.
● SDLC is a framework defining tasks performed at each step in the software
development process.
● ISO/IEC 12207 is an international standard for software life-cycle processes. It aims to
be the standard that defines all the tasks required for developing and maintaining
software.
SDLC is a process followed for a software project, within a software organization. It consists of
a detailed plan describing how to develop, maintain, replace and alter or enhance specific
software. The life cycle defines a methodology for improving the quality of software and the
overall development process.
The following figure is a graphical representation of the various stages of a typical SDLC.
Ans: Cocomo (Constructive Cost Model) is a regression model based on LOC, i.e number of
Lines of Code. It is a procedural cost estimate model for software projects and often used as a
process of reliably predicting the various parameters associated with making a project such as
size, effort, cost, time and quality. It was proposed by Barry Boehm in 1970 and is based on the
study of 63 projects, which make it one of the best-documented models.
The key parameters which define the quality of any software products, which are also an
outcome of the Cocomo are primarily Effort & Schedule:
Effort: Amount of labor that will be required to complete a task. It is measured in
person-months units.
Schedule: Simply means the amount of time required for the completion of the job, which is, of
course, proportional to the effort put. It is measured in the units of time such as weeks,
months.
Different models of Cocomo have been proposed to predict the cost estimation at different
levels, based on the amount of accuracy and correctness required. All of these models can be
applied to a variety of projects, whose characteristics determine the value of constant to be
used in subsequent calculations. These characteristics pertaining to different system types are
mentioned below.
Boehm’s definition of organic, semidetached, and embedded systems:
Organic – A software project is said to be an organic type if the team size required is adequately
small, the problem is well understood and has been solved in the past and also the team
members have a nominal experience regarding the problem.
Semi-detached – A software project is said to be a Semi-detached type if the vital
characteristics such as team-size, experience, knowledge of the various programming
environment lie in between that of organic and Embedded. The projects classified as
Semi-Detached are comparatively less familiar and difficult to develop compared to the organic
Ans: Risk is an inexorable and an unavoidable part of a software development process, which
constantly evolves throughout the course of a project, affecting a project or software or both.
Thus, it arise the necessity to deal and manage these risks in an efficient and effective manner.
In the field of software engineering, risk management is a methodology or a mechanism,
carried out throughout the development process to identify, manage and control risks evolved
before and during the development process.
Basically, three types of activities are covered under the risk management process.
● Risk Identification.
● Risk Analysis.
● Risk Control.
Risk Identification:
● Product risk: Risks pertaining to a software product or application, which may arise, due
to its inefficiency, to function, desirably, to meet the expectation of the users.
● Project risk: These risks involves any sort of uncertain or unexpected event or action,
which may likely to occur and degrade the progress of a project.
In this phase, usually client, stakeholders, business manager, project manager and test
manager, collaborate and participates in brainstorming or small sessions, study and
analyze the project documentation plan, etc., to make out the probable list of risks
associated with the software development. Some commonly known techniques to
identify risks may include risk templates, project retrospective, Failure Mode and Effect
Analysis (FMEA), Failure Mode Effect and Criticality Analysis (FMECA), etc.
Risk Assessment:
The next stage of a risk management process is risk analysis, which involves the assessment of
the risks identified during the risk identification stage.
● This stage usually involves the analysis and prioritization of the risks, i.e. possible
outcomes of each identified risk is being assessed based on which risks are categorized
and accordingly, prioritized.
● Based on the degree of impact, possessed by each risk, they are being assigned severity
levels, namely 'High', 'Medium' and 'low'. And based on their severity, they are prioritize
i.e. High risks are considered as top priority whereas the low risk is regarded for the
bottom most priority.
Risk Control:
During this stage, risks are managed, controlled and mitigated, based on their priority so as to
achieve the desired results. It is generally divided into three activities which may be seen
below.
● Risk Management Planning: It involves a proper and effective plan to deal with the each
identified risk.
Ans: The Design Process is an approach for breaking down a large project into manageable
chunks. Architects, engineers, scientists, and other thinkers use the design process to solve
a variety of problems. Use this process to define the steps needed to tackle each project,
and remember to hold to all of your ideas and sketches throughout the process.
You can’t find a solution until you have a clear idea of what the problem is.
2. Collect Information
Collect sketches, take photographs and gather data to start giving you inspiration.
Begin to sketch, make, and study so you can start to understand how all the data and
information you’ve collected may impact your design.
4. Develop Solutions
5. Gather Feedback
Present your ideas to as many people as possible: friends, teachers, professionals, and any
others you trust to give insightful comments.
6. Improve
Reflect on all of your feedback and decide if or to what extent it should be incorporated. It
is often helpful to take solutions back through the Design Process to refine and clarify them.
Ans: Testing is the process of evaluating a system or its component(s) with the intent to find
whether it satisfies the specified requirements or not. In simple words, testing is executing a
system in order to identify any gaps, errors, or missing requirements in contrary to the actual
requirements.
According to ANSI/IEEE 1059 standard, Testing can be defined as - A process of analyzing a
software item to detect the differences between existing and required conditions (that is
defects/errors/bugs) and to evaluate the features of the software item.
Who does Testing?
It depends on the process and the associated stakeholders of the project(s). In the IT industry,
large companies have a team with responsibilities to evaluate the developed software in
context of the given requirements. Moreover, developers also conduct testing which is
called Unit Testing. In most cases, the following professionals are involved in testing a system
within their respective capacities −
● Software Tester
● Software Developer
● Project Lead/Manager
● End User
Different companies have different designations for people who test the software on the basis
of their experience and knowledge such as Software Tester, Software Quality Assurance
Engineer, QA Analyst, etc.
It is not possible to test the software at any time during its cycle. The next two sections state
when testing should be started and when to end it during the SDLC.
When to Start Testing?
3 Verification takes place first and includes Validation occurs after verification
the checking for documentation, code, and mainly involves the checking of
etc. the overall product.
Ans: Software testing is a crucial element in the software development life cycle (SDLC), which
can help software engineers save time & money of organizations by finding errors and defects
during the early stages of software development. With the assistance of this process one can
examine various components associated with the application and guarantee their
appropriateness.
The goals and objectives of software testing are numerous, which when achieved help
developers build a defectless and error free software and application that has exceptional
performance, quality, effectiveness, security, among other things. Though the objective of
testing can vary from company to company and project to project, there are some goals that
are similar for all. These objectives are:
2. Validation: Confirms that the software performs as expected and as per the
requirements of the clients. Validation involves checking the comparing the final output
with the expected output and then making necessary changes if their is a difference
between the two.
3. Defects: The most important purpose of testing is to find different defects in the
software to prevent its failure or crash during implementation or go live of the project.
Defects if left undetected or unattended can harm the functioning of the software and
can lead to loss of resources, money, and reputation of the client. Therefore, software
testing is executed regularly during each stage of software development to find defects
of various kinds. The ultimate source of these defects can be traced back to a fault
introduced during the specification, design, development, or programming phases of
the software.
4. Providing Information: With the assistance of reports generated during the process of
software testing, testers can accumulate a variety of information related to the software
and the steps taken to prevent its failure. These, then can be shared with all the
stakeholders of the project for better understanding of the project as well as to
establish transparency between members.
5. Preventing Defects: During the process of testing the aim of testes to identify defects
and prevent them from occurring aging in the future. To accomplish this goal, software
is tested rigorously by a independent testers, who are not responsible for software
development.
6. Quality Analysis: Testing helps improve the quality of the software by constantly
measuring and verifying its design and coding. Additionally, various types of testing
techniques are used by testers, which help them achieve the desired software quality.
8. For Optimum User Experience: Easy software and application accessibility and optimum
user experience are two important requirements that need to be accomplished for the
success of any project as well as to increase the revenue of the client. Therefore, to
ensure this software is tested again and again by the testers with the assistance of stress
testing, load testing, spike testing, etc.