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

Software Engineering Moocs Report

The MOOC Completion Report details Praveen Shah's completion of the 'Introduction to Software Engineering' course on Coursera, authorized by IBM, which he finished on May 8, 2025. The course covered essential software development principles, methodologies, and tools, including the Software Development Life Cycle (SDLC), Agile and Waterfall methodologies, and version control systems like Git. Key learning outcomes included a comprehensive understanding of software engineering practices, skills in requirement analysis and debugging, and familiarity with industry-standard tools, preparing Shah for future roles in the tech industry.

Uploaded by

karanbhakuni21
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)
2 views

Software Engineering Moocs Report

The MOOC Completion Report details Praveen Shah's completion of the 'Introduction to Software Engineering' course on Coursera, authorized by IBM, which he finished on May 8, 2025. The course covered essential software development principles, methodologies, and tools, including the Software Development Life Cycle (SDLC), Agile and Waterfall methodologies, and version control systems like Git. Key learning outcomes included a comprehensive understanding of software engineering practices, skills in requirement analysis and debugging, and familiarity with industry-standard tools, preparing Shah for future roles in the tech industry.

Uploaded by

karanbhakuni21
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/ 25

MOOCS Completion Report

ON
“Introduction to Software Engineering”

Graphic Era Hill University, Dehradun


School Of Computing
Department of Computer Applications

SUBMITTED BY: SUBMITTED TO:


Name: Praveen Shah Dr. Poonam Verma
Course: MCA Assistant Professor
Roll No. 2301266 (39)

Software Engineering Page 1


MOOC Completion Report

Student Details
Student Name: Praveen Shah
Course Title: Introduction to Software Engineering
Platform: Coursera
Authorized by: IBM
Course Type: Online Non-Credit Course
Completion Date: May 8, 2025
Verified Certificate URL: https://coursera.org/verify/CBL9VYBQ8PF7

MOOC Course Details


Course Title: Introduction to Software Engineering
Platform: Coursera
Offering Institution: IBM
Course Duration: 6 Weeks, April–May 2025
Instructor(s): Lin Joyner, Rav Ahuja, Bethany Hudnutt
Certificate URL: https://coursera.org/verify/CBL9VYBQ8Pf7

Software Engineering Page 2


Course Overview

The "Introduction to Software Engineering" course offers essential foundational knowledge in the
principles, methodologies, and best practices of modern software development. Designed specifically
for beginners and those seeking a structured entry into the field, the course covers the key stages of the
Software Development Life Cycle (SDLC), including requirement analysis, design, development,
testing, deployment, and maintenance.
Learners are introduced to both traditional and agile methodologies, such as the Waterfall model and
Scrum framework, to understand different approaches to managing and executing software projects.
The course highlights how these models are applied in real-world scenarios, enabling students to
develop a clear understanding of when and how to use each method effectively.
In addition to development processes, the course emphasizes quality assurance, debugging, and the use
of version control systems like Git, which are crucial for collaborative software projects. Through a
combination of theoretical concepts and practical insights, students gain a holistic view of how software
is planned, built, and refined in professional environments.
This course equips learners with the confidence and competence to contribute meaningfully to software
projects, preparing them for academic work, internships, and early-career roles in the tech industry.

Software Engineering Page 3


Topic Covered

1. Software Development Life Cycle (SDLC)

The SDLC is a structured process that guides the planning, creation, testing, and deployment of
software systems. It ensures a systematic and disciplined approach to software development. Each
phase—requirement analysis, design, implementation, testing, and maintenance—has defined goals
and deliverables.

2. Agile and Waterfall Methodologies

Agile and Waterfall are two prominent software development models. Waterfall follows a linear and
sequential approach, ideal for well-defined projects. Agile, on the other hand, promotes iterative
development and frequent stakeholder feedback, enabling greater flexibility and adaptability.

3. Requirement Analysis, Software Design, and Testing

Requirement analysis involves gathering functional and non-functional needs from stakeholders.
Software design translates these requirements into technical solutions using design patterns and
architecture. Testing ensures the system meets specifications and performs reliably under various
conditions.

4. Version Control, Debugging, and Maintenance

Version control systems like Git help track changes in code and enable collaborative development.
Debugging is the process of identifying and resolving errors or bugs in software. Maintenance involves
updating and improving software after deployment to adapt to new requirements or fix issues.

5. Industry Tools and Best Practices

Modern software development relies on tools like IDEs, issue trackers, and version control platforms.
Best practices include code reviews, continuous integration, and documentation. These tools and
practices help teams produce high-quality, maintainable, and scalable software solutions.

