KEMBAR78
1 Software Engineering Essentials m1 Intro Slides | PDF | Software Development Process | Engineering
0% found this document useful (0 votes)
40 views20 pages

1 Software Engineering Essentials m1 Intro Slides

Software Engineering is a highly sought-after discipline that applies systematic and quantifiable approaches to software development, operation, and maintenance. It consists of three main layers: Process, Methods, and Tools, which guide the software lifecycle from requirements to deployment and evolution. Various process models, such as Agile and Waterfall, are utilized based on project needs and organizational maturity.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
40 views20 pages

1 Software Engineering Essentials m1 Intro Slides

Software Engineering is a highly sought-after discipline that applies systematic and quantifiable approaches to software development, operation, and maintenance. It consists of three main layers: Process, Methods, and Tools, which guide the software lifecycle from requirements to deployment and evolution. Various process models, such as Agile and Waterfall, are utilized based on project needs and organizational maturity.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 20

Software Engineering Essentials

Introduction

Mohamad Halabi
@mohamadhalabi
A Discipline in Demand

 Software Engineering is a highly demanded discipline and Software


Engineers are much sought after

 Mashable report: Software Engineer is the top tech job of 2014


 http://mashable.com/2014/01/06/tech-jobs-2014/

 Business Insider report: Software Engineers are highly paid pros in the
biggest companies
 http://www.businessinsider.com/software-salaries-at-big-companies-2014-9
…Yet a Misunderstood Discipline

 What is software engineering and why is it important?

 What are the building blocks of software engineering?

 What are the processes and methods that differentiate it as a


discipline?
What Is Software Engineering?
…the application of a systematic,
disciplined, and quantifiable approach
to the development, operation, and
maintenance of software; that is, the
application of engineering to
software…

— IEEE

Applied through entire lifecycle: specifications  maintenance


Why Software Engineering?

 The alternative is ad-hoc or disordered approach

 Engineering means:
 Predictability and quantifiable results

 Application of theories, methodologies, frameworks, and tools


 Result is high-quality software created in cost-effective manner
Software Engineering Layers

 Process Layer
Tools Layer  Framework and order of activities
 How Requirements, Design, Construction, and Testing are
Methods Layer performed?

Process Layer  Methods Layer


 Proven techniques to perform certain activities
 Ex: methods for requirements analysis/modeling, design
and design modeling, and testing, etc…

 Tools Layer
 Provides automation support
 Aids in the systematic application of software engineering
Software-Creation Activities

Generic set of software lifecycle activities:

Requirements Design Development Validation Deployment Evolution

Umbrella activities: Project Management

Quality Management

Configuration Management

Process Improvement
Software Process

 Also called Software Development Lifecycle (SDLC)

 Defines:
 Tasks inside the Software Engineering activities
 Order and detail of these tasks and activities
 Flow of activities (ex: iterative, linear, etc…)
 Type and detail of artifacts
Software Process

Linear model? Requirements Design Development Validation Deployment Evolution

Iteration #1
Design Development Validation Deployment

Iterative model? Requirements Evolution

Design Development Validation Deployment


Iteration #2

Chunk of Chunk of
Design Design
requirements requirements
Agile model? Iteration #1 Iteration #2

Deployment Validation Development Deployment Validation Development

What about
the artifacts?
Software Process Models

 Traditional (classic) models


 Waterfall (linear)

 Iterative and incremental models


 Prototyping
 Spiral
 Agile
 Unified Model

 Specialized models (for particular approaches)


 Component-based development
 Formal methods
 Aspect-Oriented development
Which Model to Use?

 Decided by various factors, including project type and organization


maturity
 Ex: Airplane navigation system requires rigorous and detailed specification
and design
 Ex: Collaboration portal does not need such rigidity

 Typically, the project manager with the lead software engineer decide
on the process model
Alert: A Software Process Spans Entire Lifecycle

 Software professionals often make common mistakes:


 They do not consider maintenance (evolution) as part of the software process
 They consider Requirements  Deployment but neglect operations

 This is wrong! Maintenance is part of the software lifecycle (until the


system is retired)

 Keep in mind: pre-deployment requests (i.e. changes) also need analysis,


design, development, testing, and deployment
 Often as part of a change management process (ex: ITIL) rather than a project
charter
Software Engineering Methods

 Practices with proven techniques to perform certain activities in an


organized and systematic approach

Tools Layer

Methods Layer
Requirements • How-to
Analysis • Modeling
Methods • Notations
Process Layer
Requirements • Order
Analysis • Focus
Activity • Artifacts

 Similarly, there are methods for design, testing, etc…

 Some of the most known Software Engineering methods:


 Structured Analysis and Design
 Object-Oriented Analysis and Design
 Formal Methods
Software Engineering Tools

 Tools assist software processes by automating actions

 Examples
 Requirement Management: Enterprise Architect (Sparx), IBM Rational (IBM)
 Development: Visual Studio (Microsoft), Eclipse (Open Source)
 Testing: Team Foundation Server (Microsoft), HP Quality Center (HP)
 Software Configuration: Team Foundation Server (Microsoft)
 Project Management: Enterprise Project Management (Microsoft)
 Process Management and Modeling: Team Foundation Server
The Role of Software Engineer

 Software Engineer as a role is less formally defined than the discipline

 Software Engineer is replacing the title Software Developer


 Seems to indicate more knowledge/responsibilities. So more sophisticated!

 However, Software Engineering is not only about development


 So is a designer or tester also a Software Engineer?

 In general, anyone who efficiently applies the engineering discipline


to the analysis, design, development, testing, and operation is a
qualified Software Engineer
Software Engineering and Project Management

 We already established that:


 Project Management is an umbrella activity
 Software Engineering is applied throughout the software lifecycle

Requirements Design Development Validation Deployment Evolution Retirement

Planning starts Planning ends after


before any activity system retires
• Control
• Communication
• Cost analysis
• Work breakdown structure
• Task scheduling
• Risk analysis
SWEBOK

 IEEE Computer Society publishes the Software Engineering Body of


Knowledge (SWEBOK) as an international standard

 SWEBOK (v3) promotes consistent view and specifies scope of Software


Engineering

 Software Engineering activities are organized into 15 Knowledge Areas


1. Software Requirements 9. Software Engineering Models and Methods
2. Software Design 10. Software Quality
3. Software Construction 11. Software Engineering Professional Practice
4. Software Testing 12. Software Engineering Economics
5. Software Maintenance 13. Computing Foundations
6. Software Configuration Management 14. Mathematical Foundations
7. Software Engineering Management 15. Engineering Foundations
8. Software Engineering Process
Content
 Building blocks of Software Engineering: Process, Methods, and Tools

 Module 2: tour around process models


 Activities are explained independent of the process model applied
 Activities are standardized. Process models set the ceremony level

 Module 3: requirements engineering process

 Module 4: requirements modeling Structured Analysis method

 Module 5: requirements modeling Object-Oriented Analysis method

 Module 6: essentials of software design process

 Module 7: design method

 Module 8: construction process

 Module 9: testing process and methods


Summary

 “…the application of a systematic, disciplined, and quantifiable approach to


the development, operation, and maintenance of software…” -IEEE
 So Software Engineering is applied to the entire software lifecycle

 Three layers are the building blocks of Software Engineering:


 Process Layer:
 Activity tasks (i.e. requirements, design, development, testing, deployment, evolution)
 Order and detail of these activities
 Flow (ex: iterative or linear)
 Type and detail of artifacts
 There are different process models (ex: agile, waterfall, unified process)
 Methods Layer: Practices with proven techniques to perform certain activities
 Tools Layer: automation support to perform activities

You might also like