0% found this document useful (0 votes)
20 views

oose-unit-v-unit-5-notes

The document outlines key concepts in Software Project Management, including the four P's: people, product, process, and project, as well as the W5HH principle for defining project scope. It discusses Software Configuration Management (SCM) and its objectives, advantages, and disadvantages, emphasizing the importance of managing changes during the software development life cycle. Additionally, it covers project scheduling principles and the need for effective task management and resource allocation throughout the project duration.

Uploaded by

jcsoundarya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views

oose-unit-v-unit-5-notes

The document outlines key concepts in Software Project Management, including the four P's: people, product, process, and project, as well as the W5HH principle for defining project scope. It discusses Software Configuration Management (SCM) and its objectives, advantages, and disadvantages, emphasizing the importance of managing changes during the software development life cycle. Additionally, it covers project scheduling principles and the need for effective task management and resource allocation throughout the project duration.

Uploaded by

jcsoundarya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 30

lOMoARcPSD|41997990

OOSE UNIT V - Unit 5 notes

Object Oriented Software Engineering (Anna University)

Scan to open on Studocu

Studocu is not sponsored or endorsed by any college or university


Downloaded by Soundarya Lakshmi ([email protected])
lOMoARcPSD|41997990

Object Oriented Software Engineering

UNIT V
PROJECT MANAGEMENT
Software Project Management- Software Configuration Management - Project Scheduling-
DevOps: Motivation-Cloud as a platform-Operations- Deployment Pipeline: Overall
Architecture Building and Testing-Deployment- Tools- Case Study

C.S.I Institute of Technology 1

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

5.1 Software Project Management


Software project management is an umbrella activity within software engineering. Effective
software project management focuses on the four P’s:
 people
 product
 process
 project
People -The most important component of a product and its successful implementation is
human resources. We need to have a good team in order to save our time, cost, and effort.
Some assigned roles in software project planning are project manager, team leaders,
stakeholders, analysts, and other IT professionals.
Product -As the name inferred, this is the deliverable or the result of the project. The project
manager should clearly define the product scope to ensure a successful result, control the
team members, as well technical hurdles that he or she may encounter during the building of
a product. Process - It regulates how the team will go about its development in the respective
time period. The Process has several steps involved like, documentation phase,
implementation phase, deployment phase, and interaction phase.
Project -The last and final P in software project planning is Project. It can also be considered
as a blueprint of process. Project managers are responsible to guide the team members to
achieve the project’s target and objectives.
The W5HH Principle in Software Project Management:
Boehm suggests an approach that addresses project objectives, milestones and schedules,
responsibilities, management and technical approaches, and required resources. He calls it the
W5HH principle after a series of questions that define key project characteristics and the
resultant project plan.W5HH principle: A series of questions that lead to a definition of
Project Scope.
1. Why is the system being developed? All stakeholders should assess the validity of business
reasons for the software work. Does the business purpose justify the expenditure of people,
time, and money?
2. What will be done? The task set required for the project is defined.
3. When will it be done? The team establishes a project schedule by identifying when
project tasks are to be conducted and when milestones are reached.

C.S.I Institute of Technology 2

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

4. Who is responsible for a function? The role and responsibility of each member of the
software team are defined.
5. Where are they located organizationally? Not all roles and responsibilities reside
within software practitioners. The customer, users, and other stakeholders also have
responsibilities.
6. How will the job be done technically and managerially? Once the product
scope is established, management and technical strategy for the project must be defined.
7. How much of each resource is needed? The answer to this question is derived by
developing estimates based on the answers to earlier questions.
5.1.1 Estimation
Estimation of the size of the software is an essential part of Software Project Management.
It helps the project manager to further predict the effort and time which will be needed to
build the project. Various measures are used in project size estimation. Some of these are:
 Lines of Code
 Number of entities in ER diagram
 Total number of processes in detailed data flow diagram
 Function points
Software cost and effort estimation will never be an exact science. Too many variables like
human, technical, environmental, political, can affect the ultimate cost of software and effort
applied to develop it. To achieve reliable cost and effort estimates, a number of options arise:
1. Delay estimation until late in the project
2. Base estimates on similar projects that have already been completed.
3. Use relatively simple decomposition techniques to generate project cost and effort
estimates.
4. Use one or more empirical models for software cost and effort estimation.
5.1.2 LOC & FP Based Estimation
LOC and FP data are used in two ways during software project estimation:
 as estimation variables to “size” each element of the software and
 as baseline metrics collected from past projects and used in conjunction with
estimation variables to develop cost and effort projections.
Lines of Code (LOC): As the name suggests, LOC count the total number of lines of source
code in a project. The units of LOC are:
 KLOC- Thousand lines of code