Software Engineering Page 4


Tools and Technologies Used

1. Git and GitHub for Version Control and Collaboration

Git is a distributed version control system that helps manage changes in source code. GitHub provides
a web-based interface for sharing and collaborating on projects using Git. Together, they support team-
based development, code tracking, and project versioning.

2. Integrated Development Environments (e.g., VS Code)

IDEs like Visual Studio Code offer an all-in-one interface for writing, testing, and debugging code.
They enhance productivity by integrating tools such as syntax highlighting, extensions, and terminal
access. These environments streamline the development process significantly.

3. Agile Project Management Tools (e.g., Trello, Jira)

Tools like Trello and Jira are used to plan, track, and manage software development tasks within Agile
frameworks. They support sprint planning, task assignments, and workflow visualization. These tools
help ensure transparency, accountability, and efficient project delivery.

4. Coursera Platform for Structured Online Learning

Coursera provides a flexible and structured environment for online education. It hosts high-quality
courses created by top institutions and companies. The platform supports video lectures, assessments,
and certifications, enabling self-paced, outcome-driven learning.

Software Engineering Page 5


Key Learning Outcomes

• Comprehensive understanding of the Software Development Life Cycle (SDLC): Learners gain insight
into each phase of the SDLC, including requirement gathering, design, implementation, testing,
deployment, and maintenance. The course explains how these stages connect and contribute to the
creation of effective, scalable, and maintainable software systems.
• Detailed overview of Agile and Waterfall methodologies: The course introduces students to both
traditional and modern approaches to software development. It explores the sequential structure of the
Waterfall model alongside the flexibility and iterative nature of Agile frameworks such as Scrum,
highlighting their respective strengths, limitations, and use cases.
• Fundamentals of requirement analysis, software design, and quality assurance: Students learn to capture
and interpret user requirements, translate them into functional specifications, and apply design principles
to build software systems that meet both technical and user expectations. Emphasis is also placed on
quality assurance processes that ensure software reliability and performance.
• Foundational skills in version control, debugging, and team collaboration: Learners are introduced to
industry-standard tools like Git for version control, which help manage code changes and support
collaborative development. The course also covers essential debugging strategies and emphasizes
effective communication and coordination within software teams.
• Awareness of professional tools and industry practices: The course familiarizes students with commonly
used software engineering tools, integrated development environments (IDEs), and documentation
standards. This exposure prepares learners to adapt to professional workflows and best practices used
across the software industry.

Software Engineering Page 6


Skills Attained

Through this course, I developed a solid and structured understanding of software engineering
principles and core development methodologies. I gained the ability to analyze real-world software
requirements and translate them into well-defined technical solutions. One of the major skills I acquired
was the ability to differentiate between development frameworks such as Agile and Waterfall and
evaluate their appropriate use in various project contexts. This clarity has improved my decision-
making skills in both academic and project-based environments.
The course significantly deepened my understanding of the Software Development Life Cycle (SDLC),
especially the logical progression from requirement analysis to design, implementation, testing, and
maintenance. Although mastering the entire SDLC framework initially posed a challenge, it ultimately
sharpened my analytical thinking and gave me a comprehensive view of how successful software
products are engineered. I also gained confidence in using tools like Git and GitHub, which helped me
become comfortable with version control, collaborative workflows, and resolving real-time code issues.
Beyond technical expertise, this course also helped me develop valuable soft skills such as self-paced
learning, time management, and accountability in completing course assessments and deadlines. It has
prepared me to handle complex tasks in a systematic and professional manner. Overall, the course has
not only strengthened my academic foundation but also made me more industry-ready for future
internships, team projects, and full-time roles in the field of software development.

Software Engineering Page 7


CERTIFICATE

Software Engineering Page 8


Declaration
I hereby declare that I have independently enrolled in and successfully completed the above-mentioned
MOOC course titled "Introduction to Software Engineering" offered through Coursera and authorized
by IBM. I affirm that all the coursework, assignments, assessments, and learning activities were
undertaken by me with complete honesty and dedication. I have made every effort to engage with the
course content sincerely, with the aim of acquiring relevant knowledge and skills to enhance my
academic and professional development.
All the information provided in this report, including course details, learning outcomes, tools used, and
skills attained, is true and correct to the best of my knowledge. The certificate attached has been
legitimately earned and is verifiable through the official Coursera verification link.
I understand the importance of academic integrity and declare that no part of this report has been copied
or misrepresented in any way. I am fully accountable for the contents submitted herein.

Signature: Praveen Shah


Date: 29/05/2025

