You are on page 1of 40

SECTION A

Q1

10 Types of Software
Development — Explained
There are many different types of software development.
Often, the various kinds of developers work together to
bring your project to fruition.

If you’re looking to hire a software development provider, you


probably have a product or products in mind to create — such as an
app, a website, or a program. But before you begin your search, you
need to figure out what, exactly, it is that you’re looking for beyond
what you’re building.

There are many different types of software development. Often, the


various kinds of developers work together to bring your project to
fruition. Here are just 10 of the many kinds available. Some of them
overlap and can be found in a single professional, while others require
a distinct skill set.

1. Frontend Development
Frontend developers work on the part of the product with which the
user interacts. They are primarily concerned with the user interface
(UI). For example, they might create the layout, visual aspects, and
interactive elements of a website or app. However, their role isn’t
identical to that of a UI or user experience (UX) designer. They also fix
bugs and make certain that the UI can run on different browsers.

They must be highly proficient in programming and work closely with


the backend developers to ensure that the two aspects of the product
function cohesively. 

2. Backend Development
In contrast, a backend developer works with the part of the product
users can’t see — the back end. This professional builds the
infrastructure that powers the website, app, or program, focusing on
functionality, integration of systems, and core logic. They will also deal
with the complex, underlying structure, ensuring strong performance,
scalability, and security.

As we mentioned above, the frontend and backend developers work


closely together to create a final product.

3. Full-Stack Development
A full-stack developer works on all aspects of the product, including
both the front and back ends. To be a successful full-stack developer,
you must have strong programming skills, as well as a variety of soft
skills that all tech professionals must have, such as problem-solving
and critical thinking. At the end of the day, you — and perhaps your
team — are responsible for creating a full, complete product.
 

4. Desktop Development
Desktop developers exclusively create applications that run on a
desktop operating system, such as Windows, Mac, or Linux. This is
opposed to developers that create applications that run on mobile,
tablet, or other devices.

This type of specialization was more ubiquitous in the early days of


programming, back before the days of mobile applications. However,
they still have a place in today’s landscape.

5. Web Development
Web development is the process of building web applications. People
use these apps through an internet browser on a multitude of devices.
This is different from a mobile app, which runs on a phone or tablet
and doesn’t necessarily require an internet connection to run.

Web development is an umbrella term encompassing both front and


backend development. Professionals can also be full-stack web
developers.

6. Database Development
Not to be confused with a database administrator, who typically works
with daily database upkeep and troubleshooting and implements the
system, a database developer is responsible for building the database,
modifying and designing existing or new programs, and ensuring that
they satisfy the requirements of the users. Sometimes, the roles of
database administrator and developer do overlap — this depends on
the needs of the client or employer.

7. Mobile Development
As is probably obvious from the name, a mobile developer builds
applications that run natively on mobile devices, including
smartphones, tablets, and some types of smartwatches. Usually, these
professionals will specialize in either iOS or Android development but
not both. 

It is possible to work with the two operating systems. However, many


companies will work with developers who are experts in just one.
That’s because they tend to be more knowledgeable about the
intricacies of each type of development than those who dabble in both
of them since the tools, frameworks, and languages tend to be
different.

8. Cloud Computing
Cloud computing encompasses services, programs, and applications
that run over the cloud. That means they can be accessed remotely
from practically any location, provided the user has an internet
connection and an appropriate login. They offer plenty of advantages,
including scalability. 
Some developers specialize in cloud computing — that is, the creation
of cloud platforms. They will build cloud applications and facilitate
cloud deployment and migration, as well as manage cloud services and
provide maintenance to users. 

9. DevOps Engineering
DevOps is a set of practices and philosophies that are focused on the
quick, efficient, and customer-centric delivery of software. Related to
Agile, this style has been widely adopted by software developers and
teams around the world.

DevOps engineers work with teams that practice the principles. They
participate not only in the development of the product at hand but also
in quality assurance (QA) testing and eventual deployment. They must
possess a wide range of skills, such as programming, integration,
scripting, QA testing, and more. They also need to blend theory and
practice to support and work with the rest of the team, which may
include software developers and QA professionals.

10. Security Engineering


Everyone knows how important security in software is in this day and
age. Security software professionals are dedicated to ensuring the
security of various technological systems. They must have extensive
knowledge of the methodology, practices, tools, and patterns
cybercriminals employ to hack software so they can help prevent these
attacks from taking place.
Ethical hackers are one example of this type of professional. They
work with clients to attempt hack software in order to pinpoint and
expose vulnerabilities, allowing them to patch them before they are
exploited by cybercriminals.

This is by no means a comprehensive list of all the types of software


development — the field is wide and varied. However, these are still
some of the most important types you should understand when
looking to hire developers and development teams to work on your
next project — and build a high-quality product.
Q2

Software Project Team Organization


 Last Updated : 19 Jan, 2021
There are many ways to organize the project team. Some important ways are as follows :
 
