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

PSE Material of Chapter 1, 2 and 3

The document provides an overview of software engineering, defining software, its types, and the differences between generic and bespoke software. It also discusses the responsibilities of software engineers, including ethical considerations and the attributes of quality software. Additionally, it compares software engineering with computer science and system engineering, highlighting their distinct focuses and career paths.

Uploaded by

x9fx4vj55q
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

PSE Material of Chapter 1, 2 and 3

The document provides an overview of software engineering, defining software, its types, and the differences between generic and bespoke software. It also discusses the responsibilities of software engineers, including ethical considerations and the attributes of quality software. Additionally, it compares software engineering with computer science and system engineering, highlighting their distinct focuses and career paths.

Uploaded by

x9fx4vj55q
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 45

Principle of Software

Engineering
Chapter 1

1|Page Instructor: Mashal Rokhan


What is Software?
• Software is a collection of instructions, data, and programs that tell a computer how to
perform specific tasks. Unlike hardware, which is the physical part of a computer,
software is intangible and enables the hardware to function.
What is Software?
Software is a set of items:
• Programs:
Code
• Data:
The data on which the program operates
• Documents:
All documentation associated with the program and its use.
Types of Software
Software is broadly classified into two main categories:
1. System Software
2. Application Software
Additionally, there are other specialized types of software like Programming Software,
Middleware, and Firmware.

1. System Software
2. System software manages the computer's hardware and provides a foundation for running
applications. It operates in the background and ensures system stability and performance.
3. Types of System Software:
4. Operating System (OS) – Manages computer resources (e.g., Windows, macOS, Linux).
5. Utility Programs – Perform maintenance tasks (e.g., Antivirus, Disk Cleanup, Backup
Software).
6. Device Drivers – Allow the OS to communicate with hardware (e.g., Printer drivers,
GPU drivers).
📌 Example: When you plug in a new printer, the device driver helps the OS recognize and
use it.

2|Page Instructor: Mashal Rokhan


2. Application Software
• Application software is designed for end users to perform specific tasks. It is installed
on top of system software.
• Types of Application Software:
• Productivity Software – Microsoft Word, Excel, PowerPoint.
• Web Browsers – Google Chrome, Mozilla Firefox, Safari.
• Multimedia Software – Adobe Photoshop, VLC Media Player.
• Business Software – ERP, QuickBooks, CRM systems.
• Entertainment Software – Games, Streaming Apps (Netflix, Spotify).
3. Programming Software
Programming software helps developers create, debug, and maintain applications.
Examples:
Compilers – Convert code into machine language (e.g., C++).
Text Editors – Used for writing code (e.g., Notepad++, Sublime Text).
Debuggers – Identify and fix coding errors (e.g., GDB, Xcode).

4. Middleware
Middleware acts as a bridge between different software applications or systems, ensuring
smooth communication.
• Examples:
• Database Middleware – Helps applications interact with databases (e.g., MySQL
Connector).
5. Firmware
Firmware is pre-installed software embedded in hardware devices, providing low-level
control. Unlike regular software, firmware is stored in ROM (Read-Only Memory) and
is not easily changed.
• Examples:
• BIOS – Controls the startup process of a computer.
• Smartphone Firmware – Runs on Android and iOS devices.
• Embedded Systems Firmware – Found in smart TVs, routers, and medical devices.

3|Page Instructor: Mashal Rokhan


Generic Software

Definition

Generic software refers to software applications that are developed to be used by a wide range of
users and organizations, rather than being customized for a specific client or business. These
software products are designed to meet the common needs of many users and can be used across
different industries.

Examples of Generic Software

1. Microsoft Office Suite (Word, Excel, PowerPoint) – Used for document processing, data
analysis, and presentations.
2. Adobe Photoshop – Used for graphic design and image editing.
3. Google Chrome / Mozilla Firefox – Web browsers used by the general public.
4. Operating Systems (Windows, Linux, macOS) – Used to run various applications.
5. Enterprise Resource Planning (ERP) Software – Like SAP or Oracle ERP, which are
used by many businesses.

Characteristics of Generic Software

 Mass-Produced – Created for a large audience, not a single client.


 Standardized Features – Includes commonly required functionalities.
 User-Friendly – Designed with a general user interface for various industries.
 Updatable – Receives periodic updates and improvements.
 Cost-Effective – Usually more affordable than custom-built software.

Advantages of Generic Software

 Lower Cost – Since it is developed for multiple users, the cost is shared.
 Quick Availability – Readily available in the market.
 Tested & Reliable – Used by many users, making it well-tested and stable.
 Regular Updates – Maintained and updated by the developer company.

Disadvantages of Generic Software

 Limited Customization – May not fully meet specific business needs.


 Unnecessary Features – Can include features that are not useful for all users.
 Security Concerns – More vulnerable to attacks due to widespread usage.

4|Page Instructor: Mashal Rokhan


Bespoke Software Engineering

Definition

Bespoke software engineering refers to the process of designing and developing software that is
specifically tailored to meet the unique requirements of an individual client, business, or
organization. Unlike generic software, bespoke software is custom-built to address specific needs
that cannot be fully met by off-the-shelf solutions.

Examples of Bespoke Software

1. Custom CRM Software – A business-specific Customer Relationship Management