Software Engineering Page 9


INTRODUCTION

Software Engineering is a framework for building software and is an engineering approach to software
development. Software programs can be developed without S/E principles and methodologies but they are
indispensable if we want to achieve good quality software in a cost effective manner.
Software is defined as:
Instructions + Data Structures + Documents

Engineering is the branch of science and technology concerned with the design, building, and use of
engines, machines, and structures. It is the application of science, tools and methods to find cost effective
solution to simple and complex problems.

SOFTWARE ENGINEERING is defined as a systematic, disciplined and quantifiable approach for the
development, operation and maintenance of software.

The Evolving role of software


The dual role of Software is as follows:
1. A Product- Information transformer producing, managing and displaying information.
2. A Vehicle for delivering a product- Control of computer(operating system),the communication of
information(networks) and the creation of other programs.

Characteristics of software
• Software is developed or engineered, but it is not manufactured in the classical sense.
• Software does not wear out, but it deteriorates due to change.
• Software is custom built rather than assembling existing components.

THE CHANGING NATURE OFSOFTWARE


The various categories of software are
1. System software
2. Application software
3. Engineering and scientific software
4. Embedded software
5. Product-line software
6. Web-applications
7. Artificial intelligence software

• System software. System software is a collection of programs written to service other programs •
Embedded software-- resides in read-only memory and is used to control products and systems for the
consumer and industrial markets.
• Artificial intelligence software. Artificial intelligence (AI) software makes use of nonnumeric
algorithms to solve complex problems that are not amenable to computation or straightforward analysis
• Engineering and scientific software. Engineering and scientific software have been characterized

by "number crunching" algorithms.

LEGACY SOFTWARE

Software Engineering Page 10


Legacy software are older programs that are developed decades ago. The quality of legacy software is
poor because it has inextensible design, convoluted code, poor and nonexistent documentation, test cases

and results that are not achieved.


As time passes legacy systems evolve due to following reasons:
• The software must be adapted to meet the needs of new computing environment or technology.
• The software must be enhanced to implement new business requirements.
• The software must be extended to make it interoperable with more modern systems or database
• The software must be rearchitected to make it viable within a network environment.
SOFTWARE MYTHS
Myths are widely held but false beliefs and views which propagate misinformation and confusion. Three
types of myth are associated with software:
- Management myth
- Customer myth
- Practitioner’s myth

MANAGEMENT MYTHS
• Myth(1)-The available standards and procedures for software are enough.
• Myth(2)-Each organization feel that they have state-of-art software development tools since they have
latest computer.
• Myth(3)-Adding more programmers when the work is behind schedule can catch up.
• Myth(4)-Outsourcing the software project to third party, we can relax and let that party build it.

CUSTOMER MYTHS
• Myth(1)- General statement of objective is enough to begin writing programs, the details can be filled
in later.
• Myth(2)-Software is easy to change because software is flexible

PRACTITIONER’S MYTH
• Myth(1)-Once the program is written, the job has been done.
• Myth(2)-Until the program is running, there is no way of assessing the quality.
• Myth(3)-The only deliverable work product is the working program
• Myth(4)-Software Engineering creates voluminous and unnecessary documentation and invariably
slows down software development.

SOFTWARE ENGINEERING-A LAYERED TECHNOLOGY

Fig: Software Engineering-A layered technology

SOFTWARE ENGINEERING - A LAYERED TECHNOLOGY

• Quality focus - Bedrock that supports Software Engineering.

Software Engineering Page 11


• Process - Foundation for software Engineering
• Methods - Provide technical How-to’s for building software

• Tools - Provide semi-automatic and automatic support to methods

A PROCESS FRAMEWORK
• Establishes the foundation for a complete software process
• Identifies a number of framework activities applicable to all software projects
• Also include a set of umbrella activities that are applicable across the entire software process.

Software Engineering Page 12


A PROCESS FRAMEWORK comprises of :
Common process framework Umbrella activities Framework activities Tasks,
Milestones, deliverables SQA points

A PROCESS FRAMEWORK
Used as a basis for the description of process models Generic process activities
• Communication
• Planning
• Modeling
• Construction
• Deployment

A PROCESS FRAMEWORK
Generic view of engineering complimented by a number of umbrella activities
• Software project tracking and control
• Formal technical reviews
• Software quality assurance
• Software configuration management
• Document preparation and production
• Reusability management Measurement
• Risk management

Software Engineering Page 13


