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

CS 383 - Software Engineering: Semester: 432

This document provides an overview of the CS 383 - Software Engineering course. It will be taught in semester 432 and meet on Lecture 1. The course is designed to teach software development using best practices. Assessment will include two midterm exams, a group project, and a final exam. Students will be assigned to groups to work on a software project and demonstrate software engineering principles. The course outline covers topics like software costs, processes, and types of applications.

Uploaded by

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

CS 383 - Software Engineering: Semester: 432

This document provides an overview of the CS 383 - Software Engineering course. It will be taught in semester 432 and meet on Lecture 1. The course is designed to teach software development using best practices. Assessment will include two midterm exams, a group project, and a final exam. Students will be assigned to groups to work on a software project and demonstrate software engineering principles. The course outline covers topics like software costs, processes, and types of applications.

Uploaded by

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

CS 383 - Software Engineering

Introduction
Semester: 432

Lecture: 1

Dr. Faisal Alhwikem


[email protected]
Course profile

● Overview: a course to teach you how software is developed


systematically using best development and engineering practices

● Text Books:
○ I. Sommerville, “Software Engineering”, ninth edition
○ Martin Fowler, “UML Distilled”, third edition
○ Gang of Four (E. Gamma, R. Helm, R. Johnson & J. Vlissides) “Design
Patterns”, 1994

● Assessment materials:
○ 2 midterm exam (week 8 to week 10) = %15 each
○ Group project = 30% (assessment is undertaking throughout the
course and the project presentation take place in week 15)
○ Final Exam = %40
2
Group Project Assignment

● You’ll all be allocated into groups


○ Using a few heuristics and random algorithm
● Once allocated, you need to come up with an idea of system/software
● Then, I will be your client of the project
● You need to start developing and apply what you learn from lectures
into your development process
● We need regular meetings for briefing of the development process.
You are required to organize that (there are points for that)

● See here for more information

3
Group Project Assignment (cont.)

● You must please have a leader: vote for ONE


● You need to demonstrate aspects of SWE into your project:
○ Project management, tasks allocation, teamwork
○ Generating documentations
○ What development process you choose and why
○ Addressing clients requirements
○ Making design of your system/software
○ Use models to design your work
○ Implementation and basic testing
○ Use version control (git or svn) repositories
○ Presentation
4
Seek Help

● Please feel free to drop up us an email anytime

● Solving technical issues is your responsibility

● You can also book a meeting if you have an extremely

hard problem

5
Outline

● Software costs and examples of software disasters

● Software products

● FAQ about SE

● Why you need to care about SE

● Software process activities

● Issues related to SE

● Application types

6
Software Costs

● Knight’s $440 Million Error


○ Stocks struggled to stay afloat after
a software bug triggered a $440
million loss in just 30 minutes.

● NASA’s Mars Climate Orbiter (1998)


○ The spacecraft ($125 million) was
ultimately lost in space.
○ A sub contractor on the engineering
team failed to make a simple
conversion from imperial units to
metric

7
Software Costs (cont.)

9 software projects totaling $96.7 million: Where The Money


Went
[Report to Congress, Comptroller General, 1979]

Take a look at the Standish Report (The


“Chaos” Report)

8
Software Costs (cont.)

● Software costs often dominate computer


system costs
○ The costs of software on a PC are
often greater than the hardware cost

● Software costs more to maintain


(time-wise) than it does to develop

9
Software Costs (cont.)

So, what is software engineering?

SE is an engineering discipline that is concerned with all


aspects of producing cost-effective and trustworthy
software

10
FAQ about SE

Q. What is software?
A. Computer programs and associated documentation.

Q. What are the attributes of good software?


A. Good software should deliver the demanded functional and
non-functional requirements of users/clients/customers

12
FAQ about SE

Q. What are the fundamental software engineering activities?


Software specification, software development, software verification &
validation, software evolution

Q. What is the difference between Software Engineering and


system engineering?
System Engineering is more general: concerned with system
development including hardware, software and engineering process.
Software engineering is more specific about software development

13
FAQ about SE

Q. What are the key challenges facing SE


1) Deal with increase diversity
2) Reduce delivery times
3) Produce trustworthy software

Q. What are the costs of SE?


- Development costs 60% - Testing costs 40%
- Maintenance and evolution costs: often exceed development costs.

14
FAQ about SE

Q. What are the best SE techniques and methods?


It depends. E.g. games development goes under series of prototypes to receive
early feedback
Whereas safety critical control systems require analyzable specification to be
developed

Q. What differences has the Web made to software


engineering?
- Availability and accessibility of software services
- Development of quality and highly distributed service-based systems
- Improvement of programming languages and software reuse

15
Software Product

1. Generic products
Stand-alone systems that are marketed and sold to any
customer

Examples – PC software like Microsoft Office, CAD


