Software Engineering & Project Management Module-1
1.1 Introduction
The world can’t operate without software. Industries are controlled by
software systems, as the financial systems, scientific labs, infrastructures and
utilities, games, film, television, and the list go on.
Good software should deliver the main required functionality.
Other set of attributes — called quality or non-functional — should be also
delivered. Examples of these attributes are, the software is written in a way
that can be adapted to changes, response time, performance (less use of
resources such as memory and processor time), usable; acceptable for the
type of the user it’s built for, reliable, secure, safe, …etc.
1.1.1 Software Engineering:
Software engineering is an engineering discipline that’s applied to the
development of software in a systematic approach (called a software
process). It’s the application of theories, methods, and tools to design build a
software that meets the specifications efficiently, cost-effectively, and
ensuring quality. It’s not only concerned with the technical process of building
software, it also includes activities to manage the project, develop tools,
methods and theories that support the software production. Not applying
software engineering methods results in more expensive, less reliable
software, and it can be vital on the long term, as the changes come in, the
costs will dramatically increase. Different methods and techniques of
software engineering are appropriate for different types of systems. For
example, games should be developed using series of prototypes, while
critical control systems require a complete analysable specification to be
developed.
Computer Science Vs Software Engineering
Computer science focuses on the theory and fundamentals, like algorithms,
programming languages, theories of computing, artificial intelligence, and
hardware design, while software engineering is concerned with the activities
of developing and managing software.
Software Engineers
Dept. of AI&ML, HKBKCE Page 1
Software Engineering & Project Management Module-1
The job of a software engineer is difficult. It has to balance between different
people involved, such as
Dealing with users: User doesn’t know what to expect exactly from the
software. The concern is always about the ease of use and response time.
Dealing with technical people: Developers are more technically inclined
people, so they think more of database terms, functionality, etc.
Dealing with management: They are concerned with return on their
investment and meeting the schedule. For success in large software
developments, it is important to follow an engineering approach, consisting
of a well-defined process.
1.1.2 Software
Software:
“So, what’s software anyway?” … software is a computer programs along
with the associated documents and the configuration data that make these
programs operate correctly.
A program is a set of instructions (written in form of human-readable code)
that performs a specific task.
Types of Software Systems:
There are many different types of software systems from simple to complex
systems. These systems may be developed for a particular customer, like
systems to support a particular business process, or developed for a general
purpose, like any software for our computers such as word processors.
Many systems are now being built with a generic product as base, which is
then adapted to suit the requirements of a customer such as SAP system.
1.1.3 Evolving Role of Software
Evolving Role of Software:
Software takes dual role. It is both a product and a vehicle for delivering a
product. As a product: It delivers the computing potential embodied by
computer Hardware or by a network of computers.As a vehicle: It
isinformation transformer-producing, managing, acquiring, modifying,
displaying, or transmitting information that can be as simple as single bit or
Dept. of AI&ML, HKBKCE Page 2
Software Engineering & Project Management Module-1
as complex as a multimedia presentation. Software delivers the most
important product of our time-information. It transforms personal data. It
manages business information to enhance competitiveness. It provides a
gateway to worldwide information networks. It provides the means for
acquiring information.
The role of computer software has undergone significant change over a span
of little more than 50 years. Dramatic Improvements in hardware
performance Vast increases in memory and storage capacity, A wide variety
of exotic input and output options.
1970s and 1980s:
Osborne characterized a new industrial revolution Toffler called the advent
of microelectronics part of the third wave of change in human history. Naisbitt
predicted the
transformation from an industrial society to an information society.
Feigenbaum and McCorduck suggested that information and knowledge
would be the focal point for power in the twenty-first century. Stoll argued
that the electronic community created by networks and software was the key
to knowledge interchange throughout the world.
1990s began:
Toffier described a power shift in which old power structures disintegrate as
computers and software lead to a democratization of knowledge. Yourdon
worried that U.S companies might lose their competitive edge in software
related business and predicted the decline and fall of the American
programmer. Hammer and Champy argued that information technologies
were to play a pivotal role in the reengineering of the corporation.
Mid-1990s:
The pervasiveness of computers and software spawned a rash of books by
neoluddites.
Later 1990s:
Yourdon re-evaluated the prospects of the software professional and
suggested the rise and resurrection of the American programmer. The impact
of the Y2K time bomb was at the end of 20th century.
Dept. of AI&ML, HKBKCE Page 3
Software Engineering & Project Management Module-1
2000s progressed:
Johnson discussed the power of emergence a phenomenon that explains
what happens when interconnections among relatively simple entities result
in a system that self-organizes to form more intelligent, more adaptive
behaviour. Yourdon revisited the tragic events of 9/11 to discuss the
continuing impact of global terrorism on the IT community. Wolfram
presented a treatise on a new kind of science that posits a unifying theory
based primarily on sophisticated software simulations. Daconta and his
colleagues discussed the evolution of the semantic web. Today a huge
software industry has become a dominant factor in the economies of the
industrialized world.
1.2 Changing Nature of Software – Software Engineering
1.2.1 Characteristics of software:
There is some characteristic of software which is given below:
1. Reliability: The ability of the software to consistently perform its
intended tasks without unexpected failures or errors.
2. Usability: How easily and effectively users can interact with and
navigate through the software.
3. Efficiency: The optimal utilization of system resources to perform
tasks on time.
4. Maintainability: How easily and cost-effectively software can be
modified, updated, or extended.
5. Portability: The ability of software to run on different platforms or
environments without requiring significant modifications.
1.2.2 Changing Nature of Software:
Nowadays, seven broad categories of computer software present continuing
challenges for software engineers. Which is given below:
1. System Software: System software is a collection of programs that
are written to service other programs. Some system software
processes complex but determinate, information structures. Other
system application processes largely indeterminate data.
Sometimes when, the system software area is characterized by the
Dept. of AI&ML, HKBKCE Page 4
Software Engineering & Project Management Module-1
heavy interaction with computer hardware that requires scheduling,
resource sharing, and sophisticated process management.
Examples: Operating System(like macOS,Linux,Android,and
Microsoft Windows).
2. Application Software: Application software is defined as programs
that solve a specific business need. Application in this area
processes business or technical data in a way that facilitates
business operation or management technical decision-making. In
addition to conventional data processing applications, application
software is used to control business functions in real-time.
Examples: The Microsoft suite, Office, Excel, Internet browser.
3. Engineering and Scientific Software: This software is used to
facilitate the engineering function and task. however modern
applications within the engineering and scientific area are moving
away from conventional numerical algorithms. Computer-aided
design, system simulation, and other interactive applications have
begun to take a real-time and even system software characteristic.
Example: MATLAB, AUTOCAD
4. Embedded Software: Embedded software resides within the
system or product and is used to implement and control features
and functions for the end-user and for the system itself. Embedded
software can perform limited and esoteric functions or provide
significant function and control capability.
Example: DRONES, Tracking Devices, GPS systems, Image
Processing Systems Found In Medical Imaging Equipment’s, Fly-
By-Wire Control Systems Found In Aircraft
5. Product-line Software: Designed to provide a specific capability for
use by many customers, product-line software can focus on the
limited and esoteric marketplace or address the mass consumer
market.
6. Web Application: It is a client-server computer program that the
client runs on the web browser. In their simplest form, Web apps
can be little more than a set of linked hypertext files that present
information using text and limited graphics. However, as e-
commerce and B2B applications grow in importance. Web apps are
evolving into a sophisticated computing environment that not only
provides a standalone feature, computing function, and content to
the end user.
Dept. of AI&ML, HKBKCE Page 5
Software Engineering & Project Management Module-1
7. Artificial Intelligence Software: Artificial intelligence software
makes use of a nonnumerical algorithm to solve a complex problem
that is not amenable to computation or straightforward analysis.
Applications within this area include robotics, expert systems,
pattern recognition, artificial neural networks, theorem proving, and
game playing.
1.3 Software Process Framework – Software Engineering
What is a Software Process Framework?
Software Process Framework details the steps and chronological order of a
process. Since it serves as a foundation for them, it is utilized in most
applications. Task sets, umbrella activities, and process framework activities
all define the characteristics of the software development process. Software
Process includes:
1. Tasks: They focus on a small, specific objective.
2. Action: It is a set of tasks that produce a major work product.
3. Activities: Activities are groups of related tasks and actions for a
major objective.
1.3.1 Process Framework Activities
The process framework is required for representing common process
activities. Five framework activities are described in a process framework for
software engineering. Communication, planning, modeling, construction, and
deployment are all examples of framework activities. Each engineering action
defined by a framework activity comprises a list of needed work outputs,
project milestones, and software quality assurance (SQA) points.
1. Communication
By communication, customer requirement gathering is done. Communication
with consumers and stakeholders to determine the system’s objectives and
the software’s requirements.
2. Planning
Establish engineering work plan, describes technical risk, lists resources
requirements, work produced and defines work schedule.
3. Modeling
Architectural models and design to better understand the problem and to
work towards the best solution. The software model is prepared by:
• Analysis of requirements
• Design
Dept. of AI&ML, HKBKCE Page 6
Software Engineering & Project Management Module-1
4. Construction
Creating code, testing the system, fixing bugs, and confirming that all criteria
are met. The software design is mapped into a code by:
• Code generation.
• Testing.
5. Deployment
In this activity, a complete or non-complete product or software is
represented to the customers to evaluate and give feedback. On the basis of
their feedback, we modify the product for the supply of better products.
Software Process Framework
1.3.2 Umbrella Activities
Umbrella Activities are that take place during a software development
process for improved project management and tracking.
Dept. of AI&ML, HKBKCE Page 7
Software Engineering & Project Management Module-1
1. Software project tracking and control: This is an activity in which
the team can assess progress and take corrective action to maintain
the schedule. Take action to keep the project on time by comparing
the project’s progress against the plan.
2. Risk management: The risks that may affect project outcomes or
quality can be analyzed. Analyze potential risks that may have an
impact on the software product’s quality and outcome.
3. Software quality assurance: These are activities required to
maintain software quality. Perform actions to ensure the product’s
quality.
4. Formal technical reviews: It is required to assess engineering
work products to uncover and remove errors before they propagate
to the next activity. At each level of the process, errors are evaluated
and fixed.
5. Software configuration management: Managing of configuration
process when any change in the software occurs.
6. Work product preparation and production: The activities to create
models, documents, logs, forms, and lists are carried out.
7. Reusability management: It defines criteria for work product
reuse. Reusable work items should be backed up, and reusable
software components should be achieved.
8. Measurement: In this activity, the process can be defined and
collected. Also, project and product measures are used to assist the
software team in delivering the required software.
1.4 Process Patterns in Software Engineering
As the software team moves through the software process they encounter
problems. It would be very useful if solutions to these problems were readily
available so that problems can be resolved quickly. Process-related problems
which are encountered during software engineering work, it identifies the
encountered problem and in which environment it is found, then it will
suggest proven solutions to problem, they all are described by process
pattern. By solving problems, a software team can construct a process that
best meets needs of a project.
Uses of the process pattern:
At any level of abstraction, patterns can be defined. They can be used to
describe a problem and solution associated with framework activity in some
Dept. of AI&ML, HKBKCE Page 8
Software Engineering & Project Management Module-1
situations. While in other situations patterns can be used to describe a
problem and solution associated with a complete process model.
Template:
• Pattern Name – Meaningful name must be given to a pattern
within context of software process (e.g. Technical Reviews).
• Forces – The issues that make problem visible and may affect its
solution also environment in which pattern is encountered.
Type:
It is of three types:
1. Stage pattern – Problems associated with a framework activity for
process are described by stage pattern. Establishing
Communication might be an example of a staged pattern. This
pattern would incorporate task pattern Requirements Gathering and
others.
2. Task-pattern – Problems associated with a software engineering
action or work task and relevant to successful software engineering
practice (e.g., Requirements Gathering is a task pattern) are defined
by task-pattern.
3. Phase pattern – Even when the overall flow of activities is iterative
in nature, it defines sequence of framework activities that occurs
within process. Spiral Model or Prototyping might be an example of
a phase pattern.
Initial Context: Conditions under which the pattern applies are described by
initial context. Prior to the initiation of the pattern :
1. What organizational or term-related activities have already
occurred?
2. Entry state for the process?
3. Software enginee ring information or project information already
exists?
For example, the Planning pattern requires that :
• Collaborative communication has been established between
customers and software engineers.
• Successful completion of a number of task patterns for the
communication pattern has occurred.
• The project constraints, basic requirements, and the project scope
are known.
Problem: Any specific problem is to be solved by pattern.
Dept. of AI&ML, HKBKCE Page 9
Software Engineering & Project Management Module-1
Solution: Describes how to implement pattern successfully. This section
describes how initial state of process is modified as a consequence of
initiation of pattern.
Resulting Context: Once the pattern has been successfully implemented, it
describes conditions. Upon completion of pattern :
1. Organizational or term-related activities must have occurred?
2. What should be the exit state for the process?
3. What software engineering information has been developed?
Related pattern: Provide a list of all process patterns that are directly related
to this one. It can be represented n a hierarchy or in some other diagrammatic
form.
Known uses and Examples: In which the pattern is applicable, it indicates
the specific instances. For example, communication is mandatory at the
beginning of every software project, is recommended throughout the
software project, and is mandatory once the deployment activity is underway.
Example of Process Pattern:
Let’s see an example of a process pattern to understand it more clearly.
Template:
Pattern Name: Prototyping Model Design
Intent: Requirements are not clear. So aim is to make an model iteratively to
solidify the exact requirements.
Type: Phase Pattern
Initial Context: Before going to the prototyping these basic conditions should
be made
1. Stakeholder has some idea about their requirements i.e. what they exactly
want
2. Communication medium should be established between stakeholder and
software development team to ensure proper understanding about the
requirements and future product
3. Initial understanding about other factors of project like scope of project,
duration of project, budget of project etc.
Problem: Identifying and Solidifying the hazy and nonexistent requirements.
Solution: A description of the prototyping should be presented.
Resulting Context: A prototype model which can give a clear idea about the
actual product and that needs to be agreed by stakeholder.
Dept. of AI&ML, HKBKCE Page 10
Software Engineering & Project Management Module-1
Related Patterns: Requirement extraction, Iterative design, customer
communication, Iterative development, Customer assessment etc.
Known Uses & Examples: When stakeholder requirements are unclear and
uncertain, prototyping is recommended.
1.5 Software Process Assessment
Software Process Assessment is a disciplined and organized examination of
the software process which is being used by any organization bases the on
the process model. The Software Process Assessment includes many fields
and parts like identification and characterization of current practices, the
ability of current practices to control or avoid significant causes of poor
(software) quality, cost, schedule and identifying areas of strengths and
weaknesses of the software.
1.5.1 Types of Software Assessment:
• Self-Assessment: This is conducted internally by the people of
their own organisation.
• Second Party assessment: This is conducted by an external team
or people of the own organisation are supervised by an external
team.
• Third Party assessment: In an ideal case Software Process
Assessment should be performed in a transparent, open, and
collaborative environment. This is very important for the
improvement of the software and the development of the product.
The results of the Software Process Assessment are confidential
and are only accessible to the company. The assessment team must
contain at least one person from the organization that is being
assessed.
•
1.5.2 Software Process Maturity Assessment:
The scope of Software Process Assessment includes many components like
it should cover all the processes in the organisation, a selected subset of the
software process or a specific project. The idea of process maturity serves as
the foundation for many standard-based process evaluation methodologies.
Though an organisation is the assessment objective, even when the same
approach is applied again, the outcomes of a process evaluation may vary.
The different results are mainly due to two reasons. The reasons are that the
organization that is being investigated must be determined. When the
Dept. of AI&ML, HKBKCE Page 11
Software Engineering & Project Management Module-1
company is very large it is possible for the company to have different
definitions due to which the actual scope of appraisal may be different in
successive assessments. Even if it is the same organization the sample of
projects selected to represent the organization may affect the scope and
result. Process maturity is important when the organisation intended to
embark on a long-term improvement strategy.
1.5.3 Software Process Cycle:
Generally, there are six different steps in the complete cycle:
• Selecting a team: The first step is to select all the team members.
Everyone must be software professionals with sound knowledge in
software engineering.
• The standard process maturity questionnaire is filled out by the
representatives of the site that will be evaluated.
• In accordance with the CMM core process areas, the assessment
team analyses the questionnaire results to determine the areas that
call for additional investigation.
• The evaluation team visits the location to learn more about the
software procedures used there.
• The evaluation team compiles a set of results outlining the
organization’s software process’s advantages and disadvantages.
• To deliver the findings to the right audience, the assessment team
creates a Key Process Area (KPA) profile analysis.
1.5.4 SCAMPI.
SCAMPI stands for Standard CMMI Assessment Method for Process
Improvement. To fulfil the demands of the CMMI paradigm, the Standard
CMMI Assessment Method for Process Improvement (SCAMPI) was created
(Software Engineering Institute, 2000). Moreover, it is based on the CBA IPI.
The CBA IPI and SCAMPI both have three steps.
1. Plan and become ready.
2. Carry out the evaluation on-site.
3. Report findings.
The planning and preparation phase includes the following activities:
• Describe the scope of the evaluation.
• Create the assessment strategy.
• Get the evaluation crew ready and trained.
• Make a quick evaluation of the participants.
Dept. of AI&ML, HKBKCE Page 12
Software Engineering & Project Management Module-1
• CMMI Appraisal Questionnaire distribution
• Look at the survey results.
• Perform a preliminary document evaluation.
The onsite evaluation phase includes the following activities:
• Display the results.
• Execute the findings.
• Complete / end the assessment.
1.6 Personal and Team Process Models
Software is the set of instructions in the form of programs to govern the
computer system and process the hardware components. To produce a
software product a set of activities is used. This set is called a software
process.
1.6.1 PSP:
Dept. of AI&ML, HKBKCE Page 13
Software Engineering & Project Management Module-1
The personal software process is focused on individuals to improve their
performance. The PSP is an individual process, and it is a bottom-up approach
to software process improvement. The PSP is a prescriptive process, it is a
more mature methodology with a well-defined set of tools and techniques.
Key Features of PSP:
• Process-focused: PSP is a process-focused methodology that
emphasizes the importance of following a disciplined approach to
software development.
• Personalized: PSP is personalized to an individual’s skill level,
experience, and work habits. It recognizes that individuals have
different strengths and weaknesses, and tailors the process to meet
their specific needs.
• Metrics-driven: PSP is metrics-driven, meaning that it emphasizes
the collection and analysis of data to measure progress and identify
areas for improvement.
• Incremental: PSP is incremental, meaning that it breaks down the
development process into smaller, more manageable pieces that
can be completed in a step-by-step fashion.
• Quality-focused: PSP is quality-focused, meaning that it
emphasizes the importance of producing high-quality software that
meets user requirements and is free of defects.
Advantages:
• Improved productivity: PSP provides a structured approach to
software development that can help individuals improve their
productivity by breaking down the development process into
smaller, more manageable steps.
• Improved quality: PSP emphasizes the importance of producing
high-quality software that meets user requirements and is free of
defects. By collecting and analyzing data throughout the
development process, individuals can identify and eliminate sources
of errors and improve the quality of their work.
• Personalized approach: PSP is tailored to an individual’s skill
level, experience, and work habits, which can help individuals work
more efficiently and effectively.
• Improved estimation: PSP emphasizes the importance of accurate
estimation, which can help individuals plan and execute projects
more effectively.
Dept. of AI&ML, HKBKCE Page 14
Software Engineering & Project Management Module-1
•Continuous improvement: PSP promotes a culture of continuous
improvement, which can help individuals learn from past
experiences and apply that knowledge to future projects.
Disadvantages:
• Time-consuming: PSP can be time-consuming, particularly when
individuals are first learning the methodology and need to collect
and analyze data throughout the development process.
• Complex: PSP can be complex, particularly for individuals who are
not familiar with software engineering concepts or who have limited
experience in software development.
• Heavy documentation: PSP requires a significant amount of
documentation throughout the development process, which can be
burdensome for some individuals.
• Limited to individual use: PSP is designed for individual use,
which means that it may not be suitable for team-based software
development projects.
1.6.2 TSP:
TSP is a team-based process. It is focused on team productivity. Basically, it
is a top-down approach. The TSP is an adaptive process, and process
management methodology.
Key Features of TSP:
• Team-focused: TSP is team-focused, meaning that it emphasizes
the importance of collaboration and communication among team
members throughout the software development process.
• Process-driven: TSP is process-driven, meaning that it provides a
structured approach to software development that emphasizes the
importance of following a disciplined process.
• Metrics-driven: TSP is metrics-driven, meaning that it emphasizes
the collection and analysis of data to measure progress, identify
areas for improvement, and make data-driven decisions.
• Incremental: TSP is incremental, meaning that it breaks down the
development process into smaller, more manageable pieces that
can be completed in a step-by-step fashion.
• Quality-focused: TSP is quality-focused, meaning that it
emphasizes the importance of producing high-quality software that
meets user requirements and is free of defects.
Dept. of AI&ML, HKBKCE Page 15
Software Engineering & Project Management Module-1
•Feedback-oriented: TSP is feedback-oriented, meaning that it
emphasizes the importance of receiving feedback from peers,
mentors, and other stakeholders to identify areas for improvement.
Advantages of TSP :
• Improved productivity: TSP provides a structured approach to
software development that can help teams improve their
productivity by breaking down the development process into
smaller, more manageable steps.
• Improved quality: TSP emphasizes the importance of producing
high-quality software that meets user requirements and is free of
defects. By collecting and analyzing data throughout the
development process, teams can identify and eliminate sources of
errors and improve the quality of their work.
• Team collaboration: TSP promotes team collaboration, which can
help teams work more efficiently and effectively by leveraging the
skills and expertise of all team members.
• Improved estimation: TSP emphasizes the importance of accurate
estimation, which can help teams plan and execute projects more
effectively.
• Continuous improvement: TSP promotes a culture of continuous
improvement, which can help teams learn from past experiences
and apply that knowledge to future projects.
Disadvantages of TSP:
• Time-consuming: TSP can be time-consuming, particularly when
teams are first learning the methodology and need to collect and
analyze data throughout the development process.
• Complex: TSP can be complex, particularly for teams that are not
familiar with software engineering concepts or who have limited
experience in software development.
• Heavy documentation: TSP requires a significant amount of
documentation throughout the development process, which can be
burdensome for some teams.
• Requires discipline: TSP requires teams to follow a disciplined
approach to software development, which can be challenging for
some teams who prefer a more flexible approach.
• Cost: TSP can be costly to implement, particularly if teams need to
invest in training or software tools to support the methodology.
Dept. of AI&ML, HKBKCE Page 16
Software Engineering & Project Management Module-1
1.6.3 Difference Between PSP and TSP
• PSP • TSP
• PSP is a project management • TSP is a project management
process that defines how to process that defines how to
manage a project in a face-to-face manage a project in a virtual
environment. environment.
• PSP is more formal and • TSP is less formal and
structured than TSP. structured than PSP.
• PSP is based on the waterfall • TSP is based on the agile
model. model.
• PSP is more suited for large • TSP is more suited for small
projects. projects.
• PSP projects are typically • TSP projects are typically
completed in one phase. completed in multiple phases.
• TSP is a low-level language,
• PSP is a high-level language, and
and it is difficult to learn and
it is easy to learn and use.
use.
• TSP is an unstructured
• PSP is a structured language, and
language, and it is difficult to
it is easy to read and write.
read and write.
• PSP programs are written in • TSP programs are written in
English, and they are easy to assembly language, and they
understand. are difficult to understand.
• TSP is a platform-dependent
• PSP is a portable language, and it
language, and it can be run only
can be run on any platform.
on specific platforms.
Dept. of AI&ML, HKBKCE Page 17
Software Engineering & Project Management Module-1
• PSP • TSP
• PSP is an interpreted language, • TSP is a compiled language,
and it does not need to be and it needs to be compiled
compiled. before it can be run.
• PSP is a free language and it can • TSP is a commercial language,
be downloaded from the internet. and it is not available for free.
• TSP is a closed-source
• PSP is an open-source language,
language, and it is not available
and it is available to everyone.
to everyone.
• TSP, on the other hand, is an
• PSP is a linear process model that iterative and incremental
is completed in a sequential process model that allows for
manner. feedback and changes at each
stage of the process.
1.7 Process Technology
• Process Technology tools have been developed to help software
organizations analyze their current process, organize work tasks,
control, and monitor progress, and manage technical quality.
• Process technology tools allow a software organization to build an
automated model of the process framework, task sets, and umbrella
activities. The model, normally represented as a network, can then be
analysed to determine typical workflow and examine alternative
process structures that might lead to reduced development time or
cost.
• The process technology tool can also be used to coordinate the use of
other software engineering tools that are appropriate for a particular
work task.
Once an acceptable process has been created, other process technology tools
can be used to allocate, monitor, and even control all software engineering
activities, actions, and tasks defined as part of the process model. Each
Dept. of AI&ML, HKBKCE Page 18
Software Engineering & Project Management Module-1
member of a software team can use such tools to develop a checklist of work
tasks to be performed, work products to be produced, and quality assurance
activities to be conducted.
1.8 Process and Product
Features Product Process
Definition It is the outcome of a planned and It supports software development
managed software project. by offering the structure of a
complete software development
strategy.
Basic It is the final result of a The process is a collection or set
development cycle. of stages that should be followed
to create a product.
Life Cycle Its life cycle tends to be in the Its life cycle tends to be in the
short term. long term.
Focus It is concerned with the end result. It is concentrated on completing
each established step.
Goal Its main goal is to complete the Its main goal is to make the better
work effectively. quality of project.
Layout It is a layout design style where It is created when resources with
the materials are needed to create comparable processes or
the product that is placed in a functions are grouped together.
single line based on the orders of
operations.
Patents These are considered to provide It offers the inventor only limited
more protection than process protection.
patents.
Utilization These are developed based on It may be utilized as a template
consumer demands and for comparably creating
expectations. numerous items.
Follows It follows the company's deadlines. It follows a consistent routine.
Dept. of AI&ML, HKBKCE Page 19
Software Engineering & Project Management Module-1
Process Models:
A software process model is an abstraction of the software development
process. The models specify the stages and order of a process. So, think of this
as a representation of the order of activities of the process and
the sequence in which they are performed.
Prescriptive Models
A software process is a set of related activities that leads to the production of
a software product.
These activities may involve the development of software from scratch in a
standard programming language like Java or C
New business software is now often developed by extending and modifying
existing systems or by configuring and integrating off-the-shelf software or
system components.
Four activities that is fundamental to software engineering:
• Software specification
The functionality of the software and constraints on its operation must
be defined.
• Software design and implementation
The software to meet the specification must be produced.
• Software validation
The software must be validated to ensure that it does what the customer
wants.
• Software evolution
The software must evolve to meet changing customer needs.
1. The Waterfall Model
• Plan-driven model
• This takes the fundamental process activities of specification,
development, validation, and evolution and represents them as separate
process phases such as requirements specification, software design,
implementation, testing, and so on.
Dept. of AI&ML, HKBKCE Page 20
Software Engineering & Project Management Module-1
Fig: The Waterfall Model
• Because of the cascade from one phase to another, this model is known
as the waterfall model or software life cycle.
• The waterfall model is an example of a plan-driven process—in
principle, you must plan and schedule all of the process activities before
starting work on them.
1. Requirements analysis and definition
• The system ‘s services, constraints, and goals are established by
consultation with system users.
• They are then defined in detail and serve as a system specification.
2. System and software design
• The systems design process allocates the requirements to either
hardware or software systems by establishing an overall system
architecture.
• Software design involves identifying and describing the fundamental
software system abstractions and their relationships.
3. Implementation and unit testing
• During this stage, the software design is realized as a set of programs or
program units.
• Unit testing involves verifying that each unit meets its specification.
Dept. of AI&ML, HKBKCE Page 21
Software Engineering & Project Management Module-1
4. Integration and system testing
• The individual program units or programs are integrated and tested as a
complete system to ensure that the software requirements have been
met.
• After testing, the software system is delivered to the customer.
5.Operation and maintenance
Normally (although not necessarily), this is the longest life cycle phase.
The system is installed and put into practical use. Maintenance involves
correcting errors which were not discovered in earlier stages of the life
cycle, improving the implementation of system units and enhancing the
system ‘s services as new requirements are discovered.
• The result of each phase is one or more documents that are approved
(‗signed off ‘).
• The following phase should not start until the previous phase has
finished.
• In practice, these stages overlap and feed information to each other.
• During design, problems with requirements are identified.
• During coding, design problems are found and so on.
• The software process is not a simple linear model but involves feedback
from one phase to another.
• Documents produced in each phase may then have to be modified to
reflect the changes made.
DRAWBACKS
The main drawback of the waterfall model is the difficulty of accommodating
change after the process is underway.
Inflexible partitioning of the project into distinct stages makes it difficult to
respond to changing customer requirements.
Therefore, this model is only appropriate when the requirements are well-
understood and changes will be fairly limited during the design process.
2. Incremental Development
Dept. of AI&ML, HKBKCE Page 22
Software Engineering & Project Management Module-1
• This approach interleaves the activities of specification, development,
and validation.
• The system is developed as a series of versions (increments), with each
version adding functionality to the previous version.
Fig: Incremental development
• Incremental development is based on the idea of developing an initial
implementation, exposing this to user comment and evolving it through
several versions until an adequate system has been developed.
• Specification, development, and validation activities are interleaved
rather than separate, with rapid feedback across activities .
• By developing the software incrementally, it is cheaper and easier to
make changes in the software as it is being developed.
• Each increment or version of the system incorporates some of the
functionality that is needed by the customer.
• Generally, the early increments of the system include the most important
or most urgently required functionality.
• This means that the customer can evaluate the system at a relatively
early stage in the development to see if it delivers what is required.
• If not, then only the current increment has to be changed and, possibly,
new functionality defined for later increments.
BENEFITS
• The cost of accommodating changing customer requirements is reduced.
Dept. of AI&ML, HKBKCE Page 23
Software Engineering & Project Management Module-1
• The amount of analysis and documentation that has to be redone is
much less than is required with the waterfall model.
• It is easier to get customer feedback on the development work that has
been done.
• Customers can comment on demonstrations of the software and see
how much has been implemented.
• More rapid delivery and deployment of useful software to the customer
is possible, even if all of the functionality has not been included
• Customers are able to use and gain value from the software earlier than
is possible with a waterfall process.
PROBLMS
• The process is not visible.
• Managers need regular deliverables to measure progress. If systems are
developed quickly, it is not cost-effective to produce documents that
reflect every version of the system.
• System structure tends to degrade as new increments are added.
• Unless time and money is spent on refactoring to improve the software,
regular change tends to corrupt its structure. Incorporating further
software changes becomes increasingly difficult and costly.
3. Boehm’s Spiral Model
• The software process is represented as a spiral, rather than a sequence
of activities with some backtracking from one activity to another.
• Each loop in the spiral represents a phase of the software process. the
innermost loop might be concerned with system feasibility, the next loop
with requirements definition, the next loop with system design, and so
on.
• The spiral model combines change avoidance with change tolerance. It
assumes that changes are a result of project risks and includes explicit
risk management activities to reduce these risks.
Dept. of AI&ML, HKBKCE Page 24
Software Engineering & Project Management Module-1
Fig: Boehm’s spiral model of the software process
Each loop in the spiral is split into four sectors:
1. Objective setting Specific objectives for that phase of the project are
defined. Constraints on the process and the product are identified and a
detailed management plan is drawn up. Project risks are identified. Alternative
strategies, depending on these risks, may be planned.
2. Risk assessment and reduction For each of the identified project risks, a
detailed analysis is carried out. Steps are taken to reduce the risk. For example,
if there is a risk that the requirements are inappropriate, a prototype system
may be developed.
3. Development and validation
After risk evaluation, a development model for the system is chosen. For
example, throwaway prototyping may be the best development approach if
user interface risks are dominant. If safety risks are the main consideration,
development based on formal transformations may be the most appropriate
process, and so on. If the main identified risk is sub-
system integration, the waterfall model may be the best development model
to use.
4. Planning The project is reviewed and a decision made whether to continue
with a further loop of the spiral. If it is decided to continue, plans are drawn up
for the next phase of the project.
Dept. of AI&ML, HKBKCE Page 25
Software Engineering & Project Management Module-1
Evolutionary Process Models
The evolutionary model is a combination of the Iterative and Incremental
models of the software development life cycle.
The Evolutionary development model divides the development cycle into
smaller, incremental waterfall models in which users can get access to the
product at the end of each cycle.
1. Feedback is provided by the users on the product for the planning
stage of the next cycle and the development team responds, often
by changing the product, plan, or process.
2. Therefore, the software product evolves with time.
3. All the models have the disadvantage that the duration of time
from the start of the project to the delivery time of a solution is very
high.
4. The evolutionary model solves this problem with a different
approach.
5. The evolutionary model suggests breaking down work into smaller
chunks, prioritizing them, and then delivering those chunks to the
customer one by one.
6. The number of chunks is huge and is the number of deliveries
made to the customer.
7. The main advantage is that the customer’s confidence increases as
he constantly gets quantifiable goods or services from the
beginning of the project to verify and validate his requirements.
8. The model allows for changing requirements as well as all work is
broken down into maintainable work chunks.
Dept. of AI&ML, HKBKCE Page 26
Software Engineering & Project Management Module-1
Fig: Evolutionary Model
Application of Evolutionary Model
1. It is used in large projects where you can easily find modules for
incremental implementation. Evolutionary model is commonly used
when the customer wants to start using the core features instead of
waiting for the full software.
2. Evolutionary model is also used in object oriented software
development because the system can be easily portioned into units
in terms of objects.
Necessary Conditions for Implementing this Model
1. Customer needs are clear and been explained in deep to the
developer team.
2. There might be small changes required in separate parts but not a
major change.
3. As it requires time, so there must be some time left for the market
constraints.
4. Risk is high and continuous targets to achieve and report to
customer repeatedly.
5. It is used when working on a technology is new and requires time
to learn.
Dept. of AI&ML, HKBKCE Page 27
Software Engineering & Project Management Module-1
Advantages Evolutionary Model
1. Adaptability to Changing Requirements: Evolutionary models
work effectively in projects when the requirements are ambiguous
or change often. They support adjustments and flexibility along the
course of development.
2. Early and Gradual Distribution: Functional components or
prototypes can be delivered early thanks to incremental
development. Faster user satisfaction and feedback may result from
this.
3. User Commentary and Involvement: Evolutionary models place a
strong emphasis on ongoing user input and participation. This
guarantees that the software offered closely matches the needs and
expectations of the user.
4. Improved Handling of Difficult Projects: Big, complex tasks can
be effectively managed with the help of evolutionary models. The
development process is made simpler by segmenting the project
into smaller, easier-to-manage portions.
Disadvantages Evolutionary Model
1. Communication Difficulties: Evolutionary models require constant
cooperation and communication. The strategy may be less effective
if there are gaps in communication or if team members are spread
out geographically.
2. Dependence on an Expert Group: A knowledgeable and
experienced group that can quickly adjust to changes is needed for
evolutionary models. Teams lacking experience may find it difficult
to handle these model’s dynamic nature.
3. Increasing Management Complexity: Complexity can be
introduced by organizing and managing several increments or
iterations, particularly in large projects. In order to guarantee
integration and synchronization, good project management is
needed.
4. Greater Initial Expenditure: As evolutionary models necessitate
continual testing, user feedback and prototyping, they may come
with a greater starting cost. This may be a problem for projects that
have limited funding.
Dept. of AI&ML, HKBKCE Page 28
Software Engineering & Project Management Module-1
Specialized Process Model
Specialized process models take on many of the characteristics of one or more
of the traditional models However, these models tend to be applied when a
specialized or narrowly defined software engineering approach is chosen.
There are 3 types of specialized process models:
1. Component Based Development
2. Formal Methods Model
3. Aspect Oriented Software development
1. Component Based Development: Commercial off-the-shelf (COTS)
software components, developed by vendors who offer them as products,
provide targeted functionality with well-defined interfaces that enable the
component to be integrated into the software that is to be built. The
component-based development model incorporates many of the
characteristics of the spiral model. It is evolutionary in nature, demanding an
iterative approach to the creation of software. However, the component-
based development model constructs applications from prepackaged
software component. modelling and construction activities begin with the
identification of candidate components. These components can be designed
as either conventional software modules or object-oriented classes or
packages of classes. Regardless of the technology that is used to create the
components, the component-based development model incorporates the
following steps:
1. Available component-based products are researched and evaluated for
the application domain in question.
2. Component integration issues are considered.
3. A software architecture is designed to accommodate the components.
4. Components are integrated into the architecture.
5. Comprehensive testing is conducted to ensure proper functionality
The component-based development model leads to software reuse, and
reusability provides software engineers with a number of measurable
benefits. software engineering team can achieve a reduction in development
Dept. of AI&ML, HKBKCE Page 29
Software Engineering & Project Management Module-1
cycle time as well as a reduction in project cost if component reuse becomes
part of your culture.
Formal Methods Model: The formal methods model encompasses a set of
activities that leads to formal mathematical specification of computer
software. Formal methods enable to specify, develop, and verify a computer-
based system by applying a rigorous, mathematical notation. A variation on
this approach, called cleanroom software engineering is currently applied by
some software development organizations. When formal methods are used
during development, they provide a mechanism for eliminating many of the
problems that are difficult to overcome using other software engineering
paradigms. Ambiguity, incompleteness, and inconsistency can be discovered
and corrected more easily, through the application of mathematical analysis.
When formal methods are used during design, they serve as a basis for
program verification and therefore enable you to discover and correct errors
that might otherwise go undetected. The formal methods model offers the
promise of defect-free software.
There are some of the disadvantages too:
• The development of formal models is currently quite time consuming
and expensive.
• Because few software developers have the necessary background to
apply formal methods, extensive training is required.
• It is difficult to use the models as a communication mechanism for
technically unsophisticated customers
3. Aspect Oriented Software Development: Regardless of the software
process that is chosen, the builders of complex software invariably
implement a set of localized features, functions, and information
content. These localized software characteristics are modelled as
components and then constructed within the context of a system
architecture. As modern computer-based systems become more
sophisticated certain concerns span the entire architecture. Some
concerns are high-level properties of a system, other concerns affect
functions, while others are systemic. When concerns cut across
multiple system functions, features, and information, they are often
referred to as crosscutting concerns. Aspectual requirements define
Dept. of AI&ML, HKBKCE Page 30
Software Engineering & Project Management Module-1
those crosscutting concerns that have an impact across the software
architecture. Aspect-oriented software development (AOSD), often
referred to as aspect-oriented programming (AOP), is a relatively new
software engineering paradigm that provides a process and
methodological approach for defining, specifying, designing, and
constructing aspects. A distinct aspect-oriented process has not yet
matured. However, it is likely that such a process will adopt
characteristics of both evolutionary and concurrent process models.
The evolutionary model is appropriate as aspects are identified and
then constructed. The parallel nature of concurrent development is
essential because aspects are engineered independently of localized
software components and yet, aspects have a direct impact on these
components. It is essential to instantiate asynchronous communication
between the software process activities applied to the engineering and
construction of aspects and components.
Dept. of AI&ML, HKBKCE Page 31