Software engineering introduction

Vishal Singh
Vishal Singhsoftware development consultant
Software Engineering


          by
      Vishal Singh
  (vishal11380@yahoo.com)
Meaning:
Software engineering is the field of computer
science that deals with the building of
software systems which are so large or so
complex that they are built by a team or
teams of engineers.
Software Engineering is the use of
  techniques, methods and
  methodologies to develop high quality
  software which is
 Reliable
 Easy  to understand
 Useful
 Modular
 Efficient
 Modifiable
 Reusable
 Good user interface
 Well documented
 Delivered in cost effective and timely manner
Software engineering goals
 a.  Maintainability
  It should be possible to easily introduce
  changes to the software without increasing
  the complexity of the original system
  design.
 b. Reliability

  The software should prevent failure in
  design and construction as well as recover
  from failure in operation.
 c.  Efficiency
  The software system should use the
  resources that are available in an optimal
  manner.
 d. Understandability
  The software should accurately model the
  view the reader has of the real world. Since
  code in a large, long-lived software system
  is usually read more times than it is written,
  it should be easy to read at the expense of
  being easy to write, and not the other way
  around.
Software engineering principles

 a. Abstraction
  "The essence of abstraction is to extract
  essential properties while omitting
  inessential detail."
 b. Information Hiding
  The code should contain no unnecessary
  detail. Elements that do not affect other
  portions of the system are inaccessible to
  the user
 c. Modularity
  The code is purposefully structured. Components
  of a given module are logically or functionally
  dependent.
 d. Localization
  The breakdown and decomposition of the code is
  rational. Logically related computational units are
  collected together in modules.
 e. Uniformity
  The notation and use of comments, specific
  keywords and formatting is consistent and free
  from unnecessary differences in other parts of
  the code.
 f.Completeness
  Nothing is blatantly missing from any module. All
  important or relevant components are present
  both in the modules and in the overall system as
  appropriate.
 g. Conformability

  The modules of the program can be tested
  individually with adequate rigor. This gives rise
  to a more readily alterable system and enables
  the reusability of tested components.
The Software Life Cycle

  A sample waterfall life cycle model
  comprises the following phases:
 Requirements analysis and
  specification
 Design and specification
 Coding and module testing
 Integration and system testing
 Delivery and maintenance
Software engineering introduction
Classification of Software Qualities

 External versus Internal Qualities
 We can divide software qualities into
 external and internal qualities. The
 external Qualities are visible to the user of
 the system and the internal qualities are
 those that concerns the developer of the
 system.
Representative Qualities
1. Correctness, Reliability, and Robustness
 Correctness: A program is functionally correct if
  it behaves according to the specification of the
  functions it should provide (called functional
  requirements specifications).
 Reliability: Informally, software is reliable if the
  user can depend on it.
 Robustness: A program is robust if it behaves
  "reasonably," even in circumstances that were
  not anticipated in the requirements specification-
  for example, when it encounters incorrect input
  data or some hardware malfunction (say, a disk
  crash).
2. Performance
 Any engineering product is expected to meet a
  certain level of performance. Unlike other
  disciplines, in software engineering we often
  equate performance with efficiency. We will
  follow this practice here. A software system is
  efficient if it uses computing resources
  economically.
 Performance is important because it affects the
  usability of the system. If a software system is
  too slow, it reduces the productivity of the users,
  possibly to the point of not meeting their needs.
3. User Friendliness
 A software system is user friendly if its
  human users find it easy to use.
 For example, a novice user may
  appreciate verbose messages, while an
  experienced user grows to detest and
  ignore them. Similarly, a nonprogrammer
  may appreciate the use of menus, while a
  programmer may be more comfortable
  with typing a command.