1. Hierarchical team organization
2. Chief-programmer team organization
3. Matrix team, organization
4. Egoless team organization
5. Democratic team organization
Hierarchical team organization : 
In this, the people of organization at different levels following a tree structure. People at
bottom level generally possess most detailed knowledge about the system. People at
higher levels have broader appreciation of the whole project.

 
Benefits of hierarchical team organization :
 
 It limits the number of communication paths and stills allows for the needed
communication.
 It can be expanded over multiple levels.
 It is well suited for the development of the hierarchical software products.
 Large software projects may have several levels.
Limitations of hierarchical team organization :
 
 As information has to be travel up the levels, it may get distorted.
 Levels in the hierarchy often judges people socially and financially.
 Most technical competent programmers tend to be promoted to the
management positions which may result in loss of good programmer and also
bad manager.
Chief-programmer team organization :
This team organization is composed of a small team consisting the following team
members :
 
 The Chief programmer : It is the person who is actively involved in the
planning, specification and design process and ideally in the implementation
process as well.
 The project assistant : It is the closest technical co-worker of the chief
programmer.
 The project secretary : It relieves the chief programmer and all other
programmers of administration tools.
 Specialists : These people select the implementation language, implement
individual system components and employ software tools and carry out tasks.
 
Advantages of Chief-programmer team organization :
 
 Centralized decision-making
 Reduced communication paths
 Small teams are more productive than large teams
 The chief programmer is directly involved in system development and can
exercise the better control function.
Disadvantages of Chief-programmer team organization :
 
 Project survival depends on one person only.
 Can cause the psychological problems as the “chief programmer” is like the
“king” who takes all the credit and other members are resentful.
 Team organization is limited to only small team and small team cannot handle
every project.
 Effectiveness of team is very sensitive to Chief programmer’s technical and
managerial activities.
Matrix Team Organization :
In matrix team organization, people are divided into specialist groups. Each group has a
manager. Example of Metric team organization is as follows :
Egoless Team Organization :
Egoless programming is a state of mind in which programmer are supposed to separate
themselves from their product. In this team organization goals are set and decisions are
made by group consensus. Here group, ‘leadership’ rotates based on tasks to be
performed and differing abilities of members.
In this organization work products are discussed openly and all freely examined all team
members. There is a major risk which such organization, if teams are composed of
inexperienced or incompetent members.
Democratic Team Organization :
It is quite similar to the egoless team organization, but one member is the team leader
with some responsibilities :
 
 Coordination
 Final decisions, when consensus cannot be reached.
Advantages of Democratic Team Organization :
 
 Each member can contribute to decisions.
 Members can learn from each other.
 Improved job satisfaction.
Disadvantages of Democratic Team Organization :
 
 Communication overhead increased.
 Need for compatibility of members.
 Less individual responsibility and authority.

Q3

Software Development Life Cycle (SDLC)


 Difficulty Level : Medium
 Last Updated : 05 Jul, 2021
Software Development is the development of software for distinct purposes. For software
development, there is a specific programming language like Java, Python, C/C++, etc.
The entire process of software development isn’t as simple as its definition, it’s a
complicated process. Accordingly, it requires an efficient approach from the developer in
the form of the Software Development Life Cycle (SDLC). 
Proper planning and execution are the key components of a successful software
development process. The entire software development process includes 6 stages.
Software Development Life Cycle (SDLC) is the common term to summarize these 6
stages. 

SDLC specifies the task(s) to be performed at various stages by a software


engineer/developer. It ensures that the end product is able to meet the customer’s
expectations and fits in the overall budget. Hence, it’s vital for a software developer to
have prior knowledge of this software development process. 
These 6 stages are discussed below. 
 
 Stage-1: Planning And Requirement Analysis: 
Planning is the crucial step in everything and so as in software development. In
this same stage, requirement analysis is also performed by the developers of
the organization. This is attained from the inputs from the customers, sales
department/market surveys. 
The information from this analysis forms the building block of a basic project.
The quality proof of the project is a result of planning. Thus, in this stage, the
basic project is designed with all the available information. 
 
 Stage-2: Defining Requirements: 
In this stage, all the requirements for the target software are specified. These
requirements get approval from the customers, market analysts, and
stakeholders. 
This is fulfilled by utilizing SRS (Software Requirement Specification). This is
a sort of document that specifies all those things that need to be defined and
created during the entire project cycle. 
 
 Stage-3: Designing Architecture: 
SRS is a reference for software designers to come out with the best architecture
for the software. Hence, with the requirements defined in SRS, multiple
designs for the product architecture are present in the Design Document
Specification (DDS). 
This DDS is assessed by market analysts and stakeholders. After evaluating all
the possible factors, the most practical and logical design is chosen for the
development. 
 
 Stage-4: Developing Product: 
At this stage, the fundamental development of the product starts. For this,
developers use a specific programming code as per the design in the DDS.
Hence, it is important for the coders to follow the protocols set by the
association. Conventional programming tools like compilers, interpreters,
debuggers, etc. are also put into use at this stage. Some popular languages like
C/C++, Python, Java, etc. are put into use as per the software regulations. 
 
 Stage-5: Product Testing and Integration: 