software; appointments systems for dentists, etc.

11
Software Product (cont.)

2. Customized Product

Software that is commissioned (tailored) by a specific

customer to meet their own needs.

Examples – embedded control systems,

air traffic control software, traffic monitoring systems, etc.

16
Why you need to care about SE?

SE is required due to the following reasons:

● To manage Large software.


● For more Scalability.
● Cost Management.
● To manage the dynamic nature of software.
● For better quality Management.

17
Why you need to care about SE? (cont.)

● Huge Programming: It is simpler to manufacture a wall than to a


house or building, similarly, as the measure of programming
becomes extensive engineering has to step to give it a scientific
process.

● Cost: As the hardware industry has demonstrated its skills and


huge manufacturing has let down the cost of computer and
electronic hardware. But the cost of programming remains high if
the proper process is not adapted.

● Adaptability: If the software procedure were not based on


scientific and engineering ideas, it would be simpler to re-create
new software than to scale an existing one.

18
Why you need to care about SE? (cont.)

● Dynamic Nature: The continually growing and adapting nature of


programming hugely depends upon the environment in which the client
works. If the quality of the software is continually changing, new
upgrades need to be done in the existing one.

● Quality Management: Better procedure of software development


provides a better and quality software product.

19
Why SE is important?

20
Why SE is important? (cont.)

● Reduces complexity: Software engineering divides big problems into various


small issues. All these small problems are solved independently to each other.

● To minimize software cost: The cost for software productions becomes less as
compared to any software that does not use software engineering method.

● To decrease time: If you are making your software according to the software
engineering method, then it will decrease a lot of time.

● Handling big projects: Big projects it requires heaps of planning, direction,


testing, and maintenance. So to handle a big project without any problem, the
company has to go for a software engineering method.

21
Why SE is important? (cont.)

● Reliable software: In software engineering, testing and maintenance are


given, so there is no worry of its reliability.

● Effectiveness: Effectiveness comes if anything has made according to


the standards. Software standards are the big target of companies to
make it more effective. So Software becomes more effective in the act
with the help of software engineering.

22
Software process activities

● Software specification: where customers and


engineers define the software that is to be
produced and the constraints on its operation.
● Software development: where the software is
designed and programmed.
● Software validation: where the software is
checked to ensure that it is what the customer
requires.
● Software evolution: where the software is
modified to reflect changing customer and market
requirements.

23
Issues related to SE

Heterogeneit
y Business and social change
Systems are increasingly Business and society are
essential to operate as evolving extremely rapidly.
distributed systems across They need to be in a
networks, which include position to update their
various types of computers current software and
and mobile devices. create new software
quickly.
24
Issues related to SE

Security and trust Scales


We must ensure that The software must be built over
unauthorized users are unable a broad range of scales, from
to target our applications, and very tiny embedded systems in
that information is protected portable or wearable devices
and secured. through the Internet sizes, a
cloud-based framework that
serves global population.
25
Application types

Software engineering diversity:

● There are many different types of software system and there is


no universal set of software techniques that is applicable to all
of these.

● The software engineering methods and tools used depend on:


○ The type of application being developed,
○ The requirements of the customer,
○ The background of the development team (people
involved).

26
Application types

Enterprise software

● Enterprise software explains the requirements of

organization, procedure and information stream regularly in

a large distributed environment.

● Departmental software is the sub-type of Enterprise

software. It concentrates on small organizations within a

large organization.

Examples: Financial management, customer relationship, etc.

27
Application types (cont.)

Enterprise infrastructure software

● Enterprise infrastructure software can provide potentiality to

support the enterprise software systems.

Examples: Email servers, Network and security management.

28
Application types (cont.)

Information worker software

● This software is used to generate and manage the

information regularly for individual.

Examples: Resource management, Word processors.

29
Application types (cont.)

Content access software

● This software labels the necessity of groups to hide the digital

entertainment and digital content.

Examples: Media players, Web browsers.

30
Application types (cont.)

Simulation software

● This software simulates the abstract system for

entertainment purpose. It depends on the procedure of

modeling a genuine wonder with a set of mathematical

formulas.

Examples: Weather conditions, Chemical reactions.

31
Application types (cont.)

Media development software

● Addresses the necessities of people who generate print and

electronic media in an educational sector. This contains

Desktop Publishing Software, HTML editors, and Digital

Animation editors.

Example: Multimedia development software

32
Application types (cont.)

Product engineering software

● This Software is used to develop software and hardware

products. It includes computer aided design; computer aided

engineering, and integrated development environments.

Examples: Digital camera, smart phone

33
Application types (cont.)

System Software
● System software is a “low-level” computer software

primarily designed to run the computer hardware and

application programs.

Examples: Operating System, Compilers, and Assemblers

34

You might also like