(CRM) system developed for a particular company.
2. Banking Systems – A tailor-made banking solution for financial institutions.
3. E-commerce Platforms – A custom-built online store for a specific retailer.
4. Hospital Management System – A software designed specifically for a particular
hospital’s workflow.
5. Government Portals – Custom-built applications for e-governance services.

Characteristics of Bespoke Software

 Custom-Tailored – Built to meet the exact requirements of the client.


 Scalable – Can be expanded and modified as per the organization's future needs.
 Efficient & Optimized – Designed for maximum efficiency in the target environment.
 Exclusive Ownership – The client owns the software and can modify it as needed.

Advantages of Bespoke Software

 Highly Customizable – Can be designed to fit specific business processes.


 Competitive Advantage – Provides unique functionalities that generic software cannot
offer.
 Better Security – Since it's not widely used, it is less vulnerable to cyber threats.
 Improved Integration – Can be integrated seamlessly with other internal systems.

Disadvantages of Bespoke Software

 High Development Cost – More expensive than generic software.


 Longer Development Time – Requires significant time for design, development, and
testing.
 Maintenance Responsibility – The client must handle updates and bug fixes or rely on
the development team.

5|Page Instructor: Mashal Rokhan


Software Engineering vs. Computer Science

Definition & Focus:


Software Engineering (SE) applies engineering principles to software development, focusing on
designing, testing, and maintaining software systems. Computer Science (CS) is the study of
computation, algorithms, and programming principles, focusing more on theoretical concepts
and problem-solving.

Key Areas of Study:


Software Engineering covers topics like the Software Development Life Cycle (SDLC), software
testing, Agile methodologies, and database management. Computer Science focuses on areas like
data structures, algorithms, artificial intelligence, cryptography, and machine learning.

Career Paths:
Software Engineering leads to careers like software developer, web developer, DevOps engineer,
and IT project manager. Computer Science careers include data scientist, AI/ML engineer,
cybersecurity analyst, and researcher.

Key Differences:
Software Engineering is practical and follows structured development methods, while Computer
Science is more theoretical and research-oriented. SE aims to build reliable software, whereas
CS advances computing technologies.

Which One to Choose?


Choose Software Engineering if you enjoy practical programming, building applications, and
working in teams. Choose Computer Science if you love math, algorithms, AI, and research in
computing.

6|Page Instructor: Mashal Rokhan


Software Engineering vs. System Engineering

Definition & Focus:


Software Engineering focuses on designing, developing, testing, and maintaining software
applications. System Engineering, on the other hand, deals with the design and management of
complex systems, including both hardware and software components.

Scope:
Software Engineering is concerned only with software products, while System Engineering
involves integrating software, hardware, networking, and other system components to meet user
requirements.

Key Areas of Study:

 Software Engineering: Software development lifecycle (SDLC), programming, testing, Agile


methodologies, and database management.
 System Engineering: System architecture, hardware-software integration, system modeling, risk
analysis, and reliability engineering.

Career Paths:

 Software Engineers work as software developers, application engineers, DevOps engineers, and
QA testers.
 System Engineers work as system architects, IT infrastructure managers, and network
engineers, handling both software and hardware integration.

Key Differences:

 Software Engineering focuses only on software solutions, while System Engineering considers
the entire system, including hardware, networks, and human interactions.
 Software Engineers follow structured methodologies like Agile and DevOps, while System
Engineers use system modeling and analysis techniques to ensure overall system efficiency.
 Software Engineering ensures high-quality software, whereas System Engineering ensures that
all system components work together effectively.

Which One to Choose?


Choose Software Engineering if you are interested in coding, application development, and
software testing. Choose System Engineering if you want to work with both software and
hardware, designing complete systems.

7|Page Instructor: Mashal Rokhan


Software Engineering Layers with Quality Focus, Process, Methods, and Tools

Software engineering is indeed a layered technology, and to develop high-quality software, each
layer builds on the previous one. Each of the layers you mentioned contributes to the overall
development and ensures the software meets both technical and user needs. Here's how these
layers fit into the development process:

1. Quality Focus Layer

Purpose:
This layer ensures that the software being developed meets the desired quality standards,
including performance, reliability, security, and usability.

Key Aspects:

 Quality Assurance (QA): Involves practices and methodologies aimed at preventing defects and
ensuring the software meets the expected standards.
 Testing: Extensive testing (unit, integration, system, acceptance) is performed to find bugs and
ensure quality.
 Continuous Improvement: Regularly reviewing processes and results to enhance software
quality over time.

Outcome:
A product that meets user expectations, performs reliably, and satisfies functional and non-
functional requirements.

8|Page Instructor: Mashal Rokhan


2. Process Layer

Purpose:
This layer defines the set of practices and workflows that guide the entire software development
process.

Key Aspects:

 Software Development Life Cycle (SDLC): Defines the stages the software goes through, such as
planning, design, development, testing, deployment, and maintenance.
 Methodologies: Different methodologies like Waterfall, Agile, and DevOps fall under this layer,
helping to organize and streamline the process.
 Process Models: Define how different stages of development will interact, manage resources,
and handle transitions.

Outcome:
An organized and efficient process for managing the complexity of software development,
ensuring that each step is clear and well-defined.

3. Methods Layer

Purpose:
This layer defines the specific approaches, techniques, and best practices that are used within the
software engineering process.

