Software engineering
Overview and Basic tasks
Dr Hamed Hemeda
What is software?
• Software is the programs executed by computers. It may be system
software such as operating systems or application software such as
games, word-processing, database systems and electronic commerce
systems
• Software types(according to Lehman)
• Static/Specified(S-type): well-defined specification and obvious solution.
Example: Calculator program
• Procedural (P-Type): The controlling procedures are well-defined, but the
solution is not so obvious. Example: chess playing
• Evolving(E-Type): Specification and solution are strongly linked to
environment. Example: E-Commerce system
Software engineering projects
• What is software engineering and what is a software engineering
project?
• Software engineering is the developing of software product for specific
purposes using scientific principles and methods within the constraints of
allowed cost, time and other resources.
• Software engineering project is activities and tasks done by a team to
produce a software product using the principles and methods of software
engineering
• In any engineering project: There should be a plan: What to do? When and
how to do it?
Software engineering basic tasks
• What are the basic tasks done in a software project?
• Feasibility study: Is it possible economic project?
• Requirement gathering: Who are the customers? What they want? What they need?
• High-level design: What are the platforms? On premise or on cloud? What are the
modules of the system and how they interact without entering in the details of each
module.
• Low-level design: assign modules to team members. Design of each module. Module
design refinement until it becomes clear how it is implemented in code.
• Development: implementing the design into code by programming the design
• Testing: test your own code, test different parts or code is working with other parts,
test if everything is working after integration of all/new modules
• Deploying: Setup hardware, install software, training
• Maintenance: While the system is running, collect and sole problems and errors
Software engineering basic tasks: other terms
• Feasibility study: Is it possible economic project?
• Requirements engineering: customers? What they want? What they need?
• User interface design: What will the user see? How will he interact?
• Architectural design: which modules and how they interact.
• Detailed design: planning how of each module work.
• Programming: Implement each module in code
• System integration: Collecting modules to build the whole product
• Validation: Are we building the right product?
• Verification (testing): Are we building this X right?
• Production: install, administer, and maintain
Engineering software development process?
• Why?
• Because software systems is becoming large and complex.
• To get scalable system
• To get cost effective systems in the allowed time
• To deal with dynamic nature of requirements change and system update
• To obtain quality in software product
• How?
• Engineering principles and methods/techniques for doing each of the basic
tasks
• Process model: An overall plan or strategy for starting, working on, finishing
all the required basic tasks.
Document management system
• While working as a team on the preceding tasks, we need and produce many
documents. A document management system is needed to manage these
documents. What are the feature needed by a document management system for
software engineering process?
• People can share documents so that they can all view and edit them.
• Only one person can edit a document at a given time.
• You can fetch the most recent version of a document.
• You can fetch a previous version of a document by specifying either a date or version number.
• You can search documents for tags, keywords, and anything else in the documents.
• You can compare two versions of a document to see what changed, who changed it, and
• when the change occurred. (Ideally, you should also see notes indicating why a change was
• made, although, that’s a less common feature.)
• You should have the ability to access documents over the Internet or on mobile devices.