0% found this document useful (0 votes)
14 views

01 Introduction Software Engineering

Uploaded by

Bekhedda Asma
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views

01 Introduction Software Engineering

Uploaded by

Bekhedda Asma
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 68

Software Engineering :

1 : Introduction
Professor Imed Bouchrika
National School of Artificial Intelligence
[email protected]

1
● Writing a Program vs Software
Outline :
● Software Failures

● Software Engineering

● Process and Development Life Cycle

● Principles of Software Engineering

● Software Development Companies


2
Writing a Program vs
Software
● You are asked by a client to Write a “Program” to print “hello world” inside
the console using the Java Programming Language.

3
Writing a Program vs
Software
● You are asked by a client to Write a “Program” to print “hello world” inside
the console using the Java Programming Language.

Java Development Kit ( JDK) must be installed

To compile : javac Hello.java


To execute the code : java Hello
4
Writing a Program vs
Software
● You are asked by a client to Write a “Program” to print “hello world” inside
Is this a good programming practice ?
the console using the Java Programming Language.

5
Writing a Program vs
Software
● a You
Is this goodare asked by a client
programming to Write
practice ? a “Program” to print “hello world” inside
- Putting Business Logic inside the main
the console using the Java Programming
procedure Language.
- No use of Object-Oriented Design
- Inclusion of Text inside the code
- No comments
- No Abstraction
- Not Modular
- …

6
Writing a Program vs
Software

7
Writing a ProgramSeems
vs to much comments ? is it good
Software ?

8
Writing a Program vs
Software
● Is it easy to code and program ?
● How much you charge the customer for it ?
● Will you be ethically required to assist, train and support the customer ?
● What if the customer would like to have the following changes:
○ “Hello World” to “Hello All”
○ …
● Can you still maintain and work on the code after 10 years ?
9
Writing a Program vs
Software
● Is it easy to code and program ?
● How much you charge the customer for it ?
● Will you be ethically required to assist, train and support the customer ?
● What if the customer would like to have the following changes:
○ “Hello World” to “Hello All”
○ …
● Can you still maintain and work on the code after 10 years ?
10
Writing a Program vs
Software
● Is it easy to code and program ?
● How much you charge the customer for it ?
● Will you be ethically required to assist, train and support the customer ?
● What if the customer would like to have the following changes:
○ “Hello World” to “Hello All”
○ …
● Can you still maintain and work on the code after 10 years ?
11
Writing a Program vs
Software
● Is it easy to code and program ?
● How much you charge the customer for it ?
● Will you be ethically required to assist, train and support the customer ?
● What if the customer would like to have the following changes:
○ “Hello World” to “Hello All”
○ …
● Can you still maintain and work on the code after 10 years ?
12
Writing a Program vs
Software
● Is it easy to code and program ?
● How much you charge the customer for it ?
● Will you be ethically required to assist, train and support the customer ?
● What if the customer would like to have the following changes:
○ “Hello World” to “Hello All”
○ …
● Can you still maintain and work on the code after 10 years ?
13
Writing a Program vs
Software
● ad-hoc or programming-centered approach :
○ You write a computer program in an unplanned way to solve a
particular problem
○ The main focus is made initially towards starting the programming task

14
Writing a Program vs
Software
● Computer Program:
○ Is a set of instructions written in a programming language after which it
will be compiled or translated to the machine language to perform a
specific task.
● Is Computer program written in Java called a Software ?
○ Is : Computer Program = Software ?

15
Writing a Program vs
Software
● What’s Software :

○ Is not a computer program

○ Is the set of computer programs in addition to the associated

documentation, configuration files and data

16
Writing a Program vs
Software
● What’s a Software Product

○ The product is an Industrial-strength software of high quality to solve

some problem of some set of users

