0% found this document useful (0 votes)
31 views31 pages

Lecture09 Revision

The document provides an overview of software engineering, covering key topics such as software processes, agile development, and essential attributes of good software. It discusses various software process models, including plan-driven and agile approaches, and highlights the importance of customer involvement and incremental delivery in agile methods. Additionally, it addresses software engineering ethics and the characteristics of different application types.

Uploaded by

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

Lecture09 Revision

The document provides an overview of software engineering, covering key topics such as software processes, agile development, and essential attributes of good software. It discusses various software process models, including plan-driven and agile approaches, and highlights the importance of customer involvement and incremental delivery in agile methods. Additionally, it addresses software engineering ethics and the characteristics of different application types.

Uploaded by

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

Revision

Introduction

 Throughout this course, the following topics are covered.


 Introduction to software engineering
 Software processes
 Agile software development
 Requirements engineering
 System modelling
 Design patterns
 Software testing

2
Chapter 1. Introduction to software engineering
Introduction to software engineering - FAQ

Question Answer
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.
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 is software engineering? Software engineering is an engineering discipline that is concerned with
all aspects of software production.
What are the fundamental software engineering Software specification, software development, software validation and
activities? software evolution.
What is the difference between software engineering Computer science focuses on theory and fundamentals; software
and computer science? engineering is concerned with the practicalities of developing and
delivering useful software.
What is the difference between software engineering System engineering is concerned with all aspects of computer-based
and system engineering? systems development including hardware, software and process
engineering. Software engineering is part of this more general process.

4
Introduction to software engineering - FAQ

Question Answer
What are the key challenges facing
Coping with increasing diversity, demands for reduced delivery times
software engineering? and developing trustworthy software.
What are the costs of software Roughly 60% of software costs are development costs, 40% are testing
engineering? costs. For custom software, evolution costs often exceed development
costs.
What are the best software While all software projects have to be professionally managed and
engineering techniques and developed, different techniques are appropriate for different types of
methods? system. For example, games should always be developed using a series
of prototypes whereas safety critical control systems require a
complete and analyzable specification to be developed. You can’t,
therefore, say that one method is better than another.

What differences has the web made The web has led to the availability of software services and the
to software engineering? possibility of developing highly distributed service-based systems. Web-
based systems development has led to important advances in
programming languages and software reuse.

5
Introduction to software engineering - Software products

 Software products.
 Generic products, marketed and sold to any customer who wishes to buy them (graphics programs, project
management tools; CAD software).
 Customized products, commissioned by a specific customer to meet their own needs (embedded control
systems, air traffic control software, traffic monitoring systems).

6
Introduction to software engineering - Essential attributes of good
software

Product characteristic Description


Maintainability Software should be written in such a way so that it can evolve to meet the
changing needs of customers. This is a critical attribute because software change is
an inevitable requirement of a changing business environment.
Dependability and security Software dependability includes a range of characteristics including reliability,
security and safety. Dependable software should not cause physical or economic
damage in the event of system failure. Malicious users should not be able to
access or damage the system.
Efficiency Software should not make wasteful use of system resources such as memory and
processor cycles. Efficiency therefore includes responsiveness, processing time,
memory utilisation, etc.
Acceptability Software must be acceptable to the type of users for which it is designed. This
means that it must be understandable, usable and compatible with other systems
that they use.

7
Introduction to software engineering - Application types

Stand-alone These are application systems that run on a local computer,


applications
such as a PC. They include all necessary functionality and do
not need to be connected to a network.
Interactive Applications that execute on a remote computer and are
transaction-
based accessed by users from their own PCs or terminals. These
applications include web applications such as e-commerce applications.
Embedded These are software control systems that control and
control systems
manage hardware devices. Numerically, there are probably
more embedded systems than any other type of system.

8
Introduction to software engineering - Application types

Batch These are business systems that are designed to process