4.Verifiability
 A software is verifiable if its properties can
  be verified easily. For example, the
  correctness or the performances of a
  software system are properties we would
  be interested in verifying.
 Modular design, disciplined coding
  practices and the use of an appropriate
  programming language all contribute to
  verifiability.
 Maintainability
 The  term “software maintenance” is
  commonly used to refer to the
  modifications that are made to a software
  system after its initial release.
 There is evidence that maintenance costs
  exceed 60% of the total costs of the
  software.
 Reusability
 Reusability is an important factor. In
 product evolution, we modify a product to
 build a new version of that same product;
 in. product reuse, we use it-perhaps with
 minor changes-to build another product.
 Reusability appears to be more applicable
 to software components than to whole
 products but it certainly seems possible to
 build products that are reusable.
 Portability
 Software  is portable if it can run in
 different environments. The term
 "environment" can refer to a hardware
 platform or a software environment such
 as a particular operating system. With the
 proliferation of different processors and
 operating systems, portability has become
 an important issue for software engineers.
 Understandability
 Some  software systems are easier to
 understand than others. Of course, some tasks
 are inherently more complex than others. For
 example, a system that does weather
 forecasting, no matter how well it is written, will
 be harder to understand than one that
 prints a mailing list. Given tasks of inherently
 similar difficulty, we can follow certain
 guidelines to produce more understandable
 designs and to write more understandable
 programs.
 Interoperability
 Interoperabilityrefers to the ability of a
  system to coexist and cooperate with
  other systems-for example, a word-
  processor's ability to incorporate a chart
  produced by a graphing package, or the
  graphics package's ability to graph the
  data produced by a spreadsheet, or the
  spreadsheet's ability to process an image
  scanned by a scanner.
 Productivity
 Productivity is a quality of the software
 production process: it measures the
 efficiency of the process and, as we said
 before, is the performance quality applied
 to the process. An efficient process results
 in faster delivery of the product.
 Timeliness
 Timeliness  is a process-related quality that
 refers to the ability to deliver a product on
 time. Historically, timeliness has been
 lacking in software production processes
 leading to the "software crisis," which in
 turn led to the need for-and birth of
 software engineering itself. Even now,
 many current processes fail to result in a
 timely product.
 Visibility
A   software development process is visible
  if all of its steps and its current status are
  documented clearly. The idea is that the
  steps and the status of the project are
  available and easily accessible for
  external examination.
Software Process Models
 SDLC    Models
  There are various software development
  approaches defined and designed which are
  used/employed during development process of
  software, these approaches are also referred as
  "Software Development Process Models".
 Some of the most commonly used Software
  developments models are the following:
 Waterfall model
 Spiral model
 Prototyping model
 Iterative model
Waterfall Model

 Waterfallapproach was first Process
 Model to be introduced and followed
 widely in Software Engineering to ensure
 success of the project. In "The Waterfall"
 approach, the whole process of software
 development is divided into separate
 process phases.
The stages of "The Waterfall Model" are:


 Requirement   Analysis & Definition
 System & Software Design
 Implementation & Unit Testing
 Integration & System Testing
 Operations & Maintenance
Waterfall Model Common Error
 Common Errors in Requirements Analysis


 Problem  1: Customers don't (really) know what
  they want
 Problem 2: Requirements change during the
  course of the project
 Problem 3: Customers have unreasonable
  timelines
 Problem 4: Communication gaps exist between
  customers, engineers and project managers
 Problem 5: The development team doesn't
  understand the politics of the customer's
  organization
Prototype Model
A prototype is a working model that is
 functionally equivalent to a component of
 the product. In many instances the client
 only has a general view of what is
 expected from the software product. In
 such a scenario where there is an
 absence of detailed information regarding
 the input to the system, the processing
 needs and the output requirements, the
 prototyping model may be employed.
The process of prototyping involves the following steps:
 Identify basic requirements
  Determine basic requirements including the input and
  output information desired. Details, such as security, can
  typically be ignored.
 Develop Initial Prototype
  The initial prototype is developed that includes only user
  interfaces.
 Review
  The customers, including end-users, examine the
  prototype and provide feedback on additions or changes.
 Revise and Enhancing the Prototype
  Using the feedback both the specifications and the
  prototype can be improved. Negotiation about what is
  within the scope of the contract/product may be
  necessary. If changes are introduced then a repeat of
  steps #3 ands #4 may be needed.
Advantages of Prototyping

 Reduced   time and costs
 Improved and increased user involvement
Disadvantages of Prototyping
 Insufficient analysis
 User confusion of prototype and finished
  system
 Developer attachment to prototype
 Excessive development time of the prototype
 Expense of implementing prototyping
Spiral Model
 The  spiral model was defined by Barry Boehm in
  his 1988 article
 The Spiral Model

  The spiral model, also known as the spiral
  lifecycle model, is a systems development method
  (SDM) used in information technology (IT). This
  model of development combines the features
  of the prototyping model and the waterfall
  model. The spiral model is intended for large,
  expensive and complicated projects.
The steps in the spiral model can be
generalized as follows:
1.   The new system requirements are defined in
     as much detail as possible. This usually
     involves interviewing a number of users
     representing all the external or internal users
     and other aspects of the existing system.
2.   A preliminary design is created for the new
     system.
3.   A first prototype of the new system is
     constructed from the preliminary design. This
     is usually a scaled-down system, and
     represents an approximation of the
     characteristics of the final product.
4.   A second prototype is evolved by a fourfold procedure:
     (1) evaluating the first prototype in terms of its
     strengths, weaknesses, and risks; (2) defining the
     requirements of the second prototype; (3) planning and
     designing the second prototype; (4) constructing and
     testing the second prototype.