C.S.I Institute of Technology 3

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering


 NLOC- Non-comment lines of code

C.S.I Institute of Technology 4

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

 KDSI- Thousands of delivered source instruction


The size is estimated by comparing it with the existing systems of the same kind. The experts
use it to predict the required size of various components of software and then add them to get
the total size.
Advantages:
 Universally accepted and is used in many models like COCOMO.
 Estimation is closer to the developer’s perspective.
 Simple to use.
Disadvantages:
 Different programming languages contain a different number of lines.
 No proper industry standard exists for this technique.
 It is difficult to estimate the size using this technique in the early stages of the project.
Function Point Analysis: In this method, the number and type of functions supported by the
software are utilized to find FPC(function point count). The steps in function point analysis
are:
 Count the number of functions of each proposed type.
 Compute the Unadjusted Function Points (UFP).
 Find Total Degree of Influence (TDI).
 Compute Value Adjustment Factor (VAF).
 Find the Function Point Count (FPC).
The explanation of the above points is given below:
Count the number of functions of each proposed type: Find the number of functions
belonging to the following types:
i.External Inputs: Functions related to data entering the system.
ii.External outputs: Functions related to data exiting the system.
iii. External Inquiries: They lead to data retrieval from the system but don’t change
the system.
iv. Internal Files: Logical files maintained within the system. Log files are not
included here.
v. External interface Files: These are logical files for other applications which are
used by our system.

C.S.I Institute of Technology 5

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

Compute the Unadjusted Function Points (UFP): Categorise each of the five function
types like simple, average, or complex based on their complexity. Multiply the count of each
function type with its weighting factor and find the weighted sum.
LOC and FP estimation are distinct estimation techniques. You begin with a bounded
statement of software scope and from this statement attempt to decompose the statement of
scope into problem functions that can each be estimated individually. LOC or FP (the
estimation variable) is then estimated for each function. Alternatively, you may choose
another component for sizing, such as classes or objects, changes, or business processes
affected. Baseline productivity metrics (e.g., LOC/pm or FP/pm6) are then applied to the
appropriate estimation variable, and cost or effort for the function is derived. Function
estimates are combined to produce an overall estimate for the entire project.
5.1.3 An Example of Loc-Based Estimation

Figure 5.1: Estimation table for the LOC methods


5.1.4 An Example of FP-Based Estimation
Decomposition for FP-based estimation focuses on information domain values rather
than software functions.

C.S.I Institute of Technology 6

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

Estimating Information domain values

5.2 Software Configuration Management (SCM)


Software Configuration Management (SCM) is a process to systematically manage, organize,
and control the changes in the documents, codes, and other entities during the Software
Development Life Cycle. The primary goal is to increase productivity with minimal mistakes.
SCM is part of cross-disciplinary field of configuration management and it can accurately
determine who made which revision. It involves the following activities:

C.S.I Institute of Technology 7

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

1. Identification and Establishment


Identifying the configuration items from products that compose baselines at given
points in time (a baseline is a set of mutually consistent Configuration Items, which has been
formally reviewed and agreed upon, and serves as the basis of further development).
Establishing relationship among items, creating a mechanism to manage multiple level of
control and procedure for change management system.
2. Version control
Creating versions/specifications of the existing product to build new products from the
help of SCM system. A description of version is given below:

Suppose after some changes, the version of configuration object changes from 1.0 to 1.1.
Minor corrections and changes result in versions 1.1.1 and 1.1.2, which is followed by a
major update that is object 1.2. The development of object 1.0 continues through 1.3 and 1.4,
but finally, a noteworthy change to the object results in a new evolutionary path, version 2.0.
Both versions are currently supported.
3. Change control
Controlling changes to Configuration items (CI). The change control process is explained in
Figure below:
A change request (CR) is submitted and evaluated to assess technical merit, potential side
effects, overall impact on other configuration objects and system functions, and the projected
cost of the change. The results of the evaluation are presented as a change report, which is
used by a change control board (CCB) —a person or group who makes a final decision on
the status and priority of the change. An engineering change Request (ECR) is generated for

C.S.I Institute of Technology 8

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

each approved change. Also CCB notifies the developer in case the change is rejected with
proper reason.

