من يشرح لي هالمحاضره واكون له من الشاكريبن..
Chapter I : Introduction to Software Engineering and its impact
on software development
The crisis manifest:
· Projects running over-budget
· Projects running over-time
· Software was very inefficient
· Software was of low quality
· Software often did not meet requirements
· Code difficult to maintain
The birth of software engineering
The term software engineering was introduced at 1968/69 in Nato conferences.
Software engineering is not an art, or a bag of tricks.
We should build software like we build bridges.
What is Software Engineering?
The process of solving customers' needs by the systematic development and evolution
of large, high-quality software within cost, time and others constraints.
Solving cutomers' problems:
· This is the goal of Software Engineering
· Software Engineering must communicate effectively to identify and
understand the problem
Fig1. IEEE definition (Institute of Electrical and Electronics Engineers)
Types of software
Custom: built to a specific customer
Generic: sold on open market
Embedded: built into hardware, hard to change
Real time software:
· Control and monitoring systems
· Must react immediately
· Safety often a concern
Business information systems (Data processing)
· Used to run businesses
· Accuracy and security of data are key
Requirements engineering includes:
· Domain analysis
· Defining the problem
· Requirements gathering
· Requirements analysis
· Requirements specification: writing detailed instructions about how the
software should behave.
Design :
Deciding how the requirements should be implemented using the available
technology.
Includes:
· Systems engineering: deciding what should be in hardware and what in
software.
· Software architecture: dividing the system into subsystems and deciding how
the subsystems will interact
· Detailed design of the internals of a subsystem
· User interface design
· Design of databases
Implementation :
Writing code
Testing :
· Does the software do what it is supposed to do?
· Are we building the right system? (validation)
· Are we building the system right? (verification)
Maintenance :
· Correcting errors found after the software has been delivered.
· Adapting the software to changing requirements
We distinguish:
· Corrective maintenance: correcting discovered errors
· Preventive maintenance: correcting latent errors
· Adaptive maintenance: adapting to changes in the environment
· Perfective maintenance: adapting to changing user requirements
Software engineering ethics:
· Act in a manner that is in the best interest of the client and employer
· Maintain integrity in professional judgment
· Ensure the product meet the highest professional standards possible
Difficulties and risks in software engineering:
· Complexity and large number of details
· Uncertainty about requirements
· Constant change