Notes Software Engineering Ch1,2,3,4book1
Notes Software Engineering Ch1,2,3,4book1
What are the attributes of good software? Good software should deliver the required
functionality and performance to the user and
should be maintainable, dependable and usable.
What are the fundamental software engineering Software specification, software development,
activities? software validation and software evolution.
1
©By: France
What is the difference between software Computer science focuses on theory and
engineering and computer science? fundamentals; software engineering is concerned
with the practicalities of developing and delivering
useful software.
What is the difference between software System engineering is concerned with all aspects of
engineering and system engineering? computer-based systems development including
hardware, software and process engineering.
Software engineering is part of this more general
process.
What are the key challenges facing software Coping with increasing diversity, demands for
engineering? reduced delivery times and developing trustworthy
software.
What are the costs of software engineering? Roughly 60% of software costs are development
costs, 40% are testing costs. For custom software,
evolution costs often exceed development costs.
What are the best software engineering techniques and While all software projects have to be professionally
methods? managed and developed, different techniques are
appropriate for different types of system. For example,
games should always be developed using a series of
prototypes whereas safety critical control systems
require a complete and analysable specification to be
developed. You can’t, therefore, say that one method is
better than another.
What differences has the web made to software he web has led to the availability of software services
engineering? and the possibility of developing highly distributed
service-based systems. Web-based systems development
has led to important advances in programming languages
and software reuse.
2
©By: France
The specification of what the software should do is owned by the
software developer and decisions on software change are made by
the developer.
Customized products
Software that is commissioned by a specific customer to meet their
own needs. Examples – embedded control systems, air traffic control
software
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.
4. Essential attributes of good software
3
©By: France
6. what are Software process activities?
Software specification, where customers and engineers define the software
that is to be produced and the constraints on its operation.
Software development, where the software is designed and programmed.
Software validation, where the software is checked to ensure that it is what
the customer requires.
Software evolution, where the software is modified to reflect changing
customer and market requirements.
7. what is software process?
A software process is a sequence of activities that leads to the production of a
software product.
8. what are the four general issues that affect software?
Heterogeneity
Increasingly, systems are required to operate as distributed systems
across networks that include different types of computer and mobile
devices.
Business and social change
Business and society are changing incredibly quickly as emerging
economies develop and new technologies become available.
Security and trust
As software is intertwined with all aspects of our lives, it is essential
that we can trust that software.
Scale
Software has to be developed across a very wide range of scales,
from very small embedded systems in portable or wearable devices
through to Internet-scale, cloud-based systems that serve a global
community.
4
©By: France
9. There are many different types of application in software engineering
diversity
Stand-alone applications
These are application systems that run on a local computer, such as a PC. They
include all necessary functionality and do not need to be connected to a
network.
5
©By: France
1. Systems should be developed using a managed and understood development
process. Of course, different processes are used for different types of software.
2. Dependability and performance are important for all types of system.
3. Understanding and managing the software specification and requirements (what
the software should do) are important.
4. Where appropriate, you should reuse software that has already been developed
rather than write new software.
Software reuse is the dominant approach for constructing web-based systems. When
building these systems, you think about how you can assemble them from pre-existing
software components and systems.
6
©By: France
Engineers should be aware of local laws governing the use of intellectual
property such as patents, copyright, etc
Computer misuse
Software engineers should not use their technical skills to misuse other people’s
computers. Computer misuse ranges from relatively trivial (game playing on an
employer’s machine, say) to extremely serious (dissemination of viruses).
1.1 Explain why professional software is not just the programs that are developed
fora customer?
Good/professional software is not just the programs that are developed for a
customer but it consists of executable code and is associated with documentation
and configuration of data that is required to make these programs operate
correctly. A professionally developed software system is often more than a single
program. The system usually consists of a number of separate programs and
configuration files that are used to set up these programs. It may include system
documentation, which describes the structure of the system; user documentation,
which explains how to use the system, and web sites for users to download recent
product information. Example a word processing system consist of executable
program, user manual and the document such as requirements and the design needed to
produce the executable program.
7
©By: France
1.2. What is the most important difference between generic software product
development and custom software development? What might this mean in practice
for users of generic software products?
The essential difference is that in generic software product development, the
specifications owned by the product developer. For custom product development,
the specification is owned and controlled by the customer. The implications of
this are significant – the developer can quickly decide to change the specification
in response to some external change (e.g. a competing product) but, when the
customer owns the specification, changes have to be negotiated between the
customer and the developer and may have contractual implications. For users of
generic products, this means they have no control over the software
specification so cannot control the evolution of the product. The developer
may decide to include/exclude features and change the user interface. This
could have implications for the user’s business processes and add extra
training costs when new versions of the system are installed.
Chapter two: Software process
2.1 What is software process model?
A software process model is an abstract representation of a process. It
presents a description of a process from some particular perspective.
2.1.1 four fundamental software engineering activities or software process
Specification – defining what the system should do;
Design and implementation – defining the organization of the system and
implementing the system;
Validation – checking that it does what the customer wants; Involves checking
and review processes and system testing.
Evolution – changing the system in response to changing customer needs.
Incremental development
Specification, development and validation are interleaved. May be plan-driven or
agile.
Integration and configuration
The system is assembled from existing configurable components. May be plan-
driven or agile.
2.4.1 What are the waterfall model fundamental activities?
9
©By: France
2.4.1 the waterfall model is only appropriate for some types of system:
1. Embedded systems where the software has to interface with hardware systems. Because of the
inflexibility of hardware, it is not usually possible to delay decisions on the software’s
functionality until it is being implemented
2. Critical systems where there is a need for extensive safety and security analysis of the software
specification and design.
3. Large software systems that are part of broader engineering systems developed by several
partner companies. The hardware in the systems may be developed using a similar model, and
companies find it easier to use a common model for hardware and software.
11
©By: France
2.6 list and discus design process activities?
Architectural design, where you identify the overall structure of the system,
the principal components (subsystems or modules), their relationships and
how they are distributed.
Database design, where you design the system data structures and how
these are to be represented in a database.
Interface design, where you define the interfaces between system
components.
Component selection and design, where you search for reusable
components. If unavailable, you design how it will operate.
2.7 The stages in the testing process are:
Component testing
Individual components are tested independently;
System testing
Testing of the system as a whole. Testing of emergent properties is particularly
important.
Customer testing
Testing with customer data to check that the system meets the customer’s
needs.
Improved maintainability.
15
©By: France
Chapter three: Agile software development
3.1 discuss agile development/ agile method?
Agile development methods emerged in the late 1990s whose aim was to radically
reduce the delivery time for working software systems
The system is developed as a series of versions or increments with stakeholders
involved in version specification and evaluation
The aim of agile methods is to reduce overheads in the software process (e.g. by limiting
documentation) and to be able to respond quickly to changing requirements without
excessive rework
3.2 Plan-driven vs agile development
Plan-driven development
A plan-driven approach to software engineering is based around separate
development stages with the outputs to be produced at each of these stages
planned in advance.
Iteration occurs within activities.
Agile development
Specification, design, implementation and testing are inter-leaved and the
outputs from the development process are decided through a process of
negotiation during the software development process.
3.3 The principles of agile methods
16
©By: France
3.3.1 Agile method applicability
Product development where a software company is developing a small or medium-sized
product for sale.
Custom system development within an organization, where there is a clear commitment
from the customer to become involved in the development process and where there are
few external rules and regulations that affect the software.
3.4 Agile development techniques
Extreme Programming (XP) takes an ‘extreme’ approach to iterative development.
New versions may be built several times per day;
Increments are delivered to customers every 2 weeks;
3.5 what are XP and agile principles>
Incremental development is supported through small, frequent system releases.
Customer involvement means full-time customer engagement with the team.
People not process through pair programming, collective ownership and a process that
avoids long working hours.
Change supported through regular system releases.
Maintaining simplicity through constant refactoring of code.
3.5.1 key practices of XP
User stories for specification
Refactoring
Test-first development
Pair programming
3.6 what is refactoring and its examples?
Is a Conventional wisdom in software engineering is to design for change. It is worth
spending time and effort anticipating changes as this reduces costs later in the life cycle.
Changes are easier to make because the code is well-structured and clear.
Examples of refactoring
Re-organization of a class hierarchy to remove duplicate code.
Tidying up and renaming attributes and methods to make them easier to understand.
17
©By: France
3.7 what is Test-first development and tell XP features?
Testing is central to XP and XP has developed an approach where the program is tested
after every change has been made.
XP testing features:
Test-first development.
Incremental test development from scenarios.
18
©By: France
3.8.1 list scrum terminology and their description?
20
©By: France
3.14 what are characteristics of Multi-Team Scrum?
Role replication
Each team has a Product Owner for their work component and ScrumMaster.
Product architects
Each team chooses a product architect and these architects collaborate to design
and evolve the overall system architecture.
Release alignment
The dates of product releases from each team are aligned so that a
demonstrable and complete system is produced.
Scrum of Scrums
There is a daily Scrum of Scrums where representatives from each team meet to
discuss progress and plan work to be done.
3.15 what is Agile development practice?
User stories for system specification
Frequent releases of the software,
Continuous software improvement
Test-first development
Customer participation in the development team
3.16 what is the reasons of Agile methods across organizations?
Project managers who do not have experience of agile methods may be reluctant to
accept the risk of a new approach.
Large organizations often have quality procedures and standards that all projects are
expected to follow and, because of their bureaucratic nature, these are likely to be
incompatible with agile methods.
Agile methods seem to work best when team members have a relatively high skill level.
There may be cultural resistance to agile methods, especially in those organizations that
have a long history of using conventional systems engineering processes.
1. Functional requirements These are statements of services the system should provide,
how the system should react to particular inputs, and how the system should behave in
particular situations.
2. Non-functional requirements These are constraints on the services or functions offered
by the system. They include timing constraints, constraints on the development process,
and constraints imposed by standards.
22
©By: France
2. An individual non-functional requirement, such as a security requirement, may generate
several, related functional requirements that define new system services that are
required if the non-functional requirement is to be implemented.
4.5.1 what are Types of non-functional requirements?
4.6.2 what are the two reasons can be difficult for interviews eliciting?
1. All application specialists use jargon specific to their area of work. It is impossible for
them to discuss domain requirements without using this terminology
2. Some domain knowledge is so familiar to stakeholders that they either find it difficult to
explain or they think it is so fundamental that it isn’t worth mentioning.
4.6.3 To be an effective interviewer, you should bear two things in mind:
1. You should be open-minded
2. You should prompt the interviewee to get discussions
23
©By: France
4.7 what is stories and scenarios?
Stories and scenarios are essentially the same thing. They are a description of how the system
can be used for some particular task. They describe what people do, what information they use
and produce, and what systems they may use in this process. The difference is in the ways that
descriptions are structured and in the level of detail presented.
4.7.1 what is in scenario include?
1. A description of what the system and users expect when the scenario starts.
2. A description of the normal flow of events in the scenario.
3. A description of what can go wrong and how resulting problems can be handled.
4. Information about other activities that might be going on at the same time.
5. A description of the system state when the scenario ends.
4.8 what are the Notations for writing system requirements specifications?
24
©By: France