Software Engineering (Final)
Software Engineering (Final)
• Cost effectiveness
• Usability
• Correctness
2- Activities :
• Requirement
• Design
• Implementation
• Validation
• Support
3- Principles :
• System design
• Software design
• Process support
Software design :-
• Modularity
• Abstraction
• Localization
• Uniformity
• Conformability
4- System testing
5- Operation and maintenance
Software Products :-
• Generic Products
• Customized Products
Product Characteristics :-
• Maintainability
• Dependability
• Efficiency
• Acceptability
Chapter 2
successful software project :-
- the scope of work to be done
- the risks to be incurred
Types :
1- Direct measures :
— execution speed
— memory size
— defects reported over set period of time
2- Indirect measures :
— functionality
— quality
— complexity
— efficiency
— maintainability
— many other "abilities"
2) Software metrics .
Metric Categorization :-
— Size
— oriented metrics
— Function
— oriented metrics
— Human
— oriented metrics
— Technical metrics
— Quality metrics
— Productivity metrics
Rules :-
Productivity = KLOC / person-month Quality = defects / KLOC
Cost = $ / LOC
— Number of files
— Number of external interfaces
2) Project objectives :
1. Objectives
2. Major functions
3. Performance issues
4. Management and technical constraints
3) Project estimates :
A. Historical data used for estimates
B. Estimation techniques
C. Estimates
4) Project risks :
A. Risk analysis :
1. Identification
2. Risk estimation
3. Evaluation
B. Risk management :
1. Identification
2. Risk monitoring procedures
5) Schedule :
A. Project work breakdown structure
B. Task network
C. Time-line chart, (Gantt chart)
D. Resource table
6) Project resources :
A. people
B. Hardware and software
7) Staff organization :
A. team structure (if applicable)
B. Management reporting
9) Appendices
Chapter 3
Software Requirements Document :-
1.Introduction : should describe the need for the system rationale for the software
system.
2.Hardware : If the system is to be implemented on special hardware, this
hardware and its interfaces should be described.
3.The conceptual model : This section should describe the conceptual
model on which the requirements are based.
4.Functional requirements : The functional requirements of the system, that is,
the services provided for the user, should be described in this section.
5.Database requirements : The logical organization of the data used by the system
and its inter-relationships should be described here.
6.Non-functional requirements : The non-functional requirements of the system,
that is, the constraints under which the software must operate.
7.maintenance information : This section of the software requirements document
should describe the fundamental assumptions on which the system is based and
describe anticipated changes.
8.Glossary : This should define the technical terms used in the document.
9.Index : It may be desirable to provide more than one kind of index to the
document.
ض
: اﻟﻤﺤﺎ�ة ﺻﻐ� و ﻣﻌﺮﻓتﺶ أﻋﻤﻠﻪ ﻣﻠﺨﺺ ﻟﻴﻨﻚ
ي Chapter 4
https://drive.google.com/file/d/1UjUFS9AqZBcAWEaZK_Okoe528bXwa9G3/view?usp=drive_link
Chapter 4
— For small systems, it may be possible to go directly from the requirement
definition to a detailed component design, but for large S/W systems, the design
activity may be split into three stages:
1) Associate abstract S/W components with the services set out in the
requirements definition and construct precise specifications for these components.
— The specification phase should set out what the S/W do. A design should define
how the S/W function should be provided.
— This means that both the syntax and the semantics of the specification
languages should “be formally designed”
There are a number of advantages, which occur from using formal specifications
of S/W components:
1) Given a formal specification and a definition of programming language
semantic
There are two approaches for the specification of abstract data types :
1) Specify the behavior of the type operations using an abstract model.
2) Algebraic approaches :
— has two parts :
1) An interface part which names the allowed operations & specifies the types of
their parameters.
2) An axioms part which defines the behavior of these operations.
Chapter 5
Classification of Software Design Methodologies :
1- Top-Down functional design
2- Object oriented design
— Also, high level language (Ada or Pascal) may be used with the advantage that
the design will be executable.
Disadvantages :-
• Hill's are not ready extended to include now concepts.
Top-down design :-
• Construct a data flow diagram showing gross data transformations in the system.
• Construct a structure chart showing the problem units involved in the solution.
Design validation :-
Undetected errors and omissions are carried forward to the implementation phase
of the project and not detected until system testing can be extremely expensive to
correct.
1) Individual Skill
2) Attention to detail
Programming Methodology :-
1) Top – Down development :
— requires that the program structure to be hierarchical.
2) Bottom – up development :
is the converse of the above process implementation starts with the lower levels of the
system and the system is built up until, finally, the highest design level is implemented.
(In bottom-up development, the programmer creates basic building blocks and
uses these to build more complex blocks)
Information hiding : Control access to system data (allowed access only to program
objects)
Advantages :
• Hidden information will not be corrupted.
Programming Style :-
1) Programming readability does not just depend on language facilities. The style
Program names :-
names of objects in a program should be closely (identical to the names of the
real-world)
Programming Environments :-
There are a number of different classes of programming environment such as
language-oriented environments and teaching environments.
Program Portability :-
Programs should be written so that they may be implemented under more than
one computer / operating system configuration.
— Different machines have different word lengths, different character sets and
different technique for representing integer and real numbers.
4) Classify files as data files, binary files, etc. other systems consider all files to be
files of character.
5) Most systems restrict the user to a maximum number of files , which may be in
use at any time.
2) Module testing :
• A module is made up of a number of functions, which may cooperate with each
other.
• A module should be tested as a stand-alone entity, without the presence of other
system modules.
3) Sub-system testing :
• Modules are put together to form subsystems.
• This test should concentrate on testing module interfaces under the assumption
that the modules themselves are correct.
4) Sub-system testing :
• Sub-systems are integrated to make up the entire system.
• At this stage, the testing process is concerned with validating that the overall
system provides the function specified in the requirements and that the dynamic
characteristics of the system match those specified in the requirements
definition.
5) Acceptance testing :
• This is the process of testing the system with real data.
• It may demonstrate that the system does not exhibit the expected performance
and functionality.
— Bottom-up testing the modules at the lower levels in the hierarchy, and then
working up the hierarchy of modules until the final module is tested. The
advantages of top-down testing are the disadvantages of bottom-up testing and
vice versa.
Testing tools :-
The process of system validation is the most expensive stage of software
development. For real-time system.
Types :
1) Test data generators :
— Test data generators are programs
— Given the specification of a database
— Test data generators can also be useful in a situation where the syntax of the
output from a system can be specified in a formal way.
To instrument a program :
— Decision statements and loops :
• The instrumentation code is placed at the beginning of these identified
statements.
— A sequence of statements :
• The instrumentation section is placed at the beginning of sequence.
Chapter 8
Software Quality Assurance (SQA) in an umbrella activity that applied throughout
the software engineering process.
2) Formal technical reviews that are applied during each software engineering
step.
6) Measurement.
7) Record keeping.
The factors that affect software quality can be categorized in two broad groups:
Operational Characteristics :
— Correctness : the extent to which a program satisfies its specification and fulfills
the customer's mission activity.
— Usability : the effort required to learn operate, prepare input, and interpret
output of a program.
— Testability : the effort required testing a program to ensure that it performs its
intended function.
- Portability: the effort required transferring the program from one hardware
and/or software system environment to another.
Factors :-
It is difficult, and in the same time impossible, to develop direct measures of the
above quality factors. Therefore, a set of metrics are defined and used to develop
expressions for each of the factors according to the following relationship.
F = c1 × m1 + c2 × m2 + c3 × m3 + …. + cn × mn
7) Data commonality : the use of standard data structure and types throughout
the program.
8) Error tolerance : the damage that occurs when the programs encounter an
error.
12) Hardware independence : the degree to which the software is decoupled from
the hardware on which it operates.
13) Instrumentation : the degree to which the program monitors its own operation
and identifies errors that do occur.
21) Training : the degree to which the software assists in enabling new users to
apply the system.
Software Reviews :-
Software reviews are a 'filter' for the software engineering process.