Professional Documents
Culture Documents
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.
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.
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 validation: ensure that the software is what the customer requires.
Software evolution: the software is modified (because of changing customer and market
requirements).
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.
Embedded control systems: Software that controls and manages hardware devices.
Batch processing systems: Business systems that process data in large batches.
Systems for modeling and simulation: Software used to model physical processes or situations.
Data collection systems: Systems that collect data from their environment.
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.
Data driven: The primary function of many WebApps is to deliver text, graphics, audio and visual
content to the end-user.
(TO be Continued)…….
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.
Data driven: The main function of WebApps is to deliver data/content to the end-user.
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.