You are on page 1of 6

Chapter 1 Summary PART 1

Software Engineering

1- Software Engineering:

Software Engineering is concerned with theories, methods and tools for professional software
development.

2- Software costs

Software costs more to maintain than it does to develop. For systems with a long life, maintenance
costs may be several times development costs.

Software engineering is concerned with cost-effective software development.

3- Software Project Failure

Because of :

1- Increasing system complexity : Systems have to be built and delivered more quickly; larger,
even more complex systems are required; systems have to have new capabilities that were
previously thought to be impossible.

2- Failure to use software engineering methods: Many companies new to software development
do not use software engineering methods in their everyday work.

4-

Question Answer
What is software? Computer programs + documentation.
What are the attributes of good software? Good software = required functionality + performance +
maintainable + dependable + 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 Software specification, software development, software validation
engineering activities? and software evolution.

What is the difference between software Computer science : theory and problem solving
engineering and computer science? Software engineering : how to develop and deliver useful software.
What are the key challenges facing increasing diversity + reduced delivery times + customers need
software engineering? trustworthy software

What are the costs of software Roughly 60% development costs, 40% testing costs.
engineering? Evolution costs often exceed development costs.
What are the best software engineering different techniques are appropriate for different types of systems.
techniques and methods? For example:
1- games should always be developed using a series of
prototypes
2- safety critical control systems require a complete and
analyzable specification to be developed.
What differences has the web made to Web-based systems development has led to important advances
software engineering? in programming languages and software reuse.

5- Software Products:

Generic products: Stand-alone systems that are marketed and sold to any customer who wishes
to buy them (office, graphics tools, etc.)

Customized products: Software that is commissioned by a specific customer to meet their own
needs.

6- Product specification:

Generic products: The specification of what the software should do is owned by the software
developer.

Customized products: The specification of what the software should do is owned by the
customer.

7- Essential attributes of good software:

Product characteristic Description

Maintainability Software can evolve to meet the changing needs of customers.

Dependability and Software dependability (reliability, security and safety).


security
Safety: software should not cause physical or economic damage.

Security: 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.

Acceptability Software must be understandable, usable and compatible with other systems that
are used.
8- Software Process Activities:

Software specification: customers and engineers define the functionalities of the software and
its quality.

Software development: design and programming.

Software validation: ensure that the software is what the customer requires.

Software evolution: the software is modified (because of changing customer and market
requirements).

9- General issues that affect software:

Heterogeneity: 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. We need to be
able to change our existing software and to rapidly develop new software.

Security and trust: it is essential that we can trust the software we use.

Scale: wide range of scales: very small embedded systems -> Internet-scale -> cloud-based
systems.

10- Application types:

Stand-alone applications: run on a local computer.

Interactive transaction-based applications : execute on a remote computer and are accessed by


users from their own machines.

Embedded control systems: Software that controls and manages hardware devices.

Batch processing systems: Business systems that process data in large batches.

Entertainment systems: Software intended to entertain the user.

Systems for modeling and simulation: Software used to model physical processes or situations.

Data collection systems: Systems that collect data from their environment.

11- Software Engineering Fundamentals:

Principles that apply to all types of software:

◦ Systems should be developed using a managed and understood development process.

◦ Dependability and performance are important for all types of systems.


◦ Understanding and managing the software specification and requirements are
important.

◦ Reuse software when possible.

12- Attributes of Web-based software systems:

Network intensiveness: They must serve the needs of a diverse community of clients.

Concurrency: A large number of users may access the WebApps at one time.

Unpredictable load: The number of users of the WebApp may vary a lot.

Performance: If a WebApps user must wait too long, he or she may decide to go elsewhere.

Availability: Users often need access on a “24/7/365” basis.

Data driven: The primary function of many WebApps is to deliver text, graphics, audio and visual
content to the end-user.

(TO be Continued)…….

13- Internet Software Engineering:

Web-based systems increasingly more useful than local systems ( increasing use of Web services
and Cloud computing).

Software reuse: Software reuse is the dominant approach for constructing web-based systems.

Incremental and agile development: Web-based systems should be developed and delivered
incrementally.

Rich interfaces: With new technologies like AJAX and HTML5 now we can create rich interfaces.

14- Attributes of Web-based software:

Network intensiveness and concurrency: serving a diverse/large community of clients.

Unpredictable load: The number of users vary continuously.

Performance: We need WebApps to be fast so users do not wait too long.

Availability: We need Webapps to be always working.

Data driven: The main function of WebApps is to deliver data/content to the end-user.

15- Software Engineering - A Layered Technology:


Process: an effective organization of software engineering activities.
Methods: the technical how-to ‘s for building software.
Tools: provide support for the process and the methods.

16- The Software Process:


Process = Software Life Cycles.
A process is a collection of activities, actions and tasks.
An activity strives to achieve a broad objective. Software Engineering activities are: Software
specification, software development, software validation and software evolution.
An action is a set of tasks that produce a major work product.
A task focuses on a small, but well-defined objective ( e.g. conducting a unit test) that produces
a tangible outcome.

17- Umbrella Activities:


Software project tracking and control: In project management, we need to track real progress.
Risk management: identify, evaluate, prevent risks related to activities of any organization
Software quality assurance: checking that the software complies with the defined or
standardized quality specifications.
Technical reviews: qualified personnel examines the suitability of the software product.
Measurement: to ensure that the delivered results are accurate, objective and repeatable.
Software configuration management: tracking (history) and controlling changes in the software.
Reusability management: everything produced can be reused to increase productivity and
decrease development time and cost.
Work product preparation and production: create models, documents.

18- Software Engineering Ethics:


Software engineers must behave in an honest and ethically responsible way.
Ethical behaviour is more than simply upholding the law but involves following a set of principles
that are morally correct:
Confidentiality: respect the confidentiality of the employers or clients.
Competence: Engineers should not misrepresent their level of competence.
Intellectual property rights: be aware and follow local laws about intellectual property rights.
Computer misuse: Never misuse other people’s computers like (trivial: game playing on an
employer’s machine, say) to extremely serious (dissemination of viruses).

19- Why should we have professional code of ethics:

A professional code of ethics states the principles and core values that are essential to the work
of a particular occupational group.

A code of ethics ensures quality in treatment of members of the profession and those, the
profession serves.

A code of ethics provides a guide for dealing with ethical situations which arise in the course of
the job. 

Most organizations have their own internal code of practice that defines the professional ethics
of a certain profession.
20- Ethical principles (ACM/IEEE): 
1. PUBLIC - act consistently with the public interest.
2. CLIENT AND EMPLOYER - act in a manner that is in the best interests of clients and employers
consistent with the public interest.
3. PRODUCT - ensure that the products meet the highest professional standards.
4. JUDGMENT - maintain integrity and independence in professional judgment.
5. MANAGEMENT - managers shall subscribe to and promote an ethical approach to the
management of software development.
6. PROFESSION - advance the integrity and reputation of the profession.
7. COLLEAGUES - Software engineers shall be fair to and supportive of their colleagues.
8. SELF - Software engineers shall participate in lifelong learning.

END.

You might also like