After the development of the product, testing of the software is necessary to
ensure its smooth execution. Although, minimal testing is conducted at every
stage of SDLC. 
Therefore, at this stage, all the probable flaws are tracked, fixed, and retested.
This ensures that the product confronts the quality requirements of SRS. 
 
 Documentation, Training and Support:                                                            
Software documentation is an essential part of the software development life
cycle. A well-written document acts as a tool and means to information
repository necessary to know about software processes, functions and
maintenance. Documentation also provides information about how to use the
product. Thoroughly-written documentation should involve the required
documentation. Software architecture documentation, technical documentation
and user documentation.  Training in an attempt to improve the current or
future employee performance by increasing an employee’s ability to work
through learning, usually by changing his attitude and developing his skills and
understanding.
 
 Stage 6: Deployment and Maintenance Of Product: 
After detailed testing, the conclusive product is released in phases as per the
organization’s strategy. Then it is tested in a real industrial environment.
Because it is important to ensure its smooth performance. If it performs well,
the organization sends out the product as a whole. After retrieving beneficial
feedback, the company releases it as it is or with auxiliary improvements to
make it further helpful for the customers. However, this alone is not enough.
Therefore, along with the deployment, the product’s supervision. 

Q4

Software Engineering | Failure of


Waterfall model
 Last Updated : 06 Mar, 2019
Waterfall model is also known as traditional waterfall software life cycle model. It is very
simple to understand and use. In the waterfall model, each phase must be completed
before the next phase can begin and there is no overlapping in the phases.
Classical waterfall model divides the life cycle into a set of phases. The waterfall model
considers that one phase can be started after completion of the previous phase, which is
the output of one phase will be the input to the next phase. Due to this the development
process can be considered as a sequential flow in the waterfall. Here the phases do not
overlap with each other.

This model divides the life cycle of a software development process into the phases as
shown in the figure.
Reasons for failure waterfall model:
The traditional waterfall model suffers from various shortcomings, basically we can’t use
it in real projects, but we use other software development lifecycle models which are
based on the classical waterfall model.
There are some reasons which are given below due to this waterfall model fails.
1. One way street:
This model is just like the one-way street. Once phase X is completed and next
phase Y has started then there is no way to going back on the previous phase.
This is one of the issues to the failure of the waterfall model.
2. Overlapping:
The waterfall model has lacked an overlapping among phase.The waterfall
model recommends that new phase can start only after the completion of the
previous phase. But in real projects, this can’t be maintained. To increase the
efficiency and reduce the cost, phases may overlap.
3. Interaction:
The waterfall model has lacked interaction among phase. Users have little
interaction with project them. This feedback is not taken during development.
After a development process starts, changes can not accommodate easily.
4. Support delivery of system:
The waterfall model does not support delivery of system in pieces. After a
development process starts, changes cannot accommodate easily.
5. Feedback path:
The waterfall model has no feedback path. In the traditional waterfall model
evolution of software from one phase to another phase is like a waterfall. The
waterfall model assumes that no error is ever committed by developers during
any phases. Hence, it does not incorporate any mechanism for error correction.
6. Not Flexible:
Difficult to accommodate change requests. The waterfall model assumes that
all the customer requirements can be completely and correctly defined at the
beginning of the project, but actually customers’ requirements keep on
changing with time. After the requirements specification phase is completed
difficult to accommodate any change requests.
Spiral Model

Software Engineering | Spiral Model


 Difficulty Level : Easy
 Last Updated : 09 Feb, 2022
Spiral model is one of the most important Software Development Life Cycle models,
which provides support for Risk Handling. In its diagrammatic representation, it looks
like a spiral with many loops. The exact number of loops of the spiral is unknown and
can vary from project to project. Each loop of the spiral is called a Phase of the software
development process. The exact number of phases needed to develop the product can be
varied by the project manager depending upon the project risks. As the project manager
dynamically determines the number of phases, so the project manager has an important
role to develop a product using the spiral model. 
The Radius of the spiral at any point represents the expenses(cost) of the project so far,
and the angular dimension represents the progress made so far in the current phase. 

