Unit 1 Notes-Word
Unit 1 Notes-Word
Unit 1
software
development
process
MARKS:12
Learning hours
prepared by:
ms khushi sharma
K.V.S. 1
Software engineering Code:315323
What is Software ?
(1) System software: controls the basic (and invisible to the user) functions of a computer
and comes usually preinstalled with the machine. See also BIOS and Operating System.
(2) Application software: handles multitudes of common and specialized tasks a user wants
to perform, such as accounting, communicating, data processing, word processing.
K.V.S. 2
Software engineering Code:315323
Characteristics of Software :-
Software characteristics refer to the essential attributes or qualities that define how
software behaves and performs. These can be broadly categorized into functional and non-
functional characteristics.
Different individuals judge software on different basis. This is because they are involved
with the software in different ways. For example, users want the software to perform
according to their requirements. Similarly, developers involved in designing, coding, and
maintenance of the software evaluate the software by looking at its internal characteristics,
before delivering it to the user. Software characteristics are classified into six major
components.
• Functionality: Refers to the degree of performance of the software against its intended
purpose.
• Reliability: Refers to the ability of the software to provide desired functionality under the
given conditions.
• Usability: Refers to the extent to which the software can be used with ease.
• Efficiency: Refers to the ability of the software to use system resources in the most
effective and efficient manner.
• Maintainability: Refers to the ease with which the modifications can be made in a
software system to extend its functionality, improve its performance, or correct errors.
• Portability: Refers to the ease with which software developers can transfer software from
one platform to another, without (or with minimum) changes. In simple terms, it refers to
the ability of software to function properly on different hardware and software platforms
without making any changes in it.
In addition to the above mentioned characteristics, robustness and integrity are also
important. Robustness refers to the degree to which the software can keep on functioning in
spite of being provided with invalid data while integrity refers to the degree to which
unauthorized access to the software or data can be prevented.
K.V.S. 3
Software engineering Code:315323
� 1. Functional Characteristics
� 2. Non-Functional Characteristics
A. Quality Attributes
B. Development-Related Attributes
K.V.S. 4
Software engineering Code:315323
In the software development process, different types of software are involved depending
on the purpose, target users, and functionality. These can be broadly classified into several
categories:
� 1. System Software
Examples:
� 2. Application Software
Examples:
K.V.S. 5
Software engineering Code:315323
� 3. Development Software
These are tools used by developers to create, test, and maintain software.
Examples:
� 4. Embedded Software
Examples:
� 5. Middleware
Software that connects different applications or services, enabling communication and data
management.
Examples:
K.V.S. 6
Software engineering Code:315323
� 6. Enterprise Software
Examples:
Used for building models, analyzing data, and enabling smart behavior.
Examples:
Examples:
K.V.S. 7
Software engineering Code:315323
Software engineering is a field of engineering, for designing and writing programs for
computers or other electronic devices. A software engineer, or programmer, writes software
(or changes existing software) and compiles software using methods that make it better
quality.
Software development is totally a layered technology. That means, to develop software one
will have to go from one layer to another. The layers are related and each layer demands the
fulfillment of the previous layer. Figure below is the upward flowchart of the layers of
software development.
K.V.S. 8
Software engineering Code:315323
2. Process:
• Process is the foundation for s/w engineering.
• There are specific processes which takes place while developing s/w.
• It helps to produce a Rational and integrated s/w product.
• Process defines a framework for a set of Key Process Areas (KPAs) that must be
established for effective delivery of software engineering technology.
• If any change is occurs it managed properly.
3. Methods:
• It is used to understand How-to-do the technical processes for building software.
• Methods will include Requirements analysis, Design, Program Construction, Testing, and
Support.
4. Tools:
• It is very important part of software engineering.
• It provide automated or semi-automated support for the process and the methods. Eg-
CASE tool.( CASE- Computer Aided Software Engineering)
• The different methods are implemented using CASE tools which are Computerized and
require less Human Effort.
• CASE tools are useful in Analysis, Design, Program, Construction and Testing.
K.V.S. 9
Software engineering Code:315323
K.V.S. 10
Software engineering Code:315323
Framework activities
1. Communication:
This activity involves heavy communication with customers and other stakeholders in
order to gather requirements and other related activities.
Stake Holder are the people who has a stake in the successful outcomes of the
project. They could be Business managers , end-users. s/w engineers , support people
and so on.
In fact , when the s/w project starts the data gathering and requirement analysis is
the Communication activities on which full project depends.
K.V.S. 11
Software engineering Code:315323
2. Planning:
Any project or work has to be planned properly. Planning is done for the time i.e.
Schedule is made.
Here a plan to be followed will be created which will describe the technical tasks to be
conducted, risks, required resources, work schedule etc.
3. Modeling:
4. Construction:
5.Deployment:
It is done when s/w is developed partially or may be fully.
In this phase the s/w product is delivered to the Customers.
Customers evaluates this product and gives feedback about it to the development
team.
K.V.S. 12
Software engineering Code:315323
Process Models:
• Process models define a distinct set of tasks, activities, actions and work products
that are required to engineer high-quality software.
• Process models are not perfect, but they do provide a useful roadmap for s/w engg.
work.
• This helps s/w development organizations to :
• To manage technical quality of product.
• To reduce development time and cost.
• Analyze current process.
• To organize their work tasks.
• To keep control and monitor progress.
1. Each and every S/w Engg. Firm should describe a unique set of framework activities
for s/w processes.
2. Each framework activity with a set of s/w engg. actions and each action in terms of a
task set that identifies the work and work products to be accomplished to meet the
development goals.
3. The firm should then adapt the resultant process model to accommodate the specific
nature of each project, the people who will do the work and the environment in which
the work will be conducted.
4. There is number of s/w process models.
5. Each and every process model also prescribes a workflow, the manner in which the
process elements are inter-related to one another.
6. There are different process models, which are used by the s/w development team to
do their work systematic. i.e. Step by step.
1. Waterfall
2. Incremental
3. RAD
4. Prototype
5. Spiral
K.V.S. 13
Software engineering Code:315323
1. Waterfall Model
1. It is oldest model for software engineering. First published s/w development process
model.
2. The waterfall model is also called as classic life cycle or linear sequential.
3. Cascades from one phase to another where output of one phase is the input to next
phase.
4. It presents systematic sequential approach to software engineering. This begins with
customer specification of requirements, needs and progresses through planning,
construction, modeling and deployment.
5. The output of each phase must be produced using standards. If output of any phase is
wrong, it may affect the subsequent phases.
6. This model is useful to measure the progress of the project as it is easy to check
whether a certain output is delivered exactly on the date when it was expected.
K.V.S. 14
Software engineering Code:315323
Next step is Planning, which includes some major activities like planning for schedule,
keeping different tracks on the processes and the estimations related to the project.
Next step is Modeling, in that important is to analyze the data and as per the analysis the
data is designed.
Next step is Construction phase. Based on the designing of the project the coding i.e .
Programming and Testing is done.
Last step is Deployment , in that the product is actually delivered. i.e. installed at
customer’s end and support is given if required. The feedback is taken from the customer to
ensure the quality of product.
K.V.S. 15
Software engineering Code:315323
Advantages:
1) Linear model and so it is most simple to implement.
2) Amount of resources required to implement this model is very minimum.
3) Documentation done at every stage which makes the understanding of the product
design process simple.
4) After every stage of coding, testing is done to check the correctness of the code.
5) Progress of system is measurable
Disadvantages:
1) Cannot backtrack. Ex- if design goes wrong, it makes implementation complicated
2) Many a times, the client is not clear of his requirements. Any changes that he
specifies in between may cause a lot of confusion.
3) Small changes or errors that arise in the completed software may cause lot of
problems.
4) The lifecycle can take so long that the original requirements may no longer be valid
by the time the system is implemented.
5) Estimating time and cost is difficult for each stage.
K.V.S. 16
Software engineering Code:315323
2. Incremental Model
C Communication
P Planning
M Modeling
C Construction
D Deployment
K.V.S. 17
Software engineering Code:315323
Advantages:
1) This model is applied when sufficient staff is not available.
2) Easy to add quality.
3) System can be designed in a manner that it can be delivered in pieces.
4) Increments are developed one after the other, after feedback has been received from
the customer/user.
5) Increments can be planned to manage technical risks.
6) Deadlines can be managed in an effective manner.
Disadvantages:
1) Reusability of codes is minimum.
2) Integration testing is difficult to do.
3) Each quality developed requires testing
4) Can be applied to only those projects which have independent modules.
K.V.S. 18
Software engineering Code:315323
K.V.S. 19
Software engineering Code:315323
1. Modeling:
A. Business Modeling
B. Data Modeling
C. Process Modeling
A. Business modeling:
C. Process modeling:
The data objects defined in the data modeling phase are transformed to achieve
the information flow necessary to implement a business function. Processing
descriptions are created for adding, modifying, deleting, or retrieving a data object.
K.V.S. 20
Software engineering Code:315323
2. Construction:
A. Component reuse
B. Automatic code generation
C. Testing
A. Component reuse:
Components/modules developed for one application be reused in the
development of other applications.
C. Testing:
Done to check whether flow of coding is correct, to check out the errors of
programs.
K.V.S. 21
Software engineering Code:315323
Advantages:
1) Product can be developed within a very short time duration..
2) Flexible and adaptable to changes.
3) Realizes an overall reduction in project risk
Disadvantages:
1) Used if sufficient number of staff is available. Thus large projects require sufficient
manpower to create number of teams.
2) Many teams work parallel to implement different functions of same project. Hence all
teams must work with equal speed. If one team lags behind, overall project delivery
will be late.
3) If s/m is not properly modularized, building components will be problematic.
4) Not applicable when technical risks are high.
K.V.S. 22
Software engineering Code:315323
K.V.S. 23
Software engineering Code:315323
Reduced Risk: Early identification of potential issues through feedback and iteration.
Increased Customer Satisfaction: Active user involvement and the ability to incorporate
feedback lead to a product that better meets user needs.
Adaptability: Flexibility to changing requirements and evolving user expectations.
Faster Time to Market: Delivering functional increments early allows for quicker
feedback and adaptation.
Example:
A popular example is the evolutionary approach used in developing WhatsApp. Initially, it
provided basic text messaging, and over time, it evolved with features like media sharing,
calling, and video calls.
In essence, evolutionary process models provide a flexible and adaptive approach to
software development, allowing for continuous improvement and a better alignment of the
final product with user needs.
K.V.S. 24
Software engineering Code:315323
Prototyping Model
K.V.S. 25
Software engineering Code:315323
1. Communication
Communication between customer and developer to define the objectives/goals.
Based on this communication, gathering the requirements.
2. Quick plan
Here prototype iteration is planned quickly and then modeling occurs.
4. Construction of Prototype
The quick design leads to the construction of the prototype.
The prototype is deployed and evaluated by the customer.
K.V.S. 26
Software engineering Code:315323
Advantages:
1) Helps to build the s/m with user’s satisfaction and avoid wrong s/m delivery.
2) Difficult or confusing user services can be identified and refined.
3) System can be delivered within time, avoiding delays.
Disadvantages:
1) Insufficient analysis.
2) User confusion of prototype and finished s/m.
3) Developer misunderstanding of user objectives.
Spiral Model
Estimation
Scheduling
Risk analysis
Analysis
Design
Code
Delivery Test
Feedback
K.V.S. 27
Software engineering Code:315323
K.V.S. 28
Software engineering Code:315323
Advantages:
Disadvantages:
1) If major risks are not discovered in early iterations, in later stages it may become a
serious problem.
2) Difficult to convince the customer that the model is controllable.
K.V.S. 29
Software engineering Code:315323
Agile model
Agile model suggest following modelling principles:
1. Model with purpose: Before the development of the model agile team collects all tasks.
Choose best suitable model technique according to task.
2. Use multiple models: One project may have a multiple task. Each task may be
developed in different models.
3. Travel light: Software developers keep only those models which give maximum values
during the developments, in terms of features, time span etc. Content is more important
than Representation : If somebody could not able to represent but have the capability of
development.
Know the models and tools you use to create them : Developers should know the strengths
and weaknesses of each model.
Adapt locally : It should adapt all needs of the agile team.
K.V.S. 30
Software engineering Code:315323
K.V.S. 31
Software engineering Code:315323
K.V.S. 32
Software engineering Code:315323
Origins
Software development in the 1990s was shaped by two major influences: internally,
object-oriented programming replaced procedural programming as the programming
paradigm favored by some in the industry; externally, the rise of the Internet and the
dot-com boom emphasized speed-to-market and company-growth as competitive
business factors.
Rapidly-changing requirements demanded shorter product life-cycles, and were often
incompatible with traditional methods of software development.
Information about the principles and practices behind XP was disseminated to the
wider world through discussions on the WikiWikiWeb.
Various contributors discussed and expanded upon the ideas, and some spin-off
methodologies resulted (see agile software development). Also, XP concepts have been
explained, for several years, using a hyper-text system map on the XP website.
K.V.S. 33
Software engineering Code:315323
Current state
XP created quite a buzz in the late 1990s and early 2000s, seeing adoption in a number
of environments radically different from its origins.
The high discipline required by the original practices often went by the wayside,
causing certain practices to be deprecated or left undone on individual sites.
Agile development practices have not stood still, and XP is still evolving, assimilating
more lessons from experiences in the field.
Goal of XP
The main aim of XP is to lower the cost of change. In traditional system development
methods (like SSADM) the requirements for the system are determined at the beginning of
the development project and often fixed from that point on. This means that the cost of
changing the requirements at a later stage will be high.
XP sets out to lower the cost of change by introducing basic values, principles and
practices. By applying XP, a system development project should be more flexible with
respect to changes.
XP values
Extreme Programming initially recognized four values. A new value was added in the
second edition of Extreme Programming Explained. The five values are:
K.V.S. 34
Software engineering Code:315323
Communication
Simplicity
Feedback
Courage
Respect
K.V.S. 35
Software engineering Code:315323
What is ASD?
1. Iterative Development: ASD breaks down the project into small, manageable
iterations, delivering incremental values.
2. Risk Management: ASD involves identifying and addressing risks early in the
development process.
3. Continuous Testing: It integrates testing throughout the development process to
ensure high-quality outcomes.
4. Decentralized Control: It encourages decision-making at the team level instead of
relying on top-down directives.
5. Customer Satisfaction: It prioritizes customer satisfaction by delivering products that
meet their needs and expectations.
K.V.S. 36
Software engineering Code:315323
K.V.S. 37
Software engineering Code:315323
1. Speculation
During this phase project is initiated and planning is conducted. The project plan uses
project initiation information like project requirements, user needs, customer mission
statement, etc, to define a set of release cycles that the project wants.
2. Collaboration
It is the difficult part of ASD as it needs the workers to be motivated. It collaborates
communication and teamwork but emphasizes individualism as individual creativity plays
a major role in creative thinking. People working together must trust each other to
Criticize without animosity,
Assist without resentment,
Work as hard as possible,
Possession of skill set,
Communicate problems to find effective solutions.
4. Learning
The workers may have an overestimate of their understanding of the technology which
may not lead to the desired result. Learning helps the workers to increase their level of
understanding of the project.
The learning process is in 3 ways:
1. Focus groups
2. Technical reviews
3. Project postmortem
ASD’s overall emphasis on the dynamics of self-organizing teams, interpersonal
collaboration, and individual and team learning yields software project teams that have a
much higher likelihood of success.
K.V.S. 38
Software engineering Code:315323
Advantages of ASD
Adapts well to changing business needs
Promotes innovation and continuous improvement
Delivers usable software earlier and more often
Encourages strong team collaboration
Disadvantages
May be challenging for teams used to strict structures
Can lead to scope creep if not managed carefully
Requires high involvement from stakeholders
K.V.S. 39
Software engineering Code:315323
Scrum:
This is agile process model developed by Jeff Sutherland and his team in year 1990.
Recently scrum further developed by Schwaber and Beedle.
- It allows us to rapidly (every two weeks to one month and repeatedly inspect actual
working software.
- The business sets the priorities. Agile teams then determine the best way to deliver the
highest priority features,
- Every two weeks to a month anyone can see real working software and decide whether to
release it or continue to enhance for another iteration.
Characteristics of Scrum
- Self-organizing teams.
"sprints".
"product backlog":
K.V.S. 40
Software engineering Code:315323
Scrum team accepts changing requirements, business criticality, and tight timelines and
defines a set of activities. Those are :
Backlog consists of :
Requirement gathering.
Assigns priorities to each requirement.
Add features in each requirement from the point of view of business.
Customer can add new items or requirements in the backlog at anytime.
Product manager can assess the backlog and updates priorities.
K.V.S. 41
Software engineering Code:315323
Scrum Meetings consist of three key questions that are asked and answered by each team
members :
What did the team member do since the last team meeting?
What obstacles is he coming across?
What do you plan to finish till the next team meeting?
These questions are asked by the team leader which is called as a scrum master.
The scrum meeting helps team to find out solutions of problems mentioned in work units.
Daily scrum meetings increase knowledge socialization.
K.V.S. 42
Software engineering Code:315323
- Business Needs/Value.
- Empowered Terms.
- Frequent Delivery.
- Integrated Testing.
K.V.S. 43
Software engineering Code:315323
DSDM life cycles define three iterative life cycles proceeds by two additional life cycles.
* Feasibility study: It collects all the requirements and constrain associated with that
requirement from the user. It checks whether that requirements are feasible or not?
Business study : It collects all information about the business that will allow application to
business value. According to this information it plans and defines basic application
architecture. It also finds out all requirements regarding maintainability of the application to
be developed.
Design and build iteration: Here it accepts information from functional model iteration
and design the project. According to design, it develop program for it. Some time functional
model iteration and design and build iteration phase occurs concurrently.
Implementation: It places developed software into customer's site if any increment is not
found. Continuously check the maintenance of that system.
K.V.S. 44
Software engineering Code:315323
The Agile Unified Process (AUP) is a simplified version of the Rational Unified Process
(RUP), adapted to follow Agile principles. It was created by Scott Ambler to provide a
lightweight, agile approach to software development while retaining the structured,
disciplined elements of RUP.
Phases of AUP
Like RUP, AUP has four main phases, but with Agile principles infused:
1. Inception
o Define project scope, objectives, and feasibility.
o Identify initial risks and constraints.
2. Elaboration
o Refine requirements and architecture.
o Plan the project in more detail.
o Build architectural proof-of-concept.
3. Construction
o Develop working software in iterations.
o Emphasize testing, feedback, and continuous integration.
4. Transition
o Deliver the software to users.
o Handle final testing, training, and deployment.
AUP organizes work into disciplines (similar to RUP), but in a streamlined way:
K.V.S. 45
Software engineering Code:315323
Agile
Feature RUP AUP
(Scrum/XP)
Process Heavyweight Lightweight Lightweight
Not Strongly
Agile Principles Core foundation
emphasized emphasized
The Agile Unified Process is best seen as a bridge between traditional structured methods
and Agile development. It’s particularly useful for teams that:
K.V.S. 46