Key Aspects:

 Modeling: Techniques like object-oriented modeling (UML), data modeling, and process
modeling to represent the software design and requirements.
 Design Patterns: Reusable solutions to common problems, like the Singleton pattern or Factory
pattern.
 Algorithm Design: Developing algorithms to solve specific problems in an efficient manner.
 Coding Standards: Defined practices for writing clean, maintainable, and efficient code.

Outcome:
A structured approach to software development, where each step is backed by proven methods
and techniques that ensure the software is well-architected and effective.

9|Page Instructor: Mashal Rokhan


4. Tools Layer

Purpose:
This layer involves the tools and technologies that support and automate various aspects of
software development, making the process more efficient and effective.

Key Aspects:

 Integrated Development Environments (IDEs): Tools like Eclipse, IntelliJ IDEA, or Visual Studio
to write and debug code.
 Version Control Systems (VCS): Tools like Git, SVN, and Mercurial for tracking changes in the
codebase.
 Automation Tools: Continuous integration/continuous delivery (CI/CD) tools like Jenkins,
CircleCI, and GitLab CI for automating the build, test, and deployment process.
 Testing Tools: Tools like Selenium, JUnit, or TestNG to automate and manage testing.

Outcome:
The tools layer ensures that development is streamlined, errors are minimized, and code quality
is enhanced, making it easier to implement the process and methods.

Connections Between the Layers:

 Quality Focus drives the Process Layer, ensuring that each step in the development
cycle meets the highest standards.
 Process Layer defines the overarching structure and stages of development, which
requires the application of Methods to carry out each phase effectively.
 Methods provide specific approaches and techniques, which are implemented through
various Tools to automate and streamline the process.
 Each layer depends on the fulfillment of the previous one, ensuring that quality is
maintained at every stage of software development.

10 | P a g e Instructor: Mashal Rokhan


Professional and Ethical Responsibilities of Software Engineers
Software engineers have a critical role in the development of software that is reliable, safe, and secure.
This responsibility extends beyond technical skills to ensuring ethical behavior and maintaining
professional integrity in all aspects of their work.

1.1 Delivering High-Quality Software

Ensure that software products meet the required quality, performance, and security standards.

Follow established software engineering best practices.

Example: A software engineer should adhere to coding standards and conduct rigorous testing to
ensure that the software performs efficiently.

1.2 Commitment to Continuous Learning

Keep skills up-to-date with the latest technologies and trends in software engineering.

Participate in professional development opportunities like certifications, workshops, and conferences.

Example: A software engineer could attend Agile methodology workshops to stay current with project
management trends.

1.3 Contributing to Team and Organizational Goals

Work collaboratively with colleagues, clients, and stakeholders to meet project goals.

Communicate effectively and handle feedback constructively.

Example: Participating in code reviews to ensure the team's work adheres to quality standards and
learning from peers.

1.4 Ensuring Reliability and Safety

Engineers must ensure that the software works as expected under all conditions and minimize risk to
users.
Consider failures, recovery strategies, and the impact of errors.
Example: Engineers should ensure that data loss in a system has a backup strategy in place to prevent
serious consequences.
2. Ethical Responsibilities
2.1 Public Safety and Welfare

Software engineers must prioritize public safety, privacy, and the welfare of users.

They must avoid harm to individuals or society through unethical software development.

Example: A software engineer working on healthcare software must ensure that the application protects patient data and
complies with privacy laws.

2.2 Avoiding Conflicts of Interest

Avoid situations where personal or financial interests conflict with professional duties.

Example: If a software engineer has financial ties to a company selling competing products, they must disclose the conflict and
may need to recuse themselves from related decisions.

11 | P a g e Instructor: Mashal Rokhan


2.3 Honesty and Integrity

Provide accurate information about software products and progress, both internally and to clients or customers.

Acknowledge mistakes and take steps to correct them.

Example: If a software feature does not work as intended, the engineer must report the issue honestly rather than hide it.

2.4 Respecting Intellectual Property

Respect copyrights, patents, and trademarks associated with software.

Do not copy, reverse engineer, or distribute software illegally.

Example: Software engineers should ensure they license third-party libraries properly and avoid using proprietary code without
permission.

2.5 Confidentiality and Data Protection

Ensure that sensitive information is kept confidential and not misused.

Example: A software engineer working for a financial institution must ensure that user data is kept secure and protected from
unauthorized access.

2.6 Social Responsibility

Engineers should consider the broader societal impact of their software, such as its effect on jobs, the economy, and the
environment.

They should avoid developing software that can contribute to social harm.

Example: A software engineer developing a social media platform should consider the psychological impact of the platform on
users and take steps to prevent harm.

Attributes of Quality and good Software


Quality software is defined by its ability to meet both functional and non-functional requirements while
being efficient, reliable, and maintainable. The key attributes of quality software focus on both
performance and user satisfaction. Below are the primary attributes that define quality software:
1. Functionality
The functional correctness of a software system refers to its ability to perform the tasks it was
designed to do. It includes:
 Correctness: The software meets the specified requirements and behaves as expected.
 Suitability: The software fulfills the needs of the users or business.
 Accuracy: The software performs computations and operations with precision and correctness.
 Example: A banking application must accurately calculate balances and process transactions