The ECR describes the change to be made, the constraints that must be respected, and the
criteria for review and audit. The object to be changed is “checked out” of the project
database, the change is made, and then the object is tested again. The object is then “checked
in” to the database and appropriate version control mechanisms are used to create the next
version of the software.
4. Configuration auditing – A software configuration audit complements the formal
technical review of the process and product. It focuses on the technical correctness of the
configuration object that has been modified. The audit confirms the completeness,
correctness and consistency of items in the SCM system and track action items from the audit
to closure.
5. Reporting – Providing accurate status and current configuration data to developers, tester,
end users, customers and stakeholders through admin guides, user guides, FAQs, Release
notes, Memos, Installation Guide, Configuration guide etc .
Configuration Management (SCM) is a software engineering practice that focuses on
managing the configuration of software systems and ensuring that software components are
properly controlled, tracked, and stored. It is a critical aspect of software development, as it

C.S.I Institute of Technology 9

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

helps to ensure that changes made to a software system are properly coordinated and that the
system is always in a known and stable state.
SCM involves a set of processes and tools that help to manage the different components
of a software system, including source code, documentation, and other assets. It enables
teams to track changes made to the software system, identify when and why changes were
made, and manage the integration of these changes into the final product.
5.2.1 The key objectives of SCM are to
 Control the evolution of software systems: SCM helps to ensure that changes to a
software system are properly planned, tested, and integrated into the final product.
 Enable collaboration and coordination: SCM helps teams to collaborate and coordinate
their work, ensuring that changes are properly integrated and that everyone is working
from the same version of the software system.
 Provide version control: SCM provides version control for software systems, enabling
teams to manage and track different versions of the system and to revert to earlier
versions if necessary.
 Facilitate replication and distribution: SCM helps to ensure that software systems can be
easily replicated and distributed to other environments, such as test, production, and
customer sites.
 SCM is a critical component of software development, and effective SCM practices can
help to improve the quality and reliability of software systems, as well as increase
efficiency and reduce the risk of errors.
5.2.2 Advantages of SCM
 Improved productivity and efficiency
 Reduced risk of errors and defects
 Increased collaboration and communication among team members
 Improved quality and stability of software systems
5.2.3 Disadvantages of SCM
 Difficulty in managing dependencies
 Potential for conflicts and delays, particularly in large development teams with
multiple contributors.
5.3 Project Scheduling
Software project scheduling is an action that distributes estimated effort across the planned
project duration by allocating the effort to specific software engineering tasks. It is important

C.S.I Institute of Technology 10

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

to note, however, that the schedule evolves over time. During early stages of project
planning, a macroscopic schedule is developed. This type of schedule identifies all major
process framework activities and the product functions to which they are applied. As the
project gets under way, each entry on the macroscopic schedule is refined into a detailed
schedule. Here, specific software actions and tasks (required to accomplish an activity) are
identified and scheduled. Scheduling for software engineering projects can be viewed from
two rather different perspectives.
 In the first, an end date for release of a computer-based system has already been
established. The software organization is constrained to distribute effort within the
prescribed time frame.
 The second view of software scheduling assumes that rough chronological bounds
have been discussed but that the end date is set by the software engineering
organization.
5.3.1 Basic Principles
Like all other areas of software engineering, a number of basic principles guide software
project scheduling:
Compartmentalization
The project must be compartmentalized into a number of manageable activities and tasks. To
accomplish compartmentalization, both the product and the process are refined.
Interdependency
The interdependency of each compartmentalized activity or task must be determined. Some
tasks must occur in sequence, while others can occur in parallel. Some activities cannot
commence until the work product produced by another is available. Other activities can occur
independently.
Time allocation
Each task to be scheduled must be allocated some number of work units (e.g., person-days of
effort). In addition, each task must be assigned a start date and a completion date that are a
function of the interdependencies and whether work will be conducted on a full-time or part-
time basis.
Effort validation
Every project has a defined number of people on the software team. As time allocation
occurs, you must ensure that no more than the allocated number of people has been scheduled
at any given time.

C.S.I Institute of Technology 11

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

Defined responsibilities
Every task that is scheduled should be assigned to a specific team member.
Defined outcomes
Every task that is scheduled should have a defined outcome. For software projects, the
outcome is normally a work product (e.g., the design of a component) or a part of a work
product. Work products are often combined in deliverables.
Defined milestones
Every task or group of tasks should be associated with a project milestone. A milestone is
accomplished when one or more work products has been reviewed for quality and has been
approved. Each of these principles is applied as the project schedule evolves.
5.3.2 The Relationship between People and Effort
In small software development project a single person can analyse requirements,
perform design, generate code, and conduct tests. As the size of a project increases, more
people must become involved.

Figure 5.2: The relationship between effort and delivery time


The Putnam-Norden-Rayleigh (PNR) Curve provides an indication of the relationship
between effort applied and delivery time for a software project. The curve indicates a
minimum value to that indicates the least cost for delivery. As we move left the curve rises
nonlinearly. The PNR curve also indicates that the lowest cost delivery option, to 2td. The
implication here is that delaying project delivery can reduce costs significantly.
The number of delivered lines of code (source statements), L, is related to effort and
development time by the equation:

L = P * E1/3t4/3

C.S.I Institute of Technology 12

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

Where, E is development effort in person-months, P is a productivity parameter that


reflects a variety of factors that lead to high-quality software engineering work, and t is the
project duration in calendar months. Rearranging this software equation, we can arrive at an
expression for development
Effort E:
E = L3/P3T4
Where, E is the effort expended (in person-years) over the entire life cycle for
software development and maintenance and t is the development time in years. The equation
for development effort can be related to development cost by the inclusion of a burdened
labour rate factor ($/person-year).
5.3.3 Effort Distribution
Each of the software project estimation techniques leads to estimates of work units (e.g.,
person-months) required to complete software development. A recommended distribution of
effort across the software process is often referred to as the 40–20–40 rule. Forty percent of
all effort is allocated to frontend analysis and design. A similar percentage is applied to back-
end testing.
5.4 DevOps
DevOps is basically a combination of two words Development and Operations. DevOps is a
methodology that promotes collaboration between development and operations teams,
aiming to streamline software development, delivery, and deployment processes.

5.4.1 Why DevOps?


 The goal of DevOps is to increase an organization’s speed when it comes to delivering
applications and services.

C.S.I Institute of Technology 13

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

 Many companies have successfully implemented DevOps to enhance their user


experience including Amazon, Netflix, etc.
 Facebook accomplishes this true code ownership model that makes its developers
responsible that includes testing and supporting through production and delivery for each
kernel of code. They write and update their true policies like this but Facebook has
developed a DevOps culture and has successfully accelerated its development lifecycle.
5.4.2 Motivation
The Goals of DevOps are as follows:
 Fast delivery of Product
 Low failure rate of new releases
 Shortened lead time between fixes
 Faster mean time to recovery
 Increase net profit of organization
 To reduce work in progress
 To reduce operating expenses
 To set up the automated environment
5.4.3 Benefits
Some of the primary benefits of an integrated deployment pipeline include:
 Teams are able to release new product updates and features much faster.
 There is less chance of human error by eliminating manual steps.
 Automating the compilation, testing, and deployment of code allows developers and
other DevOps team members to focus more on continuously improving and innovating a
product.
 Troubleshooting is much faster
 Updates can be easily rolled back to a previous working version.
 Production teams can better respond to user wants and needs with faster, more frequent
updates by focusing on smaller releases as opposed to large, waterfall updates of past
production systems.
5.4.3Cloud as a platform
A cloud platform refers to the operating system and hardware of a server in an Internet-based
data canter. It allows software and hardware products to co-exist remotely and at scale.
Popular platforms include Amazon Web Services (AWS), Microsoft Azure, and
Google Cloud

C.S.I Institute of Technology 14

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

Platform (GCP). The choice should consider scalability, performance, cost, supported services,
and integration options.
5.4.4 Benefits of Cloud Computing
The main benefits of cloud computing include the following:
 Cost savings – Cloud computing eliminates the need to purchase and maintain
physical servers, which can be expensive. Additionally, cloud services are often
billed on a pay-as-you-go basis, so you only pay for what you use.
 Scalability – Cloud computing allows businesses to scale up or down depending on
their needs. This can be done quickly and with minimal disruption.
 Flexibility – Cloud computing gives users access to their data and applications using
a device with an internet connection.
5.4.4 Operations
Most cloud computing services fall into five broad categories are Software as a service
(SaaS), Platform as a service (PaaS) and Infrastructure as a service (IaaS).
Software as a Service (SaaS)
Software-as-a-Service (SaaS) revolutionizes the way software is accessed and utilized. As a
cloud computing solution, it provides users seamless access to software applications via the
internet. These web-based programs can be utilized from any device with an internet
connection, eliminating the need for local installations.
Platform as a Service (PaaS)
Platform as a Service is a category of cloud computing that provides a platform and
environment to allow developers to build applications and services over the internet. PaaS
services are hosted in the cloud and accessed by users simply via their web browser. A PaaS
provider hosts the hardware and software on its own infrastructure. As a result, PaaS frees
users from having to install in-house hardware and software to develop or run a new
application. Thus, the development and deployment of the application take place independent
of the hardware.
Infrastructure-as-a-Service (IaaS)
Infrastructure-as-a-Service (IaaS) is a cloud computing solution that furnishes users with
virtualized computing components such as servers, storage, networks, and operating systems.
It is optimal for those seeking more control over their infrastructure while avoiding physical
hardware costs.

C.S.I Institute of Technology 15

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