17
Writing a Program vs
Software
● What types of Software Products to develop
○ Generic Software Products
■ Standalone systems that are produced and sold on the open
market to any customer.
■ This type of software includes “vertical” applications which are
designed for a specific market such as “Accounting Systems,,,,”
■ Examples : mobile apps, website scripts, downloadable software..
18
Writing a Program vs
Software
● What types of Software Products to develop
○ Customized Software
■ These are systems which are commissioned and developed for a
particular customer
■ Examples :
● Control Systems for an Electronic devices
● Software Systems to support particular business process for a
company 19
Writing a Program vs
Software
● What type of Software Product to develop
What if another customer wants to buy the
○ Customized Software
same customized software ?
■ These are systems which are commissioned and developed for a
particular customer
■ Examples :
● Control Systems for an Electronic devices
● Software Systems to support particular business process for a
company 20
Writing a Program vs
Software
● What type of Software
What if anotherProduct to wants
customer develop
to buy the same
○ Customized Software
customized software ?
ThisThese
■ are on
depends systems which
how you are commissioned
agreed andondeveloped for a
with the customer
particular customer
the ownership :
Are Examples
■ you selling: a copy or full and exclusive ownership of
● Control Systems for an Electronic
the software ? devices
● Software Systems to support particular business process for a
company 21
Writing a Program vs
Software
● What types of Software Products to develop
○ Generic Software Products
■ Flexibility and Customization:
● More generic software products are being developed with
advanced features to be customizable to more scenarios
using configuration options, plugins, extensions.…

22
Writing a Program vs
Software
● What types of Software Products to develop
○ Stand-alone applications :
■ These are application systems that run on a personal computer or
apps that run on a mobile device. They include all necessary
functionality and may not need to be connected to a network.
■ Examples : office applications on a PC, CAD programs, photo
manipulation software, travel apps, productivity apps, and so on.
23
Writing a Program vs
Software
● What software products we can develop
○ Interactive transaction-based applications : These are applications
that execute on a remote computer and that are accessed by users
from their own computers, phones, or tablets.
○ Examples : web applications such as e-commerce applications,
business systems accessible via browser or special client. Another
example is cloud-based services, such as mail and photo sharing.
24
Writing a Program vs
Software
● What software products we can develop
○ Embedded control systems These are software control systems that
control and manage hardware devices.
○ Numerically, there are probably more embedded systems than any
other type of system.
○ Examples : software that controls antilock braking in a car, and
software in a microwave oven to control the cooking process, lifts….
25
Writing a Program vs
Software
● What software products we can develop
○ Batch processing systems : These are business systems that are
designed to process data in large batches. They process large
numbers of individual inputs to create corresponding outputs.

○ Examples of batch systems are periodic billing systems, such as phone


billing systems, and salary payment systems.
26
Writing a Program vs
Software
● What software products we can develop
○ Entertainment systems These are systems for personal use that are
intended to entertain the user. The quality of the user interaction
offered is the most important distinguishing characteristic of
entertainment systems.
○ Examples : Gaming Systems

27
Writing a Program vs
Software
● What software products we can develop
○ Systems for modeling and simulation These are systems that are
developed by scientists and engineers to model physical processes or
situations, which include many separate, interacting objects. These are
often computationally intensive and require high-performance parallel
systems for execution.

28
Writing a Program vs
Software
● Characteristics of software in the modern era:
○ Scaling
■ The complexity and size of problem are increasing dramatically
○ Change
■ The need of customers change fast

29
Writing a Program vs
Software
● What are the qualities of good software product with industrial-strength

● Correctness (Functionality) : The software meets the

01
requirements and specifications that it was designed for,
and it behaves as expected when it is used in its intended
environment.
● All functionalities are correctly implemented
30
Writing a Program vs
Software
● What are the qualities of good software product with industrial-strength

02
● Usability and Acceptability : The software is easy to use
and understand, and it provides a positive user
experience.
● Users should also accept and adopt the software
product by continuing to use it
31
Writing a Program vs
Software
● What are the qualities of good software product with industrial-strength

● Reliability : The software is free of defects and it

03
performs consistently and accurately under different
conditions and scenarios.

32
Writing a Program vs
Software
● What are the qualities of good software product with industrial-strength

04
● Maintainability : The software is easy to change and
update, and it is well-documented, so that it can be
understood and modified by other developers.

33
Writing a Program vs
Software
● What are the qualities of good software product with industrial-strength

● Security : The software is protected against unauthorized

05
access and it keeps the data and functions safe from
malicious attacks.

34
Writing a Program vs
Software
● What are the qualities of good software product with industrial-strength

06
● Efficiency and Performance : The software runs
efficiently and quickly, and it can handle large amounts of
data or traffic.

35
Writing a Program vs
Software
● What are the qualities of good software product with industrial-strength

● Scalability : The software can handle an increasing

07
workload and it can be easily extended to meet the
changing requirements.
● Scaling to increase large number of users, big data or
even larger spatial deployment
36
Writing a Program vs
Software
● What are the qualities of good software product with industrial-strength