without error.
2. Reliability
Reliability measures the software's ability to perform its required functions under specified
conditions over time. It focuses on:
• Stability: The software should run without crashing or causing unexpected behavior.
• Fault tolerance: The software should handle errors gracefully without causing system
failures.
• Recoverability: In case of failure, the software should be able to recover without losing
critical data.
Example: A web server should maintain uptime, even during high traffic, and recover quickly
in case of failure.

12 | P a g e Instructor: Mashal Rokhan


3. Usability

Usability reflects how easy and user-friendly the software is. It focuses on:
Ease of use: The software should be simple and intuitive for users to operate without requiring
extensive training.
Learnability: New users should quickly learn to use the software with minimal effort.
User interface design: A clean, intuitive, and responsive design enhances user satisfaction.
Example: A mobile app should have an intuitive interface that allows users to navigate through
features without confusion.

4. Efficiency

Efficiency refers to how well the software performs tasks with minimal resources. Key factors
include:
Performance: The software should perform its tasks quickly and efficiently.
Resource utilization: The software should make efficient use of system resources, such as CPU,
memory, and network bandwidth.
Example: A video streaming service should deliver high-quality videos without lag and use
minimal bandwidth.

5. Maintainability

Maintainability is the ease with which software can be modified to fix defects, improve
performance, or adapt to changes. This involves:
Modularity: The software should be broken into smaller, independent modules, making it easier
to maintain and update.
Code clarity: Clear, readable code is easier to maintain and modify.
Testability: The software should be easy to test and debug.
Example: A content management system (CMS) should allow developers to easily add new
features and fix bugs without major rework.
6. Portability
Portability refers to the software's ability to function on different platforms with minimal
modification. It includes:
Adaptability: The software should be able to work on various devices or operating systems.
Installability: The software should be easy to install and configure across different
environments.
Example: A cross-platform mobile application should work seamlessly on both iOS and
Android

13 | P a g e Instructor: Mashal Rokhan


7. Security
Security is critical to protecting the software from threats and ensuring the safety of data. It
involves:
• Confidentiality: Ensuring that sensitive data is protected from unauthorized access.
• Integrity: Ensuring that data remains accurate and unaltered by unauthorized users.
• Authentication & Authorization: Verifying user identities and granting them the
appropriate access level.
• Encryption: Protecting data during transmission.
Example: A payment gateway must ensure user payment information is encrypted and cannot
be tampered with.
8. Compatibility
Compatibility ensures that the software interacts well with other software and hardware. Key
factors include:
• Interoperability: The ability of the software to work with other systems or software.
• Coexistence: The software should run alongside other software without causing conflicts
or issues.
Example: A document editor should be able to open and save files in multiple formats (e.g.,
Word, PDF).
9. Scalability
Scalability measures how well the software can handle an increasing load or demand. It includes:
• Handling increased users: The software should perform well as the number of
users or data increases.
• Growth: The software should be able to expand its capabilities without a
complete redesign.
Example: A cloud-based service should be able to handle growing numbers of users by adding
additional server resources.

14 | P a g e Instructor: Mashal Rokhan


10. Flexibility
Flexibility refers to the software’s ability to adapt to new requirements or environments. It
includes:
• Configurability: The software should allow users to configure settings according to their
preferences.
• Extensibility: The software should allow new features to be added easily without
disturbing existing functionality.
Example: An enterprise resource planning (ERP) system should allow businesses to
customize modules to suit their specific needs.

Software Crises
The term "Software Crisis" refers to the challenges and problems faced by the software
development industry due to the growing complexity, demand, and scale of software systems. It
describes the mismatch between the growing demand for software and the ability of the industry
to produce it efficiently, securely, and reliably.
Origins of the Software Crisis:
The software crisis began in the 1960s when software became an essential component of
computers and applications.
As technology rapidly advanced, the demand for more sophisticated and complex software
increased, leading to a shortage of skilled engineers and an inability to meet deadlines and
performance requirements.
The software crisis highlights the growing challenges faced by the industry due to increased
software complexity, limited resources, and the need for better quality. However, adopting
modern methodologies, tools, and practices can help address these issues and create a more
efficient software development process.

15 | P a g e Instructor: Mashal Rokhan


Principle of Software
Engineering
Process Models
Chapter 2

16 | P a g e Instructor: Mashal Rokhan


Software Process
• When you work to build a product or system, it’s important to go through a series of
predictable steps a road map that helps you create a timely, high-quality result.
• A software Process is a framework of the activities, actions and tasks that are required to
build high quality software.
• A software process is a collection of activities, actions, and tasks that are performed when
some work product is to be created.
1 - Activity (Big Process)
Example: Developing a mobile app.
This includes planning, designing, coding, testing, and releasing the app.
2 Action (Major Step in the Process)
Example: Designing the app's architecture.
This involves creating diagrams and models to show how different parts of the app
will work together.
3. Task (Small, Specific Job)
Example: Writing code for the login feature.
This includes coding the username and password input fields and testing if the login
works correctly.
Umbrella activities

17 | P a g e Instructor: Mashal Rokhan