5.   At the customer's option, the entire project can be
     aborted if the risk is deemed too great. Risk factors
     might involve development cost overruns, operating-
     cost miscalculation, or any other factor that could, in
     the customer's judgment, result in a less-than-
     satisfactory final product.
6.   The existing prototype is evaluated in the same
     manner as was the previous prototype, and, if
     necessary, another prototype is developed from it
     according to the fourfold procedure outlined above.
7. The preceding steps are iterated until the
   customer is satisfied that the refined
   prototype represents the final product
   desired.
8. The final system is constructed, based
   on the refined prototype.
9. The final system is thoroughly evaluated
   and tested. Routine maintenance is
   carried out on a continuing basis to
   prevent large-scale failures and to
   minimize downtime.
Advantages of Spiral model
 Estimates (i.e. budget, schedule, etc.)
  become more realistic as work
  progresses, because important issues are
  discovered earlier.
 It is more able to cope with the (nearly
  inevitable) changes that software
  development generally entails.
Disadvantages of Spiral model
 Highly customized limiting re-usability
 Applied differently for each application
 Risk of not meeting budget or schedule
1 de 37

Recomendados

Software Development Life Cycle (SDLC) por
Software Development Life Cycle (SDLC)Software Development Life Cycle (SDLC)
Software Development Life Cycle (SDLC) Compare Infobase Limited
167.9K visualizações48 slides
Phased life cycle model por
Phased life cycle modelPhased life cycle model
Phased life cycle modelStephennancy
20K visualizações17 slides
Sdlc models por
Sdlc modelsSdlc models
Sdlc modelsVatsana Technologies Pte Ltd
7.5K visualizações31 slides
Software Architecture and Design por
Software Architecture and DesignSoftware Architecture and Design
Software Architecture and DesignRa'Fat Al-Msie'deen
190 visualizações26 slides
Software architecture design ppt por
Software architecture design pptSoftware architecture design ppt
Software architecture design pptfarazimlak
3K visualizações18 slides
Software engineering lecture notes por
Software engineering lecture notesSoftware engineering lecture notes
Software engineering lecture notesSiva Ayyakutti
130.7K visualizações109 slides

Mais conteúdo relacionado

Mais procurados

Software quality por
Software qualitySoftware quality
Software qualitySara Mehmood
25.8K visualizações46 slides
Software Engineering (Introduction to Software Engineering) por
Software Engineering (Introduction to Software Engineering)Software Engineering (Introduction to Software Engineering)
Software Engineering (Introduction to Software Engineering)ShudipPal
1.3K visualizações25 slides
Design Concepts in Software Engineering-1.pptx por
Design Concepts in Software Engineering-1.pptxDesign Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptxKarthigaiSelviS3
1.3K visualizações32 slides
Software Re-engineering Forward & Reverse Engineering por
Software Re-engineering Forward & Reverse EngineeringSoftware Re-engineering Forward & Reverse Engineering
Software Re-engineering Forward & Reverse EngineeringAli Raza
822 visualizações21 slides
Software requirement and specification por
Software requirement and specificationSoftware requirement and specification
Software requirement and specificationAman Adhikari
19.1K visualizações60 slides
Pressman ch-3-prescriptive-process-models por
Pressman ch-3-prescriptive-process-modelsPressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-modelssaurabhshertukde
12.1K visualizações26 slides

Mais procurados(20)