CAPABILITY MATURITY MODEL INTEGRATION(CMMI)
• Developed by SEI(Software Engineering institute)
• Assess the process model followed by an organization and rate the organization with different levels •
A set of software engineering capabilities should be present as organizations reach different levels of
process capability and maturity.
CMMI process meta model can be represented in different ways
1.A continuous model
2.A staged model

Continuous model:
-Lets organization select specific improvement that best meet its business objectives and minimize risk-
Levels are called capability levels.
-Describes a process in 2 dimensions
-Each process area is assessed against specific goals and practices and is rated according to the following
capability levels.

CMMI
• Six levels of CMMI
– Level 0:Incomplete
– Level 1:Performed
– Level 2:Managed
– Level 3:Defined
– Level 4:Quantitatively managed
– Level 5:Optimized

CMMI
• Incomplete -Process is adhoc . Objective and goal of process areas are not known
• Performed -Goal, objective, work tasks, work products and other activities of software process are
carried out
• Managed -Activities are monitored, reviewed, evaluated and controlled
• Defined -Activities are standardized, integrated and documented

• Quantitatively Managed -Metrics and indicators are available to measure the process and quality

Software Engineering Page 14


• Optimized - Continuous process improvement based on quantitative feed back from the user -Use of

innovative ideas and techniques, statistical quality control and other methods for process improvement.
CMMI - Staged model
- This model is used if you have no clue of how to improve the process for quality software.
- It gives a suggestion of what things other organizations have found helpful to work first
- Levels are called maturity levels

PROCESS PATTERNS
Software Process is defined as collection of Patterns.Process pattern provides a template. It comprises of
• Process Template
-Pattern Name
-Intent
-Types
-Task pattern
- Stage pattern
-Phase Pattern
• Initial Context
• Problem
• Solution
• Resulting Context
• Related Patterns

PROCESS ASSESSMENT
Does not specify the quality of the software or whether the software will be delivered on time or will it
stand up to the user requirements. It attempts to keep a check on the current state of the software process
with the intention of improving it.
PROCESS ASSESSMENT
Software Process
Software Process Assessment Software Process improvement Motivates Capability determination
APPROACHES TO SOFTWARE ASSESSMENT
• Standard CMMI assessment (SCAMPI)
• CMM based appraisal for internal process improvement
• SPICE(ISO/IEC 15504)
• ISO 9001:2000 for software
Personal and Team Software Process
Personal software process
➢ PLANNING
➢ HIGH LEVEL DESIGN
➢ HIGH LEVEL DESIGN REVIEW
➢ DEVELOPMENT
➢ POSTMORTEM

Personal and Team Software Process


Team software process Goal of TSP
- Build self-directed teams
- Motivate the teams
- Acceptance of CMM level 5 behavior as normal to accelerate software process improvement
- Provide improvement guidance to high maturity organization

Software Engineering Page 15


PROCESS MODELS

• Help in the software development


• Guide the software team through a set of framework activities
• Process Models may be linear, incremental or evolutionary

THE WATERFALL MODEL

• Used when requirements are well understood in the beginning


• Also called classic life cycle
• A systematic, sequential approach to Software development
• Begins with customer specification of Requirements and progresses through planning, modeling,
construction and deployment.

Communication
Planning
Modeling
Construction
Deployment

This Model suggests a systematic, sequential approach to SW development that begins at the system level
and progresses through analysis, design, code and testing

PROBLEMS IN WATERFALLMODEL
• Real projects rarely follow the sequential flow since they are always iterative
• The model requires requirements to be explicitly spelled out in the beginning, which is often difficult
• A working model is not available until late in the project time plan

THE INCREMENTAL PROCESS MODEL

• Linear sequential model is not suited for projects which are iterative in nature
• Incremental model suits such projects
• Used when initial requirements are reasonably well-defined and compelling need to provide limited
functionality quickly
• Functionality expanded further in later releases
• Software is developed in increments
The Incremental Model
➢ Communication
➢ Planning
➢ Modeling
➢ Construction
➢ Deployment

Software Engineering Page 16


Software Engineering Page 17
Software Engineering Page 18
Software Engineering Page 19
Software Engineering Page 20
• Subsequent circuits develop a prototype
• And sophisticated version of software

THE CONCURRENT DEVELOPMENT MODEL

• Also called concurrent engineering


• Constitutes a series of framework activities, software engineering action, tasks and their
associated states
• All activities exist concurrently but reside in different states
• Applicable to all types of software development
• Event generated at one point in the process trigger transitions among the states

A FINAL COMMENT ON EVOLUTIONARY PROCESS


• Difficult in project planning
• Speed of evolution is not known
Does not focus on flexibility and extensibility (more emphasis on high quality)
• Requirement is balance between high quality and flexibility and extensibility