Umbrella activities
Umbrella activities are high level activities that encompass and support various stage of
software development life cycle.
1. Software project tracking and control
Check the progress of software development. such as defining project goals, estimating
resources and schedules, managing risks.
1. Risk management
Understand and manage uncertainty. such as risk identification, risk assessment, risk
mitigation planning, and monitoring and controlling risks throughout the project lifecycle.
1. Software Quality Assurance (SQA)
Defines and conducts the activities required to ensure software quality.
1. Formal Technical Review
Uncover and remove errors before they are circulated to the next activity.
5. Measurement
Define and compile process, project, and product metrics to help the team deliver software that
meets the needs of stakeholders
5. Software Configuration Management (SCM)
It manages the impact of changes throughout the software development process.
Managing and controlling the software configuration items (e.g., source code,
documentation, and test cases)
5. Reusability management
Develop mechanisms to implement reusable components.
5. Work product preparation and production
Create work products such as models, documents, logs, forms, and lists.

18 | P a g e Instructor: Mashal Rokhan


19 | P a g e Instructor: Mashal Rokhan
• Each framework activity is populated by a set of software engineering Actions.
• Each software engineering action is defined by a task set that identifies the:
• Work tasks that are to be completed,
• Work products that will be produced,
• Quality assurance points that will be required,
Project milestones that will be used to indicate progress
A Generic Model has five basic activities
 Communication
 Planning
 Modeling
 Construction
 Deployment
1. Communication:
Before any technical work can commence, it is critically important to communicate and
collaborate with the customer or client.(Stakeholders)
The objective is to understand stakeholders’ objectives for the project and to gather
requirements that help define software features and functions.
Stakeholder : A stakeholder is anyone who has a stake in the successful outcome of the
project business managers, end users, software engineers, support people, etc
Includes requirements gathering and related activities
2. Planning:
a. It defines the software engineering work by
b. Describing the technical tasks to be conducted,
c. The risks that are likely,
d. The resources that will be required,
e. The work products to be produced, and a work schedule.
f. It is similar like a map which guide us about our journey.

20 | P a g e Instructor: Mashal Rokhan


• Modeling
• It creates a “sketch” of the thing so that you’ll understand the real picture.
• A software engineer does the same thing by creating models to better understand
software requirements and the design that will achieve those requirements.
• Help developer and customer to understand requirements (Analysis of
requirements) & Design of software.
• Construction
• Code generation
• Testing – to uncover error in the code
• Deployment:
• The software (as a complete entity or as a partially completed increment) is
delivered to the customer who evaluates the delivered product and provides
feedback based on the evaluation.
• Delivery to the customer for evaluation
• Customer provide feedback
• Software engineering process framework activities are complemented by a
number of umbrella activities.
• In general, umbrella activities are applied throughout a software project and help
a software team manage and control progress, quality, change, and risk.
• These five generic framework activities can be used during the development of small,
simple programs, the creation of large Web applications, and for the engineering of
large, complex computer-based systems. The details of the software process will be quite
different in each case, but the framework activities remain the same .
Process Flow
 Each Software process has a process flow.
 Describes how the framework activities , the actions and tasks within each framework
are organized with respect to sequence and time.
 How can we execute these five numbers activities which is called process flow.
 There are four ways to execute all the five activities.

21 | P a g e Instructor: Mashal Rokhan


linear process flow: executes each of the five framework activities in sequence, beginning with
communication and ending with deployment.
We are not changing the order.

Iterative process flow: repeats one or more of the activities before proceeding to the next.

Evolutionary process flow: executes the activities in a “circular” manner. Each circuit through
the five activities leads to a more complete version of the software.

22 | P a g e Instructor: Mashal Rokhan


Parallel process flow: executes one or more activities in parallel with other activities (e.g.,
modeling for one aspect of the software might be executed in parallel with construction of
another aspect of the software).

Software Development Life Cycle (SDLC)


• SDLC stands for Software Development Life Cycle. SDLC is a process that consists of a
series of planned activities to develop or alter the Software Products.
• A “life-cycle” or a software process is the organizational framework for a project.
• There are various software development life cycle models defined and designed which
are followed during the software development process.
• Following are the most important and popular SDLC models followed in the industry;
• Build and Fix model
• Waterfall Model
• Incremental Model
• Spiral Model
• V-Model
• Prototyping Model

23 | P a g e Instructor: Mashal Rokhan


• Process Model
 A Process Model is a strategy to combine the PROCESS, METHODS, AND
TOOLS together to effectively manage and deliver a software product.
 Selection of a Process Model
• Following is the selection criteria for a process model
 The NATURE of the project and application
 The METHODS and tools to be used
 The DELIVERABLES to be produced
Build & Fix Model
• Build and Fix Process Model
 Product is constructed without any specifications or any attempt to design.
 The developer simple builds the product that is reworked as many times as
necessary to satisfy the client.
 This is an ad-hoc approach and not well defined.
• Build and Fix Model is a simple two phase process model:
 The first phase is to write the code
 The next phase is to fix it.
 Fixing may be error correction or addition of further functionality.

Build

Fix

24 | P a g e Instructor: Mashal Rokhan


• Strength and Weaknesses
• Following are some of the strength and problems in build and fix process model
 Works well on problems having about 100 to 200 lines of code
 This model doesn’t work well on problems with reasonable size
 This model is costly
 Maintenance is always difficult
 Chances of errors are high
The Waterfall Life-Cycle

The Waterfall Life-Cycle


• There are times when the requirements for a problem are well understood When work
flows from communication through deployment in a reasonably linear fashion.
• The waterfall Model shows the software development process in a linear sequential flow.
This means that any phase in the development process begins only if the previous phase
is complete.
• Invented in 1970. The waterfall model, sometimes called the classic life cycle