Software quality por Sara Mehmood
Software qualitySoftware quality
Software quality
Sara Mehmood25.8K visualizações
Software Engineering (Introduction to Software Engineering) por ShudipPal
Software Engineering (Introduction to Software Engineering)Software Engineering (Introduction to Software Engineering)
Software Engineering (Introduction to Software Engineering)
ShudipPal1.3K visualizações
Design Concepts in Software Engineering-1.pptx por KarthigaiSelviS3
Design Concepts in Software Engineering-1.pptxDesign Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptx
KarthigaiSelviS31.3K visualizações
Software Re-engineering Forward & Reverse Engineering por Ali Raza
Software Re-engineering Forward & Reverse EngineeringSoftware Re-engineering Forward & Reverse Engineering
Software Re-engineering Forward & Reverse Engineering
Ali Raza822 visualizações
Software requirement and specification por Aman Adhikari
Software requirement and specificationSoftware requirement and specification
Software requirement and specification
Aman Adhikari19.1K visualizações
Pressman ch-3-prescriptive-process-models por saurabhshertukde
Pressman ch-3-prescriptive-process-modelsPressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-models
saurabhshertukde12.1K visualizações
Characteristics of Software por Upekha Vandebona
Characteristics of SoftwareCharacteristics of Software
Characteristics of Software
Upekha Vandebona8.3K visualizações
Software requirements por Dr. Loganathan R
Software requirementsSoftware requirements
Software requirements
Dr. Loganathan R29.7K visualizações
An Introduction to Software Architecture por RahimLotfi
An Introduction to Software ArchitectureAn Introduction to Software Architecture
An Introduction to Software Architecture
RahimLotfi1.8K visualizações
Introduction to SOFTWARE ARCHITECTURE por Ivano Malavolta
Introduction to SOFTWARE ARCHITECTUREIntroduction to SOFTWARE ARCHITECTURE
Introduction to SOFTWARE ARCHITECTURE
Ivano Malavolta5.5K visualizações
Software maintenance por NancyBeaulah_R
Software maintenanceSoftware maintenance
Software maintenance
NancyBeaulah_R722 visualizações
Software quality por jagadeesan
Software qualitySoftware quality
Software quality
jagadeesan31.8K visualizações
Software Engineering ppt por shruths2890
Software Engineering pptSoftware Engineering ppt
Software Engineering ppt
shruths289051.7K visualizações
Architecture design in software engineering por Preeti Mishra
Architecture design in software engineeringArchitecture design in software engineering
Architecture design in software engineering
Preeti Mishra67.9K visualizações
Software Project Management( lecture 1) por Syed Muhammad Hammad
Software Project Management( lecture 1)Software Project Management( lecture 1)
Software Project Management( lecture 1)
Syed Muhammad Hammad5.6K visualizações
UML and Software Modeling Tools.pptx por Nwabueze Obioma
UML and Software Modeling Tools.pptxUML and Software Modeling Tools.pptx
UML and Software Modeling Tools.pptx
Nwabueze Obioma5.1K visualizações
Software design por Benazir Fathima
Software designSoftware design
Software design
Benazir Fathima876 visualizações
Software architecture por Ahmad Raza Aslam
Software architectureSoftware architecture
Software architecture
Ahmad Raza Aslam9.4K visualizações
Software Engineering - chp5- software architecture por Lilia Sfaxi
Software Engineering - chp5- software architectureSoftware Engineering - chp5- software architecture
Software Engineering - chp5- software architecture
Lilia Sfaxi7.6K visualizações

Destaque

Software Testing por
Software TestingSoftware Testing
Software TestingVishal Singh
2.1K visualizações26 slides
Coding por
CodingCoding
CodingVishal Singh
13.3K visualizações35 slides
Knowledge Representation in Artificial intelligence por
Knowledge Representation in Artificial intelligence Knowledge Representation in Artificial intelligence
Knowledge Representation in Artificial intelligence Yasir Khan
39.1K visualizações24 slides
Knowledge representation in AI por
Knowledge representation in AIKnowledge representation in AI
Knowledge representation in AIVishal Singh
88.9K visualizações33 slides
Software Requirement Specification por
Software Requirement SpecificationSoftware Requirement Specification
Software Requirement SpecificationVishal Singh
19.2K visualizações18 slides
Issues in knowledge representation por
Issues in knowledge representationIssues in knowledge representation
Issues in knowledge representationSravanthi Emani
60.1K visualizações11 slides

Destaque(10)

Software Testing por Vishal Singh
Software TestingSoftware Testing
Software Testing
Vishal Singh2.1K visualizações
Coding por Vishal Singh
CodingCoding
Coding
Vishal Singh13.3K visualizações
Knowledge Representation in Artificial intelligence por Yasir Khan
Knowledge Representation in Artificial intelligence Knowledge Representation in Artificial intelligence
Knowledge Representation in Artificial intelligence
Yasir Khan39.1K visualizações
Knowledge representation in AI por Vishal Singh
Knowledge representation in AIKnowledge representation in AI
Knowledge representation in AI
Vishal Singh88.9K visualizações
Software Requirement Specification por Vishal Singh
Software Requirement SpecificationSoftware Requirement Specification
Software Requirement Specification
Vishal Singh19.2K visualizações
Issues in knowledge representation por Sravanthi Emani
Issues in knowledge representationIssues in knowledge representation
Issues in knowledge representation
Sravanthi Emani60.1K visualizações
Memory management por Vishal Singh
Memory managementMemory management
Memory management
Vishal Singh25.7K visualizações
The electronic payment systems por Vishal Singh
The electronic payment systemsThe electronic payment systems
The electronic payment systems
Vishal Singh111.3K visualizações
Research report por Vishal Singh
Research reportResearch report
Research report
Vishal Singh83.2K visualizações
File management por Vishal Singh
File managementFile management
File management
Vishal Singh34.4K visualizações

Similar a Software engineering introduction

