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

Lecture-01-Introduction - Current

This document outlines the content and expectations of a Software Engineering I course. The course covers topics such as software life cycles, requirement engineering, software design, implementation, testing and Agile development. Students will gain practical skills in requirement analysis, object-oriented design, documentation, verification and working with different platforms. The course involves group projects, lectures, reading assignments and presentations.

Uploaded by

Amir Eyni
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
110 views

Lecture-01-Introduction - Current

This document outlines the content and expectations of a Software Engineering I course. The course covers topics such as software life cycles, requirement engineering, software design, implementation, testing and Agile development. Students will gain practical skills in requirement analysis, object-oriented design, documentation, verification and working with different platforms. The course involves group projects, lectures, reading assignments and presentations.

Uploaded by

Amir Eyni
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 28

Software Engineering I

Course Code: SITE-2103


Course ECTS: 7
Course Content
• Topic one: Introduction to Software Engineering
• Topic two: software life cycle
• Topic three: Requirement Engineering

• Topic Four: software design


• Topic Five: software implementation and testing
• Topic six: Agile Development

2
Expected Practical Skills
• Perform a requirement analysis on different area of problem
• Perform an object-oriented design
• Prepare different types of documents. (requirement, design
and testing)
• Verify and validate a Software system
Expected transferable skills
• will be able to work with different platforms and have a handy
experience on working on documentation skills
• Effective communication skill acquired during group work
• A hand on experience on proposal writing and different
collaborative tools
3
Class format: A typical week
• Lecture sessions to discuss best practices

• Reading assignments to reinforce the concepts


– Appear on quizzes and exams

• Group project: to give you hands-on experience with the


material
– Technical challenges given the larger project
– Social challenges given the team effort
– Frequent meetings required (at least twice a week)

• conduct project presentations


– At least once a week, presenters will be picked on the spot
4
Software Engineering I

Lecture 1 – Introduction
Software engineering
• Software Engineering is not Programming
– Programming is primarily a personal activity

– Large software systems must be developed similar to other


engineering practices (not through mere programming)
– “Engineering is the analysis, design, construction, verification, and
management of technical (or social) entities”
– Ian summoerviellie

– Software engineering is a team activity

• Programming is just one aspect of software development


6
Software engineering
Software Engineering
• a software engineer starts with problem definition and
applies tools of the trade to obtain a problem solution.
• Programming is the craft of implementing the given blueprints
• Software engineer’s focus is on understanding the
interaction between the system-to-be and its users and
the environment

7
8
Software Engineering
• “Engineering is the analysis, design, construction, verification,
and management of technical (or social) entities”

• Questions that we must answer:


– What is the problem to be solved?
– What characteristics of the entity are used to solve the problem?
– How will the entity (and the solution) be realized?
– How will the entity be constructed?
– How to uncover error made in design and construction of entity?
– Manage change: How to support, when corrections, adaptations,
and enhancements are requested by users of the entity.

• The entity that we deal with in software Engineering is a


computer software 9
• Software engineer should have the ability to imagine and be
creative.

10
11
Why Software engineering?

• “Software is like entropy. It is difficult to grasp, weighs


nothing, and obeys the second law of thermodynamics;

i.e., it always increases.” —Norman R. Augustine


• Software engineering is mainly about modeling the physical
world and finding good abstractions.
• You need to carefully engineer your software

12
What is Software engineering
• Software engineering
– Creating and maintaining software applications by applying
technologies and practices from computer science, project
management, and other fields.

– Software engineering is about people working in teams under


stress to create value for their customers.

13
• Real-time software

• Business software
• Engineering and scientific software
• Embedded software
• Personal computer software
• Web-based software
• Artificial intelligence software

14
Aspects of software engr.
1. Processes necessary to turn a concept into a robust
deliverable that can evolve over time

2. Working with limited time and resources

3. Satisfying a customer

4. Managing risk

5. Teamwork and communication

15
Ties to many fields
– computer science (algorithms, data structures, languages, tools)
– business/management (project mgmt, scheduling)
– economics/marketing (selling, niche markets, monopolies)
– communication (managing relations with stakeholders:
customers, management, developers, testers, sales)
– law (patents, licenses, copyrights, reverse engineering)
– sociology (modern trends in societies, localization, ethics)
– political science (negotiations; topics at the intersection of
law, economics, and global societal trends; public safety)
– psychology (personalities, styles, usability, what is fun)
– art (GUI design, what is appealing to users)

16
Roles of people in software
– customer / client: wants software built
• often doesn't know what he/she wants

– managers / designers: plan software


• difficult to foresee all problems and issues in advance

– developers: write code to implement software


• it is hard to write complex code for large systems

– testers: perform quality assurance (QA)


• it is impossible to test every combination of actions

– users: purchase and use software product


17
What is a software project?
• Projects are a balance of three dimensions, with the goal of
producing a successful deliverable.

FEATURES & QUALITY

SOFTWARE
DELIVERABLE
TIME RESOURCES

18
Course Projects
• You make proposals (then vote on which projects to develop)
– start thinking about ideas today

• Project development in stages


– reflects modern methodologies for effective development
– you get feedback after each stage after presentations

• project teams need to have at least 5-6 members

19
Project development stages
• Proposal
• Requirements
– Explicitly write the problem statement
• Design
– Come up with a solution for the problem on paper
• Implementation
– Free to choose your own tools and frameworks
• Testing, validation, verification
• Documentation (in each stage)
• Final deliverable

20
We’ll hit the ground running ...
• Your chance to turn a great idea into a product!

• Prepare a 3-slide, 3-minute product pitch in teams

• Vision and novelty


– Architecture
– Challenges and risks

• Turn in Next Friday Morning

– Rank your choices


– Self-select groups
21
Project Culture
• This is a real project
– We expect you to work to build a real system
– To be used by real people

• This is real engineering


– Take initiative
– Find and solve problems yourselves
– Coding is only part of the job
– Good planning , design and working well with your team, are all
needed for success

22
Advice
• "Work together (in the same place) as much as possible."

• "Well-run and consistently scheduled meetings help a lot.”

• "We often underestimate tasks. If we had spent more time


analyzing each task and breaking it down into smaller
chunks, our estimated times would have been more accurate."

23
What's in it for you
• What you'll learn
– get exposure to software development practices in use today
– learn how to collaborate with others toward a common goal
– see how software is produced, from idea to ship to maintenance
– get experience working in a large team toward a common goal
– be able to articulate and understand ideas in a conversation
– understand issues and tradeoffs in decisions as a manager

24
Unique aspects of course
• cross-disciplinary nature of the subject

• larger-size teams

• opportunity to propose and work on your own ideas

• mistakes along the way are encouraged, not penalized

• plans always change

• content: software design, testing, project management, etc.

25
Grading and Academic Honesty
• Grading
– Project (presentations and deliverables): 50%
– Class activity (specially during student presentations): 5%
– Quizzes and Midterm: 15%
– Final exam: 30%

• Academic integrity
– Do individual work by yourself.
– Do group work with your teammates only.

26
Reading
• Sommerville, Ian. Software engineering. Boston: Pearson, 2016
• Pressman, Roger S. Software engineering : a practitioner's
approach. New York, NY: McGraw-Hill Education, 2015
• Software engineering, Ivan Marsic

27
Tasks for next week:

• GROUP FORMATION (5-6)


• At least 3 Project Titles to be submitted

28

You might also like