processing data in large batches. They process large numbers of
systems individual inputs to create corresponding outputs.
Entertainment These are systems that are primarily for personal use and
systems which are intended to entertain the user (Games).

Systems for These are systems that are developed by scientists and
modeling and engineers to model physical processes or situations, which
simulation include many, separate, interacting objects.

9
Introduction to software engineering - Application types

Data These are systems that collect data from their environment
collection using a set of sensors and send that data to other systems
systems for processing.

Systems of These are systems that are composed of a number of other


systems software systems.

10
Introduction to software engineering - Software engineering ethics

 Confidentiality
 Engineers should normally respect the confidentiality of their employers or clients irrespective of whether or
not a formal confidentiality agreement has been signed.
 Competence
 Engineers should not misrepresent their level of competence. They should not knowingly accept work which
is outside their competence.
 Intellectual property rights
 Engineers should be aware of local laws governing the use of intellectual property such as patents,
copyright, etc. They should be careful to ensure that the intellectual property of employers and clients is
protected.
 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). 11
Chapter 2. Software processes
Software processes

 Software process
 A structured set of activities required to develop a software system.

 software process model


 It is an abstract representation of a process. It presents a description of a process from some particular
perspective.

13
Software processes - Plan-driven and agile processes

 Plan-driven process
 They are processes where all of the process activities are planned in advance and progress is measured
against this plan.

 Agile processes
 In agile processes, planning is incremental and it is easier to change the process to reflect changing
customer requirements.

 In practice, most practical processes include elements of both plan-driven and agile
approaches and there are no right or wrong software processes.

14
Software processes - Software process models

 The waterfall model


 Plan-driven model. Separate and distinct phases of specification and development.

 Incremental development
 Specification, development and validation are interleaved. May be plan-driven or agile.

 Integration and configuration (Reuse)


 The system is assembled from existing configurable components. May be plan-driven or agile.

15
Software processes - The waterfall model

 Waterfall model problem. Inflexible partitioning of the project into distinct stages makes it difficult to
respond to changing customer requirements. 16
Software processes - Software process models

 Incremental development.

17
Software processes - Software process models

 Incremental development benefits.


 The cost of accommodating changing customer requirements is reduced.
 It is easier to get customer feedback.
 More rapid delivery and deployment

 Incremental development problems.


 The process is not visible. It is not cost-effective to produce documents that reflect every version of the
system and hence managers cannot measure progress.
 System structure tends to degrade as new increments are added.

18
Software processes - Software process models

 Integration and configuration advantages.


 Reduced costs and risks as less software is developed from scratch
 Faster delivery and deployment of system

 Integration and configuration disadvantages.


 requirements compromises are inevitable so system may not meet real needs of users
 Loss of control over evolution of reused system elements

19
Software processes - Coping with change

 To reducing the costs of rework.


 Change avoidance, where the software process includes activities that can anticipate/predict possible
changes before significant rework is required (prototypes).
 Change tolerance/allowance, where the process is designed so that changes can be
accommodated/accepted at relatively low cost.

20
Chapter 3. Agile software development
Agile software development

 The agile manifesto states that we to value:


 Individuals and interactions over processes and tools
 Working software over comprehensive documentation
 Customer collaboration over contract negotiation
 Responding to change over following a plan

22
Agile software development - The principles of agile methods

Principle Description
Customer involvement Customers should be closely involved throughout the
development process. Their role is provide and prioritize new
system requirements and to evaluate the iterations of the
system.

Incremental delivery The software is developed in increments with the customer


specifying the requirements to be included in each increment.

People not process The skills of the development team should be recognized and
exploited. Team members should be left to develop their own
ways of working without prescriptive processes.

Embrace change Expect the system requirements to change and so design the
system to accommodate these changes.

Maintain simplicity Focus on simplicity in both the software being developed and
in the development process. Wherever possible, actively work
to eliminate complexity from the system.