Lecture1422914635 por
Lecture1422914635Lecture1422914635
Lecture1422914635Толкын Миргаликызы
96 visualizações45 slides
Sepm t1 por
Sepm t1Sepm t1
Sepm t1sapariyapiyushluck
411 visualizações6 slides
Slcm sharbani bhattacharya por
Slcm sharbani bhattacharyaSlcm sharbani bhattacharya
Slcm sharbani bhattacharyaSharbani Bhattacharya
431 visualizações72 slides
Softweare Engieering por
Softweare Engieering Softweare Engieering
Softweare Engieering Huda Alameen
45 visualizações30 slides
Se lec 3 por
Se lec 3Se lec 3
Se lec 3Huda Alameen
6 visualizações30 slides
Unit i FUNDAMENTALS OF SOFTWARE ENGINEERING por
Unit i FUNDAMENTALS OF SOFTWARE ENGINEERINGUnit i FUNDAMENTALS OF SOFTWARE ENGINEERING
Unit i FUNDAMENTALS OF SOFTWARE ENGINEERINGSangeetha Rangarajan
393 visualizações88 slides

Similar a Software engineering introduction(20)

Softweare Engieering por Huda Alameen
Softweare Engieering Softweare Engieering
Softweare Engieering
Huda Alameen45 visualizações
Se lec 3 por Huda Alameen
Se lec 3Se lec 3
Se lec 3
Huda Alameen6 visualizações
Unit i FUNDAMENTALS OF SOFTWARE ENGINEERING por Sangeetha Rangarajan
Unit i FUNDAMENTALS OF SOFTWARE ENGINEERINGUnit i FUNDAMENTALS OF SOFTWARE ENGINEERING
Unit i FUNDAMENTALS OF SOFTWARE ENGINEERING
Sangeetha Rangarajan393 visualizações
Intro softwareeng por PINKU29
Intro softwareengIntro softwareeng
Intro softwareeng
PINKU29233 visualizações
System analsis and design por Rizwan Kabir
System analsis and designSystem analsis and design
System analsis and design
Rizwan Kabir365 visualizações
SoftwareEngineering.pptx por priyaaresearch
SoftwareEngineering.pptxSoftwareEngineering.pptx
SoftwareEngineering.pptx
priyaaresearch11 visualizações
Introduction,Software Process Models, Project Management por swatisinghal
Introduction,Software Process Models, Project ManagementIntroduction,Software Process Models, Project Management
Introduction,Software Process Models, Project Management
swatisinghal2.3K visualizações
Software Engineering Overview por Prachi Sasankar
Software Engineering OverviewSoftware Engineering Overview
Software Engineering Overview
Prachi Sasankar846 visualizações
SE-Lecture-2.pptx por vishal choudhary
SE-Lecture-2.pptxSE-Lecture-2.pptx
SE-Lecture-2.pptx
vishal choudhary15 visualizações
Software Engineering (Short & Long Questions) por MuhammadTalha436
Software Engineering (Short & Long Questions)Software Engineering (Short & Long Questions)
Software Engineering (Short & Long Questions)
MuhammadTalha436431 visualizações
Software Engineering Solved Past Paper 2020 por MuhammadTalha436
Software Engineering Solved Past Paper 2020 Software Engineering Solved Past Paper 2020
Software Engineering Solved Past Paper 2020
MuhammadTalha4361K visualizações
Basics of software engineering por Madhav Suratkar
Basics of software engineeringBasics of software engineering
Basics of software engineering
Madhav Suratkar855 visualizações
Software design.edited (1) por FarjanaAhmed3
Software design.edited (1)Software design.edited (1)
Software design.edited (1)
FarjanaAhmed352 visualizações
Bt0081 software engineering por Techglyphs
Bt0081 software engineeringBt0081 software engineering
Bt0081 software engineering
Techglyphs131 visualizações

Último

