0% found this document useful (0 votes)
27 views37 pages

Chapter 1

The document provides an overview of Software Engineering, defining it as the application of engineering principles to software development, contrasting it with Computer Science. It discusses various software development process models, including Waterfall, Iterative, Spiral, V-Model, and Agile, highlighting their advantages and disadvantages. Additionally, it addresses challenges in modern software engineering, ethical responsibilities of software engineers, and key software characteristics such as functionality, reliability, and maintainability.

Uploaded by

Abinet Arba
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views37 pages

Chapter 1

The document provides an overview of Software Engineering, defining it as the application of engineering principles to software development, contrasting it with Computer Science. It discusses various software development process models, including Waterfall, Iterative, Spiral, V-Model, and Agile, highlighting their advantages and disadvantages. Additionally, it addresses challenges in modern software engineering, ethical responsibilities of software engineers, and key software characteristics such as functionality, reliability, and maintainability.

Uploaded by

Abinet Arba
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 37

Prepared By: Jerusalem Y.

Introduction to SE 4/8/2019 1
 Software Engineering and its place as an Engineering
 Software development process models

Introduction to SE 4/8/2019 2
 The term Software Engineering is composed of two words.
Software and Engineering.
 Software is more than just a program code, which serves some
computational purpose.
 Software is considered to be a collection of executable
programming code, associated libraries and documentations.
Software, when made for a specific requirement is called
software product.
 Engineering on the other hand, is all about developing
products, using well-defined scientific principles and methods.

Introduction to SE 4/8/2019 3
 Software Engineering as an Engineering branch associated
with the development of software product using well-defined
scientific principles, methods and procedures.
 The outcome of software Engineering is an efficient and
reliable software product.

Introduction to SE 4/8/2019 4
The main difference is
 Computer science deal with studying and analyzing the
algorithms and problems that are related to making the
computer to do the task.
 This involves knowing the details of how the computer as
well as the network works. This field focuses more on how
these computer programming languages work.
 Computer science aims at understanding the theories that
makes the computer function.
 Software Engineering, on the other hand, deals with creating
new software that would be used in the real world.

Introduction to SE 4/8/2019 5
 You would be required to actually work with a team so that
you can build a new application that your end-users would
find beneficial.
 In conclusion, though both fields deal with computer and
software, computer science works on the theories behind how
the computer works while software engineering works on
developing new applications depending on the requirements.

Introduction to SE 4/8/2019 6
 Software engineering deals with designing and developing
software of the highest quality.
 A software engineer does analyzing, designing, developing
and testing software.
 Software engineers carry out software engineering projects,
which usually have a standard software life cycle.
 System Engineering is the sub discipline of engineering
which deals with the overall management of engineering
projects during their life cycle (focusing more on physical
aspects).
 It deals with logistics, team coordination, automatic
machinery control, work processes and similar tools.

Introduction to SE 4/8/2019 7
 The difference between System Engineering and Software
Engineering is
1. System Engineers focus more on users and domains, while
Software Engineering focus more on implementing quality
software.
2. System Engineer may deal with a substantial amount of
hardware engineering, but typically software engineers will
focus solely on software components.
3. System Engineers may have a broader education (including
Engineering, Mathematics and Computer science), while
Software Engineers will come from a Computer Science or
Computer Engineering background.

Introduction to SE 4/8/2019 8
 A software process (also knows as software methodology) is a
set of related activities that leads to the production of the
software.
 These activities may involve the development of the software
from the scratch, or, modifying an existing system.
 Any software process must include the following four
activities:
1. Software specification: Define the main functionalities of
the software and the constrains around them.
2. Software design and implementation: The software is to be
designed and programmed.

Introduction to SE 4/8/2019 9
 Software verification and validation: The software must
conforms to it’s specification and meets the customer needs.
 Software evolution (software maintenance): The software is
being modified to meet customer and market requirements
changes.

Introduction to SE 4/8/2019 10
 A software process model is a simplified representation of a
software process.
 Each model represents a process from a specific perspective.
 A few of software process models are defined as follows:
1. Waterfall model
2. Iterative model
3. Spiral model
4. V – model
5. Agile method

Introduction to SE 4/8/2019 11
 Waterfall model is the simplest model of software
development paradigm.
 The phases will function one after another in linear manner.
That is, when the first phase is finished then only the second
phase will start and so on.
 This model assumes that everything is carried out and taken
place perfectly as planned in the previous stage and there is no
need to think about the past issues that may arise in the next
phase.

Introduction to SE 4/8/2019 12
 This model does not work smoothly if there are some issues
left at the previous step.
 The sequential nature of model does not allow us go back and
undo or redo our actions.
 This model is best suited when developers already have
designed and developed similar software in the past and are
aware of all its domains.

Introduction to SE 4/8/2019 13
Introduction to SE 4/8/2019 14
Advantages
 Easy to explain to the users.

 Structures approach.

 Stages and activities are well defined.

 Helps to plan and schedule the project.

 Verification at each stage ensures early detection of


errors/misunderstanding.
 Each phase has specific deliverables.

Introduction to SE 4/8/2019 15
Disadvantages
 Very difficult to go back to any stage after it finished.

 A little flexibility and adjusting scope is difficult and


expensive.
 Required more time, in addition to the detailed plan.

Introduction to SE 4/8/2019 16
 This model leads the software development process in
iterations.
 It projects the process of development in cyclic manner
repeating every step after every cycle of the software
development process.
 The software is first developed on very small scale and all the
steps are followed which are taken into consideration.
 Then, on every next iteration, more features and modules are