The below diagram shows the different phases of the Spiral Model: – 
Each phase of the Spiral Model is divided into four quadrants as shown in the above
figure. The functions of these four quadrants are discussed below- 
1. Objectives determination and identify alternative solutions: Requirements
are gathered from the customers and the objectives are identified, elaborated,
and analyzed at the start of every phase. Then alternative solutions possible for
the phase are proposed in this quadrant.
2. Identify and resolve Risks: During the second quadrant, all the possible
solutions are evaluated to select the best possible solution. Then the risks
associated with that solution are identified and the risks are resolved using the
best possible strategy. At the end of this quadrant, the Prototype is built for the
best possible solution.
3. Develop next version of the Product: During the third quadrant, the identified
features are developed and verified through testing. At the end of the third
quadrant, the next version of the software is available.
4. Review and plan for the next Phase: In the fourth quadrant, the Customers
evaluate the so far developed version of the software. In the end, planning for
the next phase is started.
Risk Handling in Spiral Model
A risk is any adverse situation that might affect the successful completion of a software
project. The most important feature of the spiral model is handling these unknown risks
after the project has started. Such risk resolutions are easier done by developing a
prototype. The spiral model supports coping up with risks by providing the scope to build
a prototype at every phase of the software development. 
The Prototyping Model also supports risk handling, but the risks must be identified
completely before the start of the development work of the project. But in real life project
risk may occur after the development work starts, in that case, we cannot use the
Prototyping Model. In each phase of the Spiral Model, the features of the product dated
and analyzed, and the risks at that point in time are identified and are resolved through
prototyping. Thus, this model is much more flexible compared to other SDLC models. 
Why Spiral Model is called Meta Model?
The Spiral model is called a Meta-Model because it subsumes all the other SDLC
models. For example, a single loop spiral actually represents the Iterative Waterfall
Model. The spiral model incorporates the stepwise approach of the Classical Waterfall
Model. The spiral model uses the approach of the Prototyping Model by building a
prototype at the start of each phase as a risk-handling technique. Also, the spiral model
can be considered as supporting the Evolutionary model – the iterations along the spiral
can be considered as evolutionary levels through which the complete system is built. 
Advantages of Spiral Model: 
Below are some advantages of the Spiral Model. 
1. Risk Handling: The projects with many unknown risks that occur as the
development proceeds, in that case, Spiral Model is the best development
model to follow due to the risk analysis and risk handling at every phase.
2. Good for large projects: It is recommended to use the Spiral Model in large
and complex projects.
3. Flexibility in Requirements: Change requests in the Requirements at later
phase can be incorporated accurately by using this model.
4. Customer Satisfaction: Customer can see the development of the product at
the early phase of the software development and thus, they habituated with the
system by using it before completion of the total product.
Disadvantages of Spiral Model: 
Below are some main disadvantages of the spiral model. 
1. Complex: The Spiral Model is much more complex than other SDLC models.
2. Expensive: Spiral Model is not suitable for small projects as it is expensive.
3. Too much dependability on Risk Analysis: The successful completion of the
project is very much dependent on Risk Analysis. Without very highly
experienced experts, it is going to be a failure to develop a project using this
model.
4. Difficulty in time management: As the number of phases is unknown at the
start of the project, so time estimation is very difficult.
Q5

Software Engineering | Critical Path


Method
 Difficulty Level : Basic
 Last Updated : 28 Oct, 2019
Critical Path Method (CPM) is a method used in project planning, generally for project
scheduling for the on-time completion of the project. It actually helps in the
determination of the earliest time by which the whole project can be completed. There are
two main concepts in this method namely critical task and critical path. Critical task is
the task/activity which can’t be delayed otherwise the completion of the whole project
will be delayed. It must be completed on-time before starting the other dependent tasks.
Critical path is a sequence of critical tasks/activities and is the largest path in the project
network. It gives us the minimum time which is required to complete the whole project.
The activities in the critical path are known as critical activities and if these activities are
delayed then the completion of the whole project is also delayed.

Major steps of the Critical Path Method:


1. Identifying the activities
2. Construct the project network
3. Perform time estimation using forward and backward pass
4. Identify the critical path
The table given below contains the activity label, its respective duration (in weeks) and
its precedents. We will use critical path method to find the critical path and activities of
this project.
Durati
Activi on (in Precede
ty weeks) nts

A 6 –

B 4 –

C 3 A

D 4 B

E 3 B

F 10 –

G 3 E, F

H 2 C, D

Rules for designing the Activity-on-Node network diagram:


 A project network should have only one start node
 A project network should have only one end node
 A node has a duration
 Links normally have no duration
 “Precedents” are the immediate preceding activities
 Time moves from left to right in the project network
 A network should not contain loops
 A network should not contain dangles
Node Representation:
 Activity label is the name of the activity represented by that node.
 Earliest Start is the date or time at which the activity can be started at the
earliest.
 Earliest Finish is the date or time at which the activity can completed at the
earliest.
 Latest Start is the date or time at which the activity can be started at the latest.
 Latest Finish is the date or time at which the activity can be finished at the
latest.
 Float is equal to the difference between earliest start and latest start or earliest
finish and latest finish.
Activity-On-Node diagram:

