IT323 – Software Engineering 2

Software Design and
Engineering

Alvin R. Malicdem
Instructor
1

What is Software?

Software is: (1) instructions (computer
programs) that when executed provide
desired features, function, and performance;
(2) data structures that enable the programs
to adequately manipulate information and
(3) documentation that describes the
operation and use of the programs.

2

it is not manufactured in the classical sense.What is Software? ■ Software is developed or engineered. 3 . most software continues to be custom-built." ■ Although the industry is moving toward component-based construction. ■ Software doesn't "wear out.

Wear vs. Deterioration 4 .

Software Applications ■ system software ■ application software ■ engineering/scientific software ■ embedded software ■ product-line software ■ WebApps (Web applications) ■ AI software 5 .

distributed computing ■ Ubiquitous computing—wireless networks ■ Netsourcing—the Web as a computing engine ■ Open source—”free” source code open to the computing community (a blessing. but also a potential curse!) ■ Also … – Data mining – Grid computing – Cognitive machines – Software for nanotechnologies 6 .Software—New Categories ■ Open world computing—pervasive.

– software must be re-architected to make it viable within a network environment. – software must be extended to make it interoperable with other more modern systems or databases. – software must be enhanced to implement new business requirements.Legacy Software Why must it change? – software must be adapted to meet the needs of new computing environments or technology. 7 .

Each module might have been created by different people at different times. Mostly. 11 . and is actually a mixture of several different software modules working together. using different programming languages.tware Design Modern software performs complex tasks. and so on for several levels. this complexity is hierarchical: the software modules themselves consists of software submodules.

10 .Software Engineering ■ Some realities: – a concerted effort should be made to understand the problem before a software solution is developed – design becomes a pivotal activity – software should exhibit high quality – software should be maintainable ■ The seminal definition: – [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 IEEE definition: – Software Engineering: (1) The application of a systematic. and maintenance of software. that is. 11 . disciplined. (2) The study of approaches as in (1). operation. quantifiable approach to the development. the application of engineering to software.

d practices ■ In order to ensure that complex software is well-designed and well-behaved. Software engineering consists of the following set of disciplines. good software engineering practices must be put in place. 11 .

and validation of requirements for software. • Software design: The design of software is usually done with Computer-Aided Software Engi. • Software development: The construction of software through the use of programming languages.neering (CASE) tools and use standards for the format. analysis. specification. such as the Unified Modeling Language (UML).od practices • Software requirements: The elicitation. 11 .

their configuration (such as versioning and source control) have to be managed in a standardized and structured method. 11 . This subfield deals with those problems. • Software configuration management: Since software systems are very complex.practices • Software testing • Software maintenance: Software systems often have problems and need enhancements for a long time after they are first completed.

but there are nuances encountered in software not seen in other management disciplines. • Software quality: verification and validation of software.d practices • Software engineering management: The management of software systems borrows heavily from project management. 11 .

A Layered Technology tools methods process model a “quality” focus Software Engineering 12 .

A Process Framework Process framework Framework activities work tasks work products milestones & deliverables QA checkpoints Umbrella Activities 13 .

Framework Activities ■ Communication ■ Planning ■ Modeling – Analysis of requirements – Design ■ Construction – Code generation – Testing ■ Deployment 14 .

Umbrella Activities ■ Software project management ■ Formal technical reviews ■ Software quality assurance ■ Software configuration management ■ Work product preparation and production ■ Reusability management ■ Measurement ■ Risk management 15 .

Examine the result for accuracy (testing and quality assurance). 2. Plan a solution (modeling and software design). 3. Carry out the plan (code generation). Understand the problem (communication and analysis). 4.The Essence of Practice ■ Polya suggests: 1. 17 .

and features are required to properly solve the problem? ■ Can the problem be compartmentalized? Is it possible to represent smaller problems that may be easier to understand? ■ Can the problem be represented graphically? Can an analysis model be created? 18 . who are the stakeholders? ■ What are the unknowns? What data. functions.Understand the Problem ■ Who has a stake in the solution to the problem? That is.

are solutions readily apparent for the subproblems? ■ Can you represent a solution in a manner that leads to effective implementation? Can a design model be created? 19 . and features that are required? ■ Has a similar problem been solved? If so.n the Solution ■ Have you seen similar problems before? Are there patterns that are recognizable in a potential solution? Is there existing software that implements the data. are elements of the solution reusable? ■ Can subproblems be defined? If so. functions.

or better.y Out the Plan ■ Does the solution conform to the plan? Is source code traceable to the design model? ■ Is each component part of the solution provably correct? Has the design and code been reviewed. have correctness proofs been applied to algorithm? 20 .

functions.mine the Result ■ Is it possible to test each component part of the solution? Has a reasonable testing strategy been implemented? ■ Does the solution produce results that conform to the data. and features that are required? Has the software been validated against all stakeholder requirements? 21 .

.End of Lesson.