Professional Documents
Culture Documents
SE Unit - V
SE Unit - V
Software Project Management (SPM) is a proper way of planning and leading software projects.
It is a part of project management in which software projects are planned, implemented,
monitored, and controlled. This article focuses on discussing Software Project Management
(SPM).
Need for Software Project Management
Software is a non-physical product. Software development is a new stream in business and there
is very little experience in building software products. Most of the software products are made to
fit clients’ requirements. The most important is that basic technology changes and advances so
frequently and rapidly that the experience of one product may not be applied to the other one.
Such types of business and environmental constraints increase risk in software development hence
it is essential to manage software projects efficiently. It is necessary for an organization to deliver
quality products, keep the cost within the client’s budget constraint, and deliver the project as per
schedule. Hence, in order, software project management is necessary to incorporate user
requirements along with budget and time constraints.
Numerous issues can develop if a Software project manager lacks the necessary expertise or
knowledge. Software Project management has several drawbacks, including resource loss,
scheduling difficulty, data protection concerns, and interpersonal conflicts between
Developers/Engineers/Stakeholders. Furthermore, outsourcing work or recruiting
additional personnel to complete the project may result in hefty costs for one’s company.
3. Overhead in Communication
Recruits enter your organization when we hire software project management personnel. This
provides a steady flow of communication that may or may not match a company’s culture. As a
result, it is advised that you maintain your crew as
small as feasible. The communication overhead tends to skyrocket when a team becomes large
enough. When a large team is needed for a project, it’s critical to identify software project
managers who can conduct effective communication with a variety of people.
4. Lack of Originality
Software Project managers can sometimes provide little or no space for creativity. Team leaders
either place an excessive amount of emphasis on management processes or impose hard deadlines
on their employees, requiring them to develop and operate code within stringent guidelines. This
can stifle innovative thought and innovation that could be beneficial to the project. When it comes
to Software project management, knowing when to encourage creativity and when to stick to the
project plan is crucial. Without Software project management personnel, an organization can
perhaps build and ship code more quickly. However, employing a trained specialist to handle
these areas, on the other hand, can open up new doors and help the organization achieve its
objectives more quickly and more thoroughly.
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, the 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 tracks action items from the audit to closure.
5. Reporting – Providing accurate status and current configuration data to developers, testers,
end users, customers, and stakeholders through admin guides, user guides, FAQs, Release
notes, Memos, Installation Guide, Configuration guides, etc.
3. Project Scheduling
A schedule in your project’s time table actually consists of sequenced activities and milestones
that are needed to be delivered under a given period of time. Project schedule simply means a
mechanism that is used to communicate and know about that tasks are needed and has to be
done or performed and which organizational resources will be given or allocated to these tasks
and in what time duration or time frame work is needed to be performed. Effective project
scheduling leads to success of project, reduced cost, and increased customer satisfaction.
Scheduling in project management means to list out activities, deliverables, and milestones
within a project that are delivered. It contains more notes than your average weekly planner
notes. The most common and important form of project schedule is Gantt chart.
Process
: The manager needs to estimate time and resources of project while scheduling project. All
activities in project must be arranged in a coherent sequence that means activities should be
arranged in a logical and well-organized manner for easy to understand. Initial estimates of
project can be made optimistically which means estimates can be made when all favorable things
will happen and no threats or problems take place. The total work is separated or divided into
various small activities or tasks during project schedule. Then, Project manager will decide time
required for each activity or task to get completed. Even some activities are conducted and
performed in parallel for efficient performance. The project manager should be aware of fact
that each stage of project is not problem-free.
4. DevOps
DevOps is a software development methodology that improves the collaboration between
developers and operations teams using various automation tools. These automation tools are
implemented using various stages which are a part of the DevOps Lifecycle.
Goal: The goal of DevOps is to increase an organization speed when it comes to delivering
applications and services. Many companies have successfully implemented devOps to enhance
their user experience like amazon, netflix etc.
Example:
Facebook’s mobile app which is updated every two weeks effectively telling users you can have
what you want and you can have it. Now ever wondered how facebook was able to do the social
smoothing ? It’s the DevOps philosophy that helps facebook and sure that apps aren’t outdated
and that users get the best experience Facebook. Facebook accomplishes this true of 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 its true policies
like this but Facebook has developed a DevOps culture and has successfully accelerated its
development lifecycle.
Industries have started to gear up for the digital transformation by shifting their means to weeks
and months instead of years while maintaining high quality as a result. The solution to all this
is- DevOps.
The DevOps Lifecycle divides the SDLC lifecycle into the following stages:
5.Motivation
The motivation behind DevOps stems from the need to address challenges and inefficiencies
in traditional software development and IT operations practices. Several key factors have
driven the adoption of DevOps practices and principles:
In summary, the motivation behind DevOps lies in the need for organizations to adapt to the
evolving demands of the digital economy by embracing collaborative, agile, and automated
approaches to software development, deployment, and operations. By adopting DevOps
practices and principles, organizations can achieve greater efficiency, resilience, and
competitiveness in today's fast-paced and dynamic technology landscape.
6. Cloud as a platform
The cloud has revolutionized the landscape of software engineering by providing a powerful and flexible
platform for developing, deploying, and managing software applications. As a platform, the cloud offers
numerous benefits and capabilities that enable organizations to innovate, scale, and optimize their
software engineering processes. Here are some key aspects of the cloud as a platform in software
engineering:
5. Cost Efficiency:
Cloud platforms offer a pay-as-you-go pricing model, where organizations pay only for the resources and
services they consume. This eliminates the need for upfront capital investments in hardware and
infrastructure and allows organizations to scale resources based on actual usage and demand, optimizing
costs and resource utilization.
In summary, the cloud as a platform has transformed software engineering by providing a scalable,
flexible, and cost-effective environment for building, deploying, and managing software applications. By
leveraging cloud services, organizations can accelerate innovation, improve agility, and deliver superior
experiences to users while optimizing costs and mitigating risks in today's dynamic and competitive
market landscape.
7. Cloud as a platform-Operations
. In the context of cloud computing, operations refer to the management, monitoring, and maintenance of
cloud-based infrastructure, applications, and services. Cloud operations encompass a wide range of
activities aimed at ensuring the availability, performance, security, and efficiency of cloud environments.
Here are some key aspects of cloud operations as a platform:
2. Configuration Management:
Cloud operations teams manage and maintain configuration settings, parameters, and policies across cloud
environments. They use configuration management tools to automate the configuration of servers,
networking, security settings, and other infrastructure components, ensuring consistency and compliance
with organizational standards and policies.
6. Performance Optimization:
Cloud operations teams optimize the performance and efficiency of cloud environments by tuning
configurations, optimizing resource utilization, and scaling resources dynamically based on workload
demand. They identify and address performance bottlenecks, optimize application code, and leverage
caching and content delivery networks (CDNs) to improve response times and user experience.
8.Deployment Pipeline
A deployment pipeline in software engineering is a continuous delivery practice that automates the
process of building, testing, and deploying software applications across different environments, typically
from development through to production. It is a series of automated stages that code changes pass through
before being released into production. The primary goal of a deployment pipeline is to ensure that changes
to the codebase are thoroughly tested, validated, and ready for production deployment.
In summary, deployment pipelines play a crucial role in modern software engineering practices by
automating the process of building, testing, and deploying software changes, enabling organizations to
release high-quality software more frequently, reliably, and efficiently.
Introduction: The software needs the architectural design to represents the design of software.
IEEE defines architectural design as “the process of defining a collection of hardware and
software components and their interfaces to establish the framework for the development of a
computer system.” The software that is built for computer-based systems can exhibit one of
these many architectural styles.
Each style will describe a system category that consists of :
The use of architectural styles is to establish a structure for all the components of the system.
• A data store will reside at the center of this architecture and is accessed frequently by
the other components that update, add, delete or modify the data present within the
store.
• The figure illustrates a typical data centered style. The client software access a central
repository. Variation of this approach are used to transform the repository into a
blackboard when data related to client or data of interest for the client change the
notifications to client software.
• This data-centered architecture will promote integrability. This means that the
existing components can be changed and new client components can be added to the
architecture without the permission or concern of other clients.
• Data can be passed among clients using blackboard mechanism.
Advantage of Data centered architecture
• Repository of data is independent of clients
• Client work independent of each other
• It may be simple to add additional clients.
• Modification can be very easy
• This kind of architecture is used when input data is transformed into output data through a
series of computational manipulative components.
• The figure represents pipe-and-filter architecture since it uses both pipe and filter and it has
a set of components called filters connected by lines.
• Pipes are used to transmitting data from one component to the next.
• Each filter will work independently and is designed to take data input of a certain form and
produces data output to the next filter of a specified form. The filters don’t require any
knowledge of the working of neighboring filters.
• If the data flow degenerates into a single line of transforms, then it is termed as batch
sequential. This structure accepts the batch of data and then applies a series of sequential
components to transform it.
Advantages of Data Flow architecture
• It encourages upkeep, repurposing, and modification.
• With this design, concurrent execution is supported.
The disadvantage of Data Flow architecture
• It frequently degenerates to batch sequential system
• Data flow architecture does not allow applications that require greater user engagement.
• It is not easy to coordinate two different but related streams
Data Flow architecture
3] Call and Return architectures: It is used to create a program that is easy to scale and
modify. Many sub-styles exist within this category. Two of them are explained below.
4] Object Oriented architecture: The components of a system encapsulate data and the
operations that must be applied to manipulate the data. The coordination and communication
between the components are established via the message passing.
Characteristics of Object Oriented architecture
• Object protect the system’s integrity.
• An object is unaware of the depiction of other items.
Advantage of Object Oriented architecture
• It enables the designer to separate a challenge into a collection of autonomous objects.
• Other objects are aware of the implementation details of the object, allowing changes to be
made without having an impact on other objects.
5] Layered architecture:
• A number of different layers are defined with each layer performing a well-defined set of
operations. Each layer will do some operations that becomes closer to machine instruction
set progressively.
• At the outer layer, components will receive the user interface operations and at the inner
layers, components will perform the operating system interfacing(communication and
coordination with OS)
• Intermediate layers to utility services and application software functions.
• One common example of this architectural style is OSI-ISO (Open Systems Interconnection-
International Organisation for Standardisation) communication system.
Layered architecture:
10 Deployment
Deploying software
Software deployment is the process of making software available to be used on a system by users and
other programs. You might deploy software to create a backup copy of the software, to move the software
to another system, or to create another SMP/E-serviceable copy for installing service or other products.
To assist you with performing these tasks, the Software Management task provides the deployment
capability.
A deployment is a checklist that guides you through the software deployment process. It is the object in
which z/OSMF stores your input and any output that is generated for each step in the checklist. You can
use a deployment to deploy one software instance onto one system at a time.
To view a list of current or past deployments or to define a new deployment, use the Deployments page.
To display this page, click Deployments on the Software Management page or select Deployments from
the Switch To menu provided on the Software Instances page and the Products page.
Deployment checklist
The deployment checklist guides you through the following steps:
• Specifying the name, description, and categories to use for the deployment.
• Selecting the software to be deployed.
• Selecting the objective of the deployment.
• Generating reports that help you identify if SYSMODs are missing in the source software or any
related instances.
• Specifying the data set names, catalogs, volumes, mount points, and SMP/E zone names to use for
the target software.
• Defining the settings to use for the deployment jobs, and generating the jobs.
• Submitting the deployment jobs, and viewing the job output.
• Specifying the name, description, and categories to use for the target software.
When completing the steps in the checklist, you will work with the source for the deployment and the
target for the deployment. The source for the deployment is the software to be deployed or the original
copy. The source can be either a software instance or a portable software instance. The target for the
deployment is the new software copy and will be a software instance. When a deployment is complete,
you will have two copies of the software – the source copy and the target copy.
The deployment checklist helps you adhere to IBM® recommendations for software deployment because many
of those recommendations are integrated into the deployment process. For example, when deploying SMP/E
software, z/OSMF:
• Uses SMP/E DDDEF entries to automatically locate data sets, such as SMP/E data sets, target
libraries, and distribution libraries.
• Deploys all of the software included in a target zone and optionally the related distribution zone.
• Copies the SMP/E consolidated software inventory (CSI) with the software. If you currently do
not copy your SMP/E CSIs, you will see a slight increase in DASD usage per target software.
Deployment history
As you complete each step in the checklist, z/OSMF maintains a history or log of your input and any
output it generates in the deployment object. For example, z/OSMF captures the:
You can use this information to assist you with audits and problem determination. You can also use it to
simplify subsequent deployments by basing them on existing deployments. For more information about
the contents of the deployment history, see help topic View Deployment page. To view the history,
complete the steps provided in help topic Viewing deployments.
11.Deployments Tools
In software engineering, various tools are available to facilitate the deployment process, automate tasks,
and streamline the release of software applications. These tools help manage the deployment pipeline,
orchestrate releases, and ensure consistency and reliability across different environments. Here are some
commonly used deployment tools in software engineering:
These tools play a critical role in modern software engineering practices by automating the deployment
process, managing infrastructure configurations, and ensuring consistency, reliability, and scalability
across software deployments. Depending on the specific requirements and preferences of an organization,
different tools may be chosen to support the deployment and release management lifecycle.
Project Overview:
Project Name: Online Task Management System (OTMS)
Objective: Develop a web-based task management application to help teams organize, track, and
prioritize tasks and projects efficiently.
Project Scope and Requirements:
1. User Roles:
• Admin: Manage users, projects, and permissions.
• Team Members: Create, assign, and update tasks.
2. Key Features:
• User Authentication and Authorization
• Task Management (Create, Assign, Update, Close)
• Project Management (Create, Update, Delete)
• Task Status Tracking (Open, In Progress, Completed)
• User Notifications and Reminders
3. Technology Stack:
• Frontend: React.js
• Backend: Node.js with Express.js
• Database: MongoDB
• Authentication: JSON Web Tokens (JWT)
Project Management Approach:
1. Agile Methodology:
• Adopt Agile principles and practices, including iterative development, continuous feedback, and
adaptive planning.
• Use Scrum framework with sprints of 2 weeks duration for incremental development and delivery.
2. Team Structure:
• Scrum Master: Responsible for facilitating Scrum events, removing impediments, and ensuring team
adherence to Agile principles.
• Development Team: Cross-functional team comprising frontend and backend developers, UI/UX
designers, and QA engineers.
3. Project Phases:
• Initiation Phase: Define project objectives, scope, and requirements. Create project plan, schedule,
and resource allocation.
• Planning Phase: Break down requirements into user stories, tasks, and acceptance criteria. Prioritize
user stories based on business value and complexity.
• Execution Phase: Implement user stories and features in sprints. Conduct daily standup meetings,
sprint planning, sprint review, and retrospective meetings.
• Monitoring and Control Phase: Monitor project progress, track sprint velocity, and identify and
address issues and risks in real-time.
• Closure Phase: Conduct final acceptance testing, document lessons learned, and prepare for project
deployment and release.
Project Tools and Technologies:
1. Project Management Tools:
• Jira: Use Jira for backlog management, sprint planning, task tracking, and issue resolution.
• Confluence: Collaborative documentation tool for capturing project requirements, user stories, and
design specifications.
2. Version Control:
• Git: Utilize Git for version control, branching, and merging of code changes.
3. Communication and Collaboration:
• Slack: Real-time messaging platform for team communication, collaboration, and coordination.
• Zoom: Conduct virtual meetings, sprint reviews, and retrospectives with distributed team members.
4. Testing and Quality Assurance:
• Jest and Enzyme: Unit testing frameworks for frontend React components.
• Postman: API testing tool for testing backend RESTful APIs.
• Selenium WebDriver: Automated browser testing for end-to-end testing of web applications.
Project Deliverables and Milestones:
1. Minimum Viable):
• Basic Product (MVP functionality including user authentication, task creation, assignment, and
status tracking.
• MVP delivered by the end of Sprint 3.
2. Enhancements and Iterations:
• Incremental feature additions and improvements based on user feedback and stakeholder input.
• Regular sprint reviews and retrospectives to identify areas for optimization and refinement.
Project Success Metrics:
1. User Adoption and Satisfaction: Measure user engagement, feedback, and adoption rates through user
surveys and analytics.
2. Delivery Timelines and Budget Adherence: Track project progress against planned timelines and budgets.
3. Quality and Reliability: Monitor defect rates, system performance, and user-reported issues post-
deployment.
4. Stakeholder Satisfaction: Assess stakeholder satisfaction through regular project status updates, demos,
and feedback sessions.
Conclusion:
Effective project management is critical for the successful delivery of software projects. By following
Agile principles, leveraging appropriate project management tools, and fostering collaboration and
communication among team members, the Online Task Management System project aims to deliver a
high-quality, user-friendly software application that meets the needs and expectations of its stakeholders.