Forward Pass:
The forward pass is carried out to calculate the earliest dates on which each activity may
be started and completed.
1. Activity A may start immediately. Hence, earliest date for its start is zero i.e.
ES(A) = 0. It takes 6 weeks to complete its execution. Hence, earliest it can
finish is week 6 i.e. EF(A) = 6.
2. Activity B may start immediately. Hence, earliest date for its start is zero i.e.
ES(B) = 0. It takes 4 weeks to complete its execution. Hence, earliest it can
finish is week 4 i.e. EF(B) = 4.
3. Activity F may start immediately. Hence, earliest date for its start is zero i.e.
ES(F) = 0. It takes 10 weeks to complete its execution. Hence, earliest it can
finish is week 10 i.e. EF(F) = 10.
4. Activity C starts as soon as activity A completes its execution. Hence, earliest
week it can start its execution is week 6 i.e. ES(C) = 6. It takes 3 weeks to
complete its execution. Hence, earliest it can finish is week 9 i.e. EF(C) = 9.
5. Activity D starts as soon as activity B completes its execution. Hence, earliest
week it can start its execution is week 4 i.e. ES(D) = 4. It takes 4 weeks to
complete its execution. Hence, earliest it can finish is week 8 i.e. EF(D) = 8.
6. Activity E starts as soon as activity B completes its execution. Hence, earliest
week it can start its execution is week 4 i.e. ES(E) = 4. It takes 3 weeks to
complete its execution. Hence, earliest it can finish is week 7 i.e. EF(E) = 7.
7. Activity G starts as soon as activity E and activity F completes their execution.
Since, activity requires the completion of both for starting its execution, we
would consider the MAX(ES(E), ES(F)). Hence, earliest week it can start its
execution is week 10 i.e. ES(G) = 10. It takes 3 weeks to complete its
execution. Hence, earliest it can finish is week 13 i.e. EF(G) = 13.
8. Activity H starts as soon as activity C and activity D completes their execution.
Since, activity requires the completion of both for starting its execution, we
would consider the MAX(ES(C), ES(D)). Hence, earliest week it can start its
execution is week 9 i.e. ES(H) = 9. It takes 2 weeks to complete its execution.
Hence, earliest it can finish is week 11 i.e. EF(H) = 11.
Backward Pass:
The backward pass is carried out to calculate the latest dates on which each activity may
be started and finished without delaying the end date of the project.
Assumption: Latest finish date = Earliest Finish date (of project).
1. Activity G’s latest finish date is equal to the earliest finish date of the
precedent activity of finish according to the assumption i.e. LF(G) = 13. It
takes 3 weeks to complete its execution. Hence, latest it can start is week 10
i.e. LS(G) = 10.
2. Activity H’s latest finish date is equal to the earliest finish date of the
precedent activity of finish according to the assumption i.e. LF(H) = 13. It
takes 2 weeks to complete its execution. Hence, latest it can start is week 11
i.e. LS(H) = 11.
3. The latest end date for activity C would be the latest start date of H i.e. LF(C)
= 11. It takes 3 weeks to complete its execution. Hence, latest it can start is
week 8 i.e. LS(C) = 8.
4. The latest end date for activity D would be the latest start date of H i.e. LF(D)
= 11. It takes 4 weeks to complete its execution. Hence, latest it can start is
week 7 i.e. LS(D) = 7.
5. The latest end date for activity E would be the latest start date of G i.e. LF(G)
= 10. It takes 3 weeks to complete its execution. Hence, latest it can start is
week 7 i.e. LS(E) = 7.
6. The latest end date for activity F would be the latest start date of G i.e. LF(G) =
10. It takes 10 weeks to complete its execution. Hence, latest it can start is
week 0 i.e. LS(F) = 0.
7. The latest end date for activity A would be the latest start date of C i.e. LF(A)
= 8. It takes 6 weeks to complete its execution. Hence, latest it can start is
week 2 i.e. LS(A) = 2.
8. The latest end date for activity B would be the earliest of the latest start date of
D and E i.e. LF(B) = 7. It takes 4 weeks to complete its execution. Hence,
latest it can start is week 3 i.e. LS(B) = 3.

Identifying Critical Path:


Critical path is the path which gives us or helps us to estimate the earliest time
in which the whole project can be completed. Any delay to an activity on this
critical path will lead to a delay in the completion of the whole project. In order
to identify the critical path, we need to calculate the activity float for each
activity.
Activity float is actually the difference between an activity’s Earliest start and
its latest start date or the difference between the activity’s Earliest finish and its
latest finish date and it indicates that how much the activity can be delayed
without delaying the completion of the whole project. If the float of an activity
is zero, then the activity is an critical activity and must be added to the critical
path of the project network. In this example, activity F and G have zero float
and hence, are critical activities.
SECTION B
Q1

Software Engineering | Responsibilities


of Software Project Manager
 Last Updated : 08 Feb, 2022
Software Project Management (SPM) is a sub-field of Project Management in which
software projects are planned, implemented, monitored and controlled. 
It consists of three terms: Software, Project and Management. So, let us understand each
term separately. Software includes a set of programs, documentation and user manual for
a particular software project. So, it is basically the complete procedure of the software
development starting from the requirement gathering phase and extending to testing and
maintenance. Project means a planned activity which consists of several well defined
tasks. Management makes sure that the product comes out as planned. 
 

There are many constraints of the software projects but the main and fundamental
constraints includes: Time, Cost and Quality. Any one of the two factors can severely
affect the third one. Therefore, Software Project Management is essential to develop
software projects within time and the specified budget and that too of good quality. 
 
Software Project Manager: 
Software Project Manager is generally never directly involved in producing the end
product but he controls and manages the activities involved in the production. He is
aware of all the phases of Software Development Life Cycle that the software would go
through. 
Responsibilities of software project manager: 
 
1. Managing people: 
 Acts as a project leader
 Communication with stakeholders
 Manages human resources
2. Managing project: 
 Monitors progress and performance
 Risk analysis at every phase
 Manages time and budget constraint
Categorizing Software Projects: 
 
1. Compulsory Vs Voluntary systems (projects): 
 Compulsory systems are the systems which the staff of an
