Introduction To
Software
Engineering and
Process Models
Module 1
Presented by : [Link] Mane
Introduction
Software Engineering is a framework for building software and is an engineering approach to
software development. Software programs can be developed without S/E principles and
methodologies but they are indispensable if we want to achieve good quality software in a cost
effective manner.
Software is defined as: Instructions + Data Structures + Documents
SOFTWARE ENGINEERING is defined as a systematic, disciplined and quantifiable
approach for the development, operation and maintenance of software.
Characteristics of software
• Software is developed or engineered, but it is not manufactured in the classical
sense.
• Software does not wear out, but it deteriorates due to change.
• Software is custom built rather than assembling existing components.
THE CHANGING NATURE OF SOFTWARE
The various categories of software are
1. System software
2. Application software
3. Engineering and scientific software
4. Embedded software
5. Product-line software
6. Web-applications
7. Artificial intelligence software
Software Application
1. System Software : System Software is necessary to manage the computer resources and support the
execution of application programs. Software like operating systems, compilers, editors and drivers,
etc., come under this category. A computer cannot function without the presence of these.
2. Application Software : Application software is designed to fulfill the user’s requirement by
interacting with the user directly. It could be classified into two major categories:- generic or
customized. Generic Software is the software that is open to all and behaves the same for all of its
users. Its function is limited and not customized as per the changing requirements of the user.
However, on the other hand, Customized software the software products which are designed as per
the client’s requirement, and are not available for all.
3. Networking and Web Applications Software : Networking Software provides the required support
necessary for computers to interact with each other and with data storage facilities. The networking
software is also used when software is running on a network of computers (such as the World Wide
Web).
4. Embedded Software : This type of software is embedded into the hardware normally in the
Read-Only Memory (ROM) as a part of a large system and is used to support certain functionality
under the control conditions.
5. Reservation Software : A Reservation system is primarily used to store and retrieve information
and perform transactions related to air travel, car rental, hotels, or other activities.
6. Business Software : This category of software is used to support business applications and is the
most widely used category of software. Examples are software for inventory management, accounts,
banking, hospitals, schools, stock markets, etc.
7. Entertainment Software : Education and entertainment software provides a powerful tool for educational
agencies, especially those that deal with educating young children. There is a wide range of entertainment
software such as computer games, educational games, translation software, mapping software, etc.
8. Artificial Intelligence Software : Software like expert systems, decision support systems, pattern
recognition software, artificial neural networks, etc. come under this category. They involve complex
problems which are not affected by complex computations using non-numerical algorithms.
9. Scientific Software : Scientific and engineering software satisfies the needs of a scientific or engineering
user to perform enterprise-specific tasks. Such software is written for specific applications using principles,
techniques, and formulae specific to that field. Examples are software like MATLAB, AUTOCAD, PSPICE,
ORCAD, etc.
10. Utilities Software : The programs coming under this category perform specific
tasks and are different from other software in terms of size, cost, and complexity.
Examples are anti-virus software, voice recognition software, compression programs,
etc.
11. Document Management Software : Document Management Software is used to
track, manage and store documents in order to reduce the paperwork. Such systems are
capable of keeping a record of the various versions created and modified by different
users (history tracking)
A GENERIC VIEW OF PROCESS SOFTWARE
ENGINEERING-A LAYERED TECHNOLOGY
SOFTWARE ENGINEERING - A LAYERED TECHNOLOGY
• Quality focus - Bedrock that supports Software Engineering.
• Process - Foundation for software Engineering
• Methods - Provide technical How-to’s for building software
• Tools - Provide semi-automatic and automatic support to methods
Capability Maturity Model (CMM)
Level 1: Initial
A software development organization at this level is characterized by ad hoc activities.
Very few or no processes are defined and followed. Since software production processes are not defined,
different engineers follow their own process and as a result development efforts become chaotic.
The success of projects depends on individual efforts and heroics. Since formal project management
practices are not followed, under time pressure short cuts are tried out leading to low quality.
Level 2: Repeatable
At this level, the basic project management practices such as tracking cost and schedule
are established.
Size and cost estimation techniques like function point analysis, COCOMO, etc.
are used.
Level 3: Defined
At this level the processes for both management and development activities are defined
and documented.
There is a common organization wide understanding of activities, roles, and
responsibilities.
The processes though defined, the process and product qualities are not measured.
Level 4: Managed
At this level, the focus is on software metrics.
Two types of metrics are collected.
o Product metrics measure the characteristics of the product being developed, such as its size, reliability, time
complexity, understandability, etc.
o Process metrics reflect the effectiveness of the process being used, such as average defect correction time, productivity,
average number of defects found per hour inspection, average number of failures detected during testing per LOC, etc.
The software process and product quality are measured and quantitative quality requirements for the product are met.
Various tools like Pareto charts, fishbone diagrams, etc. are used to measure the product and process quality.
Thus, the results of process measurements are used to evaluate project performance rather than improve the process.
Level 5: Optimizing
Process and product measurement data are analyzed for continuous process
improvement.
Continuous process improvement is achieved both by carefully analyzing the
quantitative feedback from the process measurements and also from
application of innovative ideas and [Link] best practices are
transferred throughout the organization.
Scrum
Scrum is an agile, lightweight process
• To manage and control software and product development with rapidly
changing requirements.
• Based on improved communication and maximizing cooperation.
Key questions for which methodologies provide
guidance:
• How much involvement of the customer?
• How much planning?
• How much reuse?
• How much modeling before coding?
• How much process?
• How much control and monitoring?
Scrum as Methodology
● Involvement of the customer : Onsite customer
● Planning : Checklists and incremental daily plans , Product backlog, sprint backlogs
● Reuse : Checklists from previous projects
● Modeling : Models may or may not be used
● Process : Iterative, incremental process
● Control and Monitoring : Daily meetings.
Components of Scrum
1. Scrum Roles
Scrum Master, Scrum Team, Product Owner
2. Process
Sprint Planning Meeting , Kickoff Meeting , Sprint , Daily Scrum
Meeting , Sprint Review Meeting
3. Scrum Artifacts
Product Backlog, Sprint Backlog , Burndown Charts
Scrum Master
Represents management to the project :
• Typically filled by a project manager or team leader
• Responsible for enacting scrum values and practices
• Main job is to remove impediments.
The Scrum Team
Typically 5-6 people
• Cross-functional (quality assurance, programmers, UI designers, architects)
• Members should work full-time in the team
• Team is self-organizing
• Membership can change only between sprints.
Product Owner
Knows what needs to be build and in what sequence this should
be done :
• Traditionally the “Client”
• Typically a product manager
Scrum Process Activities
• Project-Kickoff Meeting
• Sprint Planning Meeting
• Sprint
• Daily Scrum Meeting
• Sprint Review Meeting
Project-Kickoff Meeting
A collaborative meeting in the beginning of the project
• Participants: Product Owner, Scrum Master
• Takes 8 hours and consists of 2 parts (“before lunch and after lunch”)
• Goal: Create the Product Backlog
Sprint Planning Meeting
A collaborative meeting in the beginning of each Sprint
• Participants: Product Owner, Scrum Master and Scrum Team
• Takes 8 hours and consists of 2 parts (“before lunch and after lunch”)
• Goal: Create the Sprint Backlog
Sprint
A month-long iteration, during which is incremented a product functionality.
• No outside influence can interference with the Scrum team during the Sprint
• Each day in a Sprint begins with the Daily Scrum Meeting
Daily Scrum Meeting
It’s a short (15 minutes long) meeting, which is held every day before the Team starts working
• Participants:
• Scrum Master (which is the chairman), Scrum Team
• Every Team member should answer on 3 questions
Questions for each Scrum Team Member
Status:
What did I do since the last Scrum meeting?
2. Issues:
What is stopping me getting on with the work?
3. Action items:
What am I doing until the next Scrum meeting?
NOT a problem solving session
• NOT a way to collect information about WHO is behind the schedule
• It is a meeting in which team members make commitments to each other and to the Scrum
Master
• Is a good way for a Scrum Master to track the progress of the team.
Sprint Review Meeting
Is held at the end of each Sprint
• Business process functionality which was created during the Sprint is demonstrated to the
Product Owner
XP : Extreme Programming
XP assumes that change is normal
• XP assumes that software developer must be able react to changing requirements at any point
during a project.
• XP is an agile software methodology because it places higher priority on adaptability (“empirical
process control model”) than on predictability (“defined process control model”)
• XP prescribes a set of day-to-day practices for managers and developers to address change.
Planning
● Co-locate the project with the client,
● Write user stories with the client,
● Frequent small releases (1-2 months),
● Create schedule with release planning,
● Kick off an iteration with iteration planning,
● Create programmer pairs,
● Allow rotation of pairs
Modeling
● Select the simplest design that addresses the current story;
● Use a system metaphor to model difficult Concepts;
● Use CRC cards for the initial object identification;
● Write code that adheres to standards;
● Refactor whenever possible
Process
● Code unit test first,
● Do not release before all unit tests pass,
● Write a unit test for each uncovered bug,
● Integrate one pair at the time
Control
● Code is owned collectively.
● Adjust schedule,
● Rotate pairs,
● Daily status stand-up meeting,
● Run acceptance tests often and publish the results.
Kanban
Kanban is a visual management method.
In software engineering, it’s been adapted as an agile methodology to manage
and improve workflow.
The main visualization tool is a board (either physical or digital) where tasks
or work items are represented by cards that move through columns
representing stages of the process.
1. Visualization of Work: By visualizing the flow of work, teams can easily identify bottlenecks, blockers,
and areas of inefficiency.
2. Limiting Work in Progress (WIP): This encourages teams to finish what they started before taking on
new tasks, reducing context switching.
3. Continuous Improvement: It fosters a culture of continuous improvement by allowing teams to adapt their
workflow as they identify opportunities for optimization.
Core principles of Kanban
1. Visualize the Workflow: Use a board and cards to see the flow of work.
2. Limit Work in Progress: Only a certain number of tasks can be in a column at once.
3. Manage Flow: Monitor, measure, and optimize the flow of tasks.
4. Explicit Policies: Clearly define how things are done and the criteria for moving tasks between
columns.
5. Feedback Loops: Regularly review and adapt the process.
6. Collaborative & Experimental Evolution: Constantly strive for improvements.