Software Engineering Moocs Report
Software Engineering Moocs Report
ON
“Introduction to Software Engineering”
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
• 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.
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 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.
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.
• 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
LEGACY SOFTWARE
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.
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.
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
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
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
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
• 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
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
2. Elaboration Phase
*Use-Case model
*Analysis model
*Software Architecture description
*Preliminary design model
*Preliminary model
4. Transition Phase
*Delivered software increment
*Beta test results
*General user 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:
Extreme Programming
XP is a lightweight, efficient, low-risk, flexible, predictable, scientific, and fun way to
develop software.
➢ 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.
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