25 | P a g e Instructor: Mashal Rokhan


When to use the waterfall model
 This model is used only when the requirements are very well known, clear and fixed.
 Technology is understood.
 There are no ambiguous requirements
 Very less customer interaction is involved during the development of the product. Once
the product is ready then only it can be give to the end users.
 Once the product is developed and if any failure occurs then the cost of fixing such issues
are very high, because we need to update everywhere from document till the logic.
Advantages of waterfall model
 This model is simple and easy to understand and use.
 In this model phases are processed and completed one at a time.
 Waterfall model works well for smaller projects where requirements are very well
nderstood.
 Easy to arrange tasks.
 Process and results are well documented.
Disadvantages of waterfall model
 Once an application is in the testing stage, it is very difficult to go back and change
something that was not well-thought out in the concept stage.
 Poor model for long and ongoing projects.
 Not a good model for complex and object-oriented projects
 Not suitable for the projects where requirements are at a moderate to high risk of
changing

26 | P a g e Instructor: Mashal Rokhan


The V-Model

 execution of processes happens in a


sequential manner in a V-shape. It is also
known as Verification and Validation
model.
 It is used to produce rigorous development
lifecycle models and project management
models.
 It represent the relationships b/w the quality
assurance actions(tests)
 Validation vs. verification
 Verification. verification is the
process of checking that the software meets specifications.. It is often an internal process.
 Validation: is the process of checking whether the specification captures the
customer’s requirements. It is often an external process.
The advantages of the V-Model
• This is a highly-disciplined model
• Works well for smaller projects where requirements are very well understood
• Simple and easy to understand and use
The disadvantages of the V-Model
• High risk and uncertainty
• Not a good model for complex and object-oriented projects

27 | P a g e Instructor: Mashal Rokhan


Prototyping

• The Software Prototyping refers to building software application prototypes which


displays the functionality of the product under development, but may not actually hold
the exact logic of the original software.
What is Software Prototyping?
• Prototype is a working model of software with some limited functionality. The prototype
does not always hold the exact logic used in the actual software application and is an
extra effort to be considered under effort estimation.

28 | P a g e Instructor: Mashal Rokhan


When to use Prototype model
 Prototype model should be used when the desired system needs to have a lot of
interactionwith the end users.
 Typically, online systems, web interfaces have a very high amount of interaction with
end users, are best suited for Prototype model. It might take a while for a system to be
built that allows ease of use and needs minimal training for the end user.
 Prototyping ensures that the end users constantly work with the system and provide a
feedback which is incorporated in the prototype to result in a useable system.
 They are excellent for designing good human computer interface systems.
Advantages of Prototype model:
 Users are actively involved in the development
 Since in this methodology a working model of the system is provided, the users get a
better understanding of the system being developed.
 Errors can be detected much earlier.
 Quicker user feedback is available leading to better solutions.
 Missing functionality can be identified easily
Disadvantages of Prototype model:
 Leads to implementing and then repairing way of building systems.
 This model is costly.
 There may be too much variation in requirements.
 Incomplete or inadequate problem analysis.

29 | P a g e Instructor: Mashal Rokhan


The Incremental Model
• There are many situations in which initial software requirements are reasonably well
defined, but the overall scope of the development preclude a purely linear process.
• In addition, there may be a compelling need to provide a limited set of software
functionality to users quickly and then refine and expand on that functionality in later
software releases.
• In such cases, you can choose a process model that is designed to produce the software in
increments.
• Example: Developing one big website in a very short time, but the developer should
develop one home page with little functions and he/she can give a message which is
under construction. Here the customer can be satisfy that my website is available.
• In incremental model the whole requirement is divided into various builds.
• Cycles are divided up into smaller, more easily managed modules.
• In this model, each module passes through the requirements, design, implementation and
• testing phases.
• Each subsequent release of the module adds function to the previous release. The process
continues till the complete system is.
• It is a model by which we can develop a software in short time due to competition in the
market.

30 | P a g e Instructor: Mashal Rokhan


When to use the Incremental model
 Major requirements must be defined; however, some details can evolve with time.
 There is a need to get a product to the market early.
 A new technology is being used
 Resources with needed skill set are not available
 There are some high risk features and goals.
Advantages of Incremental model:
 Generates working software quickly and early during the software life cycle.
 This model is more flexible – less costly to change scope and requirements.
 It is easier to test and debug during a smaller iteration.
 In this model customer can respond to each built.
 Lowers initial delivery cost.
 Easier to manage risk because risky pieces are identified and handled during it’d
iteration.
Disadvantages of Incremental model:
 Needs good planning and design.
 Needs a clear and complete definition of the whole system before it can be broken down
and built incrementally.
 Total cost is higher than waterfall.
Example of a Successful Incremental Model
• The incremental model is used by leading software companies like WhatsApp, Windows,
and MS Office.

31 | P a g e Instructor: Mashal Rokhan


The Spiral Model:
• Spiral model is a combination of sequential and prototype model. This model is best used
for large projects which involves continuous enhancements.
• There are specific activities which are done in one iteration (spiral) where the output is a
small prototype of the large software.
• The same activities are then repeated for all the spirals till the entire software is build.

