You are on page 1of 11

Fundamentals of Software

Engineering: Lecture 1
Michael SB
Software
▪ What is Software?
▪ Software is computer programs and associated documentation.

▪ Computer Programs:
▪ a program is a specific set of ordered operations for a computer to perform
Properties of Software
▪ Essential Properties: properties that make software different from other engineering
artifacts.
▪ Complexity
▪ Invisibility
▪ Changeability
▪ Conformity
Software artifacts
▪ Here are some software artifacts:
▪ Source-code
▪ Logs
▪ Documentations
▪ Team communications
▪ Issue and bug reports
▪ Commit messages and release notes
▪ License and copyright information
▪ End-user agreements
Software Product Characteristics
▪ Maintainability: Software should be written in such a way so that it can evolve to meet
the changing needs of customers.
▪ Dependability and security: Software dependability includes a range of characteristics
including reliability, security, and safety.
▪ Efficiency: Software should not make wasteful use of system resources such as
memory and processor cycles.
▪ Acceptability: it must be understandable, usable, and compatible with other systems
that they use.
Software Engineering
▪ Software engineering is an engineering discipline that is concerned with all aspects of
software production from the early stages of system specification through to
maintaining the system after it has gone into use.
▪ Software engineering is the establishment and use of sound engineering principles in
order to obtain economically software that is reliable and works efficiently on real
machines.
▪ Software Engineering: The application of a systematic, disciplined, quantifiable
approach to the development, operation, and maintenance of software; that is, the
application of engineering to software. (IEEE)
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?
▪ 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


Aspects of Software Engineering
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


Fields Related to Software Engineering
▪ 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)
▪ 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)
Roles in Software Project
▪ 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


▪ users can be fickle and can misunderstand the product
Software Projects
▪ Projects are a balance of three dimensions, with the goal of producing a successful
deliverable.

FEATURES & QUALITY

TIME RESOURCES

You might also like