Uploaded by Han Tyumi

Ch 1-2

advertisement
Yellow
means
important
Ch 1
FSWE
By Zahraa A
•
•
•
Software costs often dominate computer system (hardware) costs.
Software costs more to maintain than it does to develop.
Software engineering is concerned with cost-effective software development.
Generic products
D Software products *
Customized products
Stand-alone systems that are
marketed and sold to any customer
who wishes to buy them.
•
•
PC software ( graphics programs)
CAD software (software for specific
markets such as appointments systems
for dentists)
The specification of what the software
should do is owned by the software
developer and decisions on software
change are made by the developer.
Software that is commissioned by
a specific customer to meet their
own needs.
•
E.g. •
•
embedded control systems
air traffic control software
traffic monitoring systems
The specification of what the software
should do is owned by the customer
for the software and they make
decisions on software changes that
are required.
Questions about software engineering
MCQ
Essential attributes of good software Y
Maintainability
Dependency and security
Efficiency
Es
·
i
nowunctional
Acceptability
Software engineering is an engineering discipline that is concerned with all
aspects of software production from the early stages of system specification
through to maintaining the system after it has gone into use.
All aspects of software production = Not just technical process of
development. Also project management and the development of tools,
methods etc. to support software production
Software process activities A
Software specification (defining what the system should do)
Software development (implementing the system)
Software validation (testing, checking that it does what the customer wants)
Software evolution (maintenance)
General issues that affect most software
1- Heterogeneity
when systems are required to operate across a variety of computer and mobile devices.
2- Quick change of Business and social
3- Security and trust
Application types 8
Q
Stand-alone applications
⑫
Interactive transaction-based
applications
•
•
•
Run on a local computer, such as a PC.
They include all necessary functionality
Do not need to be connected to a network
•
Applications that execute on a remote
computer and are accessed by users from
their own PCs or terminals.
E.g. web applications such as e-commerce
applications.
•
⑤
⑭
Embedded control systems
Control and manage hardware devices.
Batch processing systems
Process large numbers of individual
inputs to create corresponding
outputs.
⑤
Entertainment systems
Designed for personal use and intended to
entertain the user.
⑥
Systems for modeling
②
Data collection systems
Systems that collect data from their
environment using a set of sensors and send
that data to other systems for processing.
⑧
Systems of systems
Systems that are composed of a
number of other software systems.
and simulation
Developed by scientists and engineers to
model physical processes or situations,
which include many, separate, interacting
objects.
Software engineering fundamentals
Some fundamental principles apply to all types of software system, irrespective
of the development techniques used:
• Systems should be developed using a managed and understood development
process.
• Dependability and performance
• Understanding and managing the software specification and requirements
• Reusing software that has already been developed rather than write new
software.
Issues of professional responsibility
m
Confidentiality
Competence
Intellectual property rights
Computer misuse
ACM/IEEE Code of Ethics (contains 8 Principles)
Yellow
means
important
Ch 2
FSWE
By Zahraa A
A software process model is an abstract representation of a process. It
presents a description of a process from some particular perspective.
•
Software processes descriptions discusses the activities of these processes.
•
Process descriptions may also include:
- Products (the outcomes of a process activity)
- Roles (the responsibilities of the people involved in the process)
- Pre- and post-conditions (statements that are true before and after a
process activity has been enacted or a product produced)
"
Type of processes software
Agile processes
Plan-driven processes
•
•
•
Based around separate development
stages.
Output of each stage is planned in
advance.
Iteration occurs within activities.
•
Planning is incremental and it is
easier to change the process to
reflect changing customer
requirements.
•
Specification, development and
validation are interleaved
E.g. waterfall model
•
Output from development process
are decided through a process of
negotiation.
•
Normal approach is used
E.g. Incremental model
Software process models / software development life cycle (SDLC) models
Q Waterfall model
•
•
•
•
•
•
•
Plan-driven model.
Separate and distinct phases of specification and development.
Process activities organized in sequence.
Only appropriate when the requirements are well-understood and changes
will be fairly limited during the design process.
Difficult to accommodate changes once the process is underway.
Mostly used for large systems developed at several sites.
Phases:
②Incremental development
•
•
•
Specification, development and validation are interleaved
It’s agile (‫)ﻓﻲ اﻟﺴﻼﯾﺪز ﻣﻜﺘﻮب ﺑﻼن درﯾﻔﻦ ﺑﺮﺿﻮ ﺑﺲ اﻟﺪﻛﺘﻮرة ﺗﻘﻮل ﻛﺬا‬
Benefits:
- The cost of accommodating changing customer requirements is reduced.
- It is easier to get customer feedback on the development work that has been done
- More rapid delivery and deployment of useful software to the customer is possible.
it is feasible to deliver and deploy software to customers more quickly and efficiently
• Problems:
- The process is not visible
- System structure tends to degrade as new increments/updates are added.
③ Reuse-oriented software engineering
•
•
•
•
Based on systematic reuse where systems are integrated from existing
components or COTS (Commercial-off-the-shelf ) systems
May be plan-driven or agile.
Stages:
Reuse is now the standard approach for building many types of business
system
Types of software component that may be used in a reuse-oriented process:
1. Web services that are developed according to service standards and which
are available for remote invocation.
2. Collections of objects that are developed as a package to be integrated with
a component framework such as .NET or J2EE.
3. Stand-alone software systems that are configured for use in a particular
environment.
-
⑪ Software prototyping: an initial version of a system used to demonstrate
concepts and try out design options.
Where to use it?
• The requirements engineering process to help with requirements elicitation
and validation
• In design processes to explore options and develop a UI design
• In the testing process to run back-to-back tests.
Benefits:
• Improved system usability.
• A closer match to users’ real needs.
• Improved design quality.
• Improved maintainability.
• Reduced development effort.
Prototypes should be discarded after development as they are not a good
basis for a production system:
• It may be impossible for the system to meet non-functional requirements
• Prototypes are normally undocumented
• The prototype structure is usually degraded through rapid change
• The prototype probably will not meet normal organizational quality
standards.
⑤ Spiral model: Process is represented as a spiral, each loop in the spiral
represents a phase in the process. Risks are explicitly assessed and resolved
throughout the process.
Spiral model sectors
S
Usage of spiral model: emphasizing iterative development and risk management.
•
The model is rarely used as it published for practical software development.
Incremental delivery: the software is developed and delivered in small
increments. Each increment delivering part of the required functionality.
•
User requirements are prioritised and the highest priority requirements
are included in early increments.
Incremental delivery
Deploy an increment for
end-users to use.
-
Incremental development
Develop the system in increments and
evaluate each increment before moving
to the next increment.
Provides a realistic evaluation
of software in practical use.
Evaluation done by
Difficult to implement for
user/customer proxy
replacement systems
Incremental delivery advantages
• High-priority services receive more testing focus
• Less risk
• Customer value can be delivered with each increment
• Early increments act as prototypes, helping gather requirements
for later increments.
Incremental delivery problems
•
It's challenging to identify common facilities that are needed by
all increments.
• The specification is developed in conjunction with the software
1.
Process activities
specification: The process of establishing what services are required and
the constraints on the system’s operation and development.
Activities in Requirements engineering process
• Feasibility study
• Requirements elicitation and analysis (needs of stakeholders)
• Requirements specification
• Requirements validation
2. Design and implementation: The process of converting the system
specification into an executable system.
Software design: Design a software structure that realises the specification
Implementation: Translate this structure into an executable program
Design Activities
• Architectural design (identify the overall structure of the system)
• Interface design (define the interfaces between system components)
• Component design (design how each component will operate)
• Database design (design the system data structures and how these are to be
represented in a database)
3. Software validation ‘testing’: Verification and validation (V & V) is intended to
show that a system conforms to its specification and meets the requirements of the
system customer.
•
Stages:
- Development or component testing (Individual components are tested independently)
- System testing (Testing of the system as a whole.)
- Acceptance testing (Testing with customer data)
4. Software evolution: change existing software systems to meet new requirements.
• The software must evolve to remain useful.
Rational Unified Process (RUD): A modern generic process derived from
the work on the UML and associated process.
Normally described from 3 perspectives
▪ A dynamic perspective that shows phases over time;
▪ A static perspective that shows process activities;
▪ A practive perspective that suggests good practice
RUP phases:
• inception
• Elaboration
• Construction
• Transition
RUP iteration :
How to reduce the costs of rework?
• Change avoidance: where the software process includes activities that
can anticipate possible changes before significant rework is required.
For example, a prototype system may be developed to show some key
features of the system to customers.
-
•
Change tolerance: where the process is designed so that changes can be
accommodated at relatively low cost.
- Normally involves some form of incremental development.
/
Download