oose-unit-v-unit-5-notes
oose-unit-v-unit-5-notes
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
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
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
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
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
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
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.
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.
L = P * E1/3t4/3
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.
Components are
Plan: Determining the commercial needs and gathering the opinions of end-user by
professionals in this level of the DevOps lifecycle.
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,
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
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.
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.
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
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?
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.