CUNY IT Picciano.pptx por
CUNY IT Picciano.pptxCUNY IT Picciano.pptx
CUNY IT Picciano.pptxapicciano
56 visualizações17 slides
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (FRIE... por
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (FRIE...BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (FRIE...
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (FRIE...Nguyen Thanh Tu Collection
51 visualizações91 slides
NodeJS and ExpressJS.pdf por
NodeJS and ExpressJS.pdfNodeJS and ExpressJS.pdf
NodeJS and ExpressJS.pdfArthyR3
46 visualizações17 slides
Guidelines & Identification of Early Sepsis DR. NN CHAVAN 02122023.pptx por
Guidelines & Identification of Early Sepsis DR. NN CHAVAN 02122023.pptxGuidelines & Identification of Early Sepsis DR. NN CHAVAN 02122023.pptx
Guidelines & Identification of Early Sepsis DR. NN CHAVAN 02122023.pptxNiranjan Chavan
38 visualizações48 slides
Mineral nutrition and Fertilizer use of Cashew por
 Mineral nutrition and Fertilizer use of Cashew Mineral nutrition and Fertilizer use of Cashew
Mineral nutrition and Fertilizer use of CashewAruna Srikantha Jayawardana
52 visualizações107 slides
Berry country.pdf por
Berry country.pdfBerry country.pdf
Berry country.pdfMariaKenney3
54 visualizações12 slides

Último(20)

CUNY IT Picciano.pptx por apicciano
CUNY IT Picciano.pptxCUNY IT Picciano.pptx
CUNY IT Picciano.pptx
apicciano56 visualizações
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (FRIE... por Nguyen Thanh Tu Collection
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (FRIE...BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (FRIE...
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (FRIE...
Nguyen Thanh Tu Collection51 visualizações
NodeJS and ExpressJS.pdf por ArthyR3
NodeJS and ExpressJS.pdfNodeJS and ExpressJS.pdf
NodeJS and ExpressJS.pdf
ArthyR346 visualizações
Guidelines & Identification of Early Sepsis DR. NN CHAVAN 02122023.pptx por Niranjan Chavan
Guidelines & Identification of Early Sepsis DR. NN CHAVAN 02122023.pptxGuidelines & Identification of Early Sepsis DR. NN CHAVAN 02122023.pptx
Guidelines & Identification of Early Sepsis DR. NN CHAVAN 02122023.pptx
Niranjan Chavan38 visualizações
Berry country.pdf por MariaKenney3
Berry country.pdfBerry country.pdf
Berry country.pdf
MariaKenney354 visualizações
Create a Structure in VBNet.pptx por Breach_P
Create a Structure in VBNet.pptxCreate a Structure in VBNet.pptx
Create a Structure in VBNet.pptx
Breach_P80 visualizações
REFERENCING, CITATION.pptx por abhisrivastava11
REFERENCING, CITATION.pptxREFERENCING, CITATION.pptx
REFERENCING, CITATION.pptx
abhisrivastava1138 visualizações
When Sex Gets Complicated: Porn, Affairs, & Cybersex por Marlene Maheu
When Sex Gets Complicated: Porn, Affairs, & CybersexWhen Sex Gets Complicated: Porn, Affairs, & Cybersex
When Sex Gets Complicated: Porn, Affairs, & Cybersex
Marlene Maheu99 visualizações
The Accursed House by Émile Gaboriau por DivyaSheta
The Accursed House  by Émile GaboriauThe Accursed House  by Émile Gaboriau
The Accursed House by Émile Gaboriau
DivyaSheta234 visualizações
Volf work.pdf por MariaKenney3
Volf work.pdfVolf work.pdf
Volf work.pdf
MariaKenney366 visualizações
12.5.23 Poverty and Precarity.pptx por mary850239
12.5.23 Poverty and Precarity.pptx12.5.23 Poverty and Precarity.pptx
12.5.23 Poverty and Precarity.pptx
mary850239123 visualizações
ICS3211_lecture 09_2023.pdf por Vanessa Camilleri
ICS3211_lecture 09_2023.pdfICS3211_lecture 09_2023.pdf
ICS3211_lecture 09_2023.pdf
Vanessa Camilleri126 visualizações
Education of marginalized and socially disadvantages segments.pptx por GarimaBhati5
Education of marginalized and socially disadvantages segments.pptxEducation of marginalized and socially disadvantages segments.pptx
Education of marginalized and socially disadvantages segments.pptx
GarimaBhati539 visualizações
Career Building in AI - Technologies, Trends and Opportunities por WebStackAcademy
Career Building in AI - Technologies, Trends and OpportunitiesCareer Building in AI - Technologies, Trends and Opportunities
Career Building in AI - Technologies, Trends and Opportunities
WebStackAcademy40 visualizações
Parts of Speech (1).pptx por mhkpreet001
Parts of Speech (1).pptxParts of Speech (1).pptx
Parts of Speech (1).pptx
mhkpreet00143 visualizações
Meet the Bible por Steve Thomason
Meet the BibleMeet the Bible
Meet the Bible
Steve Thomason69 visualizações
Jibachha publishing Textbook.docx por DrJibachhaSahVetphys
Jibachha publishing Textbook.docxJibachha publishing Textbook.docx
Jibachha publishing Textbook.docx
DrJibachhaSahVetphys53 visualizações
Nelson_RecordStore.pdf por BrynNelson5
Nelson_RecordStore.pdfNelson_RecordStore.pdf
Nelson_RecordStore.pdf
BrynNelson544 visualizações

Software engineering introduction

  • 1. Software Engineering by Vishal Singh (vishal11380@yahoo.com)
  • 2. Meaning: Software engineering is the field of computer science that deals with the building of software systems which are so large or so complex that they are built by a team or teams of engineers.
  • 3. Software Engineering is the use of techniques, methods and methodologies to develop high quality software which is  Reliable  Easy to understand  Useful  Modular  Efficient  Modifiable  Reusable  Good user interface  Well documented  Delivered in cost effective and timely manner
  • 4. Software engineering goals  a. Maintainability It should be possible to easily introduce changes to the software without increasing the complexity of the original system design.  b. Reliability The software should prevent failure in design and construction as well as recover from failure in operation.
  • 5.  c. Efficiency The software system should use the resources that are available in an optimal manner.  d. Understandability The software should accurately model the view the reader has of the real world. Since code in a large, long-lived software system is usually read more times than it is written, it should be easy to read at the expense of being easy to write, and not the other way around.
  • 6. Software engineering principles  a. Abstraction "The essence of abstraction is to extract essential properties while omitting inessential detail."  b. Information Hiding The code should contain no unnecessary detail. Elements that do not affect other portions of the system are inaccessible to the user
  • 7.  c. Modularity The code is purposefully structured. Components of a given module are logically or functionally dependent.  d. Localization The breakdown and decomposition of the code is rational. Logically related computational units are collected together in modules.  e. Uniformity The notation and use of comments, specific keywords and formatting is consistent and free from unnecessary differences in other parts of the code.
  • 8.  f.Completeness Nothing is blatantly missing from any module. All important or relevant components are present both in the modules and in the overall system as appropriate.  g. Conformability The modules of the program can be tested individually with adequate rigor. This gives rise to a more readily alterable system and enables the reusability of tested components.
  • 9. The Software Life Cycle A sample waterfall life cycle model comprises the following phases:  Requirements analysis and specification  Design and specification  Coding and module testing  Integration and system testing  Delivery and maintenance
  • 11. Classification of Software Qualities External versus Internal Qualities We can divide software qualities into external and internal qualities. The external Qualities are visible to the user of the system and the internal qualities are those that concerns the developer of the system.
  • 12. Representative Qualities 1. Correctness, Reliability, and Robustness  Correctness: A program is functionally correct if it behaves according to the specification of the functions it should provide (called functional requirements specifications).  Reliability: Informally, software is reliable if the user can depend on it.  Robustness: A program is robust if it behaves "reasonably," even in circumstances that were not anticipated in the requirements specification- for example, when it encounters incorrect input data or some hardware malfunction (say, a disk crash).
  • 13. 2. Performance  Any engineering product is expected to meet a certain level of performance. Unlike other disciplines, in software engineering we often equate performance with efficiency. We will follow this practice here. A software system is efficient if it uses computing resources economically.  Performance is important because it affects the usability of the system. If a software system is too slow, it reduces the productivity of the users, possibly to the point of not meeting their needs.
  • 14. 3. User Friendliness  A software system is user friendly if its human users find it easy to use.  For example, a novice user may appreciate verbose messages, while an experienced user grows to detest and ignore them. Similarly, a nonprogrammer may appreciate the use of menus, while a programmer may be more comfortable with typing a command.
  • 15. 4.Verifiability  A software is verifiable if its properties can be verified easily. For example, the correctness or the performances of a software system are properties we would be interested in verifying.  Modular design, disciplined coding practices and the use of an appropriate programming language all contribute to verifiability.
  • 16.  Maintainability  The term “software maintenance” is commonly used to refer to the modifications that are made to a software system after its initial release.  There is evidence that maintenance costs exceed 60% of the total costs of the software.
  • 17.  Reusability  Reusability is an important factor. In product evolution, we modify a product to build a new version of that same product; in. product reuse, we use it-perhaps with minor changes-to build another product. Reusability appears to be more applicable to software components than to whole products but it certainly seems possible to build products that are reusable.
  • 18.  Portability  Software is portable if it can run in different environments. The term "environment" can refer to a hardware platform or a software environment such as a particular operating system. With the proliferation of different processors and operating systems, portability has become an important issue for software engineers.
  • 19.  Understandability  Some software systems are easier to understand than others. Of course, some tasks are inherently more complex than others. For example, a system that does weather forecasting, no matter how well it is written, will be harder to understand than one that prints a mailing list. Given tasks of inherently similar difficulty, we can follow certain guidelines to produce more understandable designs and to write more understandable programs.
  • 20.  Interoperability  Interoperabilityrefers to the ability of a system to coexist and cooperate with other systems-for example, a word- processor's ability to incorporate a chart produced by a graphing package, or the graphics package's ability to graph the data produced by a spreadsheet, or the spreadsheet's ability to process an image scanned by a scanner.
  • 21.  Productivity  Productivity is a quality of the software production process: it measures the efficiency of the process and, as we said before, is the performance quality applied to the process. An efficient process results in faster delivery of the product.
  • 22.  Timeliness  Timeliness is a process-related quality that refers to the ability to deliver a product on time. Historically, timeliness has been lacking in software production processes leading to the "software crisis," which in turn led to the need for-and birth of software engineering itself. Even now, many current processes fail to result in a timely product.
  • 23.  Visibility A software development process is visible if all of its steps and its current status are documented clearly. The idea is that the steps and the status of the project are available and easily accessible for external examination.
  • 25.  SDLC Models There are various software development approaches defined and designed which are used/employed during development process of software, these approaches are also referred as "Software Development Process Models".  Some of the most commonly used Software developments models are the following:  Waterfall model  Spiral model  Prototyping model  Iterative model
  • 26. Waterfall Model  Waterfallapproach was first Process Model to be introduced and followed widely in Software Engineering to ensure success of the project. In "The Waterfall" approach, the whole process of software development is divided into separate process phases.
  • 27. The stages of "The Waterfall Model" are:  Requirement Analysis & Definition  System & Software Design  Implementation & Unit Testing  Integration & System Testing  Operations & Maintenance
  • 28. Waterfall Model Common Error Common Errors in Requirements Analysis  Problem 1: Customers don't (really) know what they want  Problem 2: Requirements change during the course of the project  Problem 3: Customers have unreasonable timelines  Problem 4: Communication gaps exist between customers, engineers and project managers  Problem 5: The development team doesn't understand the politics of the customer's organization
  • 29. Prototype Model A prototype is a working model that is functionally equivalent to a component of the product. In many instances the client only has a general view of what is expected from the software product. In such a scenario where there is an absence of detailed information regarding the input to the system, the processing needs and the output requirements, the prototyping model may be employed.
  • 30. The process of prototyping involves the following steps:  Identify basic requirements Determine basic requirements including the input and output information desired. Details, such as security, can typically be ignored.  Develop Initial Prototype The initial prototype is developed that includes only user interfaces.  Review The customers, including end-users, examine the prototype and provide feedback on additions or changes.  Revise and Enhancing the Prototype Using the feedback both the specifications and the prototype can be improved. Negotiation about what is within the scope of the contract/product may be necessary. If changes are introduced then a repeat of steps #3 ands #4 may be needed.
  • 31. Advantages of Prototyping  Reduced time and costs  Improved and increased user involvement Disadvantages of Prototyping  Insufficient analysis  User confusion of prototype and finished system  Developer attachment to prototype  Excessive development time of the prototype  Expense of implementing prototyping
  • 32. Spiral Model  The spiral model was defined by Barry Boehm in his 1988 article  The Spiral Model The spiral model, also known as the spiral lifecycle model, is a systems development method (SDM) used in information technology (IT). This model of development combines the features of the prototyping model and the waterfall model. The spiral model is intended for large, expensive and complicated projects.
  • 33. The steps in the spiral model can be generalized as follows: 1. The new system requirements are defined in as much detail as possible. This usually involves interviewing a number of users representing all the external or internal users and other aspects of the existing system. 2. A preliminary design is created for the new system. 3. A first prototype of the new system is constructed from the preliminary design. This is usually a scaled-down system, and represents an approximation of the characteristics of the final product.
  • 34. 4. A second prototype is evolved by a fourfold procedure: (1) evaluating the first prototype in terms of its strengths, weaknesses, and risks; (2) defining the requirements of the second prototype; (3) planning and designing the second prototype; (4) constructing and testing the second prototype. 5. At the customer's option, the entire project can be aborted if the risk is deemed too great. Risk factors might involve development cost overruns, operating- cost miscalculation, or any other factor that could, in the customer's judgment, result in a less-than- satisfactory final product. 6. The existing prototype is evaluated in the same manner as was the previous prototype, and, if necessary, another prototype is developed from it according to the fourfold procedure outlined above.
  • 35. 7. The preceding steps are iterated until the customer is satisfied that the refined prototype represents the final product desired. 8. The final system is constructed, based on the refined prototype. 9. The final system is thoroughly evaluated and tested. Routine maintenance is carried out on a continuing basis to prevent large-scale failures and to minimize downtime.
  • 36. Advantages of Spiral model  Estimates (i.e. budget, schedule, etc.) become more realistic as work progresses, because important issues are discovered earlier.  It is more able to cope with the (nearly inevitable) changes that software development generally entails.
  • 37. Disadvantages of Spiral model  Highly customized limiting re-usability  Applied differently for each application  Risk of not meeting budget or schedule