When to use Spiral model


 When the project is large.
 Where the software needs continuous risk evaluation.
 Requirements are a bit complicated and require continuous clarification.
 Software requires significant changes.
 Users are unsure of their needs
 Requirements are complex
Advantages of Spiral model
 High amount of risk analysis hence, avoidance of Risk is enhanced.
 Strong approval and documentation control.

32 | P a g e Instructor: Mashal Rokhan


 Additional Functionality can be added at a later date.
 Development is fast.
 Larger projects / software are created and handled in a strategic way
 More and more features are added in a systematic way.
Disadvantages of Spiral model
 Can be a costly model to use.
 Project’s success is highly dependent on the risk analysis phase.
 Risk analysis is important phase so requires expert people.
 Is not beneficial for smaller projects.
 Budget and time can not be define in start
RAD model
• RAD model is Rapid Application Development model.
• This model was proposed by James Martin in 1991
• It is a type of incremental model.
• In RAD model the components or functions are developed in parallel as if they were mini
projects.
• The developments are time boxed, delivered.
• This can quickly give the customer something to see and use and to provide feedback
regarding the delivery and their requirements.

33 | P a g e Instructor: Mashal Rokhan


Advantages of RAD model
• The process of application development and delivery are fast.
• This model is flexible, if any changes are required.
• Reviews are taken from the clients at the staring of the development hence there are
lesser chances to miss the requirements.
Disadvantages of RAD model
• The feedback from the user is required at every development phase.
• This model is not a good choice for long term and large projects.
• Suitable for project requiring shorter development times.
• Requires highly skilled developers/designers.
When to use RAD model
• RAD should be used only when a system can be modularized to be delivered in an
incremental manner.
• It should be used if there is a high availability of designers for modeling.
• RAD SDLC model should be chosen only if domain experts are available with relevant
business knowledge.

34 | P a g e Instructor: Mashal Rokhan


Agile Developments:
Quick Look on 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.

Who does it?

Software engineers and other project stakeholders (managers, customers, end users) work together on
an agile team—a team that is self-organizing and in control of its own destiny.

An agile team care for communication and collaboration among all who serve on it.

Why is it important?

The modern business environment that use computer-based systems and software products is

fast-paced and everchanging. Agile software engineering represents a reasonable alternative to


conventional software engineering for certain classes of software and certain types of software
projects. It has been demonstrated to deliver successful systems quickly.

What are the steps?

Agile development might best be termed “software engineering lite.” The basic framework

activities—communication, planning, modeling, construction, and deployment— remain.

But they form into a minimal task set that pushes the project team toward construction and delivery.

What is the work product?

Both the customer and the software engineer have the same view—the only really important work
product is an operational “software increment” that is delivered to the customer on the appropriate
commitment date.

How do I ensure that I’ve done it right?

If the agile team agrees that the process works, and the team produces deliverable software

increments that satisfy the customer, you’ve done it right.

35 | P a g e Instructor: Mashal Rokhan


Strategy of Agile

“We are uncovering better ways of developing software by doing it and helping others do it.

Through this work we have come to value:

• Individuals and interactions over processes and tools

• Working software over comprehensive documentation

• Customer collaboration over contract negotiation

• Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.”

What is “Agile”?

Agile is a time boxed, iterative approach to software delivery that builds software incrementally from
the start of the project, instead of trying to deliver it all at once near the end.

It works by breaking projects down into little bits of user functionality called User Stories, prioritizing
them, and then continuously delivering them in short two week cycles called iterations.

36 | P a g e Instructor: Mashal Rokhan


User Stories

• User stories are features our customers might one day like to see in their software.

Iterations

•Agile's engine for getting things done

• An Agile iteration is a short one to two week period where a team takes a couple of their
customers most important user stories and builds them completely as running-tested-
software.

•This means everything happens during an iteration. Analysis, design, coding, testing. It all happens
here. The beauty of working this way, is every couple weeks the customer gets something of great value
(working software).

37 | P a g e Instructor: Mashal Rokhan


How Does it Work?

At its core, Agile does the same thing you and I do when faced with too much to do and not enough
time.

You make a list

Sitting down with your customer you make a list of features they would like to see in
their software. We call these things User stories and they become the To Do list for
your project.

You size things up

Then, using Agile estimation techniques, you size your stories relatively to each other,
coming up with a guess as to how long you think each user story will take.

You set some priorities

Like most lists, there always seems to be more to do than time allows. So you ask your
customer to prioritize their list so you get the most important stuff done first, and save
the least important for last.

You start executing

Then you start delivering some value. You start at the top. Work your way to the
bottom. Building, iterating, and getting feedback from your customer as you go.

38 | P a g e Instructor: Mashal Rokhan


Scrum

Perhaps the most popular of Agile methods today, Scrum is an project management framework that
encourages teams to self organize and deliver functionality iteratively in two week time boxes called
sprints.

Agile is a foundational philosophy and mindset, while scrum is a framework that materialize or bring
that philosophy into life.

Scrum Values and Pillars

39 | P a g e Instructor: Mashal Rokhan


Three Pillars

 Transparency
Make the most significant aspects of our work visible to those responsible for the outcomes.
 Inspection
Conducting timely checks towards the outcomes of a sprint goal to detect undesirable variances.
 Adaptation
Proactive adjustment to reduce risk or keep the project aligned with goals..

Five Values

 Commitment:
