Software Engineering Introduction


What is software engineering? According to the book Beginning Software Engineering published by Wrox (a Wiley brand) in 2015 written by Rod Stephens, a definition might be: “An organized, analytical approach to the design, development, use, and maintenance of software.” It includes all of the things you need to do to produce successful software. Software engineering includes techniques to avoid pitfalls. Software engineering gives you a level of control over the software project.

Rod Stephens divides his above-mentioned book into two parts. The first part describes the basic tasks you need to complete and deliver useful software. Things such as design, programming, and testing. The book’s second part describes some common software development models that use different techniques to perform those tasks. Before even beginning any software project, you need to set up the preliminaries. What does that mean?

Your approach to your project may vary from project to project, but all projects will follow roughly the same steps. The question is, how much effort are you going to do before beginning the next step? Opinions differ. We have a post on Project Management which describes the five phases of a project.

Here are the software engineering tasks compared with Project management steps.

Project Management Steps Software Engineering Tasks Software Engineering Comments
Executive Support purpose, vision, resources, business plans, enterprise architecture, marketing objectives, Value Based Management, business risk
Project Manager budget, time, money, Project Management
Planning Project Planning
Starting Documentation Plan Type (Word, Excel, Google sheets, SMS Text messages, WhatsApp, Skype, etc), Sharing, Editing, Email, Gmail, storing, backing up, program source code repository, code comments, coding style, Git, JBGE, application documentation
Requirements Gathering Software Requirements Requirements are important for setting a project’s direction and are the features that your project/application must provide. After collaborating with all those involved, be sure your written requirements are clear, concise, unambiguous, consistent with each other and prioritized.
. High-Level Design Software Design Principles platform (hardware and software), data design, user interfaces, interfaces with other systems, project architecture, major areas of functionality, object oriented programming, modules, classes, briefly how each piece works, how each piece fits together, security, reports, importing and exporting files. Documentation may include wireframes.
Low-Level Design Low-level design provides more detail than high-level design to the point where developers can start writing code. High-level design focuses on what and low-level design focus on how. It includes the object-oriented design, database design and graphic design.
Performing Development Programming languages, programming paradigms, C#, JavaScript, ASP.NET, Rapid Application Development (RAD), Software Design Patterns
Testing
Deployment DevOps
Maintenance
Closing Wrap-up (evaluation)