5.5 Deployment Pipeline


In software development, a Deployment pipeline is the process of taking code from version
control and making it readily available to users of your application in an automated fashion.
When a team of developers are working on projects or features they need a reliable and
efficient way to build, test and deploy their work. Historically, this would have been a manual
process involving lots of communication and a lot of human error. Various components of
deployment pipeline are as follows.
Build Automation (Continuous Integration): Build automation, also referred to
as Continuous Integration or CI for short, are automated steps within development designed
for continuous integration – the compilation, building, and merging of new code.
Test Automation: Test automation relies on the creation of custom-written tests that are
automatically triggered throughout a deployment pipeline and work to verify new compiled
code against your organization’s predetermined acceptance criteria.
Deploy Automation (Continuous Deployment/Delivery): Like continuous integration,
deploy automation with Continuous Deployment/Delivery (CD for short) helps expedite code
delivery by automating the process of releasing code to a shared repository, and then
automatically deploying the updates to a development or production environment. There are
two important concept is used in the Deployment pipeline-
 Continuous Integration
 Continuous Deployment/Delivery
Continuous Integration
Continuous Integration can be explained mainly in 4 stages in DevOps. They are as follows:
 Getting the Source Code from SCM
 Building the code
 Code quality review
 Storing the build artifacts
Continuous Deployment/Delivery
Continuous Deployment: Continuous Deployment is the process of automatically deploying
an application into the production environment when it has completed testing and the build
stages. Here, we’ll automate everything from obtaining the application’s source code to
deploying it.

C.S.I Institute of Technology 16

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

Continuous Delivery: Continuous Delivery is the process of deploying an application into


production servers manually when it has completed testing and the build stages. Here, we’ll
automate the continuous integration processes, however, manual involvement is still required
for deploying it to the production environment.

5.5.1 DevOps Architecture


DevOps lifecycle is the methodology where professional development teams come together
to bring products to market more efficiently and quickly. The structure of the DevOps
lifecycle consists of Plan, Code, Building, Test, Releasing, Deploying, Operating, and
Monitoring.

Components are
Plan: Determining the commercial needs and gathering the opinions of end-user by
professionals in this level of the DevOps lifecycle.

C.S.I Institute of Technology 17

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

Code: At this level, the code for the same is developed and in order to simplify the
design, the team of developers uses tools and extensions that take care of security
problems.

Build: After the coding part, programmers use various tools for the submission of the
code to the common code source.
Test: This level is very important to assure software integrity. Various sorts of tests are
done such as user acceptability testing, safety testing, speed testing, and many more.
Release: At this level, everything is ready to be deployed in the operational environment.
Deploy: In this level, Infrastructure-as-Code assists in creating the operational
infrastructure and subsequently publishes the build using various DevOps lifecycle
tools.
Operate: At this level, the available version is ready for users to use. Here, the
department looks after the server configuration and deployment.
Monitor: The observation is done at this level that depends on the data which is gathered
from consumer behavior, the efficiency of applications, and from various other sources.
5.5.2 DevOps Lifecycle
DevOps Lifecycle is the set of phases that includes
Continuous Development
Continuous Development is important in DevOps because this improves efficiency every
time a piece of code is created, it is tested, built, and deployed into production. Continuous
Development raises the standard of the code and streamlines the process of repairing flaws,

C.S.I Institute of Technology 18

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

vulnerabilities, and defects. It facilitates developers’ ability to concentrate on creating high-


quality code.
Continuous Testing
Any firm can deploy continuous testing with the use of the agile and DevOps methodologies.
Depending on our needs, we can perform continuous testing using automation testing tools
such as Testsigma, Selenium, LambdaTest, etc.
Continuous Feedback
Once the application is released into the market the end users will use the application and
they will give us feedback about the performance of the application and DevOps team will
analyze the feedbacks given by end users and they will reach out to the developer team tries
to rectify the mistakes. Continuous Feedback can increase the performance of the application
and reduce bugs in the code making it smooth for end users to use the application.
Continuous Operations
We will sustain the higher application uptime by implementing continuous operation, which
will assist us to cut down on the maintenance downtime that will negatively impact end
users’ experiences. More output, lower manufacturing costs, and better quality control are
benefits of continuous operations.
5.5.3 Tools
There are many different tools that you can use to build CI/CD pipelines outlined below,
i.Jenkins-Jenkins builds and tests our software projects which continuously making it easier
for developers to integrate changes to the project, and making it easier for users to obtain a
fresh build. It also allows us to continuously deliver our software by integrating with a large
number of testing and deployment technologies.
ii. ELK Stack- The ELK Stack is a collection of three open-source products — Elasticsearch,
Logstash, and Kibana. ELK stack provides centralized logging in order to identify problems
with servers or applications. It allows you to search all the logs in a single place.
iii. Docker- Docker is an open-source containerization platform by which you can pack your
application and all its dependencies into a standardized unit called a container. Containers
are light in weight which makes them portable and they are isolated from the underlying
infrastructure and from each other container. You can run the docker image as a docker
container in any machine where docker is installed without depending on the operating
system.