organisation have to use if they want to do a task.
 Voluntary systems are the systems which are voluntarily used by the
users eg. computer gaming, school project, etc.
2. Information Vs Embedded systems (projects): 
 Information systems are used by staff to carry out office processes
and tasks eg. stock control system.
 Embedded systems are used to control machines eg. a system
controlling equipment in a building.
3. Objective-based Vs Product-based systems (projects): 
 Project whose requirement is to meet certain objectives which could
be met in a number of ways, is objective-based project.
 Project whose requirement is to create a product, the details of which
have been specified by the client, is product-based project.
Q2
(a) Contract

There is something truly satisfying about finding the perfect software solution that
meets every need of your company. 

Once you’ve done your due diligence and made the effort to assess your requirements,
evaluate all of your software options, and check the reviews on G2, it’s time to make
a decision. Take advantage of the fact that G2 can connect you directly with that
software provider.

After you've seen some demos, discussed your specific needs, and calculated how
much you want to spend and for how long, you're ready to move to the software
contract.

What is a software contract?


A software contract is the written agreement between you and the software provider that lays out
each party's obligations with respect to using the software. If you have an Order Form and
hyperlinked Terms and Conditions, both of those pieces form the contract, so it's important to
review them together.
At this point, the software provider will likely send you an Order Form or other
ordering document. This is where the business terms and conditions should be laid
out, which include what you're getting, how much you're paying, how frequently
you’ll be paying, and other commercial details. 
Before you sign it, it’s important to know exactly what you’re signing. Understanding
your software contract is harder than you think as there are many aspects to consider
to make sure you’re not only getting the most for your money, but also staying within
budget.

Understanding the main elements


of a software contract
When it comes to software contracts, there are going to be five core elements you’ll
need to understand before you sign on the dotted line.

1. Usage and Restrictions


The first section you’ll likely encounter in your software contract is regarding usage
and restrictions. This will outline exactly what you can and cannot do when using the
software.

The wording in this section will either look like:

Right to Use: Subject to the terms and conditions of this Agreement, the Provider
grants to Customer a worldwide, limited, non-exclusive, non-transferable right, and
license during the Term, to use the Software. 

Usage Restrictions: The Customer may not license, sub-license, sell, re-sell, rent,
lease, transfer, distribute, timeshare, or otherwise make any portion of the Software
available to any third parties not authorized by this Agreement.
2. Ownership
The ownership portion of the contract is going to explain that the software company is
the owner of the software. As a buyer, the contract is granting you limited rights to
use the software but does not grant you any rights to own any of the underlying
technology or intellectual property. 

"The most important thing I look for when reviewing a software contract is who owns
what.

'It's critical that we don't unintentionally


grant ownership of our intellectual property
just because we're using a software product.
so I always make it crystal clear that
ownership of our data stays with us."

Sarah Mattina

Associate General Counsel, G2