23
Agile software development - Problems/Challenges with agile methods

 It can be difficult to keep the interest of customers who are involved in the process.

 Team members may be unsuited to the intense involvement that characterizes agile
methods.

 Prioritizing changes can be difficult where there are multiple stakeholders.

 Maintaining simplicity requires extra work.

 Contracts may be a problem as with other approaches to iterative development.

24
Agile software development – Which process should be used?

 Plan-driven approach.
 It Is important to have a very detailed specification and design before moving to implementation
 Large systems that require larger development teams so a plan-driven approach may have to be used
 Systems that require a lot of analysis before implementation (e.g. real-time system with complex timing
requirements)
 Long-lifetime systems may require more design documentation
 If the development team is distributed or if part of the development is being outsourced
 For traditional engineering organizations.
 A system has to be approved by an external regulator

25
Agile software development – Which process should be used?

 Agile methods.
 An incremental delivery strategy is required
 A small co-located team who can communicate informally
 There are good tools to keep track of an evolving design
 programmers in the development team have high skills

26
Agile software development – Extreme programming

Principle or practice Description


Incremental planning Requirements are recorded on story cards and the stories to be
included in a release are determined by the time available and
their relative priority. The developers break these stories into
development ‘Tasks’.

Small releases The minimal useful set of functionality that provides business
value is developed first. Releases of the system are frequent
and incrementally add functionality to the first release.

Simple design Enough design is carried out to meet the current requirements
and no more.
Test-first development An automated unit test framework is used to write tests for a
new piece of functionality before that functionality itself is
implemented.
Refactoring All developers are expected to refactor the code continuously as
soon as possible code improvements are found. This keeps the
code simple and maintainable.

27
Agile software development – Extreme programming

Pair programming Developers work in pairs, checking each other’s work and
providing the support to always do a good job.
Collective ownership The pairs of developers work on all areas of the system, so that
no islands of expertise develop and all the developers take
responsibility for all of the code. Anyone can change anything.
Continuous integration As soon as the work on a task is complete, it is integrated into
the whole system. After any such integration, all the unit tests in
the system must pass.
Sustainable pace Large amounts of overtime are not considered acceptable as
the net effect is often to reduce code quality and medium term
productivity
On-site customer A representative of the end-user of the system (the customer)
should be available full time for the use of the XP team. In an
extreme programming process, the customer is a member of the
development team and is responsible for bringing system
requirements to the team for implementation.

28
Agile software development – Scrum

 The Scrum approach is a general agile method but its focus is on managing iterative
development rather than specific technical approaches to agile software engineering.

 Scrum Roles.
 Product owner (responsible for what will be developed)
 ScrumMaster (responsible for guiding the team in creating and following its own process)
 Development team (responsible for determining how to deliver what the product owner has asked for)

29
Agile software development – Scrum

 Scrum Activities and Artifacts.


 Backlog is a changing list of requirements based on the customer's needs.
 Grooming is an activity through which requirements are broken down into a set of features that are collected
into a prioritized list called the product backlog
 Sprint is an iteration or cycle of performing work in up to a calendar month
 At the end of the sprint there are two additional inspect-and-adapt activities, sprint review, and sprint
retrospective
 Sprint review, is the activity where the stakeholders and Scrum team inspect the product being built.
 Sprint retrospective, is the activity where the Scrum team inspects the Scrum process being used to create
the product

30
Agile software development – Scrum

 Scrum notes.
 Product owner is responsible for:
 Communicating to other participants a clear vision of what the Scrum team is doing
 What will be developed and in what order.

 Scrum master is protecting the team from outside interference


 Development team is designing, building, and testing the software product
 The number of items in the product backlog is likely larger than what a development team can complete in a
short-duration sprint
 The ScrumMaster has no authority to exert control over the team
 Goals cannot be altered during sprint execution
 A daily scrum is not a problem-solving activity, it is about communicating the status of sprint backlog items

31

You might also like