C.S.I Institute of Technology 19

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

iv. Puppet- Puppet is a DevOps configuration management tool. This is developed by Puppet
Labs and is available for both open-source and enterprise versions.
 It is used to centralize and automate the procedure of configuration management.This tool
is developed using Ruby DSL (domain-specific language), which allows you to change a
complete infrastructure in code format and can be easily managed and configured.
 Puppet tool deploys, configures, and manages the servers.
 This is used particularly for the automation of hybrid infrastructure delivery and
management.With the help of automation, Puppet enables system administrators to
operate easier and faster.
v. Ansible- Ansible is an open-source IT engine that automates application deployment, cloud
provisioning, intra service orchestration, and other IT tools.Ansible is easy to deploy because
it does not use any agents or custom security infrastructure on the client-side, and by pushing
modules to the clients. These modules are executed locally on the client-side, and the output
is pushed back to the Ansible server.
vi. Monit- Monit is a free, open-source process supervision tool for Unix and Linux. With
Monit, system status can be viewed directly from the command line, or via the native
HTTP(S) web server. Monit is able to do automatic maintenance, repair, and run meaningful
causal actions in error situations.
vii. Azure DevOps (formerly VSTS)- zure DevOps supports a collaborative culture and set
of processes that bring together developers, project managers, and contributors to develop
software. It allows organizations to create and improve products at a faster pace than they can
with traditional software development approaches.
viii. CodeShip-Codeship is a hosted continuous delivery service that focuses on speed,
reliability and simplicity. You configure Codeship to build and deploy your application from
GitHub to the staging or the production platform of your choice.
The service offers a variety of powerful setup options. Currently, Codeship is integrated with
popular source code managers GitHub and Bitbucket. It supports a variety of programming
languages (Ruby on Rails, Node.js, PHP, Java, Go, Dart, etc.) and deployment platforms
(Amazon Web Services, Heroku, Google App Engine, etc.)
Cloud DevOps tools
World’s leading cloud providers like AWS, Azure and Google provide a number of ‘DevOps
as a Service’ offerings. Each of them provides an end-to-end environment for DevOps teams
enabling them to eliminate the need to download, learn, and integrate multiple point

C.S.I Institute of Technology 20

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering


solutions.

C.S.I Institute of Technology 21

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

1. AWS DevOps Tools


Some of the following Cloud DevOps services are provided by AWS:
AWS CodePipeline: This builds, tests, and deploys code every time there is a code change,
based on the predefined release workflow models. This enables rapid and reliable delivery of
features and updates.
Integrate your AWS CodePipeline with BrowserStack
AWS CodeBuild: This compiles the source code, runs the tests, and generates ready-to-
deploy software packages. It scales continuously and processes several builds concurrently
enabling CI/CD in the cloud.
AWS CodeDeploy: This automates code deployments to any instance, including on-premises
servers, AWS EC2, AWS Lambda, etc. It facilitates rapid releases of new features, handles
complexities associated with application updates, and can help avoid downtime during
deployment.
AWS CodeStar: This helps in quickly developing, building, and deploying applications on
AWS. It’s a unified user interface which enables one to easily manage software development
activities in one place.
AWS CodeCommit: This helps to host secure and highly scalable private Git repositories
and can be used to securely store anything from source code to binaries. It works seamlessly
with the existing Git tools.
2. Azure DevOps Tools
Some of the following Cloud DevOps services are provided by Azure:
Azure Pipelines: This builds and tests project codes automatically. It utilizes CI/CD while
building, testing, and shipping the code to the respective environment of choice. It also
supports a number of programming languages and project types.
Azure Boards: This provides interactive and customizable tools for managing software
projects. It offers a variety of capabilities including calendar views, native support for Scrum,
Kanban, and Agile processes, reporting, and configurable dashboards.
Azure Repos: This provides version control tools to help manage the project code. It offers
GIT and Team Foundation Version Control (TFVC) to manage the different code versions.
Azure Test Plans: This provides tools for driving quality and collaboration across the SDLC.
It includes capabilities for various types of testing such as manual testing, automation testing,
exploratory testing, etc, along with work items for feedback and reviews.

C.S.I Institute of Technology 22

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