Personally committing to achieving the goals of the scrum team.
 Courage:
The scrum team members must have courage to do the right things and work on tough
problems.
 Focus:
Everyone focusing on the work of the sprint and the overall goals of the scrum team.
 Openness:
The scrum team and its stakeholders agree to be open about all the work and challenges with
performing the work.
 Respect:
Team members should respect the opinions , skills, and independence of their teammates.

Scrum Team

The fundamental unit of Scrum is a small team of people, a Scrum Team. The Scrum Team consists of
one Scrum Master, one Product Owner, and Developers.

 Developers

Developers are the people in the Scrum Team that are committed to creating any aspect of a usable
Increment.

 Product Owner

The Product Owner is accountable for maximizing the value of the product.

 Scrum Master

The Scrum Master is accountable for establishing Scrum as defined in the Scrum Guide.

40 | P a g e Instructor: Mashal Rokhan


Scrum Events

• Sprint

• Sprints are the heartbeat of Scrum, where ideas are turned into value.

• They are fixed length events of one month or less to create consistency

• Daily Scrum

• The Daily Scrum is a 15-minute event for the Developers of the Scrum Team.

• Sprint Review

• Scrum Team and stakeholders review what was accomplished in the Sprint and what has
changed in their environment.

• Product Backlog

• Product Backlog items that can be Done by the Scrum Team within one Sprint are
deemed ready for selection.

Often include such attributes as description, value, order, estimate, and size.

• Sprint Backlog

• Real-time picture of the work that the Developers plan to accomplish during the Sprint
in order to achieve the Sprint Goal

User-stories

• Epic: broad picture from software requirements, which is collection of user-stories.

• User-stories: gathering requirements of software in the form story.

User-story template:

• As a <user-role>, I want this <action>, to get this <value>

Sprint backlog

41 | P a g e Instructor: Mashal Rokhan


Extreme Programming (XP)
Extreme Programming (XP) takes an ‘extreme’ approach to iterative development.

• A software development methodology that aims to improve software quality and


responsiveness to changing customer requirements.

• Created by Kent Beck in the late 1990s.

• XP emphasizes frequent releases, close collaboration, and continuous feedback.

Key Principles of XP

• Communication: Close collaboration between developers, clients, and team members.

• Simplicity: Focus on the simplest possible solution.

• Feedback: Continuous feedback from tests and customers.

• Courage: Ability to make changes and adapt as needed.

• Respect: Valuing the input of all team members.

XP vs. Traditional Development

• Waterfall vs. XP:

• Waterfall: Linear, sequential approach.

• XP: Iterative, frequent feedback cycles, continuous integration.

Waterfall XP

Requirements fixed Requirements evolve

Phases are distinct Phases overlap

Long release cycles Short, frequent iterations

XP Core Practices

1) Pair Programming: Two developers work together at one workstation.

2) Test-Driven Development (TDD): Write tests before the actual code.

3) Continuous Integration: Integrate code into a shared repository several times a day.

4) Simple Design: Design as simply as possible at all times.

42 | P a g e Instructor: Mashal Rokhan


Pair Programming

• What is Pair Programming?

• One programmer writes code, while the other reviews and provides feedback.

• Benefits:

Higher code quality.

Shared knowledge.

• Challenges:

Requires good communication and collaboration.

Test-Driven Development (TDD)

• What is TDD?

• Write automated tests before writing the code.

• Cycle: Red (Fail) -> Green (Pass) -> Refactor.

• Benefits of TDD:

• Encourages modular design.

• Ensures that code meets requirements from the start.

Continuous Integration

• What is Continuous Integration (CI)?

• Developers frequently commit code to a central repository.

• Automated builds and tests run after each commit.

• Benefits of CI:

• Reduces integration issues.

• Catches bugs early in the development process.

Refactoring

• What is Refactoring?
• Improving the design and structure of the existing code without changing its
functionality.
• Why Refactor?
• Maintain code simplicity.
• Improve performance and scalability.
• Reduce technical debt.

43 | P a g e Instructor: Mashal Rokhan


Customer Involvement in XP

• On-site Customer:

• A customer or customer representative is always available to provide feedback.

• User Stories:

• Simple, concise descriptions of features from the customer’s perspective.

• Examples: "As a user, I want to log in securely."

Short Release Cycles

• XP emphasizes short release cycles (1-2 weeks).

• Regular, frequent releases to customers.

• Enables feedback and adjustment to requirements quickly.

• Advantages:

• Faster response to changes.

• Early detection of potential issues.

Collective Code Ownership

• What is Collective Ownership?

• Everyone on the team is responsible for the entire codebase.

• Benefits:

• Anyone can improve or fix any part of the code.

• Encourages responsibility and reduces bottlenecks.

Coding Standards

• Why Coding Standards?

• Consistent style makes code easier to read, understand, and maintain.

• XP Approach:

• Use consistent naming, structure, and commenting across the team.

• Tools such as linters can help enforce these standards.

44 | P a g e Instructor: Mashal Rokhan


XP Advantages and Challenges

• Advantages of XP:

• Fast feedback loops.

• High-quality code through testing and refactoring.

• Frequent releases.

• Challenges of XP:

• Requires a high level of discipline.

• Difficult to implement in large, non-collaborative teams.

• May require significant customer involvement.

45 | P a g e Instructor: Mashal Rokhan

You might also like