0% found this document useful (0 votes)
24 views6 pages

Chapter1 Sheet

Uploaded by

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

Chapter1 Sheet

Uploaded by

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

CHAPTER ONE

1- What are the reasons for software failure?


• Complexity.
• Poor communication.
• Tight architecture.
• Haphazard development.
2- Define and discuss the definition of software
Engineering.
-SE 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.
-Engineering discipline:
• GIVEN theories and methods.
• SOLVE technical and project problems.
• CONSTRAINT organization and financial constraints.
-All aspects of production:

• Technical process of development.


• Project management
• Developments tools and methods to support software
production.
• Costs.
3- What are the fundamental activities of
software engineering? Discuss them (line for
each)
0r
4- Based on your understanding, discuss the
activities of software process (no more than
one statement per activity)
1) Specifications > Customers and engineers define the
software requirements with conditions & constraints
on its operation..
2) Development > design and programming.
3) Validation > the software is checked to ensure that it
is what the customer requires..
“Verification: are we building the product right?
Validation: are we building the right product?”
4) Evolution > Modification to meet the new customer
and market requirements.
5- No one method fits all. Discuss the concept in
the context of Software Engineering.
- No universal software methods or techniques that may
be used for all kinds of software. However, there are
factors that affect different types of software.
(Heterogeneity, Business and social change, Security
and trust, Scale)
OR
- While all software projects have to be professionally
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 analyzable specification to be
developed. You can’t, therefore, say that one method is
better than another.
6- Based on your understanding. What are the
main factors that affect the software cost?
- Building the right team. - Good estimation.
- Breaking the requirements down far enough so that
each of them can be built in a short time by a single
developer.;,l,
- Functionality and Human resource
- Software Scope
- Software size -Software complexity
7- What is the major difference between generic
and custom software product types?
- Generic >> Stand-alone systems Specs is owned by
developer.
Ex : FireFox , Chrome , CAD

- Customer >> For a specific customer to meet needs


,Specs is owned by customer
Ex : Embedded control systems ,Hospital management
,Employee attendance
8- Why is ‘maintainability’ considered as
essential attribute for good software?
- Maintainable means the ease with which a software
can be modified to correct faults, improve
performance, or adapt to a changed environment. So it
is important because it is approximately 75% of the
cost related to the project.
OR
- 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.

9- Discuss and mention the pillars of reactive


software
1) Deliver required functionalities.
2) Maintainable: Evolvable.
3) Dependability and security:
•Circuit breaker
•Access control
•Error containment

4) High performance (Efficiency) :


•CPU utilization
•Memory utilization
1.Responsive
2.Resilient
3.Elastic

5) usable (Acceptability): Acceptable and understandable


by users
10- Based on your understanding, mention some
issues that might affect software
1) Heterogeneity:
- Increasingly, systems are required to operate as
distributed systems across networks that include
different types of computer and mobile devices.
Ex:
• App: Web, Desktop, Mobile
• Technology: Java, PHP, NodeJS
• Framework: React, Angular, VueJS
2) Business and social change:
- Business and society are changing incredibly quickly
as emerging economies develop and new technologies
become available. They need to be able to change their
existing software and to rapidly develop new software.
EX: Social Logins, Wireless payment,
eWallet, Loyalty programs

3) Security and trust:


- As software is intertwined with all aspects of our lives,
it is essential that we can trust that software.

4) 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.

11- Consider you have been promoted to a team


leader in your company, what are the
fundamental factors that you would adopt for
better software development?
1- Adopt development process.
2- Dependability and performance.
3- Solid specs.
4- Reuse existing software as possible.
5- Incremental delivery where possible.
12- Discuss confidentiality and computer
misuse.
Confidentiality > respect the confidentiality of your
employees or clients irrespective of(‫ )بغض النظر‬whether or not
a formal confidentiality agreement has been signed..
Computer misuse > Software engineers should not use
their technical skills to
misuse other people’s computers. Backdoors development
|| game playing.

13- Briefly discuss why it is usually cheaper in


the long run to use software engineering
methods and techniques for software systems
Without software engineering methods and techniques,
developers will tend to build software without any well-
defined plan. The cost is increased in this case because
they tend to spend more time on development and
consequently testing as well. With development cost
accounting for about 60% of the entire software cost, and
40% for testing costs, it is clear that the decision to ignore
software engineering methods and techniques can cost a
lot more in the long run.

You might also like