THE UNIFIED PROCESS

Evolved by Rumbaugh, Booch, Jacobson. Combines the best features their OO models. Adopts
additional features proposed by other experts. Resulted in Unified Modeling Language (UML).
Unified
process developed Rumbaugh and Booch. A framework for Object-Oriented Software
Engineering using UML

PHASES OF UNIFIED PROCESS


• INCEPTION PHASE
• ELABORATION PHASE
• CONSTRUCTION PHASE
• TRANSITION PHASE

The Unified Process (UP)

Software Engineering Page 21


UNIFIED PROCESS WORK PRODUCTS
Tasks which are required to be completed during different phases
1. Inception Phase
*Vision document
*Initial Use-Case model
*Initial Risk assessment
*Project Plan

2. Elaboration Phase
*Use-Case model
*Analysis model
*Software Architecture description
*Preliminary design model
*Preliminary model

3. Construction Phase *Design model


*System components
*Test plan and procedure
*Test cases
*Manual

4. Transition Phase
*Delivered software increment
*Beta test results
*General user feedback

Agility and Agile Process model

The meaning of Agile is swift or versatile."Agile process model" refers to a software


development approach based on iterative development. Agile methods break tasks into smaller
iterations, or parts do not directly involve long term planning. The project scope and
requirements are laid down at the beginning of the development process. Plans regarding the
number of iterations, the duration and the scope of each iteration are clearly defined in advance

Phases of Agile model:


1. Requirements gathering
2. Design the requirements
3.Construction/ iteration
4. Testing/ Quality assurance

Software Engineering Page 22


5. Deployment
6. Feedback

1. Requirements gathering: In this phase, you must define the requirements. You
should explain business opportunities and plan the time and effort needed to build
the project. Based on this information, you can evaluate technical and economic
feasibility.

2. Design the requirements: When you have identified the project, work with
stakeholders to define requirements. You can use the user flow diagram or the high-
level UML diagram to show the work of new features and show how it will apply
to your existing system.

3. Construction/ iteration: When the team defines the requirements, the work
begins. Designers and developers start working on their project, which aims to
deploy a working product. The product will undergo various stages of
improvement, so it includes simple, minimal functionality.

4. Testing: In this phase, the Quality Assurance team examines the product's
performance and looks for the bug.
5. Deployment: In this phase, the team issues a product for the user's work
environment.
6. Feedback: After releasing the product, the last step is feedback. In this, the team
receives feedback about the product and works through the feedback.
Advantages:

1. Frequent Delivery
2. Face-to-Face Communication with clients.
3. Efficient design and fulfils the business requirement.
4. Anytime changes are acceptable.
5. It reduces total development time.

Disadvantages:

1. Due to the shortage of formal documents, it creates confusion and crucial


decisions taken throughout various phases can be misinterpreted at any time by
different team members.
2. Due to the lack of proper documentation, once the project completes and the
developers allotted to another project, maintenance of the finished project can become
a difficulty.

Extreme Programming
XP is a lightweight, efficient, low-risk, flexible, predictable, scientific, and fun way to
develop software.

Software Engineering Page 23


Extreme Programming (XP) was conceived and developed to address the specific needs
of software development by small teams in the face of vague and changing
requirements.
Extreme Programming is one of the Agile software development methodologies. It
provides values and principles to guide the team behavior. The team is expected to self-
organize. Extreme Programming provides specific core practices where −

• Each practice is simple and self-complete.


• Combination of practices produces more complex and emergent behaviour.

Other process models of Agile Development and Tools

➢ Crystal
➢ Scrum
Scrum
Scrum is aimed at sustaining strong collaboration between people working on
complex products, and details are being changed or added. It is based upon the
systematic interactions between the three major roles: Scrum Master, Product Owner,
and the Team.

Software Engineering Page 24


• Scrum Master is a central figure within a project. His principal responsibility is
to eliminate all the obstacles that might prevent the team from working efficiently.
• Product Owner, usually a customer or other stakeholder, is actively involved
throughout the project, conveying the global vision of the product and providing
timely feedback on the job done after every sprint.
• Scrum Team is a cross-functional and self-organizing group of people that is
responsible for the product implementation. It should consist of up to 7 team
members, in order to stay flexible and productive.

Crystal
Crystal is an agile methodology for software development. It places focus on
people over processes, to empower teams to find their own solutions for each
project rather than being constricted with rigid methodologies. Crystal methods
focus on:-
People involved
Interaction between the teams
Community
Skills of people involved

Software Engineering Page 25

You might also like