Azure Artifacts: This manages the dependencies used in the source code. It can host and
share packages publicly or privately with your team or the entire organization. It also
supports a range of package types, such as npm, NuGet, Python, Universal Packages, and
Maven.
3. Google DevOps Tools
Some of the following Cloud DevOps services are provided by Google:
Google Cloud Build: This executes the project builds on Google Cloud Platform
infrastructure. It can import source code from Google Cloud Storage, Cloud Source
Repositories, or GitHub, execute builds as per the required specifications, and produce
artifacts such as Docker containers or Java archives.
Google Cloud Deploy: This automates applications’ delivery to a series of target
environments in a defined promotion sequence. An updated application can be deployed by
creating a release which is then managed by the delivery pipeline for the entire lifecycle of its
release.
Google Artifact Registry: This centrally manages artifacts and dependencies. It provides
simple integration with existing CI/CD tools so that automated pipelines can be set up.
Google Cloud Monitoring: This collects metrics, events, and metadata from various sources,
including Google Cloud, AWS, etc. Google Cloud’s operations suite ingests this data and
generates insights as charts, alerts, and dashboards.
5.5.4 Advantages
 Faster Delivery: DevOps enables organizations to release new products and updates faster
and more frequently, which can lead to a competitive advantage.
 Improved Collaboration: DevOps promotes collaboration between development and
operations teams, resulting in better communication, increased efficiency, and reduced
friction.
 Improved Quality: DevOps emphasizes automated testing and continuous integration,
which helps to catch bugs early in the development process and improve the overall
quality of software.
 Increased Automation: DevOps enables organizations to automate many manual
processes, freeing up time for more strategic work and reducing the risk of human error.
 Better Scalability: DevOps enables organizations to quickly and efficiently scale their
infrastructure to meet changing demands, improving the ability to respond to business
needs.

C.S.I Institute of Technology 23

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering


 Increased Customer Satisfaction: DevOps helps organizations to deliver new features and
updates more quickly, which can result in increased customer satisfaction and loyalty.

C.S.I Institute of Technology 24

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

 Improved Security: DevOps promotes security best practices, such as continuous testing
and monitoring, which can help to reduce the risk of security breaches and improve the
overall security of an organization’s systems.
 Better Resource Utilization: DevOps enables organizations to optimize their use of
resources, including hardware, software, and personnel, which can result in cost savings
and improved efficiency.
5.5.5 Disadvantages
 High Initial Investment: Implementing DevOps can be a complex and costly process,
requiring significant investment in technology, infrastructure, and personnel.
 Skills Shortage: Finding qualified DevOps professionals can be a challenge, and
organizations may need to invest in training and development programs to build the
necessary skills within their teams.
 Resistance to Change: Some employees may resist the cultural and organizational
changes required for successful DevOps adoption, which can result in resistance,
resistance to collaboration, and reduced efficiency.
 Lack of Standardization: DevOps is still a relatively new field, and there is a lack of
standardization in terms of methodologies, tools, and processes.
 Increased Complexity: DevOps can increase the complexity of software delivery,
requiring organizations to manage a larger number of moving parts and integrate multiple
systems and tools.
 Dependency on Technology: DevOps relies heavily on technology, and organizations
may need to invest in a variety of tools and platforms to support the DevOps process.
 Need for Continuous Improvement: DevOps requires ongoing improvement and
adaptation, as new technologies and best practices emerge.
Part A(Two Marks)
1. Define measure.
Measure is defined as a quantitative indication of the extent, amount, dimension, or size of
some attribute of a product or process.
2. Define metrics.
Metrics is defined as the degree to which a system component, or process possesses a given
attribute.
3. What are the types of metrics?
Direct metrics –It refers to immediately measurable attributes.

C.S.I Institute of Technology 25

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

Example –Lines of code, execution speed.


Indirect metrics –It refers to the aspects that are not immediately quantifiable or measurable.
Example –functionality of a program.
4. What is software maintenance?
Software maintenance is an activity in which program is modified after it has been put into use.
5. Define maintenance.
Maintenance is defined as the process in which changes are implemented by either modifying
the existing systems architecture or by adding new components to the system.
6. What are the types of software maintenance?
Corrective maintenance –Means the maintenance for correcting the software faults.
7. Define project scheduling.
Software project scheduling is an action that distributes estimated effort across the planned
project duration by allocating the effort to specific software engineering tasks.
8. List different Phases of the DevOps Lifecycle
 Plan
 Test  Monitor
 Code
 Release  Deploy
 Build
 Operate