08
● Portability : the ease with which software can be
used on computer or platform configurations other
than its current one where it was developed and
tested.

37
Writing a Program vs
Software
● What are the qualities of good software product with industrial-strength

● Reusability and Openness : the ease with which software

09
can be reused in developing other software.

38
Writing a Program vs
Software
● What are the qualities of good software product with industrial-strength

10
● Adaptability and Flexibility: The software is flexible to be
customized without extra development in order to adapt
it to different future requirements.

39
Software Failures and
Statistics
● You will be primarily responsible for developing software
● Will you succeed to create a software product with the attributes
discussed ?

● ZDNet reported in 2012:


○ “Worldwide cost of IT failure is $3 trillion”

40
Software Failures and
Statistics
● Chaos Report (1995) reported that
○ only about 16% of software projects are completed on-time, and
within-budget
○ 84% of projects failed!

● Chaos Report (2009) stated that software projects :


○ 32% completed, on-time, and within-budget.
○ 68% of projects failure!
41
Software Failures and
Statistics
● Chaos Report (1995) reported that
○ only about 16% of software projects are completed on-time, and
Failed Software Projects :
within-budget - Cancelled
○ 84% of projects failed!
- Delivered Late
- Run over their budget
● Chaos Report (2009) stated that software projects :
○ 32% completed, on-time, and within-budget.
○ 68% of projects failure!
42
Software Failures and
Statistics
● Example :
○ National programme for IT in the NHS (UK national health service) NPfIT:
■ Cancelled project took 9 years and cost £12 Billions
■ “The [UK] government will formally announce the scrapping of the National programme for
IT in the NHS…to “urgently dismantle” the health service IT scheme comes after a series of
damming reports…The final nail in the £12 billion scheme will be announced this morning…set
up in 2002, is not fit to provide services to the NHS. ‘There can be no confidence that the

programme has delivered or can be delivered as originally conceived,’”


43
Software Failures and
Statistics
● Main reasons of failures:
○ Increasing System Complexity :
■ Systems become larger with increased complexity
■ The demands and requirements change and increase dramatically
○ Failure to use Software Engineering Methods
■ It is easy to write the hello world program without the principles of
software engineering. But within a budget can you : maintain it,
evolve it and scale it ? 44
Software Failures and
Statistics

● Main reasons of failures:


○ Bad Management and Poor Leadership
■ Misuse of the resources / Budget
■ Lack of communication
■ Lack of motivation among the employees
■ Poor Planning
■ Incorrect Estimation of Budget
45
■ …
Software Engineering

● The goal of software development is to develop

○ High quality software that meets customers’ real needs.

○ On time

○ On budget

46
Software Engineering

● Definitions :
○ A discipline that integrates processes, methods and tools for the analysis,
design, development, testing and maintenance of computer software products
whilst complying with the set of conventional principles and best practices.

○ The term was coined in 1968 at a conference to discuss the software crisis

47
Software Engineering

● Software Engineers
● They make things work.
● They apply theories, methods, and tools where these are appropriate.
However, they use them selectively
● Try to discover solutions to problems even when there are no applicable
theories and methods.
● Engineers also recognize that they must work within organizational and
financial constraints, and they must look for solutions within these
constraints. 48
Software Engineering

● Software Engineering

■ is not just concerned with the technical processes of software

development.

■ It also includes activities such as software project management and the

development of tools, methods, and theories to support software

development.

49
Software Engineering

● Why Software Engineering

■ Individuals and society rely on software systems. We need to be able


to produce reliable and trustworthy systems economically and quickly

■ It is usually cheaper, in the long run, to use software engineering


methods and techniques for professional software systems rather than
just write programs as a personal programming project.

■ Failure to use software engineering method leads to higher costs for


testing, quality assurance, and long-term maintenance. 50
Software Development
Life Cycle
● To develop a Software for the “Hello World”
1. Understand the problem
2. Perform some design and planning
3. Code and Develop the Software
4. Validate and test the software
5. Release, Install, Run or Deploy the software for the client
6. Maintenance and Support

51
Software Development
Life Cycle
● To develop a Software for the “Hello World”
1. Requirement Analysis : Understand the problem
2. Design : Perform some design and planning
3. Implementation : Code and Develop the Software
4. Testing : Validate and test the software
5. Integration : Release, Install, Run or Deploy the software for the client
6. Maintenance : Maintenance and Support

