SE206-01-Overview of SE

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 25

Overview of Software

Engineering

SE 206
Spring 2019
What is software?
 Computer Programs and Associated Documentation

 Software products may be developed for a particular customer


or may be developed for a general market
 Software products may be
 Generic/COTS (Commercial off-the-Shelf) developed to be sold to a
range of different customers
 Custom- developed for a customer according to their specification
What is Engineering?
 Engineering is …
 The application of scientific principles and methods to the construction of
useful structures & machines.
 Examples
 Mechanical engineering
 Computer engineering
 Civil engineering
 Chemical engineering
 Electrical engineering
 Nuclear engineering
 Software Engineering
What is Software Engineering (SE) ?
 Software engineering is a detailed study of
engineering to the design, development and
maintenance of software.
 before, during, and after the software project.
Why Engineer Software ?
 The problem is complex
 First is, size :
 Mozilla contains 3 Million lines of code (3 Mega LOC)
 Windows 2000 contains 108 lines of code (10 Giga LOC)
 Second is uncertainty of “inputs” and their timing.
 Such as MS-word, Photoshop, 3D-Design
 Third is the continuing changing “environment” and demands.
Software engineering is about managing
all the sources of complexity to
produce effective software.
Software Engineering in a Nutshell
 Development of software systems whose size/complexity needs
team(s) of engineers.
 multi-person construction of multi-version software.
 Scope
 Study of software process, development/management principles, techniques,
tools and notations.
 Goal
 Production of quality software, delivered on time, within budget, satisfying
customers’ requirements and users’ needs.
What does a software engineer do?
Software engineers should:
 Adopt a systematic approach to all aspects of software development.
 Use appropriate tools and techniques depending on:
the problem to be solved,
the development constraints,
the resources available
 Understand and communicate processes for improved software
development within their organization.
 Be effective team members or leaders.
 Can be very technical or more managerial depending on organizational
need.
What is the difference between software engineering and
computer science?

Computer Science Software Engineering


is concerned with
 theory  the practicalities of developing
 fundamentals  delivering useful software

Computer science theories are currently insufficient to


act as a complete underpinning for software engineering,
BUT it is a foundation for practical aspects of software
engineering
What is the difference between software engineering and
system engineering?
 Software engineering is part of System engineering.
 System engineering is concerned with all aspects of computer-based systems
development including.
 hardware, software and process engineering
 System engineers are involved in
system specification,
architectural design,
integration and deployment
Difficulties?
 SE is a unique brand of engineering.
 Software is soft (it is not hard as building).
 Software construction is human-intensive.
 Software is intangible and generally invisible.
 Software problems are unprecedentedly complex.
 Software solutions require looking after small details.
 Software “state” means behaviors can depend on history.
Software Engineering ≠ Software Programming

 Software programming
 Single developer.
 “Toy” applications.
 Short lifespan.
 Single or few stakeholders
Architect = Developer = Manager = Tester = Customer = User
 One-of-a-kind systems.
 Built from scratch.
 Minimal maintenance.
Software Engineering ≠ Software Programming

 Software engineering
 Teams of developers with multiple roles
 Complex systems
 Indefinite lifespan
 Numerous stakeholders
Architect ≠ Developer ≠ Manager ≠ Tester ≠ Customer ≠ User
 Maintenance accounts for 60%-80% of overall
development costs
Economic and Management Aspects of SE
 Software production = development + maintenance
 Maintenance costs 60%-80% of all (successful) development costs
 Quicker development is not always preferable
 higher up-front costs may defray downstream costs
 poorly designed/implemented software is a critical cost factor in
system cost and delays.
Relative Costs of Fixing Software Faults
Software Engineering:
From Principles to Tools
TOOLS

METHODOLOGIES

METHODS AND
TECHNIQUES

PRINCIPLES
Software Qualities
 Software Qualities are goals in the practice
of software engineering, and directly relate
to many of the guiding principles.

 External vs. Internal qualities


 Product vs. Process qualities
 Objective vs. Subjective qualities
Software Qualities
 Critical Quality Attributes  Portability
 Correctness  Internationalization
 Understandability
 Reliability
 Scalability
 Maintainability
 Robustness
 Dependability  Testability
 Usability  Reusability
 Other Attributes  Customizability
 Completeness  Efficiency
 Compatibility
External vs. Internal Qualities
 External qualities are visible to the user
 reliability, usability, efficiency, robustness,
scalability.
 Internal qualities are the concern of developers
 they help developers achieve external qualities
 verifiability, maintainability, extensibility,
evolvability, adaptability, portability, testability,
reusability
Product vs. Process Qualities
 Product qualities concern the developed
artifacts (product)
 maintainability, performance, understandability,
 Process qualities deal with the development
activity
 products are developed through process
 maintainability, productivity, predictability
Some Software Qualities
 Reliability
 Statistical property
 Probability that software will operate as expected over
a given period of time/inputs.
 Relative.
Some Software Qualities (cont.)
 Robustness
 “reasonable” behavior in unforeseen circumstances
 It is Subjective quality.
 a specified requirement is an issue of correctness;
an unspecified requirement is an issue of robustness
 Usability
 Ability of end-users to easily use software.
 Extremely subjective.
Some Software Qualities (cont.)
 Understandability
 Ability of developers to easily understand produced
artifacts.
 Internal & Subjective quality
 Verifiability
 Ease of establishing desired properties.
 Performed by formal analysis or testing.
 Internal quality.
Some Software Qualities (cont.)
 Performance
 Equated with efficiency
 assessable by measurement, analysis, and simulation
 Evolvability
 Ability to add or modify functionality.
 Evolution of implementation is too easy.
Some Software Qualities (cont.)
 Reusability
 Ability to construct new software from existing pieces.
 Must be planned for
 Occurs at all levels: from people to process, from requirements to
code.
 Interoperability
 Ability of software (sub)systems to cooperate with others
 Easily integratable into larger systems.
 Common techniques include APIs, plug-in protocols, etc.
Some Software Qualities (cont.)
 Scalability
 ability of a software system to grow in size while
maintaining its properties and qualities.
 assumes maintainability and evolvability
 goal of component-based development

You might also like