9. What is DevOps?
DevOps is a software development approach emphasizing collaboration, automation, and
continuous delivery to provide high-quality products to customers quickly and efficiently.
DevOps breaks down silos between development and operations teams to enable seamless
communication, faster time-to-market, and improved customer satisfaction.
10. Define Advantages of DevOps.
 Faster Delivery
 Improved Collaboration
 Improved Quality
 Increased Automation
11. Define Continuous Delivery.
Continuous Delivery is the process of deploying an application into production servers
manually when it has completed testing and the build stages. Here, we’ll automate the
continuous integration processes, however, manual involvement is still required for
deploying it to the production environment.
12. List the Benefits of Cloud Computing.

C.S.I Institute of Technology 26

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

 Cost savings – Cloud computing eliminates the need to purchase and maintain physical
servers, which can be expensive.
 Scalability – Cloud computing allows businesses to scale up or down depending on
their needs.
 Flexibility – Cloud computing gives users access to their data and applications using a
device with an internet connection.
13. Define Advantages of SCM.
 Improved productivity and efficiency
 Reduced risk of errors and defects
 Increased collaboration and communication among team members
 Improved quality and stability of software systems
14. List the key objectives of SCM?
 Control the evolution of software systems
 Enable collaboration and coordination
 Provide version control
 Facilitate replication and distribution
15. What is Software Configuration Management (SCM)?
Software Configuration Management (SCM) is a process to systematically manage, organize,
and control the changes in the documents, codes, and other entities during the Software
Development Life Cycle. The primary goal is to increase productivity with minimal mistakes.
16. Define Function Point Analysis.
Function Point Analysis is the number and type of functions supported by the software are
utilized to find FPC (function point count).
17. Define LOC & FP Based Estimation.
LOC and FP data are used in two ways during software project estimation:
 as estimation variables to “size” each element of the software and
 as baseline metrics collected from past projects and used in conjunction with
estimation variables to develop cost and effort projections.
18. Define Cloud as a platform

Arunachala College of Engineering for Women 27

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

A cloud platform refers to the operating system and hardware of a server in an Internet-based
data canter. It allows software and hardware products to co-exist remotely and at scale.
Popular platforms include Amazon Web Services (AWS), Microsoft Azure, and Google
Cloud Platform (GCP).
19. What is Deployment pipeline?
In software development, a Deployment pipeline is the process of taking code from version
control and making it readily available to users of your application in an automated fashion.
When a team of developers are working on projects or features they need a reliable and
efficient way to build, test and deploy their work.
20. Define Test Automation?
Test automation relies on the creation of custom-written tests that are automatically triggere
throughout a deployment pipeline and work to verify new compiled code against your
organization’s predetermined acceptance criteria.
Part B(Possible Questions)
1. Explain LOC and FP based Estimation.
2. Explain project scheduling in detail.
3. Explain Software Configuration Management.
4. Explain the need for software measures and describe various metrics.
5. Explain in detail about the various levels of Capability Maturity Model (CMM)
6. What are the different types of software Maintenance activities envisaged for installed
software?
7. Explain the features of a popular CASE tools that you are aware of.
8. Define Deployment Pipeline. What are the DevOps Architecture?
Part C (Possible Questions)
1. Explain Case tools.
2. Explain software project estimation.
3. Explain Deployment pipeline Architecture Building and Testing.
4. Define the Relationship between People and Effort.
5. Explain Software Configuration Management. What are the key objectives of SCM?

Arunachala College of Engineering for Women 28

Downloaded by Soundarya Lakshmi ([email protected])


lOMoARcPSD|41997990

Object Oriented Software Engineering

Reference Books
1. Carlo Ghezzi, Mehdi Jazayeri, Dino Mandrioli, Fundamentals of Software Engineering,
2nd edition, PHI Learning Pvt. Ltd., 2010.
2. Craig Larman, Applying UML and Patterns, 3rd ed, Pearson Education, 2005.
3. Len Bass, Ingo Weber and Liming Zhu, DevOps: A Software Architects Perspective,
Pearson Education, 2016
4. Rajib Mall, Fundamentals of Software Engineering, 3rd edition, PHI Learning Pvt. Ltd.,
2009.
5. Stephen Schach, Object-Oriented and Classical Software Engineering, 8th ed, McGraw-
Hill, 2010.
6. Bernd Bruegge and Allen H. Dutoit, “Object-Oriented Software Engineering: Using
UML,Patterns and Java”, Third Edition, Pearson Education, 2009.
7. Roger S. Pressman, Object-Oriented Software Engineering: An Agile Unified
Methodology,First Edition, Mc Graw-Hill International Edition, 2014.

Arunachala College of Engineering for Women 29

Downloaded by Soundarya Lakshmi ([email protected])

You might also like