52
Software Development
Life Cycle
● Ideal Process :
Design and
Planning
Implementation
Requirement
Analysis

Maintenance Testing
Integration

53
Software Development
Life Cycle
● Process in Reality :
Design and
Planning
Implementation
Requirement
Analysis

Maintenance Testing
Integration

54
Software Development
Life Cycle
● Process :
○ is a collection of activities, actions, and tasks that are performed during the
design, development and maintenance of a software product
○ Generic Activities in a Software Engineering Process:
■ Requirements Specification
■ Design and Planning
■ Coding/Implementation/Construction
■ Testing
■ Maintenance 55
Principles of Software
Engineering
● There is no standard set of universal principles and laws in software

engineering that is agreed to by everyone.

● Principles are suggested to serve as guidelines and recommendations to

improve the productivity of software development and achieve a better

success.

56
Principles of Software
Engineering 1.
2.
Make quality Number 1
High Quality Software is possible
3. Give products to customer early
4. Determine the Problem before the requirements
● Davis’s principles (1994) :
5. Evaluate design alternatives
6. Use an appropriate process model
7. Use different languages for different phases
8. Minimize intellectual distance
9. Put technique before tools
10. Get it right before you make it faster
11. Inspect Code
12. Good management is more important than technology
13. People are the key to success
14. Follow with care
15. Take responsibility
57
Principles of Software
Engineering 1.
2.
Make quality Number 1
High Quality Software is possible
3. Give products to customer early
4. Determine the Problem before the requirements
● Davis’s principles (1994) :
5. Evaluate design alternatives
6. Use an appropriate process model

Intellectual Distance : defined 7. Use different languages for different phases


8. Minimize intellectual distance
as the gap between the real 9. Put technique before tools

world and computerized world 10. Get it right before you make it faster
11. Inspect Code
12. Good management is more important than technology
13. People are the key to success
14. Follow with care
15. Take responsibility
58
Principles of Software
Engineering
● Davis proposed another complementary 15 recommendations for Software
Engineering Professionals including :
○ Understand the Customers‘ Priorities
○ The More They See, the More They Need
○ Plan to Throw One Away.
○ Design for Change
○ Design Without Documentation is Not Design
○ Avoid Tricks
○ Don’t Test Your Own Software 59
Principles of Software
Engineering
● There are other principles and recommendations including the following :

1. Wasserman’s 8 Concepts

2. Royce’s 10 principles,

3. David Hooker’s 7 Principles

60
Software Development
Companies

61
Software Development
Companies
● Shareholders :
○ owners of the company
○ elect the board of
directors

● Board of directors
○ Represent shareholder
interests
○ Appoint officers, hire &
advise CEO 62
Software Development
Companies
● Software Development Team
● Product or Project Manager : is accountable for knowing the “who, what,
where, when, and why of the software plan. A Project Manager in a
software development team often deals with various crucial roles and
responsibilities including:
■ Making a software plan.
■ Developing a schedule.
■ Planning a budget.
■ Executing it in a proper manner.
■ Supervise all team members
63
Software Development
Companies
● Software Development Team
● Business Analyst / Analyst
○ Studies and gathers all information about the product, outline the target
audience’s needs, and act as a bonding agent between the
market/customer/end-users and engineers.
○ They analyze users’ behavior / concerns, and then compile
recommendations on product enhancement and development

64
Software Development
Companies
● Software Development Team
● Software Architect
○ Plays the role of a decision-maker when it comes to the internal
arrangement of the software or software components in accordance
with the product requirements and procured resources.
○ On the basis of business needs, architects outline technical and
functional instruments required for product development.

65
Software Development
Companies
● Software Development Team

● Software Developers / Programmers

○ These are people who code the software first-hand. For this, they use

various programming languages, frameworks, and libraries.

○ Their job can include integration, technical documentation….

66
Software Development
Companies
● Software Development Team
● UX Designers
○ They make sure that the browsing experience and features are
accessible for users.
○ They also take care of all interface elements so that it’s natively clear
where to click to sign in, or navigate across different pages

67
Software Development
Companies
● Software Development Team
● Other roles:
○ QA Engineers
○ UI/Graphics Designer
○ Documentation Editor
○ Translators
○ Testers
○ …
68

You might also like