If you are uploading or storing any of your (or your company's) information, data, or
content into the software, you should make sure that the contract clearly states that
you, the buyer, are the owner of that information.

Ownership of Software: The Software and all copies thereof will at all times remain
the sole and exclusive property of the Provider, and the Customer shall obtain no title
to the Software.
Proprietary Rights: Provider owns all rights, title, and interest in and to the
Software. All data, information, files, or other materials and content that Customer
makes available to Provider for the purpose of utilizing the Software shall remain the
sole property of Customer.

3. Term and Termination


This portion of the software contract will detail how long the contract is valid. It will
also detail what occurs when the contract ends, and if someone has the right to end it
earlier than previously agreed upon.

With software contracts, the "term" provides some guidance for when and how a
contract will end, referred to as "termination". 

It's important to understand:


 How long your contract will last

 How you can extend and/or renew it

 What happens when/if you no longer want to use the software

Term: This Agreement is effective for 12 months after the date of the last signature.
This Agreement will automatically renew for an additional 12-month term unless one
party gives at least 30 days prior written notice of termination. 

Termination: A party may terminate this Agreement for cause (i) upon 30 days
written notice to the other party of a material breach if such breach remains uncured at
the expiration of such period, or (ii) if the other party becomes the subject of a petition
in bankruptcy or any other proceeding relating to insolvency, receivership,
liquidation, or assignment for the benefit of creditors."
4. Fees and payment
This portion of the software contract will detail the price in dollars – or other currency
– of your purchase, and will typically be located on the order form in addition to the
payment terms. As an example, your contract may include details regarding a
predetermined “late fee” if you’re late on making payments. 

This portion can also state that the software provider can suspend your access to the
software if payment conditions aren’t met.

Fees: The Customer will pay all fees specified in the Order Form. Fees invoiced and
paid are non-cancelable and non-refundable. If any invoiced amount is not received
by the Provider by the due date, those charges may accrue late interest at the rate of
1.5% of the outstanding balance per month, or the maximum rate permitted by law,
whichever is higher. If any fee owed by the Customer under this Agreement for
Software is 30 days or more overdue, the Provider may suspend your use of Software
until such overdue amounts are paid in full.

5. Indemnification 
Indemnification can be one of the most confusing parts of any contract, not just a
software contract.  It may be easier to understand the concept by using an example.

Let’s say you’ve purchased an accounting software for your business. In the


software, you store all of the payment information of your customers. Through no
fault of your own, the software provider has a data breach and a hacker is able to
access all of your customers' payment information. One of your customers sues you,
claiming that you were responsible for their payment information or other confidential
information being compromised. 
If your contract with your software provider includes an indemnity provision that
covers "any negligent act or omission," your software provider will likely be obligated
to pay the costs associated with your customer's lawsuit, since the data breach was
their fault, not yours.  

Indemnity provisions are used to determine who will pay for claims brought by third
parties against one party when the issue underlying the third party claim is actually the
responsibility of the other party. 

Indemnification: The Provider will indemnify, protect, defend, and hold harmless the
Customer from and against any and all claims arising out of, involving, or in
connection with any negligent act or omission of the Provider.

How to negotiate a software


contract
Now that you know what to look out for when buying a software contract, let’s dive
deeper into the ways you can negotiate your software contract before you approach
the delivery date. Failing to negotiate your contract could result in you paying more
than you need to be, plus ending up with more or fewer licenses than necessary. 

At the end of the day, negotiating a contract for a SaaS application is all about
minimizing your risk, whether it is in terms of performance protection, security
protection, or simply making sure that both parties are in complete agreement with
what to expect from the other. 
While it's good to know where to look for usage rights and restrictions and what
indemnification rights you may have or owe, at the end of the day, you need to be
prepared to negotiate those pesky commercial terms that are layered into the legal
terms and are often harder to pick out, but can have important consequences once
you're committed to the software.

The top two things to look out for and negotiate in your contract are:
 The business terms

 What happens if/when you want to cancel

Let’s break each down a little further.

The business terms of a contract


As you begin negotiating pricing and payment terms and establishing a business
relationship, remember that many software providers will ask for and prefer an
upfront payment. As the buyer, you may prefer to make monthly payments.

If you have the cash flow, you could ask for a discount in return for annual upfront
payment, and many software providers are happy to make that deal. Other times, a
software provider may offer you unlimited usage if you pay upfront instead of paying
a monthly or quarterly "package price." 

Additionally, ask yourself if you need help implementing the software within your
operating systems. It’s common for a software provider's first offer to include some
implementation services for a set time frame. If you think the end users involved can
set it up themselves, ask for those services to be removed.
It’s important to remember that some software products must be implemented by
trained professionals. Ask the provider if you can get bundled pricing in exchange for
more favorable payment terms.

Lastly, consider how long you think you'll use the software. Will you need it for just
one year, or would you like to use this software long term? If you are confident that
the software suits the needs of your business and will continue to do so for many years
to come, you may want to commit to a longer contract term to secure more favorable
pricing.  

Alternatively, if you're not ready to commit just yet, you can ask your software
provider to put a price increase cap in your contract documents. This is a clause that
states that when/if you renew, your price on your renewal will not go up by more than
a certain dollar or percentage amount. 

What happens when you want to cancel


While you hope the software you've chosen suits your needs perfectly, despite your
best efforts, there may come a situation where the software you've purchased no
longer works for you. In that case, unless you are at the end of your contract term,
you'll need to know how and if you can cancel your contract.

If this is the case, you can negotiate a “termination for convenience”. This means that
at any time, you can contact the software provider and explain that you want to cancel
your contract, free of any penalties.

However, carefully consider if you want the provider to have the same right. Would it
be detrimental to your business if, with only 30 days notice, you weren’t able to use
the software you had purchased?
If you aren’t able to get your software provider to agree to termination for
convenience, you may want to lay out what pre-conditions might occur that should
permit you to terminate. 

Common "termination for cause" examples include bankruptcy and breach of contract.
For example, a breach of contract would be that you can't access and/or use the
software as promised per the contract. There’s also  "force majeure,” which is French
for "superior force" and covers what are considered acts of God, meaning tornados,
floods, earthquakes, or other natural disasters.

Most importantly, and regardless of whether or not you are terminating your contract
for convenience or "for cause," try to confirm with your software provider that you
will receive a refund of any pre-paid fees.

5 tips to best manage the


software contract once signed
All of these things will help you negotiate a better contract when it comes up for
renewal the next time around and ensure your business gets the most benefit from
its software budget.

1. Assign an owner
When all is said and done and the contract is finalized and signed, it’s in your best
interest to assign someone as the contract owner, especially if the software is specific
to a certain part of your business. This person will be responsible for making sure that
the software does what it’s supposed to do, and that all payment arrangements,
renewals, and general oversight are taken care of.
Assigning an owner of the contract is made simple and convenient when you
utilize G2 Track. With the easy-to-read dashboard, G2 Track creates a seamless place
to not only see who the owner of the contract is, but also the billing cycle and when
the contract is up for renewal. 

10-15%
of a company's software stack doesn't have a clear owner, contract, or approval.

2. Keep contracts and compliance certifications in one


place
In addition, when managing your software contract, make sure that all of the security
or privacy compliance certificates are being maintained in the G2 Track dashboard. 

One of the great aspects of utilizing G2 Track is that it manages contract renewals for
you. With all of your contracts in one dashboard, contract expiration and renewal
dates are easy to manage – as well as all relevant details and terms.  G2 Track will
alert the right people when contract action is necessary. You’ll also be able to go back
in time on past software development contracts for a full view of everyone you’ve
worked with.
3. Set up alerts
As you take advantage of all that G2 Track has to offer, you can also set up alerts for
important dates or deadlines associated with your contact and the software license,
like when it’s set to end or auto-renew.

These alerts will also detail the notice periods you have for each of your software
contracts. Because of this, you’ll never miss renewals for the software your team is
actively using. In addition, you can also set up alerts when new products are added to
your tech stack and when spikes in spending occur. 

Remember, if you've agreed to a late fees clause, any delays in making payments may
cost you more money than you expected to pay for the software. Do you need to
provide "notice" (telling your software provider something, usually formally in
writing) 30 days prior to the end of your contract that you do or do not want your
contract to renew? If yes, then alerts are sure to come in handy.

4. Know how well the software is being utilized


It’s one thing to think your team likes the software being used, but it’s another
to know. In fact, six out of 10 employees aren’t reaching their full potential due to
ineffective software at work.

As you manage the software your team is using, G2 Track lets you see if your team is
getting the full value out of the software by showing which programs your employees
are using and how often. If you see unused licenses or seats within the dashboard, you
may be able to save some money by reducing the number of licenses you are paying
for under your contract.  

With this data at your fingertips, you’ll know if any current software can be
considered obsolete, and which is considered critical to the success of your business.
5. Understand your spending
Did you know that an estimated $40 billion is spent on unused software each year?
When you utilize G2 Track, wasted spend is a thing of the past.

In addition to software use, G2 Track also keeps tabs on your products and spend by
department, as well as identifying opportunities to reduce spend and save. Thanks to
its world-class integrations within your financial systems, G2 Track easily
accomplishes this by looking at what is being spent within your budget.
The dashboard shows you:
 Which tools you’re using and where you can consolidate

 A pinpointed look at your average monthly cost per employee and cost by department

 Monthly summaries on past charges and future spend

G2 Track makes taking inventory of your resources simple and concise by syncing
with your company’s financial data. When this occurs, you’ll be able to know how
much of your budget is being spent on each product on a monthly basis. 

Signed, sealed, delivered


Once the contract is signed and the software is yours to use, it should be smooth
sailing from here on out. Until, of course, you need to decide if you’ll renew once the
contract is up.

To make everything after you purchase a software contract completely seamless and
hassle-free, look no further than G2 Track. With every contract in one easy-to-read
dashboard, you’ll never lose track of another contract or forget any relevant details
and terms.

Best of all? G2 Track is now free for 90 days, so now is the time to sign up and
get all of your contracts in order. 

Mara Calvello
 

Mara Calvello is a Content Marketing Manager at G2 with a focus on Human Resources and
SaaS Management. She graduated with a Bachelor of Arts from Elmhurst College. In addition to
working at G2, Mara is a freelance writer for a handful of small- and medium-sized tech
companies. In her spare time, Mara is either at the gym, exploring the great outdoors with her
rescue dog Zeke, enjoying Italian food, or right in the middle of a Harry Potter binge.

(b) Risk Analysis

Risk Management Steps in Software


Engineering
 Difficulty Level : Easy
 Last Updated : 12 Aug, 2021
Risk Management is an important part of project planning activities. It involves
identifying and estimating the probability of risks with their order of impact on the
project. 
Risk Management Steps: 
There are some steps that need to be followed in order to reduce risk. These steps are as
follows: 

1. Risk Identification: 
Risk identification involves brainstorming activities. it also involves the preparation of a
risk list. Brainstorming is a group discussion technique where all the stakeholders meet
together. this technique produces new ideas and promotes creative thinking. 
Preparation of risk list involves identification of risks that are occurring continuously in
previous software projects. 
2. Risk Analysis and Prioritization: 
It is a process that consists of the following steps: 
 
 Identifying the problems causing risk in projects
 Identifying the probability of occurrence of problem
 Identifying the impact of problem
Assigning values to step 2 and step 3 in the range of 1 to 10
Calculate the risk exposure factor which is the product of values of step 2 and
step 3
 Prepare a table consisting of all the values and order risk on the basis of risk
exposure factor
For example, 
TABLE (Required) 
 

Probability of
Risk occurrence of Impact of Risk
No Problem problem problem exposure Priority

Issue of
incorrect
R1 password 2 2 4 10

Testing reveals
R2 a lot of defects 1 9 9 7

Design is not
R3 robust 2 7 14 5

3. Risk Avoidance and Mitigation: 


The purpose of this technique is to altogether eliminate the occurrence of risks. so the
method to avoid risks is to reduce the scope of projects by removing non-essential
requirements. 
4. Risk Monitoring: 
In this technique, the risk is monitored continuously by reevaluating the risks, the impact
of risk, and the probability of occurrence of the risk. 
This ensures that: 
 
 Risk has been reduced
 New risks are discovered
 Impact and magnitude of risk are measured

You might also like