Summary of the Course
Software Engineering
• Software Engineering: An introduction
• Importance of Software Development
• Definitions
• Software + Engineering
• Software Engineering
• Attributes of a good Software
• Key Challenges
• SDLC: Software Development Lifecycle
• Definition and Actors
• Steps
• Requirements Analysis
• Design
• Implementation
• Testing
• Release
Importance of Software
Software Engineering: An Introduction
• Software is everywhere!
• The economies of all developed nations are dependent on software
• Software costs often dominate system costs
• Computer Programs + Associated Documentation
• Can target:
• A particular customer: bespoke/customized software
• The general market: generic software
• Software products are:
• Intangible
• Complex
• Flexible
Definitions: Software Engineering
Software Engineering: An Introduction
• Engineering
• Action of defining and sequencing necessary tasks for the
creation of a new product or service
• Software Engineering
• Engineering discipline concerned with all aspects of software
production
• Captures the customers’ business needs and specify the
blueprints for the system, so that programmers can implement it
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation
and maintenance of software
Software Engineers must:
• Adopt a systematic and organized approach to their work
• Use appropriate tools and techniques
… depending on:
• The problem to be solved
• The development constraints
• The available resources
... with a given budget
... before a given deadline
... while changes occur!
A good software • A
n
• delivers the required functionality and performance to the user a
• is maintainable : evolves to meet changing needs l
y
• is dependable : must be trustworthy and secure
t
• is usable by its users
i
• is efficient : should not make wasteful use of system resources c
• is reusable: can be reused in another form or for other purposes a
l
• P
Skills of a Software Engineer l
• A software engineer is not (only) a developer! a
n
• “ It is not enough to do your best: you must KNOW what to do, THEN n
do your best” i
• Aside from the technical skills, a software engineer must have n
other skills : g
• Communication
• Feedback
• Motivation
•
Key Challenges
• Need to master both the technical and business problems
• Software is formal, while the real world is informal
• Coping with legacy systems
• Old valuable systems must be maintained, not systematically replaced
• Increasing diversity
• Consider the set of mixed and heterogeneous hardware and software involved in
the same system
• Increasing demands for reduced delivery time
• Ethical Responsibility!
Key Challenges: Ethical Responsibility
• Behaving in a honest and ethically responsible way in order to be
respected
• Respect of the confidentiality of the client’s information
• Competence: avoid to misrepresent your competence by accepting atask you
cannot do
• Intellectual Property rights: respect of patents, of copyrights
• Computer misuse: the employer’s computer must be properly used
• Whether the misuse is trivial (like game playing) or extremely serious (like the
dissemination of viruses)
• See the ACM/IEEE Code of Ethics
SDLC: Software Development Lifecycle
SDLC : Definition and Actors
• SDLC: Process of creating and altering systems, and the models and
methodologies that people use to develop these systems
• Actors: Mainly (but not only) Team
Developer
Project
Manager
Customer Designer
Tester
MedTech
Dr. Lilia SFAXI
Slide 18
[Link]/ liliasfaxi
SDLC : Steps
SDLC: Software Development Lifecycle
Requirements
Analysis
Release Design
Step 1: Requirement Analysis
SDLC: Software Development Lifecycle
• Work closely with the customer
R.A.
• Customer can be
• a client,
Release Design
• your employer,
• or yourself
• Focus on the “What”, not the “How”
Test Code
• End Result: Functional Specification
• Reviewed by:
• Customer, Designer
Step 2 : Design
SDLC: Software Development Lifecycle
• Focus on the “How”
R.A.
• Break the problem into smaller pieces
• Components Release Design
• End Result: Design Specification
Test Code
• Reviewed by:
• Designer, Developer
Step 3 : Implementation
SDLC: Software Development Lifecycle
• Write the code according to design
R.A.
• In some cases (oddly) the shortest phase!
Release Design
• End Result: Executable * Application
• Reviewed by: Test Code
• Designer, Developer, Tester
* or not…
Step 4 : Testing
SDLC: Software Development Lifecycle
• Verify the code works according to the functional
R.A.
specification
• Look for corner cases Release Design
• End Result: Test Plan, A program that works *
Test Code
• Reviewed by:
• Designer, Developer, Tester
* hopefully…
MedTech
Dr. Lilia SFAXI
Slide 23
[Link]/ liliasfaxi
Step 5 : Release
SDLC: Software Development Lifecycle
R.A.
• Close to the customers (again)
• Validate their expectations Release Design
• Get feedback for
• Next version
• Maintenance Test Code
• End Result: A happy customer and lots of $$$
SDLC Challenges
SDLC: Software Development Lifecycle
References
• L. Bonilla, Introduction to Software Engineering, [Link], 2009
• Mr. Jackman's Computer Programming Class, Software Development Lifecycle ,
[Link] , consulted the 22 nd sept. 2016
• Recommanded Readings
• I. Sommerville, Software Engineering (6 th edition), Addison Wesley
Publishing Company , 2000
• H Gomaa, Software Modeling and Design: UML, Use Cases, Patterns and
Software Architectures