designed, coded, tested and added to the software.
 Every cycle produces a software, which is complete in itself
and has more features and capabilities than that of the previous
one.

Introduction to SE 4/8/2019 17
Introduction to SE 4/8/2019 18
Advantages
 Better use of scarce resources through proper increment
definition.
 Can accommodate some change requests between increments.

 More focused on customer value than the linear approaches.

 Problems can be detected earlier.

Introduction to SE 4/8/2019 19
Disadvantages
 Requires heavy documentation.

 Follows a defined set of processes.

 Requires more customer involvement than the linear


approaches.
 Integration between iteration can be an issue if this is not
considered during the development.

Introduction to SE 4/8/2019 20
 Spiral model can be seen as if you choose one software
development life cycle model and combine it with cyclic
process (iterative model).
 This model considers risk, which often goes un-noticed by
most other models.
 The model starts with determining objectives and constraints
of the software at the start of one iteration.
 Next phase is of prototyping the software. This includes risk
analysis.
 Then one standard SDLC model is used to build the software.

Introduction to SE 4/8/2019 21
Introduction to SE 4/8/2019 22
Advantages
 Estimates (i.e. budget, schedule, etc.) become more realistic as
work progressed because important issues are discovered
earlier.
 Early involvement of developers.

 Manages risks and develops the system into phases.

Disadvantages
 High cost and time to reach the final product.

 Needs special skills to evaluate the risks and assumptions.

Introduction to SE 4/8/2019 23
 The major drawback of waterfall model is we move to the next
stage only when the previous one is finished and there was no
chance to go back if something is found wrong in later stages.
 V-Model provides means of testing of software at each stage
in reverse manner.
 At every stage, test plans and test cases are created to verify
and validate the product according to the requirement of that
stage.

Introduction to SE 4/8/2019 24
Advantages
 Simple and easy to use

 Each phase has specific deliverables.

 Higher chance of success over the waterfall model due to the


development of test plans early on during the life cycle.
 Works well for where requirements are easily understood.

 Verification and validation of the product in early stages of


product development.

Introduction to SE 4/8/2019 25
Disadvantages
 Very inflexible, like the waterfall model.

 Adjusting scope is difficult and expensive.

 The software is developed during the implementation phase,


so no early prototypes of the software are produced.
 The model doesn’t provide a clear path for problems found
during testing phases.
 Required more time, in addition to detailed plan

Introduction to SE 4/8/2019 26
Introduction to SE 4/8/2019 27
 Agility is flexibility, it is a state of dynamic, adapted to the
specific circumstances.
 The agile methods refers to a group of software development
models based on the incremental and iterative approach, in
which the increments are small and typically, new releases of
the system are created and made available to customers every
few weeks.
 They involve customers in the development process to propose
requirements changes.

Introduction to SE 4/8/2019 28
 They minimize documentation by using informal
communications rather than formal meetings with written
documents.
 They are best suited for application where the requirements
change rapidly during the development process.

Introduction to SE 4/8/2019 29
 Roughly 60% of costs are development costs, 40 % are testing
costs.
 For custom software, evolution costs often exceed
development costs.
 Costs vary depending on the type of system being developed
and the requirements of system attributes such as performance
and system reliability.
 Distribution of costs depends on the development model that
is used.

Introduction to SE 4/8/2019 30
Software engineering in the 21st century faces three key
challenges
1. The legacy challenge

 The majority of software systems which are in use today were


developed many years ago yet they perform critical business
functions.
 The legacy challenge is the challenge of maintaining and
updating this software in such a way that excessive costs are
avoided and essential business services continue to be
delivered.

Introduction to SE 4/8/2019 31
2. The heterogeneity challenge
 Increasingly, systems are required to operate as distributed
systems across networks that include different types of
computer and with different kinds of support systems.
 The heterogeneity challenge is the challenge of developing
techniques to build dependable software which is flexible
enough to cope with this heterogeneity.

Introduction to SE 4/8/2019 32
3. The delivery challenge
 Many traditional software engineering techniques are time-
consuming.
 The time they take is required to achieve software quality.
However, businesses today must be responsive and change
very rapidly.
 The delivery challenge is the challenge of shortening
delivery times for large and complex systems without
compromising system quality.

Introduction to SE 4/8/2019 33
 Like other engineers, software engineers must accept that their
job involves wider responsibilities than simply the application
of technical skills.
 Their work is carried out within a legal and social framework.
 Software engineering is obviously bounded by local, national
and international laws.
 Software engineers must behave in an ethical and morally
responsible way if they are to be respected as professionals.
 It goes without saying that engineers should uphold normal
standards of honesty and integrity.

Introduction to SE 4/8/2019 34
 They should not use their skills and abilities to behave in a
dishonest way or in a way that will bring disrepute to the
software engineering profession.
 However, there are areas where standards of acceptable
behaviour are not bounded by laws but by the more tenuous
notion of professional responsibility.

Introduction to SE 4/8/2019 35
 Software characteristics are classified into six major
components.
1. Functionality: Refers to the degree of performance of the
software against its intended purpose.
2. Reliability: Refers to the ability of the software to provide
desired functionality under the given conditions.
3. Usability: Refers to the extent to which the software can be
used with simplicity.
4. Efficiency: Refers to the ability of the software to use
system resources in the most effective and efficient manner.

Introduction to SE 4/8/2019 36
5. Maintainability: Refers to the simplicity with which the
modifications can be made in a software system to extend its
functionality, improve its performance, or correct errors.
6. Portability: Refers to the simplicity 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.

Introduction to SE 4/8/2019 37

You might also like