Chapter 1
1- What is software?
Computer programs and associated documentation.
2- List and describe the different types of software.
Custom
For a specific customer
Generic
Sold on open market.
Often called:
COTS (Commercial Off the Shelf)
Shrink-wrapped
Open source
Embedded
Built into hardware.
Hard to change.
Real time software
E.g., control and monitoring systems
Must react immediately.
Safety often a concern
Data processing software
Used to run businesses.
Accuracy and security of data are key.
Custom Generic Embedded
Number of copies in use low medium high
Worldwide annual high medium low
development effort
3- What is software engineering?
Software engineering is an engineering discipline which is concerned with all aspects of software
production.
4- What is the difference between computer science and software engineering?
Computer science is concerned with theory and fundamentals, while software engineering is
concerned with the practicalities of developing and delivering useful software.
5- What is the difference between software engineering and system engineering?
• System engineering is concerned with all aspects of computer-based systems development
including hardware, software and process engineering. Software engineering is part of this
process.
• System engineers are involved in system specification, architectural design, integration and
deployment.
6- Discuss about the nature of software.
• Software is intangible.
• Software is easy to reproduce.
• The industry is labor-intensive.
• Software is easy to modify.
• Software deteriorates by having its design changed.
7- What is software process?
A set of activities whose goal is the development or evolution of software.
8- What are the generic activities in a software process?
Specification - what the system should do and its development constraints.
Development - production of the software system
Validation - checking that the software is what the customer wants.
Evolution - changing the software in response to changing demands.
9- What are the costs of software engineering?
• Roughly 60% of costs are development costs, 40% are testing costs. For custom software,
evolution costs often exceed development costs.
• Costs vary depending on the type of system being developed and the requirements of
system attributes such as performance and system reliability.
• Distribution of costs depends on the development model that is used.
10- What are the different types of software engineering projects?
Corrective projects: fixing defects
Adaptive projects: changing the system in response to changes in
Operating system
Database
Rules and regulations
Enhancement projects: adding new features for users.
Reengineering or perfective projects: changing the system internally so it is more maintainable.
11- Who are the stakeholders in a software engineering project?
• Users: Those who use the software
• Customers: Those who pay for the software
• Software developers
• Development Managers
12- What are the main quality attributes of the system to be developed?
• Usability: Users can learn it fast and get their job done easily
• Efficiency: It doesn’t waste resources such as CPU time and memory
• Reliability: It does what it is required to do without failing
• Maintainability: It can be easily changed
• Reusability: Its parts can be used in other projects, so reprogramming is not needed
13- Who are the stakeholders of this project?
14- What are internal quality criteria?
Characterize aspects of the design of the software.
Have an effect on the external quality attributes.
E.g.
The amount of commenting of the code
The complexity of the code
15- What are the short-term and long-term qualities?
Short term:
Does the software meet the customer’s immediate needs?
Is it sufficiently efficient for the volume of data we have today?
Long term:
Maintainability
Customer’s future needs
16- What activities are common to software projects?
• Requirements and specification
• Design
• Modeling
• Programming
• Quality assurance
• Deployment
• Managing the process
17- What is case?
• CASE stands for Computer Aided Software Engineering.
• It is the use of computer-based support in the software development process.
• Wide range of programs used to support software process activities: requirement analysis,
modeling, debugging, and testing.
18- List some examples of CASE.
JDeveloper (from Oracle)
Visual Studio .NET Enterprise Architect (from Microsoft)
iUML (from Abstract solutions)
19- List some difficulties and risks in software engineering.
• Complexity and large numbers of details
• Uncertainty about requirements
• Constant change
• Uncertainty about technology
• Uncertainty about software engineering skills